CSC532 Term Paper COMPONENT BASED SOFTWARE ENGINEERING Krishna chaitanya Dasam kcd014@latech.edu Abstract: Component based Software Engineering (CBSE) is a new trend in developing high quality software systems effectively. The basic idea behind component based software development is to build software from already built components rather than developing everything from scratch. CBSE looks very promising using reusable components as they provide lot of functionalities but they are many traps to developers that can lead to higher cost than the benefits of reusing. This article describes a short introduction, history, establishment, benefits and limitations of CBSE. Introduction: Nowadays, Software systems are becoming increasingly complex but at the same time providing more functionality. To be able to produce such systems costeffectively, suppliers often are using Component based technologies instead of developing all the parts from the scratch. Initially, the main aim behind the use of components was to reduce the cost of development, but it later became more important to reduce the time to market and to meet rapidly emerging market demand and consumer needs. Component based Software Engineering (CBSE) is gaining recognition as the key technology for the construction of high-quality, evolvable, large software systems in timely and affordable manner. The ultimate goal is to reduce developing costs and efforts, improvement in flexibility, reliability and reusability of final application due to (re)use of software components already tested and validated. Indeed, in many domains significant improvements in efficient of development have been achieved. However, including components on which the producer doesn’t have any control can lead to unexpected results. Even the good components can corrupt the final product if they are managed unknowingly. History: Since the first software crisis in the early sixties, many attempts have been made o support the construction of especially large and high quality systems. The procedural paradigms as well as object-oriented design have contributed in many respects to this; nevertheless the efficient building of high quality software systems is still an unsolved problem. A current approach to improve the situation is CBSE, where pre-fabricated pieces of code are integrated into the software systems being developed. The basic idea is simple, when developing new software systems use components that are already developed. When you develop specific functions you need in your system, develop it in that way that this function can be used by the other systems in future. Although the idea is simple, it has been shown that the implementation is quite hard. The basic step in the development of software systems from reusable components is to divide the system into well-defined components. The components that cannot be developed internally are given for outsourcing or bought already developed components from other companies. Figure 1 shows System reusability evolution. In 80s the systems were monolithic; always everything is developed from the scratch including the hardware development and the environment development. In 90s the hardware can be bought from standardized companies but still operating environment has to be changed according to the requirement. Nowadays, typically standard hardware, software and infrastructure are used. Only those parts that are directly related to the customer requirements are internally developed. This led to decrease in development time and reduction in development costs. The idea of building products from already built software components is not a new one in Software Engineering. Before implementing it in software engineering it has been successfully implemented in many other disciplines, e.g. Building hardware computer systems, the use of pre-fabricated hardware components and integrated circuits with standardized interfaces has been established. In many Engineering disciplines, the use of pre-manufactured components with standardized interfaces leads to efficient and cost reducing production of products. As the component based approach led to a more efficient production of goods in these application fields, it is ongoing hope of the software industry to gain a technology to create and maintain especially large software systems more efficiently. What is CBSE? Component-based Software Engineering (CBSE) denotes the process of building software by reusing pre-built software components thus basing on the meaning of software components. There are varieties of definitions for software component in software literature today. A software component is a piece of code that is small enough to get created and maintained as a whole and large enough to offer well defined functionality. A software component is a unit composition that is equipped with an interface built upon standards in order to collaborate with other software components and can exist independently of development or execution environments. A run-time software component is a dynamically binded package of one or more programs that are managed as a unit and accessed through interfaces that are discovered at run-time. A business component represents the software implementation of business concept or business process. It consists of all software artifacts necessary to express, implement and deploy the concept as a reusable element of a large business system. Software component infrastructure Due to this understanding CBSE is not an advancement of object-oriented software development, rather these approaches are orthogonal to each other in that components can be implemented by object-oriented approach as well as conventional functional or logical languages. Establishment of CBSE: Implementing CBSE effectively in an organization does not only affect on software engineering process but also has impacts on large parts of the organization. There are many frameworks and process models that are used in implementing CBSE in an organization. They view establishment of CBSE as bundle of activities that can be grouped in three phases called Investigation, Planning and Implementation & Maintenance. The Investigation phase aims at the identification of potential benefits as well as costs that are incurred for the organization for implementing CBSE. The main issues that are concerned here are the scope and the level of reusing components. The supporting framework consists of management, competitors and customers. The management deals with the issues like has the CBSE fit the culture of organization, has it taken place earlier in the organization, are there domains suitable for maintaining reusable components. Regarding the competitors, issues like have they gained any advantage in using CBSE and how they used CBSE? Concerning the customers, it is important to know to which degree they demand modular software. This phase is critical as persons performing various tasks must be equipped with technical as well as organizational knowledge. The Planning phase deals with the designing the organization for CBSE. Various aspects that are considered during planning phase are people, processes, organizational structures, metrics, marketing, technologies and legal & contractual issues. In the Implementation & Maintenance phase firstly the planned design has to be realized like timely acquisition and management of resources. Furthermore, there are monitoring tasks such as realization of the planned design strategy with its time and resource schedule observed, the adoption process must be monitored and CBSE itself should be recorded in the long term by use of definite metrics. Benefits of CBSE: Development cost and time: By using the components that are already developed in developing the product, the development cost and the time in delivering the product to the market are reduced. Increased productivity: As the software life cycle now requires less input to produce the same output, productivity is increased. Improve software quality: As the software parts have been used multiple times, they posses less defects than fresh coded parts. Increased connectivity and Interoperability: Products will plug together more easily. The manufacturers will be able to readily sell their hardware. Reduced trouble shooting and maintenance: By using the components that are already developed, the troubleshooting and the maintenance are done easily. Support of prototyping: The availability of reusable components supports prototyping and an early validation of user requirements. Reduced burden: The burden in creating new software systems is reduced when components that are already developed are available. Limitations of CBSE: Decreased control: As the components used for developing the product are provided by other vendors, there is no quality control on the system being developed. Higher cost: The components that are bought from vendors in order to use develop the product may not fit exactly the required criteria of the product. So in order to change the component according to the requirement it may incur an additional charge that cannot be affordable by the enterprise. Risk of corruption: Sometimes the components that are bought from other vendors may spoil the entire product being developed. Applications of CBSE: The field of CBSE is currently in a period of rapid growth and change. So there has been considerable work going on in the development of component interoperability models. These component models help developers deal with complexity of software and promote reuse. With component models, the focus is on specifying interfaces, packaging, binding mechanisms, inter component communication protocols. Component models are the most important step in the software reusability. If the components are developed independent of each other then it is highly unlikely that components developed under such conditions are able to cooperate usefully. A Component model supports components by forcing them to conform certain standards and allows instances of these components to cooperate with other components in this model. The three major component models that are used successfully today are: COM Java Beans CORBA Component Object Model (COM) The component object model is an application program interface (API) that provides a model for designing components that have multiple interfaces with dynamic binding to other components. It is an open standard and can be implemented on many different platforms. Java Beans The Java Beans design pattern designs a protocol to which beans must adhere. This interface pattern mainly consists of properties, methods and events that together define a bean interface. A Java Bean is a reusable component that support persistency and can operate across all platforms supported by java. CORBA The Common Object Request Broker Architecture (CORBA) is a standard that has been developed by Object management group (OMG). The OMG provides guidelines and specifications to supply a common framework for integrating application development. Primary requirements for these specifications are reusability, portability and interoperability of object based software components in a distributed environment. References: http://www.sei.cmu.edu/ http://www.mrtc.mdh.se/ http://www.fuka.info.waseda.ac.jp/ http://www.it.bond.edu.au/inft821/component/