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. 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: 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 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… rpc Send-Request Client Receive Request Server ( Caller )( 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 -> callee.return?x -> callee.result!x -> glue) [] STOP -> glue) [] STOPInstances 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, ww/wright/index.html ww/wright/index.html