Not Unit - 4
Not Unit - 4
Architectural Design
Architectural design is concerned with understanding how a software
system should be organized and designing the overall structure of that
system.
Unit 4 1
Architectural abstraction:
1. Stakeholder communication:
The architecture is a high-level presentation of the system that may be
used as a focus for discussion by a range of different stakeholders.
2. System Analysis:
Means that analysis of whether the system can meet its non-functional
requirements is possible.
3. Large-scale reuse:
Architectural Representations
Simple, informal block diagrams showing entities and relationships are the
most frequently used method for documenting software architectures.
But these have been criticised because they lack semantics, do not show
the types of relationships between entities nor the visible properties of
entities in the architecture.
The requirements for model semantics depends on how the models are
used.
Very abstract - they do not show the nature of component relationships nor
the externally visible properties of the sub-systems.
Unit 4 2
However, useful for communication with stakeholders and for project
planning.
The aim is to produce a complete system model that shows the different
components in a system, their interfaces, and their connections.
Unit 4 3
Systems in the same domain often have similar architectures that reflect
domain concepts.
Architecture Reuse
Application product lines are built around a core architecture with variants
that satisfy particular customer requirements.
Performance
Security
Unit 4 4
the innermost layers and a high level of security validation applied to
these layers.
Safety
Availability
Maintainability
Architectural views
What views or perspectives are useful when designing and documenting a
system’s architecture?
It might show how a system is decomposed into modules, how the run-
time processes interact or the different ways in which system
components are distributed across a network. For both design and
documentation, you usually need to present multiple views of the
software architecture.
Unit 4 5
4 + 1 view model of software architecture
A logical view, which shows the key abstractions in the system as objects
or object classes. It should be possible to relate the system requirements to
entities in this logical view.
A physical view, which shows the system hardware and how software
components are distributed across the processors in the system. This view
is useful for systems engineers planning a system deployment
I disagree with this as I do not think that the UML includes abstractions
appropriate for high-level system description.
Unit 4 6
Architectural description languages (ADLs) have been developed but are
not widely used.
Architectural patterns
Patterns are a means of representing, sharing, and reusing knowledge.
Patterns should include information about when they are and when they are
not useful.
Unit 4 7
The Web application architecture using MVC pattern
Layered Architecture
Used to model the interfacing of sub-systems.
Organises the system into a set of layers (or abstract machines) each of
which provide a set of services.
Unit 4 8
A generic layered Architecture
Unit 4 9
Repository architecture
Sub-systems must exchange data. This may be done in two ways:
Each sub-system maintains its own database and passes data explicitly
to other sub-systems.
Unit 4 10
Client-server architecture
Distributed system model showing how data and processing are
distributed across a range of components.
Unit 4 11
Set of clients calling on these services.
Unit 4 12
Variants of this approach are common. When transformations are
sequential, this is a batch sequential model, widely used in data
processing systems.
Application Architectures
Application architectures
Unit 4 13
A generic application architecture is a type of software architecture that
can be configured and adapted to meet specific requirements.
As a design checklist.
E-commerce systems
Reservation systems
Compilers
Command interpreters
Unit 4 14
Unit 4 15
Design and implementation
Design and implementation
Unit 4 16
Build or buy
Process stages
Unit 4 17
Deciding how to provide the required system functionality.
Architectural design
Once interactions between the system and its environment are understood,
the information is used to design the system architecture.
Identify the major components of the system and their interactions, then
organize components using an architectural pattern (e.g., layered or
client-server model).
Unit 4 18
Identifying object classes is often a difficult part of object-oriented
design.
Approaches to identification
Design models
Design models show objects and object classes and the relationships
between them.
Unit 4 19
Subsystem models: Show logical groupings of objects into coherent
subsystems.
Subsystem models
Show how the design is organized into logically related groups of objects.
In the UML, these are shown using packages, which are an encapsulation
construct. This is a logical model, and the actual organization may differ.
Sequence models
Unit 4 20
State diagrams
State diagrams are used to show how objects respond to different service
requests and the state transitions triggered by these requests.
You don’t usually need a state diagram for all of the objects in the system.
Many of the objects in a system are relatively simple and a state model
adds unnecessary detail to the design.
Interface specification
Objects may have several interfaces which are viewpoints on the methods
provided.
The UML uses class diagrams for interface specification but Java may also
be used.
Unit 4 21
Design patterns
Design patterns
Patterns
Patterns and Pattern Languages are ways to describe best practices, good
designs, and capture experience in a way that it is possible for others to
reuse this experience.
Pattern elements
Unit 4 22
Name: Observer.
Description: Separates the display of object state from the object itself.
Unit 4 23
Design problems
To use patterns in your design, you need to recognize that any design
problem you are facing may have an associated pattern that can be applied.
Observer pattern: Tell several objects that the state of some other
object has changed.
Implementation issues
Implementation issues
Unit 4 24
Configuration management: During the development process, you
have to keep track of the many different versions of each software
component in a configuration management system.
Reuse
From the 1960s to the 1990s, most new software was developed from
scratch, by writing all code in a high-level programming language.
The only significant reuse of software was the reuse of functions and
objects in programming language libraries.
Costs and schedule pressure mean that this approach became increasingly
unviable, especially for commercial and Internet-based systems.
Reuse levels
The abstraction level: At this level, you don’t reuse software directly but
use knowledge of successful abstractions in the design of your software.
The object level: At this level, you directly reuse objects from a library
rather than writing the code yourself.
The system level: At this level, you reuse entire application systems.
Unit 4 25
Reuse costs
Time spent in searching and assessing reusable software: The time spent
looking for software to reuse and evaluating whether it meets the system's
requirements.
Configuration management
Unit 4 26
Version management: Supports tracking different versions of software
components and coordinating development among several programmers.
Problem tracking: Provides support for users to report bugs and issues,
and allows developers to track who is working on problems and when they
are resolved.
Host-target development
Unit 4 27
Development platform tools
Testing tools, such as Junit, that can automatically run a set of tests on a
new version of a program.
Project support tools that help you organize the code for different
development projects.
Unit 4 28
If a component is designed for a specific hardware architecture, or relies on
some other software system, it must obviously be deployed on a platform
that provides the required hardware and software support.
Open-source development
Open-source development
Open-source systems
Other important open-source products are Java, the Apache web server,
and the mySQL database management system.
Open-source issues
Unit 4 29
Open-source business
They believe that involving the open-source community will allow software
to be developed more cheaply, more quickly, and will create a community
of users for the software.
Others are willing to allow their code to be used without this restriction. The
developed systems may be proprietary and sold as closed-source systems.
License models
The GNU Lesser General Public License (LGPL): This is a variant of the
GPL license where you can write components that link to open-source code
without having to publish the source of these components.
License management
Unit 4 30
Establish a system for maintaining information about open-source
components that are downloaded and used.
Unit 4 31