Software Waterfall Life Cycle Requirements Construction Design Testing Delivery and Installation Operations and Maintenance Concept Exploration Prototype
Feb 24, 2016
Software Waterfall Life Cycle
Requirements
Construction
Design
Testing
Delivery and Installation
Operations and Maintenance
Concept Exploration
Prototype
Software Design
From SWEBOK 2004
V-Model
Spiral Model
Agile Methods
Software Design
From SWEBOK 2004
Software Design Principles
• Abstraction• Coupling and cohesion
– Minimize coupling; maximize cohesion• Decomposition and modularization• Encapsulation/information hiding• Separation of interface from implementation• Sufficiency, completeness, and primitiveness
Key Issues in Software Design
• Concurrency• Events• Distribution of components• Error and exception handling• Interaction and presentation• Data persistence
Software Structure and Architecture
• Model/View/Controller (MVC)• Repository• Client/server, Three-tier (four-tier)• Peer-to-peer• Pipes and filters
Patterns
• Reusable solutions to common object-oriented programming problems– Creational patterns
• Factory Method, Abstract Factory, Builder, Prototype, Singleton
– Structural patterns• Adapter, Bridge, Composite, Decorator, Façade, Flyweight,
Proxy– Behavioral patterns
• Chain of responsibility, Observer, Strategy, Command, Interpreter, Iterator
Nonfunctional Requirements may suggest a design pattern
• “manufacturer independent”, “device independent”, “must support a family of products”– Abstract Factory Pattern
• “must interface with an existing object”– Adapter Pattern
• “must deal with the interface to several systems, some of them to be developed in the future”– Bridge Pattern
Adapter Pattern
http://sourcemaking.com/design_patterns/adapter
Strategy Design Pattern