1 Computer Systems & Architecture Lesson 6 11. Building Systems from Off-the-Shelf Components.

Slides:



Advertisements
Similar presentations
Testing Relational Database
Advertisements

Chapter 2: Software Process
Programming Paradigms and languages
The System and Software Development Process Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
Lecture # 2 : Process Models
Virtual University - Human Computer Interaction 1 © Imran Hussain | UMT Imran Hussain University of Management and Technology (UMT) Lecture 16 HCI PROCESS.
Software Project Management
The software process A software process is a set of activities and associated results which lead to the production of a software product. This may involve.
Alternative Software Life Cycle Models By Edward R. Corner vol. 2, chapter 8, pp Presented by: Gleyner Garden EEL6883 Software Engineering II.
Practical Business Modeling in the Unified Process Tom Morgan Software Architect, Fidelity National Information Services
Acquiring Information Systems and Applications
Software Quality Assurance Inspection by Ross Simmerman Software developers follow a method of software quality assurance and try to eliminate bugs prior.
Page 1 Building Reliable Component-based Systems Ivica Crnkovic Chapter 9 Component Composition and Integration.
Unit 231 Software Engineering Introduction to SWE What is SDLC Phases of SDLC.
Development Processes UML just is a modeling technique, yet for using it we need to know: »what do we model in an analysis model? »what do we model in.
CS 290C: Formal Models for Web Software Lecture 10: Language Based Modeling and Analysis of Navigation Errors Instructor: Tevfik Bultan.
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
- 1 - Component Based Development R&D SDM Theo Schouten.
1 Software Requirements Specification Lecture 14.
The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design.
Chapter 10: Architectural Design
Introduction to Software Testing
CHAPTER 19 Building Software.
Software Life Cycle Model
Acquiring Information Systems and Applications
1 Building and Maintaining Information Systems. 2 Opening Case: Yahoo! Store Allows small businesses to create their own online store – No programming.
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
March 13, 2001CSci Clark University1 CSci 250 Software Design & Development Lecture #15 Tuesday, March 13, 2001.
-Nikhil Bhatia 28 th October What is RUP? Central Elements of RUP Project Lifecycle Phases Six Engineering Disciplines Three Supporting Disciplines.
Business Analysis and Essential Competencies
Software Architecture – An Overview The software architecture of a system is the composition of software components, the structures that interconnect them,
1 ISA&D7‏/8‏/ ISA&D7‏/8‏/2013 Systems Development Life Cycle Phases and Activities in the SDLC Variations of the SDLC models.
©Ian Sommerville 2000 Software Engineering, 6th edition. Slide 1 Component-based development l Building software from reusable components l Objectives.
A GENERIC PROCESS FOR REQUIREMENTS ENGINEERING Chapter 2 1 These slides are prepared by Enas Naffar to be used in Software requirements course - Philadelphia.
Introduction to Software Design Chapter 1. Chapter Objectives  To become familiar with the software challenge and the software life cycle  To understand.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Odyssey A Reuse Environment based on Domain Models Prepared By: Mahmud Gabareen Eliad Cohen.
What is a Business Analyst? A Business Analyst is someone who works as a liaison among stakeholders in order to elicit, analyze, communicate and validate.
University of Virginia Software Development Processes (CS340 John Knight 2005) 1 Software Development Processes.
Problem Definition Chapter 7. Chapter Objectives Learn: –The 8 steps of experienced problem solvers –How to collect and analyze information and data.
Acquiring Information Systems and Applications
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Science Fair How To Get Started… (
Accounting Information System By Rizwan Waheed M.Com 710.
CS 111 – Nov. 22 Chapter 7 Software engineering Systems analysis Commitment –Please read Section 7.4 (only pp ), Sections –Homework #2.
CHAPTER 13 Acquiring Information Systems and Applications.
21-22 May 2004IMPROQ 2004 / Impact of SW Processes on Quality Workshop 1 Quality for Components: Component and Component- Based Software Quality Issues.
1 Software Development Software Engineering is the study of the techniques and theory that support the development of high-quality software The focus is.
The System and Software Development Process Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
Systems Analysis and Design in a Changing World, Fourth Edition
IS Analysis and Design. SDLC Systems Development Life Cycle Break problems into management review stages Control cost and time Works best with well understood.
Requirements Management with Use Cases Module 10: Requirements Across the Product Lifecycle Requirements Management with Use Cases Module 10: Requirements.
META-ANALYSIS, RESEARCH SYNTHESES AND SYSTEMATIC REVIEWS © LOUIS COHEN, LAWRENCE MANION & KEITH MORRISON.
1-1 Software Development Objectives: Discuss the goals of software development Identify various aspects of software quality Examine two development life.
SOFTWARE ENGINEERING. Objectives Have a basic understanding of the origins of Software development, in particular the problems faced in the Software Crisis.
Stand Up Comedy Project/Product Management
第 11 組 MIS 報告. Phases of any information system ~ recognition of a business problem or opportunity ~ recognition of a business problem or opportunity.
Requirements Engineering Processes. Syllabus l Definition of Requirement engineering process (REP) l Phases of Requirements Engineering Process: Requirements.
 Many models have been proposed to deal with the problems of defining activities and associating them with each other  The first model proposed was the.
Software Quality Assurance and Testing Fazal Rehman Shamil.
CS646: Software Design and Architectures Introduction and Overview †  Definitions.  The general design process.  A context for design: the waterfall.
Integration Testing.
Software Processes (a)
Architecture with Components
Informatics 121 Software Design I
CS310 Software Engineering Lecturer Dr.Doaa Sami
Informatics 121 Software Design I
Architecture with Components
Presentation transcript:

1 Computer Systems & Architecture Lesson Building Systems from Off-the-Shelf Components

2 11. Building Systems from Off-the- Shelf Components Objectives Explain the impact of components architecture. Discuss about architectural mismatch. Discuss the components based Design as search.

Impact of components on architecture Consider the following situation. You are producing software to control a chemical plant. Within chemical plants, specialized displays keep the operator informed as to the state of the reactions being controlled. A large portion of the software you are constructing is used to draw those displays. A vendor sells user interface controls that produce them.

4 Because it is easier to buy than build, you decide to purchase the controls-which, by the way, are only available for Visual Basic. What impact does this decision have on your architecture? Either the whole system must be written in Visual Basic with its built-in callback-centered style or the operator portion must be isolated from the rest of the system in some fashion.

5 This is a fundamental structural decision, driven by the choice of a single component for a single portion of the system. The use of off-the-shelf components in software development, while essential in many cases, also introduces new challenges.

Architectural mismatch Not all components work together-even if they are commercial products that claim compatibility. Components are often ‘almost compatible’, where ‘almost’ is a euphemism for ‘not.’ More insidious is the case where components appear to work together-the assembled code compilers and even executes-but the system produces the wrong answer because the components do not work together quite as expected.

7 The errors can be subtle, especially in real- time or parallel systems in which the components might rely on seemingly innocuous assumptions about the timing or relative ordering of each other’s operations. In short, components that were not developed specifically for your system may not meet all of your requirements-they may not even work with the components you pair with them.

8 Worse, you may not know if they are suitable or not until you buy them and try them because component interfaces are notoriously poor at specifying their quality attributes: –How secure is the compiler you are using right now? –How reliable is the mail system on your desktop? –How accurate is the math library that your application depend on?

9 Architectural mismatch is a special case of interface mismatch, where the interface is as Parnas defined it: the assumptions that components can make about each other. This definition goes beyond what has, unfortunately, become the standard concept of interface in current practice: a component's API.

10 What can you do about interface mismatch? Besides changing your requirements so that yesterday’s bug is today’s feature, there are three things: –Avoid it by carefully specifying and inspecting the components for your system. –Detect those cases you have not avoided by careful qualification of the components. –Repair those cases you have detected by adapting the components.

11 Techniques for repairing interface mismatch To date, mismatch correction has received little systematic attention. Terms such as ‘component glue’ are evocative of the character of the integration code and reflect the second-class status we assign to its development. Often repairing interface mismatches is seen as a job for hackers whose sense of aesthetics is not offended by the myriad ‘hacks’ involved in integrating off-the-shelf components.

12 The alternative to changing the code of one or both mismatched components is to insert code that reconciles their interaction in a way that fixes the mismatch. There are three classes of repair code: Wrappers Bridges Mediators

13 Techniques for detecting interface mismatch In order to mismatches, we must first detect or identify them. We present the process of identifying mismatches as an enhanced form of component qualification. The term component qualification has been used to describe the process of determining whether a commercial component satisfies various ‘fitness for use’ criteria. Some component qualification processes include prototype integration of candidate components as an essential step in qualifying a component.

14 Techniques for avoiding interface mismatch This integration step discovers subtle forms of interface mismatch that are difficult, such as resource contention. One technique for avoiding interface mismatch is to undertake, from the earliest phases of design, a disciplined approach to specifying as many assumptions about a component's interface as feasible.

15 It is feasible or even possible to specify all of the assumptions a component makes about its environment, or that the components used are allowed to make about it? Of course not. Is there any evidence that it is practical to specify an important subset of assumptions, and that it pays to do so? Yes.

Component-based design as search Since component capabilities and liabilities are a principle source of architectural constraint in system development, and since systems use multiple components, component-based system design becomes a search for compatible ensembles of off- the-shelf components that come the closest to meeting the system objectives. The architect must determine if it is feasible to integrate the components in each ensemble and, in particular, to evaluate whether an ensemble can live in the architecture and support system requirements.

17 In effect, each possible ensemble amounts to a continued path of exploration. This exploration should initially focus on the feasibility of the path to make sure there are no significant architectural mismatches that cannot be reasonably adapted. It must also take into account the feasibility of the repair and the residual risk remaining once the repair is completed.

18 Of course, the simultaneous exploration of multiple path is expensive. The focus will be on a primary path with additional paths treated as secondary. The important point is to view the selection of components in terms of ensembles rather than singly and to keep in mind that a particular path constitutes a hypothesis to be verified rather than a definitive design.

19 An illustration of the model problem work flow is shown in your book page number 464, figure The process consists of the following six steps that can be executed in sequence. 1.The architect and the engineers identify a design questions. 2.The architect and the engineers define the star.

20 3.The architect and the engineers define the implementation constraints. 4.The engineers produce a model solution in the design context. 5.The engineers identify ending evaluation criteria. 6.The architect performs an evaluation of the model solution against the ending criteria.