Design and Implementation Phase Flashcards
Design and Implementation:
Basic Description
The phase at which an executable software system is developed
Consists of several interleaved activities.
Includes Architectural Design and Modeling of system components.
Design and Implementation:
Process Stages/Activities
- Define the System Context and Use Cases
- From SRS
- Architectural Design
- Identify principle system objects
- Componente Design
- Develop Design Models
- Interface Design
- Specify Object Interfaces
- Database Design
Defining System Context:
Basics
- Create a Context Diagram
- Understand the relationship between the software and it’s external environment/dependencies
- Define/Diagram Use Cases
Architectural Design Step
- Once System Context is understood, use this information to design the System Architecture
- Identify major Components and their Interactions
- Organize components into a well defined Architectural Pattern
- MVC, Layered, Client-Server, etc
- The system may be composed of independent subsystems with varying architecture
Object Class Identification step
Using the architecture, identify the different object classes that will be needed.
- This can be a difficult process
- It should be approached iteratively, as you are unlikely to get it right immediately
- Use a “grammatical approach”, based on natural language description
- Base identification on tangible things, like hardware
- There is no “magic” formula, depends on:
- skill
- experience
- domain knowledge of system designs
Developing Design Models
- Design Models show the objects, object classes and relationships between entities
- Two Categories:
- Static Models
- Dynamic Models
- Specific Models
- Sequence Models
- State Machine Models
Design Models:
Two Categories
Static Models
Describe the static structure of the system in terms of object classes and relationships
Dynamic Models
Describe dynamic interactions between objects
Design Models:
Sequence Model
Shows the Sequence of object interactions
- Objects are arranged horizontally across top
- Time is represented vertically (top to bottom)
-
Interactions indicated with stylized arrows
- Calls are solid
- Callbacks/Responses are dashed
- Each object has a Lifeline represented by a vertical dashed line
- The Controlling Object is represented by a thin rectangle along the object’s lifeline while it is in control
Design Models:
State Diagram
Used to show how objects respond to different inputs, service requests, etc,
as well as the State Transitions triggered by these requests.
- Useful, high-level models of a system or object’s runtime behavior
- Not usually required for all objects in a system
- Diagramming simple objects adds unnecessary detail to design
- States are represented with Ovals, Transitions with labeled arrows, black circle indicates starting state
Interface Specification step
Specifies the interfaces for all the important objects.
- Necessary so that objects and other components can be designed in parallel
- Need to know HOW an object will be used, even before it is implemented
- Objects may have several interfaces:
- Each represents different viewpoints on the methods provided
- The interface defines method names, parameters and return types
Definition:
Software Design
A Software Design is a description of the:
- Structure of the software to be implemented
- Data Models and Structures used by the system
- Interfaces between system components
- Algorithms used (sometimes)
Three Types of
Design Input
Platform Information
Requirements Specification
Data Description
Four Design Outputs
System Architecture
Database Specification
Interface Specification
Component Specification