Software architecture Software architecture encompasses the set of significant decisions about the organization of a software system − selection of the structural elements and their interfaces by which a system is composed − behavior as specified in collaborations among those elements − composition of these structural and behavioral elements into larger subsystem − architectural style that guides this organization CS 407 Tutorial Week 11 1 Software arch. (continued) Software architecture also involves usage functionality performance resilience reuse comprehensibility economic and technology constraints and tradeoffs aesthetic concerns CS 407 Tutorial Week 11 2 Forces in software architecture Functionality Performance Technology churn Resilience Throughput Fail safe Capacity Differences ­ No moving parts ­ New materials can be created ­ Physics can be changed Avoiding failure ­ Separation of concerns ­ Semantic consistency ­ Distribution of responsibilities Fault tolerance Availability Have an architecture that makes sense before you write 3.5 million lines of code. ­ Patrick Naugton CS 407 Tutorial Week 11 3 Patterns A pattern is a solution to a problem in a context A pattern codifies specific knowledge collected from experience in a domain All well­structured systems are full of patterns idioms design patterns architectural patterns CS 407 Tutorial Week 11 4 Architectural patterns Distributed Event­driven Frame­based Batch Pipes and filters Repository­centric Blackboard Interpreter Rule­based Layered MVC IR­centric Subsumption Disposable Patentable ­ Hughes CAATS CS 407 Tutorial Week 11 5 Layered architecture Issues Applications& interfaces ­ Separation of concerns Major processes Domain classes Mechanisms Services CS 407 Tutorial Week 11 6 Distributed architecture Issues ­ DCOM vs EJB vs CORBA ­ Distribution and migration ­ Fine grain/large grain objects ­ Stateless vs stateful services ­ Clustering ­ Replication Clients Mechanisms LAN ­ RPC ­ Transaction ­ Atomicity ­ Consistency ­ Isolation ­ Durability ­ Messaging ­ Conversation ­ Request/response ­ Publish and subscribe ­ Broadcast WAN Servers CS 407 Tutorial Week 11 7 Commercial frameworks Similar to building codes or local covenants MTS/MSQS CORBA Enterprise Java Beans Domino SAP R/3 Delphi Forte Visual Basic CS 407 Tutorial Week 11 8 MTS architecture MTS executive Class factory wrapper Client Proxy Stub Context wrapper Server Class factory MTS object Context object CS 407 Tutorial Week 11 9 CORBA architecture CORBA facilities Application objects ­ Organization specific ­ User interface ­ Information management ­ System management ­ Task management CORBA domains ­ Financial services ­ Health care ­ Telecommunications ­ Other Object request broker CORBA services ­ Concurrency ­ Events ­ Externalization ­ Licensing ­ Lifecycle ­ Naming ­ Security ­ Time ­ Trade ­ Start up ­ Persistence ­ Properties CS 407 Tutorial Week 11 ­ Query ­ Relationships ­ Transactions ­ Collections 10 EJB architecture CS 407 Tutorial Week 11 11 Architectural context The choice of which building code or covenant you chose to live under is an architectural decision − but by no means is this a sufficient architectural decision CS 407 Tutorial Week 11 12 Focus over time Discovery Invention Implementation Focus Time CS 407 Tutorial Week 11 13 Architecture across the lifecycle Inception Elaboration Construction Transition Planning Analysis Architecture Design Implementation Integration Test/assessment Preliminary Iteration Iteration #1 Iteration #2 ... Iteration #n+1 Iteration #... Iteration Iteration #m #m+1 CS 407 Tutorial Week 11 Iteration #m+2 .. 14 For more information This set of tutorial slides is entirely based on a talk delivered by Grady Booch. The original talk can be downloaded from: http://www.rational.com/media/whitepapers/sd98.zip CS 407 Tutorial Week 11 15