Top Banner
An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay
33

An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

Dec 16, 2015

Download

Documents

Derick White
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

An Introduction to Software Architecture

Prof. R K JoshiDepartment of Computer Science and

EngineeringIIT Bombay

Page 2: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

Why Do We need Architecture?

• Understand the system– Complex systems

• Organize the development– According to architectural partitioning

• Reuse– Componentization

• Evolution – Changes and dependencies

Page 3: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

Several Approaches to Architecture [e.g. see in Malveau & Moubray 2001]

• Zachman Framework (IBM)– 30 architectural viewpoints

• Open Distributed Processing (ISO standard)– 5 viewpoint reference model

• Domain Analysis• 4+1 View Model (Unified Process-Rational)• Academic Software Architecture Approaches

Page 4: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

The Zachman Framework[Zachman institute of framework advancement]

– “To keep the business from disintegrating, the concept of information systems architecture is becoming less of an option and more of a necessity” – Zachman in 1987

– Developed by Zachman from observing how architectures in engineering, construction and manufacturing managed change

– Intersection between roles in the design process and product abstractions

– Roles (in rows): Owner, Designer, Builder– Product Abstractions (in columns): What is it made up of (data),

How it works (process), Where are the components located (geometry)

– 3 additional columns: Who (people), When (time), Why (motivation)

– 2 additional rows: Planner, Subcontractor

Page 5: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

Open Distributed Processing Reference Model

• For architecture supporting distribution, internetworking, interoperability and portability

• Five viewpoints– Enterprise (purpose, scope and policies)– Information (semantics of information and information

processing)– Computational (functional decomposition)– Engineering (infrastructure to support distribution)– Technology (for implementation: Mappings between

objects and specific standards and technologies)• The set of viewpoints is not closed• Each of the viewpoint is object oriented

Page 6: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

ODP: Enterprise viewpoint

• Directly understandable by managers and end users• Defines business purpose, scope and policies• Includes permissions, prohibitions and obligations• Example:

– Active objects: managers, tellers, customers– Passive objects: accounts– Bank managers must advise customers when interest rate

changes (obligation)– Cash less than 40000 can be drawn per day (prohibition)– Money can be deposited (permission)

Page 7: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

ODP: Information viewpoint

• Definitions of information schemas as objects– State and structure of objects

• E.g. account = balance and amount withdrawn today

• Three kinds of schemas:– static

• At midnight, amount withdrawn today=2000– Invariant

• At anytime, amount withdrawn today <=40000– Dynamic

• A deposit of X increases the balance by X and a withdrawal of X decreases the balance by X

• Always constrained by invariant

• Schemas may relate objects– E.g. in customer object: owns account static schema

Page 8: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

ODP: Computational viewpoint• Software components which are capable of supporting distribution• Large grained object encapsulations, subsystem interfaces and

behaviors• Objects can offer multiple interfaces• 3 types of interactions among objects

– Operational : client-server, RPC : with parameters and results– Stream oriented– Signal oriented

• Inheritance of Interface and subtyping• Operations such as object creation, trading for an interface,

interface creation, binding, operation invocation • Examples

– Application objects: Bank branch with bank teller (deposit, withdraw) and bank manager (create account, deposit, withdraw) interfaces for customers

– ODP infrastructural objects: Trader

Page 9: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

ODP: Engineering viewpoint

• Brings out the distributed nature of the system• Objects and Channels• Objects

– Basic engineering objects correspond to computational objects– Infrastructural objects such as protocol objects

• E.g. stub, binder and protocol object (proxy/skeletons) + communication interface between protocol objects

• Engineering structure of the system is described – E.g. cluster, nucleus object, capsule of clusters, a machine

node, a cluster may contain many engineering objects, an object can contain many activities, inter-cluster communication via channels

Page 10: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

ODP: Transparencies Defined• Access

– hides the difference in data representation and invocation mechanism – enables heterogeneous systems to communicate

• Failure– Hides failures and possible recoveries of objects for fault tolerance

• Location– Hides the location information while finding and bind to an object

• Relocation– Masks the changes in the location of an object from its clients

• Migration– Masks the awareness of changes in location of the object from itself and from

others• Replication

– Masks the existence of replicated objects• Persistence

– Masks activation and deactivation of objects• Transaction

– Masks coordination of activities to achieve consistency

Page 11: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

4+1 View Model[P.B. Kutchen, 1995]

• Sometimes software architecture suffers from system designers who go too far..other software engineers fail to address the concerns of all customers

• 4+1 view model: Has 5 concurrent views• Logical view- e.g. object model using object oriented

design method• Process view – concurrency and synchronization

aspects• Physical view – mapping of components to hardware,

distribution aspect• Development view – organization of the actual software

modules – libraries, packages, subsystems• Use case view

Page 12: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

Unified Process Model of Architecture

• Architecture description is a proper extract of the models of the system (use case model, analysis model, design model, deployment model, implementation model)– e.g. Contains only architecturally significant use cases, whereas

final use case model contains all use cases;– Similarly architectural view of design model realizes only the

architectural use cases– First version of architecture is extract at the end of elaboration

phase and so on• Developed iteratively during elaboration phase• Focus on significant structural elements of the system

– Subsystems, classes, components, nodes

• Use cases architecture

Page 13: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

Commonly occurring Architectural Patterns

• Fundamental structural organization schemas • For example:

– Layers– Pipes and Filters– Blackboard– Broker– Model-View-Controller– Presentation-Abstraction-Control– Microkernel– Reflection– Client-server

Page 14: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

Frameworks: An Approach to Adaptable Architecture

• Partially complete software

• It is instantiated as a product

• For product families/product lines

• Frozen spots and hot spots

Page 15: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

Enabling Techniques

• Abstraction• Encapsulation• Information Hiding• Modularization• Separation of Concerns• Coupling and Cohesion• Sufficiency, Completeness and Primitiveness• Separation of Policy and Implementation• Separation of Interface and Implementation• Single point of reference• Divide and Conquer

Page 16: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

Languages for Architectural Description

• Architectural components +

• Connectors

• Constraints

Different ADLs have their own metamodels for the above

Page 17: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

ACME

• Developed at CMU• 7 types of elements

– Component– Connector– Systems– Ports– Roles– Representations– Representation maps

Page 18: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

Components and Ports

• Primary computational elements

• Data stores

• Ex: clients, servers, filters, objects, blackboards, databases

• Can have multiple interfaces termed as ports

Page 19: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

Connectors and Roles

• Represents interactions among components• They also have interfaces termed as roles• Each role defines a participant in the connector’s

interaction• Binary connectors: 2 roles

– Ex1 caller, callee on RPC– Ex2 reading, writing on Pipe– Ex3 sender, receiver on message passer

• Multiple roles– Ex. Broadcast connector: 1 event announcer, many

event receivers

Page 20: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

System and Attachments

• A Graph

• Nodes are components

• Arcs are connectors

• Components are attached to roles of connectors through component ports

• Topology of a system is given by the list of attachments

Page 21: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

Representations

• Supports hierarchical descriptions

• A component or connector can be further detailed by low level description called representation

• Multiple representations for a single component are possible– To represent multiple views

Page 22: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

Representation Maps

• Rep-maps establish correspondence internal representation and external interface (ports/roles) of components/connectors that represent

• E.g. association between internal ports and external ports in case of components

• Or Associations between internal roles and external roles in case of connectors

Page 23: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

Properties

• Beyond structure, document extra-structural properties

• Any of the 7 classes of Acme entities can be annotated with properties

• A property can be a tripple <name,type,value>• List of properties may be associated with an

element• Ex: scheduling constraints, resource

consumption etc.

Page 24: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

An Example Description

System S = {component client = { port sendReq }component server = {port recReq }connector RPC = {Roles {caller, callee} }Attachments: {

client.sendReq to rpc.caller ;server.recReq to rpc.callee;

}}

Page 25: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

An Example Description: pictorial view

sendReqport

recReq port

System RPC

client server

ConnectorRPC

Role caller

Rolecallee

Page 26: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

Detailing Server componentcomponent server = {

port recReq Representation serverDetails = {

System serverDetailsSys = {component connectionManager;component securityManager;component database;connector sqlQuery;connector clearanceRequest;connector securityQuery;Attachments: {….}

}Bindings {connectionManager.externalSocket

server.recReq}}

}

Page 27: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

Using Representations for Hierarchical Descriptions

senReqport

recReq port

System RPC

client server

ConnectorRPC

Role caller

Rolecallee

Connectionmanager

securitymanager

databasemanager

SQLQuery

securityQuery

clearanceRequest

Page 28: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

Internal Components

component connectionManager = {ports { externalSocket, securitycheck, dbQuery }

}Component securityManager = {

ports { securityAuthorization, creditialsQuery}}Component database = {

ports {securityManagement, query}}

Page 29: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

Components: Pictorial View

ConnectionManager

SecurityManager

Database

Port externalSocket

Port dbQuery

PortSecurtyCheck

PortSecurtyAuthorization Port

credintialsQuery

Port queryPort securityManagement

Page 30: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

Internal Connectors

Connector SQLQuery =

{roles {caller, callee}}

Connector clearanceRequest =

{roles {requester, granter}}

Connector securityQuery =

{roles {securityManager, requester}}

Page 31: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

Connectors: Pictorial View

ConnectionManager

Port externalSocket

Port dbQuery

PortSecurtyCheck

SecurityManager

PortSecurtyAuthorization Port

credintialsQuery

Database

Port queryPort securityManagement

SQLQuery

securityQuery

clearanceRequest

caller

callee

requester granter

securityManager

requester

Page 32: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

Internal Attachments

Attachments {connectionManager.securityCheck to clearanceRequest.requestersecurityManager.securityAuthorization to clearanceRequest.granterConnectionManager.dbQuery to SQLQuery.callerDatabase.query to SQLquery.calleesecurityManager.credintialQuery to securityQuery.securityManagerDatabase.securityManagement to securityQuery.requester

}

Page 33: An Introduction to Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay.

References/Readings

• John Zachman, A Framework for Information Systems Architecture", IBM Systems Journal, Vol 26, No 3, 1987

• Kerry Raymond, Reference model for Open Distributed Processing (RM-ODP): Introduction, CRC for Distributed Systems Technology, University of Queensland

• Raphel Malveau, Thomas Mowbray, Software Architect Bootcamp, Prentice Hall 2001

• Buschmann, Meuneir, Rohnert, Sommerlad, Stal, Pattern-oriented Software Architecture: A system of patterns, John Wiley & Sons, 1996

• P.B. Kruchten, The 4+1 View Architecture, IEEE Software, November 1995

• Jacobson, Booch, Rumbaugh, The Unified Software Development Process, Addison Wesley Longman, 1999

• Garlan, Monroe, Wile, Acme: Architectural Description of Component-based Systems, in Foundations of Component based systems, Cambridge University press, 2000