11.2 Software Architecture


Software architecture is the first step in producing a software design.
The software architecture of a software system is the structure or structures that include its components, the
visible interfaces of those components, and the relationships among them.
It is a representation that has the following advantages:
It enables software engineer to analyze design possibility and effectiveness to meet its stated
requirements
It enables software engineer to consider alternative architectures at early times when it could be easy to
make such changes alternatives at a stage when making design changes is still relatively easy
It enables software engineer to reduce the software construction risks.
Architecture comprises of a fairly small, easy to understand representation of how the system is made
up and how its various functions interlink.
Architecture establishes design requirements from an early stage in the development cycle, which leads
to an efficient and successful project.

11.2 Software Architecture


There are three levels in the design of software systems: These are:
architecture design
code design
executable code design
At the architecture design level, the following is defined:
System capabilities are identified in the requirements specification with the system components that will
implement them.
The interconnections among modules are described.
Operators that create systems from subsystems are defined.
At the code design level, the following is applicable:
The system is described at the level of algorithms and data structures, and
The components are programming language primitives such as numbers, characters, pointers and
control threads (array, files, procedures, etc..)
At the executable design level which is a lower level of detail the design engineer discusses memory
allocation, data format, bit patterns, and so on.