Software Design Concepts
Software Design Concepts
concepts
JEREMIAH O. BANDELE
PhD Electrical/Electronic Engineering
University of Noingham
Learning objectives
Software architecture refers to the structure of the system, which contains various components
of a program/system, the aributes (properties) of those components and the relationship
between them. The software architecture enables the software engineers to analyze the software
design eiciently.
Software architecture: why
A software architecture:
• Enables eicient communication between all the interested stakeholders.
• Highlights early design decisions that aects activities such as coding and testing.
• Creates intellectual models of how the system is organized into components and how these
components interact with each other.
Software pattern
This provides a description of the solution to a recurring design problem of some specific domain
in such a way that the solution can be used again and again.
Software pattern
The objective of each paern is to provide an insight to a designer who can determine the
following:
• Whether the paern can be reused.
• Whether the paern is applicable to the current project.
• Whether the paern can be used to develop a similar but functionally or structurally dierent
design paern.
Software pattern: architectural
High-level strategies that refer to the overall structure and organization of a software system.
They define the elements of a software system such as subsystems, components, classes, etc.
They also indicate the relationship between the elements along with the rules and guidelines for
specifying these relationships.
Note that architectural paerns are often considered equivalent to software architecture.
Software pattern: design
Medium-level strategies that are used to solve design problems.
They provide a means for the refinement of the elements (as defined by architectural paern) of a
software system or the relationship among them.
● Software architecture refers to the structure of the system, which contains various
components of a program/system.
● There are two generic approaches to software design:Top-down design , Boom-up
design
FURTHER READING RESOURCES