Component Based Development in Software Engineering



Similar documents
Elite: A New Component-Based Software Development Model

TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW

Peter Mileff PhD SOFTWARE ENGINEERING. The Basics of Software Engineering. University of Miskolc Department of Information Technology

A Comparision Between Traditional and Component Based Software Development Process Models

Object-Oriented Systems Analysis and Design

7 Component-based Development Process and Component Lifecycle

CHAPTERS A NEW KNOT MODEL FOR COMPONENT BASED SOFTWARE DEVELOPMENT

CS 487. Week 8. Reference: 1. Software engineering, roger s. pressman. Reading: 1. Ian Sommerville, Chapter 3. Objective:

Design with Reuse. Building software from reusable components. Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 14 Slide 1

Component-based Development Process and Component Lifecycle Ivica Crnkovic 1, Stig Larsson 2, Michel Chaudron 3

IT3205: Fundamentals of Software Engineering (Compulsory)

Development models. 1 Introduction. 2 Analyzing development models. R. Kuiper and E.J. Luit

Component Based Development Methods - comparison

Software development life cycle. Software Engineering - II ITNP92 - Object Oriented Software Design. Requirements. Requirements. Dr Andrea Bracciali

Axiomatic design of software systems

Umbrella: A New Component-Based Software Development Model

Software Engineering. Software Engineering. Component-Based. Based on Software Engineering, 7 th Edition by Ian Sommerville

Y: A New Component-Based Software Life Cycle Model

A Software Engineering Process for Operational Space Weather Systems. S. Dave Bouwer, W. Kent Tobiska Space Environment Technologies

Object-Oriented Modeling and Design

IT3203 Fundamentals of Software Engineering (Compulsory) BIT 2 nd YEAR SEMESTER 3

Developing the Architectural Framework for SOA Adoption

CS 389 Software Engineering. Lecture 2 Chapter 2 Software Processes. Adapted from: Chap 1. Sommerville 9 th ed. Chap 1. Pressman 6 th ed.

THE EVOLUTION OF COMPONENT BASED SOFTWARE ENGINEERING FROM THE TRADITIONAL APPROACH TO CURRENT PRACTICES

An Overview of Challenges of Component Based Software Engineering

How To Understand Software Engineering

A Review of an MVC Framework based Software Development

Software Engineering. Software Processes. Based on Software Engineering, 7 th Edition by Ian Sommerville

TOGAF usage in outsourcing of software development

What is a life cycle model?

Enterprise Frameworks: Guidelines for Selection

4. Incorporate Lessons Learned with SDLC

A SYSTEMATIC APPROACH FOR COMPONENT-BASED SOFTWARE DEVELOPMENT

Software Life-Cycle. Series of steps through which software product progresses. A life-cycle is selected during requirement Phase

How To Model Software Development Life Cycle Models

System development lifecycle waterfall model

How To Develop Software

Software Engineering. Objectives. Designing, building and maintaining large software systems

Increasing Development Knowledge with EPFC

Karunya University Dept. of Information Technology

COURSE CODE : 4072 COURSE CATEGORY : A PERIODS / WEEK : 4 PERIODS / SEMESTER : 72 CREDITS : 4

Foundations of Model-Driven Software Engineering

ISSUES OF STRUCTURED VS. OBJECT-ORIENTED METHODOLOGY OF SYSTEMS ANALYSIS AND DESIGN

Verification and Validation of Software Components and Component Based Software Systems

International Journal of Advance Research in Computer Science and Management Studies

A Comparison of SOA Methodologies Analysis & Design Phases

(Refer Slide Time: 01:52)

Software Processes. The software process. Generic software process models. Waterfall model. Waterfall model phases

Software Engineering

Chapter 8 Approaches to System Development

SOFTWARE ENGINEERING INTERVIEW QUESTIONS

Aspect Oriented Strategy to model the Examination Management Systems

SWEBOK Certification Program. Software Engineering Management

A Contrast and Comparison of Modern Software Process Models

Extend the value of your core business systems.

A Process Model for Software Architecture

Questions? Assignment. Techniques for Gathering Requirements. Gathering and Analysing Requirements

A system is a set of integrated components interacting with each other to serve a common purpose.

Basic Trends of Modern Software Development

Software Engineering. Software Engineering. Software Costs

BCS HIGHER EDUCATION QUALIFICATIONS. BCS Level 5 Diploma in IT. Software Engineering 1. June 2015 EXAMINERS REPORT

Certification Authorities Software Team (CAST) Position Paper CAST-18

Software Engineering for Software-Intensive Systems: III The Development Life Cycle

Masters of Science in Software & Information Systems

To introduce software process models To describe three generic process models and when they may be used

The software process. Generic software process models. Waterfall model. Software Development Methods. Bayu Adhi Tama, ST., MTI.

Patterns in. Lecture 2 GoF Design Patterns Creational. Sharif University of Technology. Department of Computer Engineering

Chap 1. Introduction to Software Architecture

SystemDesign Methodologies

Software Engineering/Courses Description Introduction to Software Engineering Credit Hours: 3 Prerequisite: (Computer Programming 2).

Service Oriented Architecture and Its Advantages

An Integrated Methodology for Implementing ERP Systems

An Improved Model for Component Based Software Development

Software Engineering Introduction & Background. Complaints. General Problems. Department of Computer Science Kent State University

Title: Topic 3 Software process models (Topic03 Slide 1).

Acknowledgement. Software Engineering. CS 3141: Team Software Project Introduction

Objectives. The software process. Basic software process Models. Waterfall model. Software Processes

The SOA Reference Model 1 By John Cheesman, Georgios Ntinolazos

Life Cycle Activity Areas for Component-Based Software Engineering Processes

SOA: The missing link between Enterprise Architecture and Solution Architecture

A STUDY ON COMPONENT BASED SOFTWARE ENGINEERING

SERVICE-ORIENTED MODELING FRAMEWORK (SOMF ) SERVICE-ORIENTED SOFTWARE ARCHITECTURE MODEL LANGUAGE SPECIFICATIONS

Software Engineering. Software Reuse. Based on Software Engineering, 7 th Edition by Ian Sommerville

2. Analysis, Design and Implementation

Overview of Software Engineering and the Software Development Process

Surveying and evaluating tools for managing processes for software intensive systems

1.1 The Nature of Software... Object-Oriented Software Engineering Practical Software Development using UML and Java. The Nature of Software...

A. Waterfall Model - Requirement Analysis. System & Software Design. Implementation & Unit Testing. Integration & System Testing.

Lecture Objectives. Software Life Cycle. Software Engineering Layers. Software Process. Common Process Framework. Umbrella Activities

Software Life Cycle Processes

JOURNAL OF OBJECT TECHNOLOGY

Outline. III The Development Life Cycle. Characteristics of Software Development Methodologies. The Prototyping Process

A Framework for Software Product Line Engineering

Enhanced Funding Requirements: Seven Conditions and Standards

Software Processes. Coherent sets of activities for specifying, designing, implementing and testing software systems

Transcription:

Component Based Development in Software Engineering Amandeep Bakshi, Rupinder Singh Abstract--In today s world, Component Based development is an active research area for more than a decade in software engineering. As they provide automated or semi-automated support for the various processes and the methods. There are three main approaches in Software Engineering world such as Structured, Object-oriented and Component-based approach. The last Component-based approach introduces more benefits to this world in terms of reusability, flexibility and maintainability. This paper basically provides the background of various software engineering approaches and compares the Component based development to the object oriented development approach and to the various other traditional approaches. Index Term Component Based Development, Commercial off the shelf (COTS), Object-oriented Development, Process Models. I. INTRODUCTION Software engineering is defined as the application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software that is the application of engineering to software. Software engineering process is the glue that holds the technology layers together and enables rational and timely development of computer software [1]. The history of software engineering begins from traditional approach that is the first methodology in the software world. It is meant that software development using a set of mature and stable technologies, which often include mainframe-based technologies. Then object-oriented approach came into this world and brought many new useful features. It covered most of the aspects of software development, including testing and project management. And the last one is-like a return to the correct mean of engineering- component-based approach. One of the essential characteristics of engineering disciplines is to build a product by assembling pre-made, standard components. The component-based approach is the most recent. Right now, component-based development (CBD) is in the leading edge phase. Indeed, there are now a number of technologies appropriate for and people with experience in the application of CBD [2]. Figure 1- The evolution to components in the industry [2]. One of the main contributions that CBD has is the reuse of software components in multiple systems. In this way a software component is developed only once, and can save out development effort multiple times. This approach towards saving effort does of course also work for other (intermediate) products that are made in the course of software development. An approach puts this idea central is called reuse-based software engineering [3]. II. VARIOUS APPROACHES FOR SOFTWARE ENGINEERING There are three major approaches in this world such as structured, object-oriented, and component-based [5]. A. Structured Approach This approach contains basic steps of a software development process such as analysis, design, implementation, testing, and maintenance. This report focuses on only analysis and design steps and their models. The design phase produces a data design, an architectural design, an interface design, and a procedural design with the help of various methods and techniques [5]. Manuscript received March, 2013. Amandeep Bakshi, Computer Science & Engineering Department, Thapar University, Patiala, India. Rupinder Singh, Computer Science & Engineering Department, Thapar University, Patiala, India. Figure 2- Analysis and design model for structured approach [1]. 48

Component Based Development in Software Engineering B. Object-Oriented Approach Object-oriented approach promises a way for implementing real-world problems to abstractions from which software can be developed effectively. It is a sensible strategy to transform the development of a large, complex super-system into the development of a set of less complicated sub-systems. Object-orientation also aims to provide a mechanism to support the reuse of program code, design, and analysis models. Therefore, analysis and design phases are inevitable for object-oriented approach, as well. In this approach, design is divided into four different steps as illustrated in Table 1 [5]. Table1- Analysis and design phases for object-oriented approach[5]. Phase Techniques Key Deliverables Analysis Collaboration Diagrams Analysis Models Class and Object Models Analysis Modeling System Design Deployment Modeling Component Modeling Overview design and implementation architecture Architectural Modeling Class Design Class and Object Modeling Design Models Interface Design Data Management Design Class and Object Modeling Prototyping Class and Object Modeling In structured approach, the end user would receive a monolithic application. When it is developed using object-oriented approach, the end user would still receive a monolithic application. Shortly, the object-oriented approach is the service of the functional developer, not the end user [5]. Figure 3- Object-oriented applications [5]. C. Component Based Approach Design Models with interface specification Design Models with database specification Component-based development is a CBSE activity that occurs in parallel with domain Engineering. Once the architecture has been established, it must be populated by components that (1) are available from reuse libraries and/or (2) are engineered to meet custom needs. Hence, the task flow for component-based development has two parallel paths. When reusable components are available for potential integration into the architecture, they must be qualified and adapted. When new components are required, they must be engineered. The resultant components are then composed (integrated) into the architecture template and tested thoroughly [1]. The resulting increase in reuse should dramatically improve time-to-market, software lifecycle costs, and quality [5]. The distributed object approach extends the object-oriented approach with the ability to call objects across address space boundaries, typically using an object request broker capability. The distributed system approach means a development approach for building systems that are distributed, are often multi-tier [5]. Figure 4 depicts the transformation that occurs after object oriented approach. Figure 4- CBD maturity phases [5]. III. VARIOUS PROCESS MODELS There are various process models called life cycle, which are developed for different circumstances. Traditional process models are the most mature ones, and mostly suit structured approach. However, they are also used for recent approaches such as object-oriented and component-based approaches in various phases and in somehow modified form. Object-oriented approach does not offer any original process model, which provides for its needs completely. Therefore, this approach complies with traditional models and their appropriate combinations. However, it is different when it comes to component-based approach because it changes the nature of software [5]. A. Traditional Process Models A number of different life-cycle models are used and three of them are most widely used i.e. waterfall with iteration, rapid prototyping and the spiral model. B. Object-Oriented Process Models The critical sense of object-oriented models is iteration, which is inevitable. One of the most favored models is fountain model, which contains circles, defining overlapping phases. In addition, there are arrows, describing the iteration within those phases. In this model, maintenance is reduced considerably. Besides fountain, there are other models, which can be considered within object oriented approach. These models are iterative and, incorporate some form of parallelism (overlap of activities), and support incremental development. One essential problem with these types of models, that is team members moves almost randomly between phases due to parallelism [6]. 49

components, their integration into a super-component should be carried out. COSE process model consists of four main phases and a system test phase: System specification, System decomposition, Component Specification, search, modification, creation, Integration Figure 5- Fountain model [6]. C. Component Based Stojanovic Process Model A component-oriented development process model, shown in Figure 6, has been introduced by Stojanovic, focusing on the component concept from business requirements to implementation. This process will be called by its owner s name. The phases of requirements, analysis, design and implementation in a traditional development process has been substituted by service requirements, component identification, component specification, component assembly and deployment. After the components of the system are fully specified, a decision can be made to build components, wrap existing assets, buy COTS (Commercial Off-the-Shelf) components or invoke web services over the Internet [5]. Figure 7- COSE process [5]. IV. CBD VS OBJECT-ORIENTED DEVELOPMENT (OOD) The main difference between a component and an object is that, a component is meant to be a runtime entity, whereas an object is an instance of a class. Objects are usually not thread-secure, because the designer knows (or thinks he knows) how the objects are going to be used. In a component context, he cannot be sure about that, and therefore the components have to be secured. To build complex units, objects can also use inheritance, whereas when components build complex units, they are limited to composition. In other words, a developer connects several components to make a super component. Components are deployed independently, and it is impossible to predict how the component is going to be used. As a result, concerns about dependencies between components, call backs, components using each other - but belonging to different threads, safety and security, and so on - are much more important than they are in plain object-oriented modeling or design [5]. Figure 6 - Stojanovic Process Model [5]. D. Component Based COSE Process Model COSE Process Model is an activity which starts from top-down to introduce the building blocks of the system. As the activity continues towards lower granularity blocks, interfaces between the blocks are also defined. At an arrived level where the module is expected to correspond to a component, a temporary bottom-up approach can be taken, if desired capability can only be achieved by a set of Figure 7- Component-based approaches [5]. Table2- A comparison of CBD and OOD [5] 50

Component Based Development in Software Engineering Attributes CBD OOD Interoperability Provides communication between different technologies Development is restricted with one technology on one platform Reusability Run-time Development-time Flexibility More flexible in terms of Less flexible hardware and software Reliability Thread safe and secure Dependent on developers ability Deployment Independent parts of software Monolithic software application Building strategy Composition is major Inheritance is unnecessary Inheritance and composition are both used V. CBD VS TRADITIONAL DEVELOPMENT In traditional approaches, a modification request may conceptually affect only one module, but implementation of the modification usually ends up with impacting several modules. Furthermore, in many cases the whole application needs to be redeployed as shown in Figure 8 [5]. Gain in Cost Gain in Operational Quality Gain in Functionality Gain in Time to market. Gain in Maintenance Overhead To make use of existing COTS components and existing integration technologies, the system designer often follows a bottom up approach [3]. Lifecycle follows sequence of phases: 1. Selection from wide range of candidate assets. 2. Integration in the host system. 3. Verification and validation of the COTS product. 4. Maintenance of the COTS product. COTS development is a special case of CBSD Table3- Comparison between COTS and CBSD [3]. Key areas COTS CBSD White Box versus Black Box Black Box White Box Copy right Privileges Vendor System/user Developer Maintenance Vendor Developer Retrieval Criteria Exact Match Approximate Match Figure 8- Traditional deployment method [5]. Using a component-based approach, the same cycle becomes as illustrated in Figure 9. In this case, the modification usually impacts only the component that is affected by the modification request, and it is possible to redeploy only the impacted component. This benefit is particularly important for large systems. Figure 9- Deployment method in component-based approach [5]. VI. COTS VS CBD Commercial off the shelf (COTS) based software development is the process of building software application from commercially available software components. A COTS product is an executable software product has the following characteristics [3]. It is sold, leased or licensed to the general public. Buyers, lessees and licenses have no access to the source code; hence can only use the product as a black box. It is offered by a vendor who has created it and is typically responsible for its maintenance and its upgrades. It is available in multiple identical copies (with in the same version) on the market. There are a number of advantages to use COTS products in software development [3]. VII. CONCLUSION In software Industry for developing an application, mainly three process approaches and models are used i.e. structured approach, object oriented approach and component based approach. Out of these the component based approach and CBSE process model is the best because it help us to divide the application into two parallel activities i.e. component based development and domain engineering which helps to develop a components and reuse the old components from COTS for developing the new applications. By using CBD, we can easily develop components.cbd then qualifies, adapts and integrate these components for use in a new system. It also support integration and composition and COTS helps for selecting the component for reuse. So, as a result, CBSE process improves quality and productivity and hence reduces development schedule and effort. Now days two new process models are used i.e. Stojanovic Process Model and COSE process Model on the basis of component based approach. These Models helps to redeploy the whole application. VIII. FUTURE SCOPE CBD approach is especially sensitive for safety-critical domains, real-time systems, different process-control systems where the demands on reliability are higher than in a standard web based application. One biggest problem with CBD is low control of quality requirements of component-based systems and extensive work must be done in that direction. CBSE is facing many challenges today, some of these are summarized in the following:- Trusted components Component certification Composition predictability 51

Requirements management properly Long-term management of component-based systems Component configurations Tool support REFERENCES [1] PRESSMAN Roger, Software Engineering, McGraw Hill, 2006. [2] HERZUM Peter, SIMS Oliver, Business Component Factory, Wiley, 1999. [3] Mili, H, Mili,A.,Vacoub S., and Addy, E(2002) Reuse Based Software Engineering, Wiley- Interscience Publication, USA. [4] G. Pour, Component-Based Software Development Approach: New Opportunities and Challenges, Proceedings Technology of Object-Oriented Languages, 1998. TOOLS 26., pp. 375-383. [5] BAYAR Vedat, A Process Model For Component Oriented Software Development, Master Thesis, 2001. [6] RUMBAUGH James, BLAHA Michael, PREMERLANI William, EDDY Frederick, LORENSEN William, Object Oriented Modeling and Design, Prentice Hall, 1991. [7] Somerville, Ian, Software Engineering, 7th Edition, Addison-Wesley, 2004. Amandeep Bakshi is Post Graduate student in Computer Science & Engineering Department, Thapar University, Patiala, India and pursuing Master of Engineering in Software Engineering. He holds Bachelor of Technology (B.Tech) degree in Information Technology from Punjab Technical University, I.E.T. Bhaddal, Ropar, Punjab, India (2010). Rupinder Singh is Post Graduate student in Computer Science & Engineering Department, Thapar University, Patiala, India and pursuing Master of Engineering in Software Engineering. He holds Bachelor of Technology (B.Tech) degree in Computer Science & Engineering from Thapar University Patiala, Punjab, India (2011). 52