ICS 121 - Spring 2000 ICS121 Home Last Modified: 4/4/00


Course Overview

Software engineering is the study of the software process, in particular the specification, design, implementation, testing, maintenance and documentation of a software system. This course will provide a brief overview of the concepts, methods, and current practice of software engineering, building on the material covered in ICS 52. Topics include the study of large-scale software production with software process models as an organizing structure and principles and techniques relevant to each stage of the software production lifecycle. The primary focus of the class will be on learning and applying software methods and tools in depth on example software engineering problems.

The major concepts and techniques will be presented in the lectures. Additional help and information will be available in discussion sections.

Basic Material Covered

Introduction to concepts, methods, and current practice of software engineering.
Study of large-scale software production.
In-depth application of software methods and tools for requirements, design, testing, maintenance and management.

Prerequisites

ICS 52
Math 2A-2B-2C
Math 6A-6B
Writing 39C

Syllabus

  • Introduction to Software Engineering
  • scope and principles
    software lifecycle models
    methods and tools
  • Quality Assessment
  • Software Qualities
    Lifecycle V&V
    V&V principles
    Testing Basics
    Lifecycle Reviews
    code inspections and walkthroughs
    cleanroom software development
  • Requirements
  • concepts and techniques
    informal specification
    requirements acquisition
    mockups through rapid prototyping and scenarios
    cognitive walkthroughs
    system modeling
    data-flow diagrams
    entity-relationship diagrams
    finite state machines
    Petri nets
    formal specification
  • Design
  • structured design
    introduction to objects
    object-oriented analysis and design
    Object Modeling Technique
  • Formal Methods
  • concepts and techniques
    formal specification
    axiomatic specifications
    state-based specifications
    abstract model specifications
    algebraic specifications
  • Lifecycle Verification and Validation
  • software testing principles
    testing strategies
    test criteria
  • Software Environments

  •  
  • Software Process Models

  •  
  • Mythical Person-Month Lessons

  • Send feedback about the website to Professor Richardson.