4. What is Architecture?
◦ the action or process of building; construction.
◦ a plan for organizing space
◦ a systematic arrangement of information or ideas.
◦ the manner in which the components of a computer or computer
system are organized and integrated.
8. Structure Matters – Dijkstra 1968
◦ Dijkstra, 1968:
◦ „‟...Correct arrangement of the structure of software systems
◦ before simple programming...„‟
◦ Layered Structure
◦ Programs are grouped into layers
◦ Programs in one layer can only communicate with programs in adjoining layers
◦ with easier development and maintenance
Edsger
Dijkstra
1930-2002
9. Evolution of software Problem
Software problems have changed in nature
(algorithmic to general purpose applications)
and increased in complexity (to millions and
millions lines of code)
It has now become very hard/impossible to
develop system without architecture
11. Structure concept in Software
1960s - Structured Programming
Adopted into programming languages because it‟s a better way to think about programming
1970s - Structured Design
Methodology/guidelines for dividing programs into subroutines.
1980s – Modular programming languages
Modular (object-based) programming
Grouping of sub-routines into modules with data.
1990s – Towards Software Architectures
Object-Oriented Analysis/Design/Programming started being commonly used
Software Architecture Design
2000s - Software Architectures
Starting to be Common Practice
Specialization of concepts
12. Large scale complex software
systems…
◦ Large(distributed) systems.
◦ Many people working on the same problem
◦ Programming in the large
◦ Million of lines of code
◦ Overly complex
◦ Should be delivered on time and budget.
◦ Only the coding will not do.
◦ According to Brook: Adding more programmers will make a delayed project later.
14. Definitions
◦ Basic artifact shown to the customers and made from the requirements.
◦ Breaking down of the system into components
◦ And describing the interrelations between the components
◦ A prototype of the system
◦ Identify the components of the system along with the interraction between them
◦ Its an abstraction of the system
◦ Earliest artifact
15. SOFTWARE ARCHITECTURE- Booch 1991
◦ “The logical and physical structure of a system, forged by all the strategic and tactical decisions
applied during development.”
◦ Architecture is the high level structure of a system.
client,
users
architect developers
appearance,
behaviour
construction,
co-operation
architectural
design
visualises prescribes
requirements solutions
creates
assess assess
16. SOFTWARE ARCHITECTURE- Perry and Wolf
◦ Perry and Wolf distinguish between processing elements, data elements, and connecting
elements, and this taxonomy of architectural elements largely persists through most other
definitions and approaches.
SOFTWARE ARCHITECTURE- IEEE
◦ “Software architecture is the fundamental organization of a system, embodied in its components,
◦ their relationships to each other and their environment,
◦ and the principles governing its design and evolution.”
SOFTWARE ARCHITECTURE – BASS,
CLEMENTS, KAZMAN
◦ The software architecture of a program or computing system is the structure or structures of the system,
which comprise software elements, the externally visible properties of those elements and the relationships
among them.
24. 24
Adding architecture, the easy way
architecture
detailed design
implementation
requirements
agreement
quality
development
stakeholders
(few)
25. 25
Architecture in the life cycle
requirements
architecture
quality
agreement
stakeholders
(many)
development
26. Quality
◦ This can be compared with the construction of a sky scraper. Due to the complexity of such a building,
we need to think about the qualities of the building upfront. For example, if the landlord requires the
building to be earthquake resistant, the architect will think about solutions from seismic engineering
and add structures to the building that can resist lateral forces. At this point he will not specify the
materials or the supplier of those structures as those are construction details
28. WHAT IS SOFTWARE DESIGN
◦ Software design is the process by which we create a specification of a software artifact, using
a set of primitive components and subject to constraints.
◦ The process of defining the architecture, components, interfaces, and other characteristics of a
system or component.
DIFFERENCE
◦ Software architecture deals with high level concepts without regard to any implementation
details. Software design on the other hand takes high level concepts and applies concrete
details so that software can be implemented.
◦ Every architectural work is a kind of design, but the reverse is not true
29. It's about addressing those architecturally significant requirements (the "what") that
will drive (and constrain) the "how" (the design).
30. SA
◦ Provides a design plan of a system
◦ Blueprint
◦ Implies purpose
◦ Is an abstraction that helps in managing the complexity of a system
◦ Software architects are limited by
◦ Lack of standardized ways to represent architecture
◦ Lack of analysis methods to predict whether an architecture will result in an implementation that meets
the requirements
31. QUESTION
◦ What do you think would happen if same requirements were given to two different architects of
different organizations?
32. ARCHITECTURE BUSINESS CYCLE
(ABC)
◦ SA – result of technical, business, and social influences
◦ A SA also influences technical, business, and social environment
◦ That, subsequently, influence future SAs
33. Architecture affects following factors:
◦ Structure of the developing organization
◦ Goals of the developing organization
◦ Customer requirements for the next system
◦ Architect’s experience for subsequent systems
◦ Technical Environment
34. TERMINOLOGY
1. Architectural style/pattern:
◦ Defines element types and how they interact together with a set of constraints
◦ Sometimes defines a mapping of functionality to architectural elements
◦ An architectural style determines the vocabulary of components and connectors that can be
used in instances of that style, together with a set of constraints on how they can be
combined. These can include topological constraints on architectural descriptions (e.g., no
cycles). Other constraints—say, having to do with execution semantics—might also be part
of the style definition
◦ E.g. Client Server Architectural Pattern.
35. ◦ The following table lists the major areas of focus and the corresponding architectural styles.
36. 2. Reference/domain specific architecture:
◦ Defines element types and how they interact
◦ They apply to a particular domain
◦ They define how the domain functionality is mapped to architectural(software) elements.
37. 3. Product line architecture:
◦ A software product line is a set of software-intensive systems that share a common, managed set
of features satisfying the specific needs of a particular market segment or mission and that are
developed from a common set of core assets in a prescribed way.
◦ Applies to a set of products within a company
◦ Defines element types, how they interact, how the product functionality is mapped to them
◦ May also define some of the instances of the architectural Elements. E.g., error-reporting components
would be common to many products of the product line
Editor's Notes
Palace example. Mother Board of a Computer
Dijkstra is well known nowadays as the inventor of structured programming—in which programs flow from top to bottom following a hierarchical model. As the terminology implies, this invention has made code more structured, and, more specifically, clearer, faster, better organized, and higher quality. Example: Operating System
MS office example changed, but the basic architecture remains the same
Software Development bricks- arrays, lists, functions and procedures, etc.
More programmers won’t help.
18
19
20
21
22
23
24
25
Client server and the coordination through protocols. The functionality is not defined.