Basic Concepts of Component- Based Software Development (CBSD) Model-Based Programming and Verification.

Slides:



Advertisements
Similar presentations
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Advertisements

Chapter 2 – Software Processes
Chapter 2 – Software Processes Lecture 1 1Chapter 2 Software Processes.
Synthesis and Granularity Model-Based Programming and Verification.
Basic Concepts in Component-Based Software Engineering
Page 1 Building Reliable Component-based Systems Chapter 7 - Role-Based Component Engineering Chapter 7 Role-Based Component Engineering.
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
1 Software Architecture: a Roadmap David Garlen Roshanak Roshandel Yulong Liu.
- 1 - Component Based Development R&D SDM Theo Schouten.
Essential Software Architecture Ian Gorton CS590 – Winter 2008.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 3: Basing Software Development on Reusable Technology.
Introduction to Software Testing
Software Product Line Engineering Andrew Burmester SE 4110 Section 2 4/14/11.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
 1. Introduction  2. Development Life-Cycle  3. Current Component Technologies  4. Component Quality Assurance  5. Advantages and Disadvantages.
COMPONENT-BASED SOFTWARE ENGINEERING
What is Software Architecture?
S/W Project Management Software Process Models. Objectives To understand  Software process and process models, including the main characteristics of.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 19 Slide 1 Component-based software engineering 1.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Chapter 12 Object-Oriented.
GENERAL CONCEPTS OF OOPS INTRODUCTION With rapidly changing world and highly competitive and versatile nature of industry, the operations are becoming.
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 A Discipline of Software Design.
An Introduction to Software Architecture
CSE 303 – Software Design and Architecture
Software Models (Cont.) 9/22/2015ICS 413 – Software Engineering1 -Component-based software engineering -Formal Development Model.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
©Ian Sommerville 2000 Software Engineering, 6th edition. Slide 1 Component-based development l Building software from reusable components l Objectives.
Software Component Technology and Component Tracing CSC532 Presentation Developed & Presented by Feifei Xu.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Topic (1)Software Engineering (601321)1 Introduction Complex and large SW. SW crises Expensive HW. Custom SW. Batch execution.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
 CS 5380 Software Engineering Chapter 2 – Software Processes Chapter 2 Software Processes1.
Odyssey A Reuse Environment based on Domain Models Prepared By: Mahmud Gabareen Eliad Cohen.
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
© 2012 xtUML.org Bill Chown – Mentor Graphics Model Driven Engineering.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 20 Slide 1 Critical systems development 3.
Component-Based Software Engineering(CBSE) Xingui Tang CS532, Fall /6/2015.
CEN5011, Fall CEN5011 Software Engineering Dr. Yi Deng ECS359, (305)
Distribution and components. 2 What is the problem? Enterprise computing is Large scale & complex: It supports large scale and complex organisations Spanning.
Design Patterns -- Omkar. Introduction  When do we use design patterns  Uses of design patterns  Classification of design patterns  Creational design.
Chapter 2 – Software Processes Lecture 1 Chapter 2 Software Processes1.
MODEL-BASED SOFTWARE ARCHITECTURES.  Models of software are used in an increasing number of projects to handle the complexity of application domains.
1 OO Analysis & Design - Introduction to main ideas in OO Analysis & design - Practical experience in applying ideas.
Open Incremental Model Checking (OIMC) and the Role of Contracts Model-Based Programming and Verification.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 32. Review Behavioral Patterns – Observer Pattern – Chain of command.
Data Design and Implementation. Definitions Atomic or primitive type A data type whose elements are single, non-decomposable data items Composite type.
 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.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
1 Here are some quotations to get an overview of the kinds of issues of interest.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
1 SYS366 Week 2 - Lecture Visual Modeling and Process.
Why is Design so Difficult? Analysis: Focuses on the application domain Design: Focuses on the solution domain –The solution domain is changing very rapidly.
1 Distributed Systems Architectures Distributed object architectures Reference: ©Ian Sommerville 2000 Software Engineering, 6th edition.
CompSci 280 S Introduction to Software Development
Software Processes (a)
Distribution and components
Software Quality Engineering
An Introduction to Software Factories
SOFTWARE ARCHITECTURE AND DESIGN
Software Design Methodology
CS310 Software Engineering Lecturer Dr.Doaa Sami
What Is Good Software(Program)?
Chapter 17 - Component-based software engineering
Software Architecture
COMPONENT – BASED SOFTWARE ENGINEERING MODULE 2 – SECOND SEMESTER MKHIZE, BSC HONS COMPUTER SCIENCES, DIP IT, ICDL.
Presentation transcript:

Basic Concepts of Component- Based Software Development (CBSD) Model-Based Programming and Verification

Motivation  Conventional software engineering methods are less and less usable to build large and complex systems.  Teams work in parallel on smaller projects to reduce development time.  These projects should be handled independently of each other for greater efficiency.  This concept led to the emergence of CBSD (Component Based Software Development).CBSD  Growing dependency of people on the proper functioning of computer systems demands new methods to increase the reliability and correctness of these systems.

Prerequisites  Component library  Component model  Software architecture Three conditions need to be satisfied in order to use the driving forces of reuse and evolution for developing component-based systems:reuse and evolution

Component library  Software developers still tend to write new components for a given problem domain rather than integrating already existing ones into a system.  On the other hand, the components available at online markets are usually for industrial not educational purposes.  A system cannot be considered correct if the components of it do not work properly, so only verified components should be allowed.

Verification methods  Testing Testing  Synthesis Synthesis  Model checking Model checking Each of today’s most widely used verification methods have their own limitations. Students should be aware of these while trying to build their own components and verify them with any of the following methods:

Component models  CORBA  DCOM  Java/RMI The most generally used component models in the commercial area to support the composition of applications based on standards are:

Software architecture  An abstract backbone is needed to support the process of building applications from the independent components.  The abstraction of a system does not only show the structure of the system and the interaction between its elements but is also transferable to other systems with similar quality and functional properties, also promoting the concept of reuse in large and complex systems.

Framework Framework *  CBSD is ideally not more than putting pieces together. So there must be an environment in which that can be done, and that is a framework.  Unfortunately, even today most system developers consider writing an application from scratch as a greater challenge and therefore a greater recognition for them than developing an application using existing software components. *Gross, Hans-Gerhard: Component-Based Software Testing with UML, Springer, 2005.

Component granularity  It is essential to find a balance between the factors of cohesion and coupling.  One of the main purposes of the educational framework is to support the students to practice these design decisions.

Independently of one specific component model?  Once an application developer has decided to follow one of the component models it becomes impossible to integrate a new component of another model into the application.  The introduction of a new level of a so-called “universal component” would solve the problem if the model specific IDL (Interface Definition Language) could be transformed into a “universal interface” given in a general language, possibly XML.

Components Hopkins, J.: Component Primer, Comm. of the ACM, pp , Vol. 43, October “A software component is a physical packaging of executable software with a well-defined and published interface.”

Reuse and evolution  Reuse: the use of already existing software to build new systems.  Evolution: enables the replacement of certain components without affecting the functionality of other parts. (That is a major difference between CBSD and OOP.)

Testing  not able to guarantee that there are no more hidden errors left in the design or in the code.  two distinct levels: testing of the components and an integration testing of the assembled application.  a component (standalone, physical software package) is supposed to be tested independently either through a user interface or a “virtual test bench”.  completely impossible to detect timing errors in a system.  new testing methods are developed to overcome these shortcomings.

Model checking  Model checking is an automatic – in practice human assistance is usually needed – technique for verifying finite state concurrent systems.  The main challenge in model checking is dealing with the state space explosion problem. That problem occurs in systems with many components that can make transitions in parallel.

Software architecture Bass, L., Clements, P., Kazmar, R.: Software Architecture in Practice (Second Edition), Addison-Wesley, “The software architecture of the program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and relationships among them.”

Framework  We consider framework as “a skeleton of an application which can be customized by an application developer”.  The relationship between frameworks and components is also important.  A component is identified as “an atomic part that can be used (and not changed) within the framework”. Johnson, R. E.: Frameworks = (Components + patterns), Comm. of the ACM, Vol. 40, October 1997.

Component granularity  Defining the range of component granularity can also be difficult because several factors (level of abstraction, likelihood of change, complexity of a component, etc.) have to be considered while designing components.  A component should not be too small as the interaction between smaller components requires more time and resource, on the other hand a too large component provides more complex interfaces, is subject to more frequent changes and makes a system less flexible.