Skip to main content

2 - Software Design - 3 - Software Structure And Architecture


The Definition of Software Architecture
"the set of structures needed to reason about the system, which comprise software elements, relations among them, and properties of both"

The Architectural Structures And Viewpoints
Software design may be described and documented by many different high-level facets. These facets are often called Views.
Views Definition : " A view represents a partial aspects of a software architecture that shows specific properties of a software system ". 
views pertain to distinct issues associated with software design. for example :
1. The Logical View ( Satisfying the functional requirements ) Vs 
2. The Process View ( Concurrency Issues ) Vs
3. The Physical View ( Distribution Issues ) Vs 
4. The Development View ( How the design is broken down into implementation units with explicit representation of the dependencies among the units )
In summary, a software design is a multifaceted artifact produced by the design process and generally composed of relatively independent and orthogonal views.

Architecture Styles
architecture styles can be defined as : " a specialization of element and relation types, together with a set of constraints on how they can be used".An architectural style can thus be seen as providing the software's high level organization. These styles are :
1. General Structures ( for example : Layers, Pipes and Filters, blackboard )
2. Distributed Systems ( for example : Client-server, three-tiers, broker )
3. Interactive Systems ( for example : Model-View-Controller, Presentation-Abstraction-Control )
4. Adaptable Systems ( for example : microkernel, reflection )
5. Others ( for example : batch, interpreters, process control, rule based )

Design Patterns
A Pattern is : " a common solution to a common problem in a given context". Although Architecture can be viewed as patterns describing the high-level organization of software, other design patterns can be used to describe details at a lower level including the following.
1. Creational Patterns ( For example : Builder, factory, prototype, singleton )
2. Structural Patterns ( For example : adapter, bridge, composite, decorator, facade, fly-weight, proxy )
3. Behavioral Patterns ( For example : command, interpreter, iterator, mediator, memento, observer, state, strategy, template, visitor )

Architecture Design Decisions
This is a creative process, during the design process software designers have to make a number of fundamental decisions that profoundly affect the software and the development process.

Families Of Programs And Frameworks
Providing for reuse of software design and components is called design Families also known as software product lines.
This can be done by identifying the commonalities among members such families and by designing reusable and customization components to account for the variability among family members.

Back - 2 - Key Issues In Software Design
Next - 4 - User Interface Design
Home - Software Requirement
Main - The BOK

Published on : 30-May-2018
Ref no : DTC-WPUB-000012

About Author

My photo
Wan Mohd Adzha CAPM,MCPD,MCSD,MCSE
Passionate about new technology ( Software Engineering ) and how to build,manage and maintain them

Comments