Chapter Three - Envisioning Architecture
Chapter Three - Envisioning Architecture
Envisioning Architecture
1
The Architecture Business Cycle
The architecture business cycle refers to the iterative process
of creating, evolving, and managing software architecture
throughout its lifecycle.
It involves several key stages:
Requirements Gathering: Understand the project’s
objectives, functional requirements, and non-functional
requirements to establish a solid foundation for
architecture design.
Architecture Design: Create a high-level design that
addresses the project’s requirements, including selecting
suitable architectural styles, components, and interfaces.
2
The Architecture Business Cycle
Implementation: Develop the software solution based on the
architectural design, ensuring that the chosen technologies and
frameworks align with the defined architecture.
Testing and Validation: Conduct thorough testing to ensure
the software meets the defined requirements and adheres to
the architectural principles.
Deployment and Operation: Deploy the software into the
production environment, monitor its performance, and address
any issues that arise during operation.
Maintenance and Evolution: Continuously maintain and
improve the software architecture as new requirements
emerge or technologies evolve, ensuring long-term viability.
3
What is Software Architecture?
Software architecture forms the basis of any software project
and serves as an extensive framework for building,
implementing, and maintaining software systems.
It functions as the blueprints for the system and the
development project.
The software architecture of a system represents the design
decisions related to overall system structure and behavior.
Architecture helps stakeholders understand and analyze how
the system will achieve essential qualities such as
modifiability, availability, and security.
4
Cont…
Key Principles of Software Architecture: Developers must follow
several key concepts to produce an efficient software architecture:
Modularity: The software system must be divided into different
stand-alone blocks or parts. Such a modular strategy encourages
reusability, thus making both development and maintenance easier.
Separation of Concerns: is a principle used in programming to
separate an application into units, with minimal overlapping between
the functions of the individual units. The division of this group
decreases the reliance on the system and its maintenance ability.
Abstraction: Abstracting involves masking complex implementation
details with easy-to-use front ends. It helps that a developer doesn't
get bogged in specifics and instead can focus on big-picture items.
5
Cont…
Decomposability: Complicated systems or issues should be
divided into smaller, easily manageable units. As a result,
development tests and maintenance become easier.
Flexibility: Therefore, the architecture must be versatile and
consider future developments. Therefore, adding or
subtracting items or changing specifications should easily
avoid a big disruption during work processes.
6
Types of Software Architecture Patterns
different types of software architecture patterns could help
development teams build successful products.
Understanding a few characteristics of the most popular
architectures and design patterns should make it easier for teams
to reach their goals.
Model-View-Controller Pattern (MVC)- The three
interdependent components of MVC are Model (data and
business logic), View (presentation and user interface), and
Controller (handling user input). This is a common strategy
adopted by many web and desktop applications.
Layered Architecture: The program is split into numerous
layers with different responsibilities. Some layers include the
display, business logic, and data access layers.
7
Cont…
Microservices: The microservices design facilitates the
division of a system into several small and independent
services. They can also develop, run, and scale them
independently. This is a good strategy for large and complex
applications.
Event-Driven Architecture: It links message and event
components here in this case. The actor model is appropriate
for reactive real-time processes, distributed systems, and
event processing for nonfunctional requirements.
Component-Based Architecture: This approach enables
one to develop reusable components with different
functionalities within the same software. It will help you
create flexible plans that are easy to understand.
8
Software Architecture Challenges
Although software architecture has many advantages, it
also has its share of difficulties:
Complexity: The more complex the architecture of
software systems becomes, the harder it is to design and
maintain them. However, it's important to keep a simple
and modular architecture for fear of overloading.
Changing Requirements: Software architectures must be
adaptive to the evolving requirements of users and
businesses. This calls for combining rigidity with elasticity.
Security issues: Lack of proper architectural design can
lead to vulnerabilities and security breaches. Security
should be considered at all levels of the architecture.
9
Cont…
Scalability issues: However, not all architectural designs have
such qualities. However, assuming that all architectural designs
may be easy to scale is difficult. Therefore, it is necessary to
ensure that the architecture can change to suit the application's
needs. Consequently, modifications should accompany the
architectural framework to facilitate the application's needs.
Cost considerations: Certain system operational cost decisions
can also be influenced by some of the architecture choices. The
balance between price and performance must be struck.
Documentation and Communication: Good documentation
of the architectures and effective communication between the
development team ensures that everyone understands and
follows the architectures properly.
10
Architectural structures and views
A view is a representation of a coherent set of
architectural elements, as written by and read by
system stakeholders.
It consists of a representation of a set of elements
and the relations among them. A structure is the set
of elements itself, as they exist in software or
hardware.
11
4+1 Architectural View Model
4+1 architectural view model is a model for describing
the architecture of software-intensive systems, based on
the use of multiple, concurrent views.
Views are used to describe the system from the viewpoints of
different stakeholder, such as end users, developers and project
managers
Suitable for large and challenging architectures
It was created by Philippe Kruchten.
It is very important to mention that 4+1 was released
two years before the first introduction of UML but the
4+1 approach stills plays a relevance today and is UML
friendly, even on its latest version (2.5.1).
12
4+1 Architectural View Model
The views of the 4+1 model are:
15
4+1 View cont’d
Logical
Focus: Functional requirements of the system
Viewer: End-user
UML-Diagram: Class diagrams, sequence diagrams
Development (implementation)
Focus: Software module organization (Static organization of the software in its
development environment )
Viewer: Programmers and project managers
UML-Diagram : Component diagram, Package diagrams
Process
Focus: Runtime behavior of the system, such as the system processes and
communication, concurrency, performance and scalability(Non-functional
requirements)
Viewer: integrator(s)
16 UML-Diagram : Activity diagrams.
4+1 View cont’d
Physical (Deployment)
Focus: Non functional requirements for hardware(looking at
the system topology, deployment and communication)
Viewer: System Engineers
UML-Diagram : Deployment diagrams