140 likes | 166 Views
This lecture discusses open issues in software architecture, including life-cycle cost models, integrating legacy systems, achieving quality attributes, prescriptive design techniques, architecture description languages, and product line practices.
E N D
Software Architecture in PracticeChapter 19: Open Issues and Course Summary
Lecture Objectives • This lecture will • enable students to identify open issues in software architecture • summarize the course
Topics • Open issues • life-cycle cost models • integrating legacy systems • achieving quality attributes • prescriptive design techniques • architecture description languages • product line practices • Course summary
Life-Cycle Cost Models • Architecture is an up-front development effort. • More work up front to design and evaluate • pays off in • reduced implementation effort • reuse opportunities • lower modification costs • Cost models need to be modified to reflect different life-cycle costs. • higher up-front costs • lower back-end costs
Integrating Legacy Systems • Need to repackage legacy systems for use in subsequent software development • Need to extract architectural elements from available sources • visualization problem: need tool to visualize simple patterns within a system architecture • awareness of different architectural structures
Achieving Quality Attributes • Performance: analytic model exists which allows repeatable prediction techniques • Modifiability: no analytic model exists, which • forces reliance on case-specific scenarios • Need a principled method for tradeoffs among quality attributes, including cost and schedule
Prescriptive Design Techniques • Need a method to produce from desired qualities a method that achieves them • Attribute tradeoff • understand interaction of different attributes • example: “jitter” (variance of arrival times) can affect performance, security, and reliability
Architecture Description Languages • The jury is still out on architecture description languages. • Architecture description languages give designers a choice of • structures to represent • notation to use • analyses and verifications that are possible • Infrastructure for ADLs • must integrate with other development tools • requires community effort
Product Line Practices • Architectures for a product line emphasize the quality of modifiability. • More work is required to • understand characteristics of product line production • devise technical solutions to technical problems • tendency for slow initial development • synchronization of product line architecture and product architectures • recommend organizational solutions for non-technical problems • organization structure • business case
Topics • Open issues • life-cycle cost models • integrating legacy systems • achieving quality attributes • prescriptive design techniques • architecture description languages • product line practices • Course summary
Course Summary -1 • Architecture is a crucial design asset. • vehicle for stakeholder communication • key to achieving system qualities • basis for development project structure • Architecture is an important corporate asset. • can be reused from project to project • forms a basis for product lines • is a foundation for new market entry • Architecture is an important community asset. • standard models emerge for mature domains • is a basis for component markets
Course Summary -2 • Architecture-based development differs from conventional development. • Central authority is a must. • Architecture representation and communication become important. • Architecture evaluation provides an early opportunity for prediction and correction. • Components map to teams.
Course Summary -3 • Architecture is the key to achieving quality attributes. • A-7E: modifiability • air traffic control: availability • USAF flight simulators: scalability • CelsiusTech: reusability • METOC: short time to deployment • The Architecture Business Cycle shows how architectures and their environments affect each other.
Last Words • If a project has not achieved a system architecture, including its rationale, the project should not proceed to full-scale system development. Specifying the architecture as a deliverable enables its use throughout the development and maintenance process. • - Barry Boehm, 1995 • I am more convinced than ever. Conceptual integrity is central to product quality. Having a system architect is the most important single step toward conceptual integrity... After teaching a software engineering laboratory more than 20 times, I came to insist that student teams as small as four people choose a manager, and a separatearchitect. • - Fred Brooks, 1995