Skip to main content
Course Code: CS356
Course Title: Software Design Architecture
Department of Computer Science
Lecture / Week No. Lecture 3
Teacher Name : Daniyal Hassan Mehboob
Contents
Software Design And Architecture
• Software Architecture & Design Introduction
• Software Architecture
• Software Design
• Goals of Architecture
• Limitations
• Role of Software Architect
• Quality Attributes
• Quality Scenarios
Topic: software design And Architecture
Reference No.1
Software Architecture & Design Introduction
The architecture of a system describes its major
components, their relationships structures, and how they
interact with each other. Software architecture and design
includes several contributory factors such as Business
strategy, quality attributes, human dynamics, design, and IT
environment.
Topic: software design And Architecture
Reference No.1
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.
Topic: software design And Architecture
Reference No.1
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. It
defines a structured solution to meet all the technical and operational
requirements, while optimizing the common quality attributes like
performance and security.
Topic: software design And Architecture
Reference No.1
Software Architecture
Further, it involves a set of significant decisions about the organization related to software
development and each of these decisions can have a considerable impact on quality,
maintainability, performance, and the overall success of the final product. These decisions
comprise of:
• Selection of structural elements and their interfaces by which the
system is composed.
• Behavior as specified in collaborations among those elements.
• Composition of these structural and behavioral elements into large
subsystem.
• Architectural decisions align with business objectives.
• Architectural styles guide the organization.
Topic: software design And Architecture
Reference No.1
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 :
• To negotiate system requirements, and to set expectations with
customers, marketing, and management personnel.
• Act as a blueprint during the development process.
• Guide the implementation tasks, including detailed design, coding,
integration, and testing.
Topic: software design And Architecture
Reference No.1
Software Design
Domain analysis, requirements analysis, and risk analysis comes before architecture design phase, whereas the detailed
design, coding, integration, and testing phases come after it.
Topic: software design And Architecture
Reference No.1
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.
• Realize all the use-cases and scenarios.
• Try to address the requirements of various stakeholders.
• Handle both functional and quality requirements.
• Reduce the goal of ownership and improve the organization’s market position.
• Improve quality and functionality offered by the system.
• Improve external confidence in either the organization or system.
Topic: software design And Architecture
Reference No.1
Limitations
Software architecture is still an emerging discipline within software
engineering. It has the
following limitations −
• Lack of tools and standardized ways to represent architecture.
• Lack of analysis methods to predict whether architecture will result in an
implementation that meets the requirements.
• Lack of awareness of the importance of architectural design to software
development.
• Lack of understanding of the role of software architect and poor
communication among stakeholders.
• Lack of understanding of the design process, design experience and
evaluation of design.
Topic: software design And Architecture
Reference No.1
Role of Software Architect
A Software Architect provides a solution that the technical team can create and design for
the entire application. A software architect should have expertise in the following areas :
• 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.
• Should be able to review design proposals and tradeoff among themselves.
• Domain Expertise
• Expert on the system being developed and plan for software evolution.
• Assist in the requirement investigation process, assuring completeness and consistency.
• Coordinate the definition of domain model for the system being developed.
Topic: software design And Architecture
Reference No.1
Role of Software Architect
• Technology Expertise
• Expert on available technologies that helps in the implementation of the system.
• Coordinate the selection of programming language, framework, platforms,
databases, etc.
• Methodological Expertise
• Expert on software development methodologies that may be adopted during SDLC
(SoftwareDevelopmentLifeCycle)
• Choose the appropriate approaches for development that helps the entire team.
Topic: software design And Architecture
Reference No.1
Quality Attributes
Quality is a measure of excellence or the state of being free from deficiencies or defects. Quality
attributes are the system properties that are separate from the functionality of the system.
Implementing quality attributes makes it easier to differentiate a good system from a bad one.
Attributes are overall factors that affect runtime behavior, system design, and user experience.
They can be classified as −
•Static Quality Attributes − Reflect the structure of a system and organization, directly
related to architecture, design, and source code. They are invisible to end-user, but affect
the development and maintenance cost, e.g.: modularity, testability, maintainability, etc.
•Dynamic Quality Attributes − Reflect the behavior of the system during its execution.
They are directly related to system’s architecture, design, source code, configuration,
deployment parameters, environment, and platform. They are visible to the end-user and
exist at runtime, e.g. throughput, robustness, scalability, etc.
Topic: software design And Architecture
Reference No.1
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 −
 Source − An internal or external entity such as people, hardware, software, or physical
infrastructure that generate the stimulus.
 Stimulus − A condition that needs to be considered when it arrives on a system.
 Environment − The stimulus occurs within certain conditions.
 Artifact − A whole system or some part of it such as processors, communication channels,
persistent storage, processes etc.
 Response − An activity undertaken after the arrival of stimulus such as detect faults, recover
from fault, disable event source etc.
 Response measure − Should measure the occurred responses so that the requirements can
be tested.
References / Resources
1. http://seu1.org/files/level4/IT242/Software%20Engineering%20_%207th%20Edition.pdf
Software Engineering by Roger S. Pressman 7th Edition.