The Architecture Design Process

Slides:



Advertisements
Similar presentations
ARCHITECTURES FOR ARTIFICIAL INTELLIGENCE SYSTEMS
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Instructor: Tasneem Darwish1 University of Palestine Faculty of Applied Engineering and Urban Planning Software Engineering Department Software Systems.
Design Concepts and Principles
Software Architecture for DSD DSD Team. Overview What is software architecture and why is it so important? The role of architecture in determining system.
Lecturer: Sebastian Coope Ashton Building, Room G.18 COMP 201 web-page: Lecture.
Unified Modeling (Part I) Overview of UML & Modeling
Creating Architectural Descriptions. Outline Standardizing architectural descriptions: The IEEE has published, “Recommended Practice for Architectural.
Architectural Design Principles. Outline  Architectural level of design The design of the system in terms of components and connectors and their arrangements.
Nov. 14, 2007 Systems Engineering ä System ä A set or arrangement of things so related as to form a unity or organic whole. ä A set of facts, principles,
1 CS115 Class 7: Architecture Due today –Requirements –Read Architecture paper pages 1-15 Next Tuesday –Read Practical UML.
Software Architecture Quality. Outline Importance of assessing software architecture Better predict the quality of the system to be built How to improve.
System Engineering Instructor: Dr. Jerry Gao. System Engineering Jerry Gao, Ph.D. Jan System Engineering Hierarchy - System Modeling - Information.
The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design.
Course Instructor: Aisha Azeem
Chapter 10: Architectural Design
Software Architecture. Agenda " Why architect? " What is architecture? " What does an architect do? " What principles guide the process of architecting?
Introduction to Computer Technology
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
Architectural Design.
What is Software Architecture?
Software Architecture in Practice (3rd Ed) Introduction
Chapter 7 Requirement Modeling : Flow, Behaviour, Patterns And WebApps.
Chapter 10 Architectural Design
UML - Development Process 1 Software Development Process Using UML (2)
Chapter 7: Architecture Design Omar Meqdadi SE 273 Lecture 7 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
An Introduction to Software Architecture
CSE 303 – Software Design and Architecture
Business Analysis and Essential Competencies
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 07. Review Architectural Representation – Using UML – Using ADL.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
SOFTWARE DESIGN.
SOFTWARE SYSTEMS DEVELOPMENT 4: System Design. Simplified view on software product development process 2 Product Planning System Design Project Planning.
SWE © Solomon Seifu ELABORATION. SWE © Solomon Seifu Lesson 10 Use Case Design.
10 Software Architecture CSCU 411 Software Engineering.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
Systems Analysis and Design in a Changing World, 3rd Edition
1 Introduction to Software Engineering Lecture 1.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 05. Review Software design methods Design Paradigms Typical Design Trade-offs.
Software Engineering Prof. Ing. Ivo Vondrak, CSc. Dept. of Computer Science Technical University of Ostrava
1 15 quality goals for requirements  Justified  Correct  Complete  Consistent  Unambiguous  Feasible  Abstract  Traceable  Delimited  Interfaced.
CPSC 372 John D. McGregor Module 3 Session 1 Architecture.
Requirement Handling
CS551 - Lecture 5 1 CS551 Lecture 5: Quality Attributes Yugi Lee FH #555 (816)
CPSC 871 John D. McGregor Module 3 Session 1 Architecture.
UML / UML 2.0 Diagrams (Part I) 1. Overview of the 13 diagrams of UML Structure diagrams 1.Class diagram 2.Composite structure diagram (*) 3.Component.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
CSE 303 – Software Design and Architecture
1 Software Design Lecture What’s Design It’s a representation of something that is to be built. i.e. design  implementation.
Overview of SAIP and LSSA. Software Architecture in Practice Provides a set of techniques, not a prescriptive method for architectural design. Based on.
Chapter 5 System Modeling. What is System modeling? System modeling is the process of developing abstract models of a system, with each model presenting.
Basic Concepts and Definitions
Slide 1 Chapter 8 Architectural Design. Slide 2 Topics covered l System structuring l Control models l Modular decomposition l Domain-specific architectures.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Chapter 5:Architectural Design l Establishing the overall structure of a software.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
 System Requirement Specification and System Planning.
Why is Design so Difficult? Analysis: Focuses on the application domain Design: Focuses on the solution domain –The solution domain is changing very rapidly.
Architecture Concept Documents
SOFTWARE DESIGN AND ARCHITECTURE
Unified Modeling Language
Software Design and Architecture
Part 3 Design What does design mean in different fields?
Software Quality Engineering
Software Connectors – A Taxonomy Approach
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
An Introduction to Software Architecture
John D. McGregor Module 6 Session 1 More Design
Chapter 5 Architectural Design.
Presentation transcript:

The Architecture Design Process

Architecture Design Focuses on the decomposition of a system into components and the interaction between those components to satisfy functional and non functional requirements A software system can be viewed as a hierarchy of design decisions (design rules or contracts) Each level of the hierarchy has a set of design rules that connects the components at that level

The Architectural View The first phase is the predesign phase – concerned with understanding the enterprise context in which the application will exist. The second phase is the domain analysis phase – where requirements are analyzed and structured with respect to the problem domain.

The Architectural View (Cont’d) The third phase is the schematic design phase – where solution models identify modules of the system and design rules that establish the boundaries between the modules are established. The fourth phase is the design development phase – where the architecture is refined and possibly multiple variations are created.

When Are the Architecture Design Activities Done? They can be practiced during any phase of the development process. However, to be of greatest benefit they should be done as early as possible. These activities can be viewed as a linear set of steps that can be repeated whenever missing information or hidden assumptions are identified.

Basic Steps of the Architecture Design Process Understand the problem Identify design elements and their relationships Evaluate the architecture design Transform the architecture design

System Quality Attributes The architecture essentially defines "externally visible" properties also known as system quality attributes for the whole software project, we are referring to such properties as its provided services, performance characteristics, fault handling, shared resource usage, and so on. Evaluation of an architecture's properties is critical to successful system development. However, reasoning about a system's intended architecture must be recognized as distinct from reasoning about its realized architecture. As design and eventually implementation of an architecture proceed, faithfulness to the principles of the intended architecture is not always easy to achieve.

Run-Time Quality Attributes Performance refers to the responsiveness of the system, the 'time’ required to respond to stimuli (events) or the number of events processed in some interval of time. Performance qualities are often expressed by the number of transactions per unit time or by the amount of time it takes a transaction with the system to complete. Since communication usually takes longer than computation, performance is often a function of how much communication and interaction there is between the components of the system-clearly an architectural issue. Security is a measure of the system's ability to resist unauthorized attempts at usage and denial of service while still providing its services to legitimate users. It is categorized in terms of the types of threats that might be made to system;

Run-Time Quality Attributes (Cont’d) Availability measures the proportion of time the system is up and running. It is measured by the length of time between failures as well as by how quickly the system is able to resume operation in the event of failure. The steady state availability of a system is the proportion of time that the system is functioning correctly and is typically seen as follows: time to failure/(time to failure + time to repair) Availability comes from both "time to failure" and "time to repair"; both are addressed through architectural means.

Understanding the Problem Without a clear understanding of the problem, it is not possible to create an effective solution When making a design decision, ask yourself what problem the design decision solves. If the answer is a technical or implementation problem, ask the question again until you reach a problem that is part of the original business problem. If you can’t get there, it’s probably not the right design decision.

Identifying Design Elements and Their Relationships Establish a baseline decomposition that initially splits the system based on functional requirements. The architecture of a software application is often represented as a set of interconnected modules or subsystems, often called, components. The functional decomposition can be modeled using blocks and arrows or by using UML package diagrams that show dependency associations.

Steps in Identifying Design Elements and Their Relationships Define the system context Identify the modules Describe the components and connectors

Defining System Context The system context describes the application from an external perspective. It helps in identifying the external interfaces to the system. The input to defining the system context is the initial requirements list. Defining the system context is related to understanding the problem domain that the system addresses. An initial model of the enterprise context of the system can be created by diagramming the existing business processes, artifacts, people, and existing systems.

Defining System Context (Cont’d) The new application should fit within this context. A use case diagram is a common way to depict the system context. The diagram can be augmented to include business-level objects (documents, records, reports) that are part of the domain. The goal of the model is to communicate the purpose and scope of the system; it should be intuitive and understandable by even the least technical stakeholders.

Identifying Modules Modules are discrete units of software. Instantiations of these modules are commonly called components and connectors. A modular architecture is an application or system that is composed of two or more modules, each of which can be modified internally without affecting the other.

Identifying Modules (Cont’d) To achieve a low level of coupling between modules, the interface (connector) between the modules must be stable and static. These interfaces are the result of establishing design rules, e.g., A common data format like XML Document Type Definition (DTD). A procedural interface such as a set of Java classes. A wire-level protocol like HTTP and HTML.

Describing Components and Connectors Components typically refer to the runtime instance of some unit of software. Connectors can refer to a unit of software or some communications mechanism (like UNIX pipes) Many of the quality attributes of the system are embodied in the components and their connectors.

Evaluating the Architecture This step is determining whether the architecture satisfies the requirements of the system. Both qualitative and quantitative measures are used to evaluate the quality attributes required of the system. If the it fails to meet these quality attributes, the architecture must be redesigned.

Evaluating the Architecture (Cont’d) In order to evaluate an architecture design, the quality attribute requirements must be clearly articulated. They must be articulated as specific quality attributes and their acceptable values. For example, a modifiability requirement may be reified as a scenario called a change case which might describe that a change is possible without requiring rework of more than one module.

Transforming the Architecture If the architectural design does not full satisfy its quality attribute requirements, then it must be changed until it does. A design is transformed by applying design operators, styles, or patterns. There are two types of design operators: Those that affect the modular architecture Those that affect the component architecture

Modular Operators Splitting a design into two or more modules Substituting one design module for another Augmenting the system by adding a new module Excluding a module from the system Inverting a module to create new interfaces (design rules) Porting a module to another system

Design Operators Decomposition of a system into components Replication of components to improve reliability Compression of two or more components into a single component to improve performance Abstraction of a component to improve modifiability and adaptability Resource sharing, or the sharing of a single component instance with other components to improve integrability (the ability to integrate applications and systems), portability and modifiability