Why is Software Architecture Important? © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License.

Slides:



Advertisements
Similar presentations
Dr. Rogelio Dávila Pérez
Advertisements

Instructor: Tasneem Darwish1 University of Palestine Faculty of Applied Engineering and Urban Planning Software Engineering Department Software Systems.
Software Architecture in Practice (3 rd Ed) Understanding Quality Attributes Understanding the following: How to express the qualities we want our architecture.
Software Engineering Institute Carnegie Mellon University Pittsburgh, PA Sponsored by the U.S. Department of Defense © 1998 by Carnegie Mellon.
Chapter 2: Why is Software Architecture Important?
Software Architecture for DSD DSD Team. Overview What is software architecture and why is it so important? The role of architecture in determining system.
Architecture is More Than Just Meeting Requirements Ron Olaski SE510 Fall 2003.
Software Connectors. Attach adapter to A Maintain multiple versions of A or B Make B multilingual Role and Challenge of Software Connectors Change A’s.
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
Software Architecture in Perspective SENG 480/580 (H. Muller) Today: Margaret-Anne Storey
Creating Architectural Descriptions. Outline Standardizing architectural descriptions: The IEEE has published, “Recommended Practice for Architectural.
Software Architecture in Practice
1 Computer Systems & Architecture Lesson 1 1. The Architecture Business Cycle.
Course Instructor: Aisha Azeem
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Software Architecture. Agenda " Why architect? " What is architecture? " What does an architect do? " What principles guide the process of architecting?
Architecture and Software Product Lines A software architecture represents a significant investment of time and effort, usually by senior talent. So it.
The Many Contexts of Software Architecture
What is Software Architecture?
Software Architecture in Practice (3rd Ed) Introduction
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse 2.
Documenting Software Architectures
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
Strategy #5. IT Architecture and IT Infrastructure are Metaphors Architecture - the relationship between planning and building Infrastructure - examples.
Software Project Management Introduction to Project Management.
What is Enterprise Architecture?
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
An Introduction to Software Architecture
CSE 303 – Software Design and Architecture
The Architecture Business Cycle. Software Architecture Definition The software architecture of a program or computing system is the structure or structures.
Architecture Business Cycle
Software Architecture – An Overview The software architecture of a system is the composition of software components, the structures that interconnect them,
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
SAMANVITHA RAMAYANAM 18 TH FEBRUARY 2010 CPE 691 LAYERED APPLICATION.
Software Engineering Institute Carnegie Mellon University Pittsburgh, PA Sponsored by the U.S. Department of Defense © 1998 by Carnegie Mellon.
What is Software Architecture? | Website for Students | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS Chapter 2, Authors: Len Bass, Paul,
1 Introduction to Software Architectures Lecture - 3.
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
Software Architecture and Design Dr. Aldo Dagnino ABB, Inc. US Corporate Research Center October 23 rd, 2003.
Chapter 10 Analysis and Design Discipline. 2 Purpose The purpose is to translate the requirements into a specification that describes how to implement.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 05. Review Software design methods Design Paradigms Typical Design Trade-offs.
GRASP: Designing Objects with Responsibilities
Software Engineering Prof. Ing. Ivo Vondrak, CSc. Dept. of Computer Science Technical University of Ostrava
9 Systems Analysis and Design in a Changing World, Fourth Edition.
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 5 Practice: A Generic View Software Engineering: A Practitioner’s Approach, 6/e Chapter.
Software Architecture Evaluation Methodologies Presented By: Anthony Register.
CASE (Computer-Aided Software Engineering) Tools Software that is used to support software process activities. Provides software process support by:- –
Overview of SAIP and LSSA. Software Architecture in Practice Provides a set of techniques, not a prescriptive method for architectural design. Based on.
Cooperation & Interoperability Architecture & Ontology.
Basic Concepts and Definitions
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Software Design and Architecture
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
Chapter 7: Modifiability
Chapter 24: Architecture Competence
Lecture 17 ATAM Team Expertise
Chapter 11: Usability © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License.
Chapter 19: Architecture, Implementation, and Testing
Software Product Lines
Chapter 25: Architecture and Product Lines
Software Engineering D7032E
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
An Introduction to Software Architecture
CS310 Software Engineering Lecturer Dr.Doaa Sami
Software Architecture
Presentation transcript:

Why is Software Architecture Important? © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Thirteen Reasons 1.An architecture will inhibit or enable a system’s driving quality attributes. 2.The decisions made in an architecture allow you to reason about and manage change as the system evolves. 3.The analysis of an architecture enables early prediction of a system’s qualities. 4.A documented architecture enhances communication among stakeholders. 5.The architecture is a carrier of the earliest and hence most fundamental, hardest-to-change design decisions. 6.An architecture defines a set of constraints on subsequent implementation. 7.The architecture dictates the structure of an organization, or vice versa. 8.An architecture can provide the basis for evolutionary prototyping. 9.An architecture is the key artifact that allows the architect and project manager to reason about cost and schedule. 10.An architecture can be created as a transferable, reusable model that form the heart of a product line. 11.Architecture-based development focuses attention on the assembly of components, rather than simply on their creation. 12.By restricting design alternatives, architecture channels the creativity of developers, reducing design and system complexity. 13.An architecture can be the foundation for training a new team member. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Inhibiting or Enabling a System’s Quality Attributes Whether a system will be able to exhibit its desired (or required) quality attributes is substantially determined by its architecture. This is the most important message of this course! – Performance: You must manage the time-based behavior of elements, their use of shared resources, and the frequency and volume of inter-element communication. – Modifiability: Assign responsibilities to elements so that the majority of changes to the system will affect a small number of those elements. – Security: Manage and protect inter-element communication and control which elements are allowed to access which information; you may also need to introduce specialized elements (such as an authorization mechanism). – Scalability: Localize the use of resources to facilitate introduction of higher- capacity replacements, and you must avoid hardcoding in resource assumptions or limits. – Incremental subset delivery: Manage inter-component usage. – Reusability: Restrict inter-element coupling, so that when you extract an element, it does not come out with too many attachments to its current environment. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Reasoning About and Managing Change About 80 percent of a typical software system’s total cost occurs after initial deployment – accommodate new features – adapt to new environments, – fix bugs, and so forth. Every architecture partitions possible changes into three categories – A local change can be accomplished by modifying a single element. – A nonlocal change requires multiple element modifications but leaves the underlying architectural approach intact. – An architectural change affects the fundamental ways in which the elements interact with each other and will probably require changes all over the system. Obviously, local changes are the most desirable A good architecture is one in which the most common changes are local, and hence easy to make. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Predicting System Qualities If we know that certain kinds of architectural decisions lead to certain quality attributes in a system, we can make those decisions and rightly expect to be rewarded with the associated quality attributes. When we examine an architecture we can look to see if those decisions have been made, and confidently predict that the architecture will exhibit the associated qualities. The earlier you can find a problem in your design, the cheaper, easier, and less disruptive it will be to fix. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Enhancing Communication Among Stakeholders Software architecture represents a common abstraction of a system that most, if not all, of the system’s stakeholders can use as a basis for creating mutual understanding, negotiating, forming consensus, and communicating with each other. The architecture—or at least parts of it—is sufficiently abstract that most nontechnical people can understand it adequately. Each stakeholder of a software system—customer, user, project manager, coder, tester, and so on—is concerned with different characteristics of the system that are affected by its architecture. For example: – The user is concerned that the system is fast, reliable, and available when needed. – The customer is concerned that the architecture can be implemented on schedule and according to budget. – The manager is worried (in addition to concerns about cost and schedule) that the architecture will allow teams to work largely independently, interacting in disciplined and controlled ways. – The architect is worried about strategies to achieve all of those goals. Architecture provides a common language in which different concerns can be expressed, negotiated, and resolved at a level that is intellectually manageable even for large, complex systems. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Earliest Design Decisions Software architecture is a manifestation of the earliest design decisions about a system. These early bindings carry enormous weight with respect to the system’s remaining development, its deployment, and its maintenance life. Each decision constrains the many decisions that follow. What are these early design decisions embodied by software architecture? – Will the system run on one processor or be distributed across multiple processors? – Will the software be layered? If so, how many layers will there be? What will each one do? – Will components communicate synchronously or asynchronously? Will they interact by transferring control or data or both? – Will the system depend on specific features of the operating system or hardware? – Will the information that flows through the system be encrypted or not? – What communication protocol will we choose? Imagine the nightmare of having to change any of these decisions. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Defining Constraints on an Implementation An implementation exhibits an architecture if it conforms to the design decisions prescribed by the architecture. – The implementation must be implemented as the set of prescribed elements – These elements must interact with each other in the prescribed fashion – Each element must fulfill its responsibility to the other elements as dictated by the architecture. Each of these prescriptions is a constraint on the implementer. Element builders may not be aware of the architectural tradeoffs—the architecture (or architect) simply constrains them in such a way as to meet the tradeoffs. – Example: an architect assigns performance budget to the pieces of software involved in some larger piece of functionality. – If each software unit stays within its budget, the overall transaction will meet its performance requirement. – Implementers of each of the constituent pieces may not know the overall budget, only their own. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Influencing the Organizational Structure Architecture prescribes the structure of the system being developed. That structure becomes engraved in the structure of the development project (and sometimes the structure of the entire organization). The architecture is typically used as the basis for the work-breakdown structure. The work-breakdown structure in turn dictates – units of planning, scheduling, and budget – interteam communication channels – configuration control and file-system organization – integration and test plans and procedures; – much more The maintenance activity will also reflect the software structure, with teams formed to maintain specific structural elements from the architecture. If these responsibilities have been formalized in a contractual relationship, changing responsibilities could become expensive or even litigious. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Enabling Evolutionary Prototyping Once an architecture has been defined, it can be analyzed and prototyped as a skeletal system. – A skeletal system is one in which at least some of the infrastructure— how the elements initialize, communicate, share data, access resources, report errors, log activity, and so forth—is built before much of the system’s functionality has been created. This approach aids the development process because the system is executable early in the product’s life cycle. The fidelity of the system increases as stubs are instantiated, or prototype parts are replaced with complete versions of these parts of the software. This approach allows potential performance problems to be identified early in the product’s life cycle. These benefits reduce the potential risk in the project. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Improving Cost and Schedule Estimates One of the duties of an architect is to help the project manager create cost and schedule estimates early in the project life cycle. Top-down estimates are useful for setting goals and apportioning budgets. Cost estimations that are based on a bottom-up understanding of the system’s pieces are typically more accurate than those that are based purely on top-down system knowledge. – Each team or individual responsible for a work item will be able to make more-accurate estimates for their piece than a project manager and will feel more ownership in making the estimates come true. The best cost and schedule estimates will typically emerge from a consensus between the top-down estimates (created by the architect and project manager) and the bottom-up estimates (created by the developers). © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Transferable, Reusable Model Reuse of architectures provides tremendous leverage for systems with similar requirements. – Not only can code be reused, but so can the requirements that led to the architecture in the first place, as well as the experience and infrastructure gained in building the reused architecture. – When architectural decisions can be reused across multiple systems, all of the early-decision consequences are also transferred. A software product line or family is a set of software systems that are all built using the same set of reusable assets. – Chief among these assets is the architecture that was designed to handle the needs of the entire family. – The architecture defines what is fixed for all members of the product line and what is variable. – The architecture for a product line becomes a capital investment by the organization. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Using Independently Developed Components Architecture-based development often focuses on components that are likely to have been developed separately, even independently, from each other. The architecture defines the elements that can be incorporated into the system. Commercial off-the-shelf components, open source software, publicly available apps, and networked services are example of interchangeable software components. The payoff can be – Decreased time to market – Increased reliability (widely used software should have its bugs ironed out already) – Lower cost (the software supplier can amortize development cost across their customer base) – Flexibility (if the component you want to buy is not terribly specialpurpose, it’s likely to be available from several sources, thus increasing your buying leverage) © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Restricting Design Vocabulary As useful architectural patterns are collected, we see the benefit in voluntarily restricting ourselves to a relatively small number of choices of elements and their interactions. – We minimize the design complexity of the system we are building. – Enhanced reuse – More regular and simpler designs that are more easily understood and communicated – More capable analysis – Shorter selection time – Greater interoperability. Architectural patterns guide the architect and focus the architect on the quality attributes of interest in large part by restricting the vocabulary of design. – Properties of software design follow from the choice of an architectural pattern. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Basis for Training The architecture can serve as the first introduction to the system for new project members. Module views are excellent for showing someone the structure of a project – Who does what, which teams are assigned to which parts of the system, and so forth. Component-and-connector views are excellent for explaining how the system is expected to work and accomplish its job. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Summary 1.An architecture will inhibit or enable a system’s driving quality attributes. 2.The decisions made in an architecture allow you to reason about and manage change as the system evolves. 3.The analysis of an architecture enables early prediction of a system’s qualities. 4.A documented architecture enhances communication among stakeholders. 5.The architecture is a carrier of the earliest and hence most fundamental, hardest-to-change design decisions. 6.An architecture defines a set of constraints on subsequent implementation. 7.The architecture dictates the structure of an organization, or vice versa. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Summary 8.An architecture can provide the basis for evolutionary prototyping. 9.An architecture is the key artifact that allows the architect and project manager to reason about cost and schedule. 10.An architecture can be created as a transferable, reusable model that form the heart of a product line. 11.Architecture-based development focuses attention on the assembly of components, rather than simply on their creation. 12.By restricting design alternatives, architecture channels the creativity of developers, reducing design and system complexity. 13.An architecture can be the foundation for training a new team member. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License