1/58
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced |
|---|
No study sessions yet.
Software Design
Encompasses the set of principles, concepts, and practices that lead to the development of a high quality system or product.
Design principles
establish an overriding philosophy that guides the designer as the work is performed.
Design concepts
must be understood before the mechanics of design practice are applied.
Software design practices
CHANGE CONTINUOUSLY as new methods, better analysis, and broader understanding evolve.
Software Engineering Design
- Data/Class design
- Architectural design
- Interface design
- Component-level design
Data/Class design
transforms analysis classes into implementation classes and data structures.
Architectural design
defines relationships among the major software structural elements.
Interface design
defines how software elements, hardware elements, and end-users communicate.
Component-level design
transforms structural elements into procedural descriptions of software components.
Behavioral Elements
State diagrams
Activity diagrams
Scenario-based Elements
Use cases-test
Use case diagrams
Swimlane diagrams
Sequence diagrams
Class-Based Elements
Class diagrams
Analysis packages
CRC models
Collaboration diagrams
design
The ______ must implement all of the EXPLICIT REQUIREMENTS contained in the analysis model, and it must accommodate all of the IMPLICIT REQUIREMENTS desired by the customer.
design
The _____ should be a READABLE, UNDERSTANDABLE guide for those who generate code and for those who test and subsequently support the software.
design
The _____ should provide a COMPLETE PICTURE OF THE SOFTWARE, addressing the data, functional, and behavioral domains from an implementation perspective
(a) created using recognizable ARCHITECTURAL STYLES OR PATTERNS
(b) composed of WELL DESIGNED COMPONENTS
(c) implemented in an EVOLUTIONARY FASHION
Quality Guidelines
A design should exhibit an architecture (a) _____ , (b) _____, (c) _____.
MODULAR
Quality Guidelines
A design should be _____.
DISTINCT REPRESENTATIONS
Quality Guidelines
A design should contain _________ of data, architecture, interfaces, and components.
RECOGNIZABLE DATA PATTERNS
Quality Guidelines
A design should lead to data structures that are drawn from _______.
FUNCTIONALLY INDEPENDENT COMPONENTS
Quality Guidelines
A design should contain ______.
REDUCE THE COMPLEXITY OF CONNECTIONS
A design should lead to interfaces that ________ between components and the external environment.
REPEATABLE METHOD
A design should be derived using a ______ that is driven by software requirements analysis.
MEANINGFUL NOTATION
A design should be represented using _____.
Each new software design methodology introduces UNIQUE HEURISTICS AND NOTIONS - yet they each contain:
1. mechanism
2. notation
3. Heuristics
4. Guidelines
MECHANISM
A _______ for the translating the requirements model into a design representation.
NOTATION
A _______ for representing functional components and their interfaces.
HEURISTICS
for refinement and partitioning.
GUIDELINES
for quality assessment.
Design Concepts
- Abstraction
- Architecture
- Design Patterns
- Separation of concerns
- Modularity
- Information Hiding
- Functional independence
- Stepwise Refinement
- Refactoring
- Design Classes
Abstraction
data (named collection of data describing data object), procedural (name sequence of instructions with specific and limited function).
Architecture
overall structure or organization of software components, ways components interact, and structure of data used by components.
Design Patterns
describe a design structure that solves a well-defined design problem within a specific context.
Separation of concerns
any complex problem can be more easily handled if it is subdivided into pieces.
Modularity
compartmentalization of data and function
Information Hiding
controlled interfaces which define and enforces access to component procedural detail and any local data structure used by the component.
Functional independence
single-minded (high cohesion) components with aversion to excessive interaction with other components (low coupling).
Stepwise Refinement
incremental elaboration of detail for all abstractions.
Refactoring
a reorganization technique that simplifies the design without changing functionality.
Design Classes
provide design detail that will enable analysis classes to be implemented.
Design Class Characteristics
- Complete
- Primitiveness
- High cohesion
- Low coupling
Complete
includes all necessary attributes and methods) and sufficient (contains only those methods needed to achieve class intent).
Primitiveness
each class method focuses on providing one service.
High cohesion
small, focused, single-minded classes.
Low coupling
class collaboration kept to minimum.
Design Modeling Principles
• Principle #1. Design should be traceable to the requirements model.
• Principle #2. Always consider the architecture of the system to be built.
• Principle #3. Design of data is as important as design of processing functions.
• Principle #4. Interfaces (both internal and external) must be designed with care.
• Principle #5. User interface design should be tuned to the needs of the end-user and stress ease of use.
• Principle #6. Component-level design should be functionally independent.
• Principle #7. Components should be loosely coupled to each other than the environment.
• Principle #8. Design representations (models) should be easily understandable.
• Principle #9. The design should be developed iteratively.
• Principle #10. Creation of a design model does not preclude using an agile approach.
Data model
data objects and database architectures.
Data model
○ Examines data objects independently of processing.
○ Focuses attention on the data domain.
○ Creates a model at the customer's level of abstraction.
○ Indicates how data objects relate to one another.
Data object
can be an external entity, a thing, an event, a place, a role, an organizational unit, or a structure.
Data objects
contain a set of attributes that act as an quality, characteristic, or descriptor of the object.
Data objects
may be connected to one another in many different ways.
Interface
is a set of operations that describes the externally observable behavior of a class and provides access to its public operations.
Interface
Important elements:
- User interface (UI).
- External interfaces to other systems.
- Internal interfaces between various design components.
UI or User Experience (UX)
is a major engineering action to ensure the creation on usable software products.
Internal and external interfaces
should incorporate both error checking and appropriate security features.
Deployment Design Elements
Indicates how software functionality and subsystems will be allocated within the physical computing environment.
Deployment Design Elements
Modeled using UML deployment diagrams.
UML deployment diagrams.
- Descriptor form deployment diagrams
- Instance form deployment diagrams
Descriptor form deployment diagrams
show the computing environment but does not indicate configuration details.
Instance form deployment diagrams
identify specific hardware configurations and are developed in the latter stages of design.