Professional Documents
Culture Documents
Software Design and Architecture
Software Design and Architecture
Architecture
Lecture 2
Topics
Architecture Styles
Architectural Design Decisions
Quality Attributes
Design Guidelines
Architecture Styles
Basic Architectural representations
Simple, informal block diagrams showing entities and relationships are
the most frequently used method for documenting software
architectures.
But these have been criticized because they lack semantics, do not
show the types of relationships between entities nor the visible
properties of entities in the architecture.
Box and Line Diagrams
Shows what an architecture design typically looks like
Architecture Reuse
Systems in the same domain often have similar architectures that
reflect domain concepts.
Application product lines are built around a core architecture with
variants that satisfy particular customer requirements.
Architectural Views
Each architectural model only shows one view or perspective of the
system.
It might show how a system is decomposed into modules, or how the
run-time processes interact or the different ways in which system
components are distributed across a network.
For both design and documentation, you usually need to present
multiple views of the software architecture.
Architectural Design Decisions
Correctness
Correctness is the property that software implements the specified
users’ requirements.
Reliability
Reliability can be defined as the probability that a system performs
user required functionality correctly
at a specified environment in a given period of time.
Good Design
Portability
Portability is the property of a software system that can be easily
transported from one hardware/software platform to another,
Maintainability
Maintainability refers to the easiness of maintaining a software
system.
There are two types of software maintenance operations.
corrective maintenance.
adaptive maintenance.
Reusability
Reusability is the property of a software system that its components
can be easily reused in the development of other software systems.
Reusability depends on the generality of the components in a given
application domain and the extent to which the components are
parameterized and configurable.
Interoperability
Interoperability is the property of how easy a software system can be
used with other software systems.
Interoperability mostly depends on the interface between a software
system and its environment.
Quality Attributes of SW Design
Portability:
The designed product should be able to be moved unchanged
Flexibility:
The design should facilitate adaptation to changing end-user
requirements,
changes based on new problems in the end users’ world
Conceptual integrity:
The design should exhibit harmony, symmetry and predictability.
Well structured:
The design should be consistent with chosen design principles,
such as information hiding, to organize the structure of the design.
Quality Attributes of SW Design
Simple:
The design should be ‘as simple as possible, but no simpler’.
Efficient:
The functions provided by the design should be computable by
using the available resources.
Adequate:
The design should meet the stated requirements.
Quality Attributes of SW Design
Implementable:
The functions offered by the design should be theoretically
computable with the information available and achievable using
currently available software and hardware technology.
Standardized:
The design should be represented using standard or well defined
and familiar notation for any documentation.
Reliability:
The designed development process should with high probability be
successful rather than fail to achieve its goal.
Design Guidelines
Software Design Principles
Try to promote high cohesion within each element and loose coupling
between elements.
A highly coherent subsystem, component, or module performs one
sole function. You must consider cohesion factors during the very
early stages of the design process. Low cohesion of a system implies
that functional composition is not designed well.
Design Guidelines