- Design Engineering
- Design Process And Design Quality
- Design Concepts
- The Design Model
- Creating An Architectural Design
- Software Architecture
- Data Design
- Architectural Styles And Patterns
- Architectural Design
- Conceptual Model Of UML
- Basic structural modeling
- Class diagram
- Sequence Diagram                           Â
- Collaboration Diagrams
- Use Case Diagram
- Component Diagrams
Design concepts
1. Abstractions
Many levels of abstraction. Highest level of abstraction: Solution is stated in broad terms using the language of the problem environment
Lower levels of abstraction: More detailed description of the solution is provided
Procedural abstraction – Refers to a sequence of instructions that perform a specific and limited function
Data abstraction – Named collection of data that describe a data object
2. Architecture
Structure organization of program components (modules) and their interconnection
Architecture models
(a) Structural models – An organized collection of program components
(b) Framework models – Represents the design in more abstract way
(c) Dynamic models – Represents the behavioral aspects indicating changes as a function of external events
(d) Process models – Focus on the design of the business or technical process
3. Patterns
Provides a description to enable a designer to determine the following:
(a) Whether the pattern is applicable to the current work
(b) Whether the pattern can be reused
(c) Whether the pattern can serve as a guide for developing a similar but functionally or structurally different pattern
4. Modularity
Software is divided into separately named and addressable components, sometimes called modules, that are integrated to satisfy problem requirements.
5. Information hiding
Information contained within a module is inaccessible to other modules who do not need such information.
Achieved by defining a set of independent modules that communicate with one another only that information necessary to achieve software function.
Provides the greatest benefits when modifications are required during testing and later.
Errors introduced during modification are less likely to propagate to other locations within the software.
6. Functional independence
A direct outgrowth of modularity, abstraction and information hiding.
Achieved by developing a module with single-minded function and an aversion to excessive interaction with other modules.
Easier to develop and have simple interface.
Easier to maintain because secondary effects caused by design or code modification are limited, error propagation is reduced and reusable modules are possible.
Independence is assessed by two quantitative criteria:
(1) Cohesion
(2) Coupling
Cohesion – Performs a single task requiring little interaction with other components
Coupling – Measure of interconnection among modules. Coupling should be low and cohesion should be high for good design.
7. Refinement and refactoring
Refinement – Process of elaboration from high level abstraction to the lowest level abstraction. High level abstraction begins with a statement of functions. Refinement causes the designer to elaborate providing more and more details at successive level of abstractions. Abstraction and refinement are complementary concepts.
Refactoring – Organization technique that simplifies the design of a component without changing its function or behavior. Examines for redundancy, unused design elements and inefficient or unnecessary algorithms.
8. Design classes
Class represents a different layer of design architecture.
Five types of design classes:
User interface class – Defines all abstractions that are necessary for human computer interaction
Business domain class – Refinement of the analysis classes that identify attributes and services to implement some of business domain
Process class – Implements lower level business abstractions required to fully manage the business domain classes
Persistent class – Represent data stores that will persist beyond the execution of the software
System class – Implements management and control functions to operate and communicate within the computer environment and with the outside world