Software Architecture Design Tutorial
Software Architecture Design Tutorial
By the end of this tutorial, the readers will develop a sound understanding of the concepts
of software architecture and design concepts and will be in a position to choose and follow
the right model for a given software project.
Audience
This tutorial is designed for all software professionals, architects, and senior system design
engineers. Managers of architecture teams will also benefit from this tutorial.
Prerequisites
There are no exact prerequisites for this tutorial. Any software professional can go through
this tutorial to get a bigger picture of how high quality software applications and products
are designed.
All the content and graphics published in this e-book are the property of Tutorials Point (I)
Pvt. Ltd. The user of this e-book is prohibited to reuse, retain, copy, distribute or republish
any contents or a part of the contents of this e-book in any manner without written consent
of the publisher.
We strive to update the contents of our website and tutorials as timely and as precisely as
possible, however, the contents may contain inaccuracies or errors. Tutorials Point (I) Pvt.
Ltd. provides no guarantee regarding the accuracy, timeliness, or completeness of our
website or its contents including this tutorial. If you discover any errors on our website or
in this tutorial, please notify us at [email protected]
i
Software Architecture and Design
Table of Contents
About the Tutorial .................................................................................................................................... i
Audience .................................................................................................................................................. i
Prerequisites ............................................................................................................................................ i
UML ...................................................................................................................................................... 13
ii
Software Architecture and Design
OO Analysis ........................................................................................................................................... 22
Main-subroutine ................................................................................................................................... 35
Master-Slave ......................................................................................................................................... 36
iii
Software Architecture and Design
iv
1. Software Architecture and Design ─ Introduction
Software Architecture and Design
We can segregate Software Architecture and Design into two distinct phases: Software
Architecture and Software Design. In Architecture, nonfunctional decisions are cast and
separated by the functional requirements. In Design, functional requirements are
accomplished.
Software Architecture
Architecture serves as a blueprint for a system. It provides an abstraction to manage
the system complexity and establish a communication and coordination mechanism among
components.
1
Software Architecture and Design
Software Design
Software design provides a design plan that describes the elements of a system, how
they fit, and work together to fulfill the requirement of the system. The objectives of
having a design plan are as follows:
Guide the implementation tasks, including detailed design, coding, integration, and
testing.
It comes before the detailed design, coding, integration, and testing and after the domain
analysis, requirements analysis, and risk analysis.
Goals of Architecture
The primary goal of the architecture is to identify requirements that affect the structure of
the application. A well-laid architecture reduces the business risks associated with building
a technical solution and builds a bridge between business and technical requirements.
Some of the other goals are as follows:
• Expose the structure of the system, but hide its implementation details.
• Reduce the goal of ownership and improve the organization’s market position.
Limitations
Software architecture is still an emerging discipline within software engineering. It has the
following limitations:
Design Expertise
Expert in software design, including diverse methods and approaches such as
object-oriented design, event-driven design, etc.
Lead the development team and coordinate the development efforts for the
integrity of the design.
Domain Expertise
Expert on the system being developed and plan for software evolution.
Coordinate the definition of domain model for the system being developed.
Technology Expertise
3
Software Architecture and Design
Methodological Expertise
Expert on software development methodologies that may be adopted during SDLC
(Software Development Life Cycle).
Choose the appropriate approaches for development that helps the entire team.
Protect the team members from external forces that would distract them and bring
less value to the project.
• A design in the form of the system, with at least two layers of decomposition
• A notion of the timing, operator attributes, and the implementation and operation
plans
Quality Attributes
Quality is a measure of excellence or the state of being free from deficiencies or defects.
Quality attributes are system properties that are separate from the functionality of the
system.
They are visible to the end-user and exist at runtime, e.g.: throughput, robustness,
scalability, etc.
Quality Scenarios
Quality scenarios specify how to prevent a fault from becoming a failure. They can be
divided into six parts based on their attribute specifications:
5
Software Architecture and Design
6
2. Software Architecture and Design ─ Key Principles
Software Architecture and Design
Architectural Style
The architectural style, also called as architectural pattern, is a set of principles which
shapes an application. It defines an abstract framework for a family of system in terms of
the pattern of structural organization. The architectural style
Provides a lexicon of components and connectors with rules on how they can be
combined.
The software that is built for computer-based systems exhibit one of many architectural
styles. Each style describes a system category that encompasses:
A set of connectors (subroutine call, remote procedure call, data stream, socket)
that enable communication, coordination, and cooperation among components
Semantic constraints which define how components can be integrated to form the
system
7
Software Architecture and Design
Types of Architecture
There are four types of architecture from the viewpoint of an enterprise and collectively,
these architectures are referred to as enterprise architecture.
• Information architecture: Defines the logical and physical data assets and data
management resources.
8
Software Architecture and Design
• Many software projects and products are considered failures because they did not
actually solve a valid business problem or have a recognizable return on investment
(ROI).
• In this step, the first validation of the architecture is done by describing a number
of system instances and this step is referred as functionality based architectural
design.
• If all estimated quality attributes are as per the required standard, the architectural
design process is finished.
9
Software Architecture and Design
10