Lecture 11.ppt

Download Report

Transcript Lecture 11.ppt

Lecture 11
COMSATS Islamabad
Enterprise
Systems
Development
( CSC447)
Muhammad Usman, Assistant Professor
Software Architecture
Software Architecture
You employ stone, wood and concrete, and
with these materials you build houses and
palaces. That is construction. Ingenuity at
work. But suddenly you touch my heart, you
do me good, I am happy and I say “ That is
beautiful.” That is Architecture.
-Le Corbusier 1923
Antecedents of Software Architecture
4
5
6
7
8
Software Architecture in Context
A computer system
10
A computer system in isolation…
?
In space, no-one can hear you
11
Stakeholders…
Operator
QA
Architect
Consumer
Technician
Developer
Customer CEO
Supplier CEO
Sysadmin
BillGates
12
Other systems…
Payroll
Management
reporting
Accounting
Networking
infrastructure
Enrolments
Student Labs
13
Opportunities and risks…
Sell a few systems
Tax issues
Misjudge the market
Sell a lot of systems
Build a reputation
Go to IPO
BillGates
Deliver a poor performer
14
Late to market
Constraints and enablers…
Not many
database developers
Operating
system
Lots of
Java developers
Faster processor
Regulations
Legacy systems
Standards
Policies
Ethics and
environment
15
It’s complicated.
16
What is the role of architecture?
?
Leaning tower image from Gary Feuerstein.
Other images from The Big Ball of Mud, by Yoder and Foote.
17
Development lifecycle
Software
concept
Preliminary
requirements
analysis
Architecture sets system structure
Design of
architecture and
system core
First iteration implements system core
Develop
a version
Deliver a
version
Incorporate
customer
feedback
The evolutionary delivery lifecycle model
(Rapid Development, Steve McConnell)
Elicit
customer
feedback
Architecture plays a vital role in establishing the structure
of the system, early in the development lifecycle
18
System lifetime
Vision
Inception
Development
Deployment
Operation
Architecture is about decisions that affect
the whole lifetime of the system
Maintenance
Alteration
Legacy
operation
Death
19
The Architecture Business Cycle
20
Architectural Influences
• Stakeholders
– each stakeholder has different concerns & goals, some
contradictory
• Development Organization
– immediate business, long-term business, and organizational
(staff skills, schedule, & budget)
• Background & Experience of the Architects
– repeat good results, avoid duplicating disasters
• The Technical Environment
– standard industry practices or common SE techniques
21
Stakeholders
New
Features!
Performance!
Reliability!
Security!
Behavior!
Extensibility!
Maintainability!
Faster!
Compete!
End Users
Maintenance
Organization
Don’t Keep
Deliver on
Changing!
Time!
Marketing
Lower Cost!
Management
Stakeholder
Architect
Customers
22
Trade-offs
Architect
Performance
Security
Maintainability
Reliability
Current Cost
Future Cost
23
What is a good definition of
Software Architecture?
Software Architecture Definition
• The software architecture is the structure
or structures of the system, which
comprise software elements, the externally
visible properties of those elements and
the relationships among them
25
Software Architecture Defines
• The Software Elements
– Abstraction of the system
• Omits some information
• And relationships between elements
– Relationships typically are interfaces
– Architecture talks about the public interfaces
26
Other Definitions of Software Architecture
• Perry and Wolf
– Software Architecture = { Elements, Form, Rationale }
–
what
how
why
• Shaw and Garlan
– Software architecture [is a level of design that] involves
•
•
•
•
the description of elements from which systems are built,
interactions among those elements,
patterns that guide their composition, and
constraints on these patterns.
• Kruchten
– Software architecture deals with the design and implementation
of the high-level structure of software.
– Architecture deals with abstraction, decomposition, composition,
style, and aesthetics.
27
Other Definitions of Software
Architecture
• Organizational structure of a system or
component (IEEE Standard Glossary of Software
Engineering Terminology 1990)
• IEEE 1471-2000
– Software architecture is the fundamental
organization of a system, embodied in its
components, their relationships to each other and
the environment, and the principles governing its
design and evolution
28
29
30
What type of requirements drive architectural
design?
Answer: Quality attribute requirements are
the primary drivers for architecture design.
31
32
33
Architecture and Functionality
• Functionality is largely orthogonal to
quality attribute requirements.
• Functionality is the ability of a system
to do the work it was intended to do.
• Systems are decomposed into
elements to achieve a variety of
purposes other than function.
– Architectural choices promote certain
qualities as well as implement the
desired functionality.
34
Effects of Architectural Decisions
on Quality Attributes
• The degree to which a system meets it’s
quality attribute requirements is dependent
on architectural decisions.
• A change in structure improving one quality
often affects the other qualities.
• Architecture is critical to the realization of
quality attributes.
• These product qualities should be designed
into the architecture.
• Architecture can only permit, not guarantee,
any quality attribute.
35
Role of the Software Architect
Functional
Requirements
Communicate!
Balance
Quality
Attributes
Bring
Technology
Manage
Complexity
Balance
Stakeholder
Concerns
Report
Results
Architect
36
Systems Structure(s)
• Systems have more than one structure
– Module structure
– Interaction structure
– Deployment structure
• Every system has an architecture
• Behavior is part of the architecture
– Behavior allows component interaction to be
specified
37
Structures and Views
From: http://www.wordinfo.info/words/index/info/view_unit/1/?letter=B&spage=3
38
Structures and Views
• Modules
– Functional decomposition & uses information
– Class structure (generalization) & Layers
• Component-and-Connector
– Runtime components
– Concurrency and shared data models
• Allocation
– Deployment, Implementation, work
assignments
39
Types of Views
How to express each
view. What is each view
useful for?
Module
Runtime
Architect
Allocation
40
Integrating the Views
From: http://www.wordinfo.info/words/index/info/view_unit/1/?letter=B&spage=3
41
Behavioral Modeling
42
Views
• Systems are composed of many
structures
– Code units, their decompositions
and dependencies
– Processes and how they interact
– How software is deployed on
hardware
– And others
• A view is a representation of a
structure, that is, a representation of
a set of system elements and the
relations associated with them.
43
SEI Architectural Viewtypes
A viewtype defines the element types and relationship
types used to describe the software architecture from a
particular perspective.
• Module Viewtypes describe how the
system is to be structured as a set of units
of implementation.
• Component and Connector (C&C)
Viewtypes describe how the system is to
be structured as a set of interacting
runtime elements.
• Allocation Viewtypes describe how the
system relates to non-software structures
in its enviroment.
44
Reference
• Bass, L., Clements, P. and Kazman, R., Software
Architecture in Practice, Second Edition (2006), AddisonWesley.
• Clements, P., Bachmann, F., Bass, L., Garlan, D., Ivers,
j., Little, R., Nord, R. and Stafford, J., Documenting
Software Architectures: Views and Beyond, 2002,
Addison-Wesley. Documenting Software Architectures
45