L8 - Software Architecture - Layered, MVC, Pipe-Filter
L8 - Software Architecture - Layered, MVC, Pipe-Filter
Software Engineering
Software Architecture
Imran Zahid
Lecturer
Computer Science and Engineering, BRAC University
Software Architecture
Software Architecture
• Defines the high-level structure of a software system, setting the
foundation for design and implementation.
• Outlines interactions between components and their organization
within the system.
• Influences scalability, flexibility, and maintainability of the software.
Software Architecture
• Architectural design is concerned with understanding how a
software system should be organized and designing the overall
structure of that system.
• Software Architecture is how the defining components of a software
system are organized and assembled, how they communicate each
other, and the constraints the whole system is ruled by.
• The architectural model serves as a input to the development
phase.
Architectural Representation / Diagram
Simple, informal block diagrams showing entities and relationships are
the most frequently used method for documenting software
architectures.
Advantages of Explicit Architecture
• Stakeholder communication
• Architecture may be used as a focus of discussion by system stakeholders.
• System analysis
• Analysis of whether the system can meet its non-functional requirements is
possible.
• Large-scale reuse
• The architecture may be reusable across a range of systems
Necessity of Software Architecture
• Provides a structured foundation for organized development.
• Enhances scalability and adaptability to changing requirements.
• Simplifies maintenance and debugging through clear component
organization.
• Mitigates risks by identifying challenges early in the design process.
Layered Architecture
Lets recall Monolithic Software
• The end product comes at end of the process model
• There is no separation of concern of different software components.
• All code may be written in a single file with html, sql queries, logic
checking etc.
The problem?
• No separation between components
• Changing a component affects other components. For example –
What if I want to change the UI from JavaScript to Angular ?
Layered Architecture
• One of the most common architecture pattern is the layered
architecture pattern, otherwise known as the n-tier architecture
pattern.
• This pattern is the de facto standard for most Java EE applications
and therefore is widely known by most architects, designers, and
developers.
• The layered architecture pattern closely matches the traditional IT
communication and organizational structures found in most
companies, making it a natural choice.
Layered Architecture
• Organises the system into a set of layers (or abstract machines) each
of which provide a set of services.
• Supports the incremental development of sub-systems in different
layers. When a layer interface changes, only the adjacent layer is
affected.
Layered Architecture
• Although it does not specify Customer
Screen, Browser,
the number and types of layers Keyboard input