Unit - 1 - Software Architecture
Unit - 1 - Software Architecture
1. Rapid Application development model helps to reduce the risk and required efforts on the part of
the software developer.
2. This model also helps clients to take quick reviews for the project.
3. This methodology encourages customer feedback which always provides improvement scope for
any software development project.
FURPS is a checklist for requirements, which help maintain a SQ Standard. It compromises:- (a) Functional
(features, capabilities, security), (b) Usability (human factors, help, documentation)
(c) Reliability (frequency of failure, recoverability, predictability), (d) Performance (response time,
throughput, accuracy, availability, resource usage), (e) Supportability (adaptability, maintainability,
internationalization, configurability)
Software Architecture
Software architecture has been an evolutionary discipline starting with monolithic mainframes to recent
micro services.
Component - A Component is a unit of behaviour. Its description defines what the component can do and
what it requires to do that job.
Connector - A Connector is an indication that there is a mechanism that relates one component to another
usually through relationships such as data flow or control flow.
Changing the grouping of behaviours in components or changing which components are connected
changes the value of certain quality attributes.
Component-and-connector structures help answer questions such as-
• What are the major executing components and how do they interact?
• What are the major shared data stores?
• Which parts of the system are replicated? How does data progress through the system?
• What parts of the system can run in parallel?
• How can the system's structure change as it executes?
Process, or communicating processes - Like all component-and-connector structures, this one is
orthogonal to the module-based structures and deals with the dynamic aspects of a running system. The
units here are processes or threads that are connected with each other by communication,
synchronization, and/or exclusion operations. The relation in this (and in all component-and-connector
structures) is attachment, showing how the components and connectors are hooked together. The process
structure is important in helping to engineer a system's execution performance and availability.
Concurrency - This component-and-connector structure allows the architect to determine opportunities
for parallelism and the locations where resource contention may occur. The units are components and the
connectors are "logical threads." A logical thread is a sequence of computation that can be allocated to a
separate physical thread later in the design process. The concurrency structure is used early in design to
identify the requirements for managing the issues associated with concurrent execution.
Shared data, or repository - This structure comprises components and connectors that create, store, and
access persistent data. If the system is in fact structured around one or more shared data repositories, this
structure is a good one to illuminate. It shows how data is produced and consumed by runtime software
elements, and it can be used to ensure good performance and data integrity.
Client-server - If the system is built as a group of cooperating clients and servers, this is a good component-
and-connector structure to illuminate. The components are the clients and servers, and the connectors are
protocols and messages they share to carry out the system's work. This is useful for separation of concerns
(supporting modifiability), for physical distribution, and for load balancing (supporting runtime
performance).
Common Software Architecture Framework
The software needs the architectural design to represent the design of software. IEEE defines architectural
design as “the process of defining a collection of hardware and software components and their interfaces
to establish the framework for the development of a computer system.” The software that is built for
computer-based systems can exhibit one of these many architectural styles.
Each style will describe a system category that consists of:
• A set of components (e.g.: a database, computational modules) that will perform a function required
by the system.
• The set of connectors will help in coordination, communication, and cooperation between the
components.
• Conditions that how components can be integrated to form the system.
Usage
1. Online applications such as email, document sharing and banking.
Figure 1.21 Relationship of Reference models, architectural patterns, and reference architectures
Reference models, architectural patterns, and reference architectures are not architectures; they are
useful concepts that capture elements of an architecture. Each is the outcome of early design decisions. A
software architect must design a system that provides concurrency, portability, modifiability, usability,
security, and the like, and that reflects consideration of the trade-offs among these needs.