22C:180/55:180
SOFTWARE ENGINEERING--
Architecture and Design of Software Systems
Fall 1999
COURSE OUTLINE
(subject to revision)
Module I (four weeks): Fundamentals of Software Engineering:
- The nature and qualities of software
- The need for a disciplined approach to software development
- The software development process - activities, methods, tools,
deliverables, maturity
- Life cycle models
- Overview of conventional software engineering methods - requirements,
design, code, test, integrate, plan, CM, QA, inspections, metrics
- monitoring progress, process improvement
- Introduction to product-family and application engineering
process
models
- Domain engineering, application Engineering, business justification,
case studies
Module II (three weeks): Software Architecture
- Introduction to architectural modeling of software - layers,
interfaces, handling change
- UML modeling overview - notation, classes, use cases, state
charts
- Basic architectural elements and styles
- Standard (reusable) architectures and frameworks
- Introduction to component-based design
- Introduction to product-family engineering
Module III (eight weeks): Design
- Basic principles--abstraction, refinement, partitioning, modularity
- Traditional (function-oriented, data-oriented) design methods
- Object-oriented design
- Design patterns - Model/view/controller and proxy
- Interaction diagrams, Responsibilities, and GRASP design patterns
- Interface design - Abstract classes, contracts, behavior modeling,
real use cases