Module 4. Component Software 4.2 Introduction

Slides:



Advertisements
Similar presentations
Component-Based Software Engineering Main issues: assemble systems out of (reusable) components compatibility of components.
Advertisements

Components Alexey Golubev, What is a component? What is a component? The father of components? The father of components? Components and their.
Software Architectural Design Software Components Instructor Dr. Lawrence Chung.
© Chinese University, CSE Dept. Software Engineering / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
Basic Concepts in Component-Based Software Engineering
CBSD – Component Based Software Development - Introduction -
Software Engineering Module 1 -Components Teaching unit 3 – Advanced development Ernesto Damiani Free University of Bozen - Bolzano Lesson 2 – Components.
Software Engineering Module 1 -Components Teaching unit 3 – Advanced development Ernesto Damiani Free University of Bozen-Bolzano Lesson 1 – Component-Based.
N-Tier Architecture.
 1. Introduction  2. Development Life-Cycle  3. Current Component Technologies  4. Component Quality Assurance  5. Advantages and Disadvantages.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse 2.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 18 Slide 1 Software Reuse.
Software Engineering Muhammad Fahad Khan
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Chapter 2 The Origins of Software Modern Systems Analysis and Design.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 19 Slide 1 Component-based software engineering 1.
Component-Based Development Silvio Romero de Lemos Meira Eduardo Santana de Almeida
Objects and Components. The adaptive organization The competitive environment of businesses continuously changing, and the pace of that change is increasing.
Quality Attributes of Web Software Applications – Jeff Offutt By Julia Erdman SE 510 October 8, 2003.
1 CS 456 Software Engineering. 2 Contents 3 Chapter 1: Introduction.
An Introduction to Software Architecture
CSE 303 – Software Design and Architecture
CS 325: Software Engineering March 17, 2015 Applying Patterns (Part A) The Façade Pattern The Adapter Pattern Interfaces & Implementations The Strategy.
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
SAMANVITHA RAMAYANAM 18 TH FEBRUARY 2010 CPE 691 LAYERED APPLICATION.
Component frameworks Roy Kensmil. Historical trens in software development. ABSTRACT INTERACTIONS COMPONENT BUS COMPONENT GLUE THIRD-PARTY BINDING.
Component Technology. Challenges Facing the Software Industry Today’s applications are large & complex – time consuming to develop, difficult and costly.
CSC 532 Term Paper Presentation Hybrid approach to component based Engineering  Introduction.  Component based development (CBD).  Pros and Cons of.
Distributed Information Systems. Motivation ● To understand the problems that Web services try to solve it is helpful to understand how distributed information.
FDT Foil no 1 On Methodology from Domain to System Descriptions by Rolv Bræk NTNU Workshop on Philosophy and Applicablitiy of Formal Languages Geneve 15.
Component Oriented Programming 1 Introduction to COP.
Distribution and components. 2 What is the problem? Enterprise computing is Large scale & complex: It supports large scale and complex organisations Spanning.
Component-Based Systems X LIU, School of Computing, Napier University TIP As computing systems become more and more complex, software reuse and component-based.
Testing OO software. State Based Testing State machine: implementation-independent specification (model) of the dynamic behaviour of the system State:
Component Patterns – Architecture and Applications with EJB copyright © 2001, MATHEMA AG Component Patterns Architecture and Applications with EJB Markus.
Introduction to business component technologies. Component definitions Szyperski: A software component is a unit of composition with contractually specified.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
CLASSIFICATION OF DESIGN PATTERNS Hladchuk Maksym.
 The Object Oriented concepts was evolved for solving complex problems. Object- oriented software development started in the 1980s. Object-oriented design.
Software Reuse. Objectives l To explain the benefits of software reuse and some reuse problems l To discuss several different ways to implement software.
CompSci 280 S Introduction to Software Development
Prototyping in the software process
Object Oriented Programming
IS301 – Software Engineering V:
N-Tier Architecture.
Software Life Cycle “What happens in the ‘life’ of software”
Software Reuse ©Ian Sommerville 2006.
Distribution and components
Design and Implementation
INTRODUCTION TO OBJECT-ORIENTED PROGRAMMING (OOP) & CONCEPTS
An Introduction to Software Factories
Chapter 16 – Software Reuse
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
Component-Based Software Engineering
Component-based Software Engineering
Software life cycle models
Chapter 2 The Origins of Software
Why Object-oriented Programming?
Component--based development
Chapter 20 Object-Oriented Analysis and Design
Need for the subject.
An Introduction to Software Architecture
SAMANVITHA RAMAYANAM 18TH FEBRUARY 2010 CPE 691
King Saud University College of Engineering IE – 462: “Industrial Information Systems” Fall – 2018 (1st Sem H) Chapter 2 Information System.
CS310 Software Engineering Lecturer Dr.Doaa Sami
COMPONENTS – WHY? Object-oriented source-level re-use of code requires same source code language. Object-oriented source-level re-use may require understanding.
Chapter 17 - Component-based software engineering
Chapter 16 – Software Reuse
Agenda Software development (SD) & Software development methodologies (SDM) Orthogonal views of the software OOSD Methodology Why an Object Orientation?
Presentation transcript:

Module 4. Component Software 4.2 Introduction Notas del Dr. Hector Durán

Component Software

Introduction The term “component” is overloaded The term’s been used in the literature to mean different things Run-time entities Design-time entities Source code Executable code

Introduction (2) But one thing is for sure Components are for composition [Szyperski] Composition enables prefabricated “things” to be reused

Introduction (3) To become a reusable asset It isn’t enough to start with a monolithic design and then partition it into fragments The fragments have to be generalised to allow for reuse in different contexts Overgeneralisation has to be avoided to keep fragments lightweight

Introduction (4) Software components are Executable units of independent production, acquisition, and deployment that can be composed into a functioning system [Szyperski]

Introduction (5) Component software is a Composite system composed of software components

Introduction (6) Components could be formed by abstractions such as: procedures, classes, modules, or even entire app As long as They are in executable form Remain composable Procedure libraries are the oldest example of software components

Introduction (7) Software development can be divided in Custom-made Developed from scratch Standard software Everything is outsourced Standard software is bought and parameterised

Introduction (8) Custom-made Advantage Disadvantages Optimally adapted to the user’s needs Disadvantages Production from scratch is very expensive Takes a lot of time to develop Maintenance is difficult

Introduction (9) Standard software Advantages Financial risk is reduced Time-to-market risk is reduced The burden of maintenance, product evolution, and interoperability is left to the vendor

Introduction (10) Standard software Disadvantages May require a reorganisation of the business process It isn’t easy to adapt quickly to changing needs Competitive edge is difficult to achieve as competitors are using the same software standard

Introduction (11) Component software represents the middle path Cost efficiency Flexibility Competitive edge % bought % Custom-made 100

Introduction (12) Component software Puts an end to the massive upgrade cycles Migrating old databases Retraining staff Buying more powerful software Evolution replaces revolution

Introduction (13) In custom-made approach, growth can at most be linear Whereas the growth of component market can be exponential

Introduction (14) Example of components for a certain market segment Solaris is factored into a set of modules that can be combined according to needs Windows CE can be custom-assembled

Introduction (15) SW component has lasted to take off Initially considered to be analogous to hardware components The term software IC became fashionable The Lego block model was conceived for object technology But this did not happen

Introduction (16) SW component has lasted to take off Software is different from products in all other engineering disciplines It’s important to distinguish between software and its instances Confusion between objects and classes

Introduction (17) SW component has lasted to take off The plan of a building and the building itself can be modelled as objects Plans VS instances Plans can be parameterised, applied recursively, scaled, and instantiated any number of times None of this is possible with instances Comparing component software with other disciplines is dangerous

Introduction (18) The object-oriented paradigm has failed!!!

Introduction (19) Object technology does not include the notion of Independence Late composition A market for object classes has failed

Introduction (20) Component success stories Microsoft’s Visual Basic EJB COM Older success stories are modern operating systems

Introduction (21) Components are a higher-level of abstraction Components directly mean something to the deploying client The client gains some explicable, high-level feature Components directly mean something to the deploying client.- for example, when a plugin is installed to a web browser the user is aware of the added functionality

Introduction (22) Components can be implemented in any language programming paradigm Object technology is probably one of the best ways to realise components

4.3 What is a component?

Terms and concepts Overloading of the term “object” and “component” Module, class, runtime instance, etc The terms “component” and “object” often used interchangeably

Components Main characteristics Is a unit of independent deployment Is a unit of third-party composition Has no (externally) observable state

Components (2) Independent deployment Needs to be well separated from its environment A component will never be deployed partially The component can be deployed into standard build-time and run-time environments

Components (3) third-party composition Needs to encapsulate its environment Interacts with well-defined interfaces Specification of what it provides and requires

Components (4) Stateless Cannot be distinguished from copies of its own Makes little sense to have multiple copies Essential to avoid massive maintenance problems Cannot be distinguished from copies of its own.- possible exceptions are serial numbers Essential to avoid massive maintenance problems.- if components were allowed to have observable state, then no two installations of the same component would have the same properties

Components (5) Instance VS concept A database server together with the database is an instance This instance is not a component The static database server program is a component A database server together with the database is an instance.- as it might be seen as a module with observable state

Objects Main characteristics Is a unit of instantiation, it has a unique identity May have state and this can be externally observable Encapsulates its state and behaviour

Components and Objects A component is likely to act through objects However, no need to be implemented with objects Different implementation paradigms Procedural Functional Assembly language

Components and Objects (2) A component may contain multiple classes Interface inheritance essential technique for establishing correctness Debate about the usefulness of implementation inheritance Interface inheritance essential technique for establishing correctness.- as by refering to the same specification, two components establish a common basis.

Whitebox VS Blackbox Blackbox does not provide implementation details May still enforce encapsulation Whitebox implementation details are fully available Whitebox allows for manipulation of the implementation Glassboxes allows for inspection of the implementation

Software Component “A software component is a unit of composition with contractually specified interfaces and explicit context dependencies only. A software component can be deployed independently and is subject to composition by third parties.” Context dependencies.- refers to the context composition and deployment. Includes: Component model that defines the rules of composition Component platform that defines the rules of deployment The required and provided interfaces

Software Component (2) Technical aspects Market related aspects Independence Contractual interfaces Composition Market related aspects Third parties composition

Component Weight Two options for component weight Build self-sufficient components Reduces context dependencies But also reduces reuse Minimal functionality components Increases context dependencies Increases reuse Maximising reuse minimises use As high context dependencies shortens potential use

Component Weight (2) Maximising reuse -> explosion of context dependencies Maximising reuse minimises use fatter < context dependencies Less fat > Context dependencies % reuse 100

Horizontal VS vertical markets A horizontal market cuts through all or many different market domains E.g. WWW standards A vertical market sector is specific to a particular domain E.g standards for medical radiology

Horizontal VS vertical markets Standardisation in horizontal markets Is difficult List of wish list is too big Standardisation in vertical markets Is also difficult Domain has to be wide enough for a viable market With a smaller number of players, the mechanisms of market economies work less well