Document 7363159

Download Report

Transcript Document 7363159

Software Architecture-Definition
According to Shaw [1], the software
architecture of a system is an abstract
representation of the system’s components,
their interfaces, and constraints on the
system.
Software Architecture-A model
Shaw and Garlan present a model of
architecture based on three abstractions:
Components: They are independent units of
computation.
Connectors: They represent interactions
among components.
Configurations: They are instance of
architectural description represented as a
graph of connectors and components.
ADL-Why and What???
Architectural descriptions were often
informal and ad hoc. As a result:
Architectural designs were not always
properly understood
The constraints assumed (i.e the
architectural constraints) in the initial design
were not enforced (sometimes) as the
system evolves.
Continued….
Very few tools available to help the
architectural designers.
To address these problems, ADL's were
introduced.
What???
Architecture description languages (ADL’s)
are formal languages that can be used to
represent the architecture of a software
system.
MIL’s Vs ADL’s

MILS only describe the structure of an
implemented system.

ADLs are used to define and model
system architecture prior to system
implementation.
Types Of ADL’s
ACME
Rapide
Wright
Unicon
Aesop
MetaH
Lileanna
ACME-An Example…
Client
Server
rpc
Send-Request
( Caller )
Receive Request
( Callee )
Continued..
System simple_cs = {
Component client = {Port send-request}
Component server = {Port receive-request}
Connector rpc = {Roles {caller, callee}}
Attachments : {client.send-request to
rpc.caller;
server.receive-request to rpc.callee}
}
Wright-An Example..
Wright is pretty similar syntactically to ACME
System simple_cs
Component client =
port send-request = [behavioral spec]
spec = [behavioral spec]
Component server =
port receive-request= [behavioral
spec]
spec = [behavioral spec]
Continued…
Connector rpc =
role caller = (request!x -> result?x ->caller) ^
STOP
role callee = (invoke?x -> return!x -> callee) []
STOP
glue = (caller.request?x -> callee.invoke!x
-> callee.return?x -> callee.result!x
-> glue) [] STOP
Instances
s : server
c : client
r : rpc
Continued…
Attachments :
client.send-request as rpc.caller
server.receive-request as rpc.callee
end simple_cs.
 Any Questions????
References:
 D.Garlan and M.Shaw “ An Introduction to
software architecture” . In V.Ambriola and
G.Tortara, editors. Advances in software
engineering and knowledge engineering.
World scientific publishing company, 1993.
 http://www.cs.cmu.edu/~acme
 http://www.cs.cmu.edu/afs/cs/project/able/w
ww/wright/index.html