Design model provides:
- Software architecture
- Data structure
- Interfaces
- Components
Design important because the model can be assessed for quality and improved before the code is generate, test and conduct.
Characteristics of a good design.
- Readable
- Understandable
- Provide good picture of a system / software
- Must implement all the requirements that already in analysis model
- Must consist the requirement that desired by the client/customer.
Design Concept |
1) Abstraction |
2) Architecture |
3) Patterns |
4) Separation of concerns |
5) Modularity |
6) Information hiding |
7) Functional Independence |
8) Refinement |
9) Aspects |
10) Refactoring |
11) OO Design concept |
12) Design classes |
Abstraction: the process or result of generalization by reducing the information content of a concept or an observable phenomenon, typically in order to retain only information which is relevant for a particular purpose.
Architecture: It refers to the overall structure of the software and the ways in which that structure provides conceptual integrity for a system. A good software architecture will yield a good return on investment with respect to the desired outcome of the project, e.g. in terms of performance, quality, schedule and cost.
Modularity: It is the process of elaboration. A hierarchy is developed by decomposing a macroscopic statement of function in a stepwise fashion until programming language statements are reached. In each step, one or several instructions of a given program are decomposed into more detailed instructions. Abstraction and Refinement are complementary concepts.
Refinement: It is the process of elaboration. A hierarchy is developed by decomposing a macroscopic statement of function in a stepwise fashion until programming language statements are reached. In each step, one or several instructions of a given program are decomposed into more detailed instructions. Abstraction and Refinement are complementary concepts.
Design model | Description |
ss="MsoNormal" style="margin-bottom:10.0pt;line-height:115%"> Data/Class Design | - Class diagrams transformed into the design class realization and the data structures required implementing the software.
|
Architectural Design | - Provides high-level overview of the system with detailed descriptions to be given by other design elements.
- Defines the relationship between major structural elements of the software, the architectural styles and design patterns that can be used to achieve the requirements of the system and the constraints that affect the way in which the architecture can be implemented
|
Interface Design | - Describes how the software communicates with systems that interoperate with it, and with human who use it.
|
Component-Level Design | - Defines the data structures, algorithms, interface characteristics, and communication mechanisms allocated to each software component or module.
|
CASE Tools
- IBM Rational Software Architect
- Database Modeling: Enterprise Architect by Sparx Systems Pty Ltd.
Design evaluation
- According to Shore and Chromatic ( 2007 “A good software design minimizes the time required to create, modify, and maintain the software while achieving run-time performance.
- Meanwhile, Elssamadisv (2007) said that :-
o Design quality is people-sensitive.
-For instance, design quality is dependent upon the programmers writing and maintaining the code.
o Design quality is change-specific.
-There are two general ways to make designs of higher quality with respect to this aspect:
· generalizing from the tools like design patterns, and
· using tests and refactoring as change-enablers
IEEE Standard for Information Technology -Systems Design - Software Design Descriptions (IEEE 1016-2009)
- This standard specifies an organizational structure for a software design description (SDD).
- An SDD is a document used to specify system architecture and application design in a software related project.
- Provides a generic template for an SDD.