ABC: Supporting Software Architectures in the Whole Lifecycle Hong Mei School of Electronics Engineering and Computer Science, Peking University, Beijing, 100871, China. E-mail:
[email protected] How to compose prefabricated components is a key issue in component-based reuse. Research on Software Architecture (SA) and Component based Software Development (CBSD) provides two hopeful solutions from different perspectives. SA provides a top-down approach to realizing component-based reuse, but doesn’t pay enough attention to the refinement and implementation of the architectural descriptions, thus not fully able to automate the transformation or composition to form an executable application. CBSD provides a bottom-up way by using existing middleware infrastructures, but this technology is not able to guide systematically the CBSD process, especially the component composition at higher abstract levels. Naturally, a promising solution is to combine the above two approaches to realize component-based reuse. At the same time, the extremely open and dynamic Internet and the return of investment make software maintenance and evolution become inevitable and much more important than ever. To reduce the complexity and cost that mainly result from the difficulty of understanding the large-scale and complex software, researchers find that software maintenance and evolution should not be simply considered as an isolated and independent activity after releasing software systems. Since SA is an important artifact in development and helps to understand the whole system, it is introduced into software maintenance and evolution for reducing the complexity and cost. From the above discussion, we argue that SA should play a centric role in the whole software lifecycle, that is, SA description is used as the blueprint and middleware technology as the runtime scaffold for component composition, maintenance and evolution. To demonstrate the philosophy, we propose a software reuse methodology, which is called ABC (Architecture Based Component Composition) [5]. ABC introduces software architectures into each phase of software life cycle, takes SA as the blueprint of system development, shortens the distance between high-level design and implementation by supporting tools and mapping mechanisms, realizes the automated system composition and deployment on runtime component operating platforms, and makes architecture available at runtime for software maintenance
and evolution. Major issues in ABC include architectureoriented requirement analysis, architecture design, architecture based composition, architecture based deployment, architecture based maintenance and evolution of software systems. The process model of ABC is shown in Fig 1.
Fig.1 Process Model of ABC ǂTo achieve the traceability and consistency between requirement specifications and system design, ABC introduce concepts and principles of software architecture into requirements analysis and specifications [4]. In this phase, there is no actual SA but only the requirement specifications of the system to be developed, which are structured in the way similar to SA. It consists of a set of component specifications, connector specifications and constraint specifications and will be used as the basis for software architecting. ǂIn the phase of software architecting, the requirements specifications are refined, and some overall design decisions are made. To produce SA meeting functional and non-functional requirements of the target system, the architects may study the requirement specifications, refine components and connectors in the problem space, create necessary artificial components and connectors, produce dynamic and static SA models, build mapping relationships between requirement specifications and SA, check SA and so on. ǂIn the phase of component composition, the components, connectors and constraints in the reusable assets repository will be selected, qualified and adapted to implement the logic entities produced in architecting. However, there are still some elements unable to be implemented by reusable assets. These elements have to be implemented by hand in object-oriented languages or
Proceedings of the Second International Conference on Software Engineering and Formal Methods (SEFM’04) 0-7695-2222-X/04 $ 20.00 IEEE
other ones. Being implemented and tested, the elements will be stored into the repository and then composed into the target system as reusable assets. In that sense, the design view of SA can be fully implemented by the reusable assets. ǂComponent-based systems are usually implemented and executed with the help of some common middleware, such as CORBA/CCM, J2EE/EJB and COM. Before the implementation of the system being executed, it must be deployed into the middleware platform. In this phase, SA should be complemented with some information so that middleware can install and execute the system correctly [2]. Typically, the information includes declaration of its required resources, security realm and roles, component names for runtime binding, and so on. ǂIn some sense, the development of a system in ABC can be considered as a series of automated refinement and transformation of architecture models. The syntax and semantics of SA would become more accurate or complete after every refinement or transformation. SA in maintenance and evolution has the most accurate and complete details of SA describing the final system. Since it represents the actual situation of the runtime system, the runtime view of SA has a significant different perspective on components, connectors and constraints from the design view [1]. To support the above architecture centric phases, we develop a set of tools, including feature modeling tool, software architecting tool, application deployment tool and component operating platform. DETool [7] provides feature models for specifying requirements in a visual way. It builds a framework of domain feature models from five aspects to implement the important role of these models in requirements analysis and specifications. It also provides some basic constructs, including whole-part associations for organizing features, optional features and dimensional values for representing variations, propositional logics for constraining and validating variations. ABC/ADL [6] is an XML-based architecture description language specifically designed for component composition, and plays a centric role in ABC. ABC/ADL can be divided into three layers, including the metalanguage layer for defining architecture styles, the definition layer for defining component and connector types based on the styles and the instance layer for defining the instances of components and connectors. ABC/ADL offers many modeling constructs including style, component, connector, configuration, composite component, complex connector, aspect, semantic description, all of which can be modeled in a visual way with ABCTool. CADTool [2] is an assembly and deployment tool, which is based on software architecture. With the help of
software architectures, it’s easy to deploy distributed applications under the guidance of their structures and achieve the desired qualities and best resource utilization according to the statistics of the runtime environment. PKUAS [3] is a J2EE-compliant component operating platform, which enables its internal runtime states and behaviors to be observed and modified from the perspective of software architectures of the platform and applications. PKUAS constructs itself with a set of components based on a micro kernel that provides an optimized invocation framework for decreasing the performance penalty. On the basis of the componentized structure, PKUAS implements a set of reflective mechanisms, such as the framework supporting multiple interoperability protocols, the reflective container taking the lifecycle of a component into consideration and so on. Currently, ABC focuses on the traceability among the artifacts produced by the above tools in different phases and improves the above tools in practical and commercial applications.
Acknowledgements This work is supported by the Major State Basic Research and Development Program (973) under Grant No. 2002CB31200003; the National Natural Science Foundation of China under Grant No. 60233010, 60125206.
References [1]
[2]
[3]
[4]
[5]
[6]
[7]
Huang, G., H. Mei, F.Q. Yang. Runtime Software Architecture based on Reflective Middleware. Science in China (Series F), 2004, 47(4). Huang, G., M. Wang, L. Ma, L. Lan, T. Liu, H. Mei, Towards Architecture Model based Deployment for Dynamic Grid Services, to be appeared in IEEE Conference on e-Commerce Technology for Dynamic EBusiness (CEC’04-EAST), Beijing, China, Sep. 2004. Mei, H. and G. Huang. PKUAS: An Architecture-based Reflective Component Operating Platform, invited paper, 10th IEEE International Workshop on Future Trends of Distributed Computing Systems, May 2004, Suzhou, China. Mei, H., A Complementary Approach to Requirements Engineering: Software Architecture Orientation, ACM SIGSOFT Software Engineering Notes, 2000, 25(2): 40-45. Mei, H., Chang J.C. and Yang F.Q., Software component composition based on ADL and middleware, Science in China (Series F), 2001, 44(2): 136-151. Mei, H., Feng Chen, Qianxiang Wang and Yaodong Feng. ABC/ADL: An ADL Supporting Component Composition. In proceedings of 4th International Conference on Formal Engineering Methods (ICFEM2002), 2002, pp. 38-47. Mei, H., W. Zhang, F. Gu. A feature oriented approach to modeling and reusing requirements of software product lines. In Proceedings of COMPSAC 2003, pp. 250 – 256.
Proceedings of the Second International Conference on Software Engineering and Formal Methods (SEFM’04) 0-7695-2222-X/04 $ 20.00 IEEE