2008 Adobe Systems Incorporated. All Rights Reserved.1The Role of Software ArchitectureRich Reitmanat Cornell UniversityFebruary 14, 20082008 Adobe Systems Incorporated. All Rights Reserved.2The Role of Software Architecture - Agenda What is software architecture? How do we capture software architecture? What do software architects do?2008 Adobe Systems Incorporated. All Rights Reserved.3My Context Commercial software companies Rational Software: 15 4000 IBM: 300,000 Adobe Systems: 6000 Multiple roles (primarily technical or technical management) Lead Developer, Product Architect Software engineering manager Chief software architect General Manager, CTO Mentor to software architects2008 Adobe Systems Incorporated. All Rights Reserved.4What is Software Architecture?From IEEE 1471-2000:Software architecture is the fundamental organization of a system embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution2008 Adobe Systems Incorporated. All Rights Reserved.5What is Software Architecture?From Unified Process (Jacobson, Booch, Rumbaugh):Software architecture encompasses the set of significant decisionsabout the organization of a software system Selection of the structural elements and their interfaces Behavior as specified in collaborations among those elements Composition of these structural and behavioral elements into larger subsystems Architectural style that guides this organization2008 Adobe Systems Incorporated. All Rights Reserved.6What is Software Architecture? All software systems have an architecture Even if: It isn’t written down No one understands it There are no architects How are we going to control and evolve the architecture? How do we capture software architecture?2008 Adobe Systems Incorporated. All Rights Reserved.7Capturing Software Architecture Problem Solution Architectural Quality Benefits Communication tool Identify and Address system level risks2008 Adobe Systems Incorporated. All Rights Reserved.8Capturing Software Architecture - Problem Identify architecturally significant requirements Actors Use cases Non-functional Constraints Use cases vs. User interfaces vs. User Experience2008 Adobe Systems Incorporated. All Rights Reserved.9Example - “Peripheral Actors” key to adoption Problem: provide a way of controlling the sharing of PDF files Includes posting on the web, sending email, etc.Solution: provide server Supports both simple and complex policies PDF Reader operation confirms with serverHow is the system managed? (backup/recovery, load balancing, …) Early on: different (better?) methods Now: can use standard methods from major vendors (DB, J2EE app server, …)Observation: be sure that all actors are considered The (peripheral) maintainer actor was key to adoption Cost of operation vs. benefit of capability2008 Adobe Systems Incorporated. All Rights Reserved.10Capturing Software Architecture - Solution Design a solution - 4 +1 views Use Case - provides behavior Logical - realization of functional requirements Implementation Deployment Process [ Data - additional view used at Adobe ] Focus on architecturally significant aspects CMU/SEI - many views; pick the ones you need2008 Adobe Systems Incorporated. All Rights Reserved.11Example - Plug & Play for Military Ships CelsiusTech Building the same sorts of ships repeatedly Define a software architecture based on abstraction of ship systems New hardware physically plugs in: radar, weapons, etc. Corresponding software plugs into the software architecture (object-oriented) Business-Driven Decision Reduced cost & risk 65% reuse between Danish and Swedish ships CelsiusTech business turn around2008 Adobe Systems Incorporated. All Rights Reserved.12Capturing Software Architecture - Architectural Quality System Characteristics - realize non-functional requirements Reliability, Security, Availability, … Performance, Scalability, … Testability, Maintainability, Extensibility, … Usability, Localization, … …2008 Adobe Systems Incorporated. All Rights Reserved.13Example - Incremental Compilation Problem: changing software interfaces causes massive recompilation Solution: extend syntax-directed paradigm to limit recompilation Determine impact at a granularity much finer than file Apply technique recursively to determine all places of possible impact Treat affected areas as non-terminal nodes associated with text needed compilationQuality characteristics Testability - full compilation and incremental compilation should yield same results Randomly generate sequence of changes & confirm Output seed along with failure to enable reproduction Usability 1st release: syntax tree model explicit to user - best precision 2nd release: underlying model invisible - everyone uses it!2008 Adobe Systems Incorporated. All Rights Reserved.14What do software architects do? Define the architecture Maintain the architectural integrity of the system Assess technical risks & find risk mitigation strategies Propose order and content of development iterations Consult on design, implementation, integration, test Participate in determining future system directions Time allocation rule of thumb 50% architecting: designing, prototyping, documenting 25% getting input: users, requirements, other architectures & technologies 25% providing info: communicating the architecture, assistingBased on “What do software architects do?”, by Philippe Kruchten2008 Adobe Systems Incorporated. All Rights Reserved.15Software Architecture and Agile Development Methods Agile Methods advocate avoiding “Big Design Up Front” Get close to customers with working code and iterate Enabled by: test-driven development, continuous integration & refactoring Agile Architectural Focus (architect =? coach) Where is there risk? - Prototype and focused reviews What are the recurring patterns and paradigms? - Refactor What are the system-level characteristics? - Design tests Enable the team - communicate Less is more - Document only what isn’t captured easily in code Architecture and Agility are complementary2008 Adobe Systems
View Full Document