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