' ' Jou mal of Compuler Science & Its Application" June 2006, Vol. 12 No.1 .;r-J :. ' ," . ., . , , . ~ The Attraction and Challenges Of Software Componentization: An experience of AutoBudget 'J.O. DARAMOLAANDO.M. BAMIGBOLA *Department of Computer and Information Sciences, Covenant University, Otta, Nigeria. (wand iex@yahoo.eom), Department of Mat hematics, University of Ilorin, IIorin, Nigeria. (ombamigbola@hotmail.com) ABSTRACT The ever-growing requirements of use/'s for more advancedfunctionalities ill software systems Itave ade tlte software development process more complex. This has also created the needfor higher-level abstraction of oftware systems in order to accurately and sufficiently model real-world systems. III this paper, we present the attractions and the challenges of software componentizatiol1. Also! we ive the report of a successful application of this concept in the design lmd development of an automated software for ecurrent Budgeting and Planning in a tertiary institution. The software christened "AutoRudget" is a t/lree-tier component-based system that reflects tlte power of software componentization. ACM Category: Software Engineering Keywords: Components, Component-based elopment, 1. INTRODUCTION Software componentization, also known as component can be deployed independently and is also onent-based development entails the conceptualization subject toofcomposition by a third party e.g., Commercial Off The are systems as a composition of individual reusable Shelf(COTS) parts tools [3]. Software componentization, therefore, involves the dividing of ponents) that are integrated for coherent interaction in order systems into components for the purpose of easy development, hieve the specified requirements of a system. software A software deployment onent by definition is a unit of computation withand eptually specified interfaces and explicit context ndencies [3]. It is a modular, deployable and replaceable part maintenance. TillS form of higher-l eve! abstraction of software systems becomes attractive because it engenders the development system that encapsulates and exposes a set of interfaces [7], of software system using an approach that is similar to industrial componentbased An interface specifies the set of services provided by a assembly line procedures. This has proved advantageous by reducing the time and cost of development, at onent. A the same bringing a boost to software 1 i ~ The Attraction and Challenges Of Software Componentization: An experience of AutoBudget *J.O. Daramola and O.M. Bamigbola *Department of Computer and Information Sciences, Covenant University, Otta, Nigeria. (wandi_ex@yahoo.com). Department of Mathematics, University of Ilorin, Ilorin, Nigeria. (ombamigbola@hotmail.com) ABSTRACT The ever-growing requirements of users for more advanced functionalities in software systems have made the software development process more complex. This has also created the need for higher-level abstraction of software systems in order to accurately and sufficiently model real-world systems. In this paper, we present the attractions and the challenges of software componentization. Also, we give the report of a successful application of this concept in the design and development of an automated software for Recurrent Budgeting and Planning in a tertiary institution. The software christened “AutoBudget” is a three-tier component-based system that reflects the power of software componentization. ACM Category: Software Engineering Keywords: Components, Component-based development, 1. Introduction 2 Software componentization, also known as component-based development entails the conceptualization of software systems as a composition of individual reusable parts (components) that are integrated for coherent interaction in order to achieve the specified requirements of a system. A software component by definition is a unit of computation with conceptually specified interfaces and explicit context dependencies [3]. It is a modular, deployable and replaceable part of a system that encapsulates and exposes a set of interfaces [7], [8]. An interface specifies the set of services provided by a component. A component can be deployed independently and is also subject to composition by a third party e.g., Commercial Off The Shelf (COTS) tools [3]. Software componentization, therefore, involves the dividing of software systems into components for the purpose of easy development, deployment and maintenance. This form of higher-level abstraction of software systems becomes attractive because it engenders the development of software system using an approach that is similar to industrial component-based assembly line procedures. This has proved advantageous by reducing the time and cost of development, at the same bringing a boost to software product reliability, maintenance and efficiency [3]. Although relatively new, software componentization as a software engineering practice has many advantages. Some of these are clearly highlighted in this paper with a report of our experience in the application of software componentization for the development of an automated software system for recurrent budgeting and planning (named AutoBudget) at the University of Ilorin, Ilorin in Nigeria. However, with these also came some challenges which were not only peculiar to our case study but to software componentization in general. In section two of this paper, we give an overview issues related to software componentization. Section three is a report of our experience in terms of derived advantages and the different challenges encountered during the application of software componentization concept to the AutoBudget project and the approach adopted in handling them. 3 2. Attraction of Componentization The attraction of software componentization or component-based development stems from a number of reasons. Some of these are: 1. it affords the opportunity to practice abstraction at the componentlevel which is higher than the object level; 2. It has the potential to boost the understanding and perception of the composition of software systems; 3. It presents ample opportunity for development and application of reusable components (e.g. COTS); 4. The inherent reliability of reusable components has the potential to boost the reliability of composed systems. 5. The replacibility of components can enhance the maintainability of systems. 6. The time and cost of development can be greatly reduced, with the developer doing more of integration than building from the scratch; 7. Lastly, apart from the benefits outlined above, It has produced satisfactory results in terms of efficiency and performance in many situations. 3. Challenges of componentization 3.1 General Issues Component-based development or software componentization as a relatively new field of software engineering is presently faced with a number of challenges apart from the particular ones mentioned in our experiment with AutoBudget. Some of the issues and challenges involved in the development and maintenance of reusable components in general are: i. Quality control: Since component-based systems are composed of many components bought or outsourced, the quality control becomes more difficult since it includes parts from other providers. Issues like copyrights, maintenance and upgrade of components becomes complex. 4 ii. Profitability: There is a reduction in the frame of profits since many components are bought. iii. Component Generality and Efficiency: It is difficult to build a reusable component that is simple to use and sufficiently generic to cover the different aspects of its use. There is also a problem of efficiency, since in most cases the requirements of the components are usually incomplete and not well understood [10]. Although, the basic concepts of component functionality may be clear, the demands on the component interface and behaviour are usually varied in different components and products. Some components may require a high level of abstraction while others may require the interface to be on a more detailed level. These different types of requirement often lead to several variants of components, which can be used on different abstraction levels [3]. iv. Components Maintenance and Upgrade: It is not easy to maintain and upgrade components due to system evolution , which can be of different kinds [2], such as: -Evolution of system requirements, functional and non-functional; -Evolution of technology related to different domains; - Evolution of technology used in software products; - Evolution of technology used for the product development; and -Evolution of society and business changes. v. Migration Between Different Platforms: The emergence of the Internet and the existence of various kinds of operating systems such as UNIX, Window, Linux, MacOS etc., a requirement for running application distributed over the network and across different platforms becomes important. This is, therefore, an essential attribute of components in component–based systems [2]. vi. Compatibility: One of the most important factors of successful reusability is the compatibility between different versions of the components. A component can be replaced easily or added to new parts of a system if it is compatible with its previous version. 5 Therefore, the compatibility requirements are essential, since smooth upgrading of system running for many years is required. vii. Configuration Management: The configuration management of componentbased system is also an important issue due to the heterogeneous nature of these systems having being constituted from several components with different behaviours. viii. Replacibility : The replacibility of components in a component-based system without re-building the application, especially in performance critical system is also a challenge in component-based development [2], [3]. 3.2 Research Issues There are also a number of research issues that will greatly affect the practice of component-based development in the immediate future. Some of these are: i. The assurance and certification of component and component– based system using appropriate metrics. ii. The availability of prediction models for properties of component assemblies. iii. The availability of procedures for verification, testing and checking of component–based systems. iv. The creation of composition reasoning techniques for component models. v. The generation and adaptation of component–based systems. vi. The existence of patterns and frameworks for component–based systems. vii. The creation of measures (metrics) for the evaluation of system properties. viii. The determination of trustworthiness of software components and objective evidences of trustworthiness. ix. The creation of extra–functional system properties of components and component–based systems [4], [13]. 6 4. A Case Study of AutoBudget System. The University of Ilorin is a second-generation University located in the North-Central geo-political zone of Nigeria. It has an approximate student population of fifteen thousand, with a staff population of three thousand and five hundred. The staff is broadly categorized into academic and non-academic staff [12]. The task of recurrent budgeting in this tertiary institution is an annual exercise that is always very demanding with a lot of drudgery involved. Also, there is so much inaccuracy with the un-automated approach, which usually leads to a prevalence of complaints from different departments and units after the budgeting exercise. This is mainly due to numerous omissions and inaccurate budget provisions for prospective staff promotions and other forms of desirable budgetary inputs. This scenario created the need for an intensive approach that will produce the desired level of thoroughness and ingenuity that will effectively cater for all necessary parameters that will generate a sound basis for accurate fiscal budget plan for every upcoming year. Some of these budget parameters include fiscal provision for salary and non-salary emoluments of existing staff positions, provisions for salary and non-salary emoluments of all prospective staff promotions, expected staff recruitments and other recurrent expenditures of all departments and units within the institution. This is ordinarily a hardous task that can best be tackled by adopting a comprehensive, flexible and highly modular form of abstraction like software componentization. This is because componentization offers the opportunity to abstract at a higher level by grouping together the various pockets of similar object requirements and object interactions that exist within the system as specific functional components through a process of object aggregation [1], [5]. These components can then be integrated for coherent interaction in order to achieve the requirements of the whole system. The core requirements of the AutoBudget system, after the system study was conducted, are given as follows: i. Provision of total automation for the budget and fiscal planning process 7 ii. Provision of budget allocation for all departments and units within the tertiary institution system. iii. Provision for other recurrent expenditures for departments and units. iv. Automatic simulation of a new year’s budget using the previous year’s budget as a template. This should also make use of parameters like: a. All prospective staff retirements due b. All prospective staff promotions due c. The departmental or unit pyramidal structure of staff hierarchy d. Adjustments of departmental and unit staff budgets in respect of movement within the available job cadres v. Rich query and report facilities for various data views such as departmental budgets, departmental promotions, departmental staff list, general staff list, job cadre distribution, budget position distribution, personal staff records, general expenditure report, central expenditure report, schedule of proposed revenue report and relevant budget summaries. Figure 4.1 shows a modular view of the AutoBudget system. AutoBudget Input Functions Report and Query functions Processing Functions Departmental Budget Staff Data Central Expenditure General Expenditure Proposed Revenue Simulate staff Budget Simulate other Recurrent Expenditure (O.R.E) Staff Departmental Pyramidal Structure Create Budget Template 8 Simulated Departmental Budget Edited Budget Report Central Expenditure Report General Expenditure Report Schedule of Proposed Revenue Budget Summary Queries 4.1 The Component Architecture of AutoBudget The AutoBudget system was modelled as a three-tier component-based system consisting of three layers. These are the Budget User-Interface Component, the Budget Simulation Component and the Budget Database Component. Figure 4.2 shows the three-tier component-based Conceptual architecture design of AutoBudget. The Budget Interface Component (BIC), implements the presentation logic of the system. It is an ActiveX component with the input capture and report generation functions. The second layer of the system is the Budget Simulation Component (BSC), which corresponds to the implementation of the business logic of the AutoBudget system. It has a single interface called the IBudgetSimulate, which is an instance of a DCOM (Distributed COM) that specifies the four distinct methods that are used for the processing of budget data. These are: - SimulateBudget: which is responsible for the generation of a new financial year’s budget using the previous year as the template; - SimulateORE: which generates a new value per each recurrent expenditure head based on a specified increment or decrement factor; - PyramidalStruct: which computes the pyramidal structure for a given department using the existing budget statistics of that department; - BudgetTemplate: which transforms a budget records for a particular year to a basis for the simulation of a new year’s budget. The Budget Database Component (BDC) has the IBudgetConnect interface that enables run-time connection with a database of choice using the selected 9 database driver. This Component makes use of an OLE ActiveX Data Object (ADO) control to achieve the connection Figure 4.3 shows the component diagram of the AutoBudget System [8], [9]. 10 Input interface Report interface Budget User Interface Budget logic Simulation for Staff Promotion Budget logic Budget logic Simulation for Ordinary Recurrent Expenditure - Budget template Pyramidal Structure Database Drivers Budget Database Figure 4.2 A Three-tier Conceptual Architecture design of AutoBudget Input BIC Report IBudgetSimulate IBudgetConnect BSC IBudgetSimulate: Methods (1..n) BDC IbudgetConnect: Methods (1..n) Figure 4.3 Overview of Component diagram of AutoBudget 11 4.2 Interface Specification and Code Implementation of AutoBudget Components By convention, the Microsoft‘s version of Interface Definition Language (MIDL) was used to specify component interfaces. An interface specification indicates the type of services a component can provide to its prospective clients [6]. It therefore, corresponds to a contract between the component and its clients. As an example Figure 4.4 shows the IDL specification of the Budget Simulation Component (BSC) and typical instances of interface methods calls with Visual Basic. Import “unknown.idl” [uuid (5C7DB21-546D-12D3-27BE-005907A7C34F),dual] interface IBudgetSimulate :IDispatch { HRESULT BudgetSimulate([in] BSTR budgetyear, [in] BSTR dept_id, [out,retval] Bool* found ); HRESULT ORESimulate ( [in] BSTR ore_id, [in] float factor, [in] BSTR operator, [Out,retval] float * ORE_Allocation); HRESULT PyramidalStruct ([in] BSTR dept_id , [out,retval] float * pyramidalStructure); HRESULT BudgetTemplate ([in] BSTR budgetyear, [out,retval] Bool* done); }; [uuid (5C7DB27-548D-12D3-27B3-005907A7C34F),VERSION (1.0)] Library BudgetSimulationToolLib { Importlib(“stdole32.tlb”); [uuid (5C7DB23-548D-12D3-27BE-005907A7C34F)] coclass BudgetSimulationTool { Interface IBudgetSimulate; }; } ‘Code Sample for Budget Simulation Component interface Method calls with Visual Basic Dim Simula As IBudgetSimulate ‘declaration of interface-based reference Set Simula = New BudgetSimulationTool ‘ use of concreateinstance to load component’ Bool found = Simula.BudgetSimulate(“2004”, “9507”) ‘ invocation of BudgetSimulate method for the department with dept_id = “9507” for the year 2004 budget year Dim ORE = Simula.ORESimulate(“001”,0.5,”+”) ‘invokes ORESimulate method for recurrent expenditure head with ore_id = “001” with an adjustment factor of 0.5 and the increment operator . Dim Pyramidal = Simula.PyramidalStruct(“9507”) ‘ invokes the pyramidal structure determinant method for the department with dept_id = “9507” Bool done = Simula.BudgetTemplate(“2003”) ‘ invokes the BudgetTemplate method on the year 2003 budget records” Figure 4.4 IDL Specification for Budget Simulation Component (BSC) 12 4.3 Post Implementation Experiences 4.3.1 Benefits Our experience with the software componentization experiment was generally very pleasant. Some of the advantages derived include: i. Increased Understandability: The breaking down of the system into modular units with specific functionalities made each of these parts to be self-contained and very easy to understand in terms of system design and implementation as instances of fault tracing and fault fixing were much simplified. ii. Reuse and Distribution: The development of independently deployable components made it possible for us to reuse this components in some other software systems where similar functionalities were required. For example, the database component (BDC) is actually a generic tool that offers the opportunity to dynamically connect with any kind of database supported by the Microsoft Windows platform at run time. The Budget Interface Component (BIC) is also readily customizable for deployment as an implementation of the presentation logic of many other kinds of business application systems. iii. Maintainability: One of the most visible gains derived from this componentization experiment with AutoBudget is the ease of maintenance. The system, which has been at work for four years running, has been very easy to maintain. During these years, the University Budget and Planning department have had occasion to request that new report modules be included in the system. Also, there had been instances of creation of new departments and faculties and splitting of departments. Furthermore, there had been modifications in the criteria for determining the promotion of staff of the university as a result of new administrative policies. All these changes have been well accommodated and adequately handled by the system, simply by adding new interfaces and methods to the particular system 13 component concerned. The upgraded components are then used to replace the older ones. This ensured that compatibility with other components is still retained without disrupting the balance of the whole component-based system. iv. Reliability: The AutoBudget system has proved very credible and reliable, an attribute that stems directly from the individual reliability of the components within the system. The fault tolerance and fault avoidance built into this component was testably high. v. Efficiency and Performance: The system has performed efficiently thus far, and the budget simulations have been very accurate. However, the design of the system was such that after an automated simulation has been generated, it will still be possible to edit any particular departmental budget of choice after securing the necessary authorization. This is to allow for flexibility and discretionary inputs that can further improve the overall outcome of the budget preparation process. 4.3.2 Challenges There were many challenges encountered during the software componentization experiment with AutoBudget, which underscores some of the existing issues in component-based software engineering in general. Some of these are itemized below: i. We found the statement of C. Szyperski [11] to be true, which says, “Developing a reusable component requires three to four times more resources than developing component which serves a particular case”. Much programming effort went into the process of building the reusable components and certifying their behaviour and functionality. This made the time of development relatively slower. None of the three components was outsourced or bought from a third party. Rather, we had three teams of programmers each working on the development of 14 the three components in parallel but with effective on-line communication. ii. Maintaining active communication among different component developer groups was not as easy as earlier envisaged. The early sessions of component certification tests carried out by the quality assurance group identified the need to foster closer communication among the developer groups to avoid a situation where the different components will be so much at variance with one another such that integration becomes difficult, if not impossible. This made the project management team to introduce a scheme akin to the Joint Application Development (JAD) methodology into the development process which facilitated the creation of an inter-group committee of three persons (in this case the group team leaders) to meet twice a week for regular interaction. This experience with AutoBudget is a pointer to one of the most common problems that arise in outsourcing of component-based development where partners find it difficult to completely implement contractual agreement due to inadequate communication. iii. Policy Changes: The evolutionary changes that occurred during the development of the system were also a source of challenge. There were several policy developments like creation of new departments, instances of merging of some separate units under some umbrella units for budget purposes, which occurred late into when the different component developer groups had started work. These changes disrupted the initial design of some components forcing new interfaces and methods to be introduced in order to cater for this. This is particularly challenging because of the need for integration and interoperability among components. 5. Conclusion Although, still a maturing field of software engineering, software componentization through the practice of component technology and 15 component-based development has demonstrated its capability to offer that new and necessary platform required to enhance the process of software modelling and abstraction. This is further demonstrated by our experience with the AutoBudget software system. References 1. Bamigbola O.M., Olugbara O.O. and Daramola J.O. (2003): An Object-Oriented Software Model for Students’ Registration and Examination Result Processing in Nigerian Tertiary Institutions; Science Focus; 6, 70-80. 2. Crnkovic, I. and Larsson, M. (2002): Challenges of Component-based development; Journal of Systems and Software, 61(3), 201-212 3. Crnkovic, I. (2001): Component-based Software Engineering- New Challenges in Software Development; Software Focus, 2(14), 127-133 4. Crnkovic, I., Stafford, J., and Larsson, S. (2002): Composing Systems from Components; 9th IEE conference and Workshop on Engineering of Computer-Based Systems, Lund University, Lund. 5. Daramola J.O. (2003): Application of Software engineering and RAD tools; Unpublished M.Sc Thesis, University of Ilorin, Ilorin, Nigeria. 6. Jifeng, H., Zhiming, L., and Xiaoshan, L. (2003): Component Calculus; UNU/IIST Report No. 285 7. OMG: OMG-Unified Modelling Language Report V1.5; Object Management Group; http//www.omg.org/ 8. OMG (2000) : The Common Object Request Broker: Architecture and Specification, Report V.25; OMG Standard Collections. 9. Microsoft (1996), The Component Object Model Specification; Report V 0.99, Microsoft Standards, Redmond WA. 10. Sommerville, I. (1996): Software Engineering; Addison-Wesley, Massachusetts. 11. Szyperski, C. (1998), Component Software Beyond Object-Oriented Programming; Addison-Wesley, Massachusetts. 12. 13. University of Ilorin (2004): University of Ilorin Calendar; University of Ilorin Press, Ilorin. Eight International SIGSOFT Symposium on Component-based Software Engineering (CBSE 2005): Software Components at work; call for paper http://www.cs.wustl.edu/icse05/ ColocatedEvents/ColocatedEvents 16