720 likes | 851 Views
Component-Based Software Dr. Rami Bahsoon School of Computer Science The University Of Birmingham r.bahsoon@cs.bham.ac.uk www.cs.bham.ac.uk/~rzb Office 112 Y9- Computer Science. Unit 3. Engineering Component-Based Software: Processes and lifecycle. Unit 2 Learning Objectives. In this unit,
E N D
Component-Based SoftwareDr. Rami BahsoonSchool of Computer ScienceThe University Of Birminghamr.bahsoon@cs.bham.ac.ukwww.cs.bham.ac.uk/~rzbOffice 112 Y9- Computer Science Unit 3. Engineering Component-Based Software: Processes and lifecycle Component-Based Software Engineering Dr R Bahsoon
Unit 2 Learning Objectives • In this unit, • Unit 2.1 • Quick review software development processes & lifecycle • Unit 2.2 • Discuss software engineering challenges • Discuss reuse-software development and landscape • Appraise the benefits & limitations of reuse • Case study for orientation: Failure of Ariane 5 • Introduces the component-based software lifecycle and contrast it to generic lifecycles Component-Based Software Engineering Dr R Bahsoon
Critical Question How do you distinguish the process of “Component Development” from that of “Systems development with Components”? Component-Based Software Engineering Dr R Bahsoon
Unit 2.1 Overview of Software Processes (Revision & Background) Perhaps what you have seen from processes looks explicitly at “Component Development”… and implicitly at “Developing Software Systems from Components” Component-Based Software Engineering Dr R Bahsoon
Brainstorming Exercise • What is your understanding of a “Software Process”? • Have you used any “Software Process Model” in your practice? • Which models? • Examples? • Uses? Strengths/Weaknesses? • Observations? Component-Based Software Engineering Dr R Bahsoon
Objectives • Quick revision for software processes models (These are background material which you may have seen elsewhere) • Waterfall, incremental, evolutionary, spiral • Advantages and disadvantages • To describe the Rational Unified Process model Component-Based Software Engineering Dr R Bahsoon
Software Engineering – for Orientation • Software Engineering is a branch of systems engineering concerned with the development of large and complex software intensive systems. It focuses on: • the real-world goals for, services provided by, and constraints on such systems, • the precise specification of systems structure and behaviour, and the implementations of these specifications, • the activities required in order to develop an assurance that the specifications and real world-world goals have been met, • the evolution of these systems over time, and across systems families, • It is also concerned with the processes, methods and tools for the development of software intensive systems in an economic and timely manner. Reference: A. Finkelstein Component-Based Software Engineering Dr R Bahsoon
Software Process • A structured set of activities required to develop a software system • Specification; • Design; • Validation; • Evolution. • A software process model is an abstract representation of a process. It presents a description of a process from some particular perspective. Component-Based Software Engineering Dr R Bahsoon
Process Models: Examples • The waterfall model • Separate and distinct phases of specification and development. • Evolutionary development • Specification, development and validation are interleaved. • Component-based software engineering • The system is assembled from existing components. Component-Based Software Engineering Dr R Bahsoon
Waterfall Model Component-Based Software Engineering Dr R Bahsoon
Waterfall Model Phases Phase 1. Requirements analysis and definition • The process of establishing what services are required and the constraints on the system’s operation and development. • What is the system about? • Requirements engineering process • Feasibility study; • Requirements elicitation and analysis; • Requirements specification; • Requirements validation. Phase 1 Component-Based Software Engineering Dr R Bahsoon
Phase 1. Requirements Engineering process Activities Output Component-Based Software Engineering Dr R Bahsoon
Waterfall Model Phases Phase 2. System and software design • i.e., Howthe requirements to be realised?Design a software structure that realises the specification; • Architectural design • Abstract specification • Interface design • Component design • Data structure design • Algorithm design….. Phase 2 Component-Based Software Engineering Dr R Bahsoon
The Software Design Process Output Component-Based Software Engineering Dr R Bahsoon
Waterfall Model Phases Phase 3. Implementation and unit testing • Implementation: Executable code • Unit testing (Component test) • Individual components (function/programs/classes) are tested independently; • Components may be functions or objects or coherent groupings of these entities. Phase 3 Component-Based Software Engineering Dr R Bahsoon
Waterfall Model Phases Phase 4. Integration and system testing • System testing • Testing of the system as a whole. Testing of emergent properties is particularly important. • Acceptance testing • Testing with customer data to check that the system meets the customer’s needs. Phase 4 Component-Based Software Engineering Dr R Bahsoon
Waterfall Model Phases Phase 5. Operation and maintenance Phase 5 Component-Based Software Engineering Dr R Bahsoon
Evolutionary Development • Exploratory development • Objective is to work with customers and to evolve a final system from an initial outline specification. • Start with well-understood requirements and add new features as proposed by the customer. • Throw-away prototyping • Objective is to understand the system requirements. Should start with poorly understood requirements to clarify what is really needed. Component-Based Software Engineering Dr R Bahsoon
Evolutionary Development Component-Based Software Engineering Dr R Bahsoon
Process Iteration • System requirements ALWAYS evolve in the course of a project so process iteration where earlier stages are reworked is always part of the process for large systems • Iteration can be applied to any of the generic process models (e.g., waterfall) • Two (related) approaches • Incremental delivery; • Spiral development. Component-Based Software Engineering Dr R Bahsoon
Incremental Development Reference: A. Finkelstein Component-Based Software Engineering Dr R Bahsoon
Incremental Delivery • Rather than deliver the system as a single delivery, • the development and delivery is broken down into incrementswith each increment delivering part of the required functionality • User requirements are prioritised • highest priority requirements are included in early increments • Once the development of an increment is started, the requirements are frozen though requirements for later increments can continue to evolve Component-Based Software Engineering Dr R Bahsoon
Incremental Development Advantages • Early increments act as a prototype to help elicit requirements for later increments • Lower risk of overall project failure • The highest priority system services tend to receive the most testing • Customer value can be delivered with each increment so system functionality is available earlier Component-Based Software Engineering Dr R Bahsoon
Spiral Development • Process is represented as a spiral rather than as a sequence of activities with backtracking • Each loop in the spiral represents a phase in the process • No fixed phases such as specification or design - loops in the spiral are chosen depending on what is required. • Risks are explicitly assessed and resolved throughout the process Component-Based Software Engineering Dr R Bahsoon
Spiral Model Component-Based Software Engineering Dr R Bahsoon
Spiral Model Component-Based Software Engineering Dr R Bahsoon
Spiral Model Sectors • Objective setting • Specific objectives for the phase are identified. • Risk assessment and reduction • Risks are assessed and activities put in place to reduce the key risks • Development and validation • A development model for the system is chosen which can be any of the generic models • Planning • The project is reviewed and the next phase of the spiral is planned Component-Based Software Engineering Dr R Bahsoon
Exercise -The Rational Unified Process • Use the Internet to understand RUP. Prepare a brief summary on RUP for class discussion Component-Based Software Engineering Dr R Bahsoon
RUP Model Component-Based Software Engineering Dr R Bahsoon
RUP- Phases • Inception • Establish the business case for the system • Elaboration • Develop an understanding of the problem domain and the system architecture • Construction • System design, programming and testing • Transition • Deploy the system in its operating environment Component-Based Software Engineering Dr R Bahsoon
RUP- Class Discussion It is claimed that RUP, if adopted, can: • Develop software iteratively, • Manage requirements, • Support component-based software development, • Verify software quality, • Control changes to software etc. What do you think? Do you agree/disagree & Why? Component-Based Software Engineering Dr R Bahsoon
Summary of Unit 2.1 • Software processes are the activities involved in producing and evolving a software system • Software process models are abstract representations of these processes • General activities are specification, design and implementation, validation and evolution • Generic process models describe the organisation of software processes. Examples include the waterfall model, evolutionary development and component-based software engineering • Iterative process models describe the software process as a cycle of activities • The Rational Unified Process is a generic process model that separates activities from phases Component-Based Software Engineering Dr R Bahsoon
Unit 2 Learning Objectives • In this unit, • Unit 2.1 • Quick review software development processes & lifecycle • Unit 2.2 • Rational Unified Process • Model-driven development • Reuse-driven software development and landscape • Component-based software lifecycle Component-Based Software Engineering Dr R Bahsoon
Challenges in Software Engineering Development and evolution costs for long-lifetime systems System development System evolution Time • Complexity • The size and complexity of software is increasing rapidly • Change, maintenance & continuous evolution • Users’ Requirements and the environment in which the software works are in continuous change… • Changes in non-functional requirements have global impact to threat software stability • Legacy systems: old and valuable systems must be maintained, updated, and be integrated with new systems • Software upgrades are expected after deployment… Component-Based Software Engineering Dr R Bahsoon
Challenges in Software Engineering • Architecting dependable software • Software must be trustworthy by its users Component-Based Software Engineering Dr R Bahsoon
Challenges in Software Engineering • Single products become part of product family • Heterogeneity • Software that can cope with heterogeneous platforms and execution environments • E.g. Fixed distributed and mobile environments • Time to market • There is increasing pressure for faster delivery of software to gain competitive advantage Component-Based Software Engineering Dr R Bahsoon
Challenges in Software Engineering Concentration on the business issues… “Around 30% of the development effort is spent on the infrastructure that add no value” Component-Based Software Engineering Dr R Bahsoon
Model Driven Development • The software development process is driven by the activity of modelling (with UML) • Supports full lifecycle: analysis, design, implementation, deployment, maintenance, evolution and integration with later systems • Builds in Interoperability and Portability • Lowers initial cost and maximises return-on-investment • Applies directly to the mix you face: • Programming language; Network; Operating system, Middleware Component-Based Software Engineering Dr R Bahsoon
The Model-Driven Process Component-Based Software Engineering Dr R Bahsoon
MDA Framework • A model is a description of a system. • A PIM describes a system without any knowledge of the final implementation platform. • A PSM describes a system with full knowledge of the final implementation platform. • A transformation definition describes how a model in a source language can be transformed into a model in a target language. • A transformation tool performs a transformation for a specific source model according to a transformation definition. Component-Based Software Engineering Dr R Bahsoon
PIM - Platform Independent Model • Platform Independent Model • Model with a high level of abstraction independent of any implementing technology. • Specifies the system from the viewpoint of how it best supports the business. • Whether a system will be implemented on a mainframe with a relational database or on an EJB application server plays no role in a PIM. Component-Based Software Engineering Dr R Bahsoon
PSM – Platform Specific Model • A transformation of PIM tailored to specify a system in terms of the implementation constructs available in the chosen implementation technology • A PIM is transformed into one or more PSMs: for each specific technology platform a separate PSM is generated. • For example, an EJB PSM is a model of the system in terms of EJB structures. • It typically contains EJB specific terms like “home interface”, “entity bean”, “session bean” and so on. • A relational database PSM includes terms like “table”, “column”, “foreign key”, and so on. Component-Based Software Engineering Dr R Bahsoon
Code • The final step in the development is the transformation of each PSM to code. • A PSM fits its technology closely and so this transformation is relatively straightforward. • MDA defines the PIM, PSM, and code and also defines how these relate to each other. Component-Based Software Engineering Dr R Bahsoon
Tool Support & References • AndroMDA http://www.andromda.org/ • An extensible open source generator framework that adheres to the Model Driven Architecture (MDA) paradigm. • Models from UML tools can be transformed into deployable components for your choice of platform (J2EE, Spring, .NET). • References: • OMG http://www.omg.org/mda • Book by A. Kleppe et al., MDA Explained, Addison-Wesley, 2003 • http://www.klasse.nl/mdaexplained Component-Based Software Engineering Dr R Bahsoon
Another Shift in Paradigm… 1970 1990 2000 Component-Based Software Engineering Dr R Bahsoon
Shift in Effort… Waterfall model 0 2 5 5 0 1 00 7 5 Specification Design Development Integration and testing Iterative development 0 2 5 5 0 7 5 1 00 Specification Iterative development System testing Component-based software engineering 0 2 5 5 0 1 00 7 5 Specification Development Integration and testing • In CBSE much of the effort/cost are spent on • integration and testing… Component-Based Software Engineering Dr R Bahsoon
Systematic Software Reuse • In most engineering disciplines, systems are designed by composing existing components that have been used in other systems • Software engineering has been more focused on original development… • To achieve “potentially” better software, more quickly and at lower cost, we need to adopt a design process that is based on systematic software reuse... Component-Based Software Engineering Dr R Bahsoon
Reuse Approaches & Landscape Component-Based Software Engineering Dr R Bahsoon
Reuse Approaches & Landscape Component-Based Software Engineering Dr R Bahsoon
Benefits of Reuse Component-Based Software Engineering Dr R Bahsoon