Software guidelines have been with us in many forms within Software Engineering community such as knowledge, experiences, domain expertise, laws, software design principles, rules, design heuristics, hypothesis, exper...Software guidelines have been with us in many forms within Software Engineering community such as knowledge, experiences, domain expertise, laws, software design principles, rules, design heuristics, hypothesis, experimental results, programming rules, best practices, observations, skills, algorithms have played major role in software development. This paper presents a new discipline known as Guidelines Based Software Engineering where the aim is to learn from well-known best practices and documenting newly developed and successful best practices as a knowledge based (could be part of the overall KM strategies) when developing software systems across the life cycle. Thereby it allows reuse of knowledge and experiences.展开更多
The foundation for any software system is its architecture. Software architecture is a view of the system that includes the system’s major components, the behaviour of those components as visible to the rest of the s...The foundation for any software system is its architecture. Software architecture is a view of the system that includes the system’s major components, the behaviour of those components as visible to the rest of the system, and the ways in which the components interact and coordinate to achieve the overall system’s goal. Every efficient software system arises as a result of sound architectural basement. This requires the use of good architecture engineering practices and methods. This paper recognizes software architecture practice as a discipline pervading all phases of software development and also presents an enhanced model for software engineering process which provides an avenue for speedy, efficient and timely delivery of software products to their intended users. The integration of software architecture into the phases of software development process in a generic software life cycle is also contained in this research report. This is to enable software engineers and system analysts to use effective software architecture practices and to employ appropriate methodology during the software engineering process.展开更多
In a component-based software development life cycle, selection of preexisting components is an important task. Every component that has to be reused has an associated risk of failure of not meeting the functional and...In a component-based software development life cycle, selection of preexisting components is an important task. Every component that has to be reused has an associated risk of failure of not meeting the functional and non-functional requirements. A component's failure would lead a developer to look for some other alternative of combinations of COTS, in-house and engineered components among possible candidate combinations. This means design itself can readily change. The very process of design of a software system and component selection seems to be heavily dependent on testing results. Instability of design, further, becomes more severe due to requirements change requests. Therefore, this instability of design has to be essentially mitigated by using proper design and testing approaches, otherwise, it may lead to exorbitantly high testing cost due to the repeated testing of various alternatives. How these three activities: Component-based software design, component selection and component-based software testing are interrelated? What process model is most suited to address this concern? This work explores the above questions and their implication in terms of nature of a process model that can be convincing in case of component-based software development.展开更多
Classical software configuration management which deals with source code versioning becomes insufficient when most components are distributed in binary form. As an important aspect of software configuration, protocol ...Classical software configuration management which deals with source code versioning becomes insufficient when most components are distributed in binary form. As an important aspect of software configuration, protocol configuration also encounters those problems. This paper focuses on solving protocol component versioning issues for protocol configuration man- agement on embedded system, incorporating the following versioning issues: version identification, version description and protocol component archiving and retrieving based on the version library.展开更多
IntelligentPad approach provides a standard for dynamically linkable components. Based on the standard, this paper introduces an approach of developing dynamically linkable components by using object oriented techniques.
Software reuse is considered as a practical approach to solving the software crisis. The BD-HCRUS, a software development supporting system based on heterogeneous component reuse, is introduced. The system has a reusa...Software reuse is considered as a practical approach to solving the software crisis. The BD-HCRUS, a software development supporting system based on heterogeneous component reuse, is introduced. The system has a reusable component library as its kernel in charge of the organization, storage and retrieval of the heterogeneous components, an object-oriented integrated language for the specification and composition of the heterogeneous components, and program comprehension tools for reverse-engineering and extracting reusable components from source code, then re-engineering the components. Therefore, a whole support is lent systematically to the acquisition, specification, organization, storage, retrieval and composition of reusable components.展开更多
A continuing challenge for software designers is to develop efficient and cost-effective software implementations. Many see software reuse as a potential solution;however, the cost of reuse tends to outweigh the poten...A continuing challenge for software designers is to develop efficient and cost-effective software implementations. Many see software reuse as a potential solution;however, the cost of reuse tends to outweigh the potential benefits. The costs of software reuse include establishing and maintaining a library of reusable components, searching for applicable components to be reused in a design, as well as adapting components toward a proper implementation. In this context, a new method is suggested here for component classification and retrieval which consists of K-nearest Neighbor (KNN) algorithm and Vector space Model Approach. We found that this new approach gives a higher accuracy and precision in component selection and retrieval process compared to the existing formal approaches.展开更多
Software component library is the essential part of reuse-based softwaredevelopment. It is shown that making use of a single component library to store all kinds ofcomponents and from which components are searched is ...Software component library is the essential part of reuse-based softwaredevelopment. It is shown that making use of a single component library to store all kinds ofcomponents and from which components are searched is very inefficient. We construct multi-librariesto support software reuse and use PVM as development environments to imitate large-scale computer,which is expected to fulfill distributed storage and parallel search of components efficiently andimprove software reuse.展开更多
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 per...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. However, it pays insufficient attention to the refinement and implementation of the architectural descriptions, and does not provide the necessary capability to automate the transformation or composition to form a final executable application. CBSD provides a bottom-up way by using existing middleware infrastructures. However, these technologies do not take into account the systematic methodology that can guide the CBSD process, especially the component composition at higher abstract levels. We argue that it is a natural solution to combine these two approaches.In this paper, an architecture-based component composition approach is presented. In this way, SA description, using mapping rules and mini-tools to narrow the gap between design and implementation , is used as the blueprint and middleware technology as the runtime scaffold for component composition. Our approach presents an ADL, which supports user-defined connectors and has an extensible framework, to specify software architectures. To map a SA description into implementation, it is necessary to map it first to an OO design model described in UML, then to the final implementation. The architectural description can be mapped into source code or executable code by using some ORB conforming to CORBA standard. Also a toolkit is provided to support this approach efficiently.展开更多
In the past 40 years, software engineering has emerged as an important sub-field of computer science and has made significant contribution to the software industry. Now it is gradually becoming a new independent disci...In the past 40 years, software engineering has emerged as an important sub-field of computer science and has made significant contribution to the software industry. Now it is gradually becoming a new independent discipline. This paper presents a survey of software engineering development from a research perspective. Firstly, the history of software engineering is reviewed with focus on the driving forces of software technology, the software engineering framework and the milestones of software engineering development. Secondly, after reviewing the past academic efforts, the current research activities are surveyed and new challenges brought by Internet are analyzed. Software engineering researches and activities in China are also reviewed. The work in Peking University is described as a representative.展开更多
In this paper we will discuss the software engineering technology for the 21 st century. First we review development over the last half century, overview application requirement and environment, accept a chal...In this paper we will discuss the software engineering technology for the 21 st century. First we review development over the last half century, overview application requirement and environment, accept a challenge. Then we outline following software engineering techniques: 1) Process;2) Analysis;3) Design;4) UML;5) Component;6) Java +XML;7) Integrated;8) Quality(ISO9000&CMM).展开更多
This paper focuses on Distributed Object Oriented Software Engineering over Internet, which is a way to build software culture. We believe that our work will contribute to better understanding of how to meet the nee...This paper focuses on Distributed Object Oriented Software Engineering over Internet, which is a way to build software culture. We believe that our work will contribute to better understanding of how to meet the needs of the big potential software market and to promote the software industry in developing country. The United States and Western Europe have well established software industry and related civilization. Software science, technology, and engineering are needed in China; however, maybe what is needed, first of all, is software civilization, including software ideas, customs, skills, arts, etc. We will draw a framework for the software culture as following: Software is the most important commodity in this age; Brilliance of hardware component era has become past fact; A software component era is ahead; Traditional linear process model is obsolete; Modern software engineering has a new face, object evolution model; Distributed object oriented software engineering over Internet is an approach to software component era; and Complete software civilization will be formed all over the world in next century.展开更多
Software reuse is viewed as a key technology to improve software product quality and productivity. This paper discusses a series of technologies related with software reuse and software component technology: component...Software reuse is viewed as a key technology to improve software product quality and productivity. This paper discusses a series of technologies related with software reuse and software component technology: component model, which describes component’s essential characteristics; component acquisition technology, of which domain engineering is the main approach; component management technology, of which component library is the kernel; application integration and composition technology, of which application engineering is the main approach; software evolution technology, of which software reengineering is the main approach, etc. This paper introduces the software development environment: JadeBird Software Production Line System, which effectively integrates the above-mentioned technologies.展开更多
以SRI-VC2110RC遥控系统为目标系统,设计了面向该目标系统的构件模型、架构风格和可复用软件构件库;设计并开发了基于Eclipse的构件化嵌入式软件开发工具。最后通过构建实例,展示了嵌入式软件构件化解决方案,并证明采用CBSE(Component B...以SRI-VC2110RC遥控系统为目标系统,设计了面向该目标系统的构件模型、架构风格和可复用软件构件库;设计并开发了基于Eclipse的构件化嵌入式软件开发工具。最后通过构建实例,展示了嵌入式软件构件化解决方案,并证明采用CBSE(Component Based Software Engineering)方法能够改善目标系统嵌入式软件的开发过程,提高开发效率。展开更多
文摘Software guidelines have been with us in many forms within Software Engineering community such as knowledge, experiences, domain expertise, laws, software design principles, rules, design heuristics, hypothesis, experimental results, programming rules, best practices, observations, skills, algorithms have played major role in software development. This paper presents a new discipline known as Guidelines Based Software Engineering where the aim is to learn from well-known best practices and documenting newly developed and successful best practices as a knowledge based (could be part of the overall KM strategies) when developing software systems across the life cycle. Thereby it allows reuse of knowledge and experiences.
文摘The foundation for any software system is its architecture. Software architecture is a view of the system that includes the system’s major components, the behaviour of those components as visible to the rest of the system, and the ways in which the components interact and coordinate to achieve the overall system’s goal. Every efficient software system arises as a result of sound architectural basement. This requires the use of good architecture engineering practices and methods. This paper recognizes software architecture practice as a discipline pervading all phases of software development and also presents an enhanced model for software engineering process which provides an avenue for speedy, efficient and timely delivery of software products to their intended users. The integration of software architecture into the phases of software development process in a generic software life cycle is also contained in this research report. This is to enable software engineers and system analysts to use effective software architecture practices and to employ appropriate methodology during the software engineering process.
文摘In a component-based software development life cycle, selection of preexisting components is an important task. Every component that has to be reused has an associated risk of failure of not meeting the functional and non-functional requirements. A component's failure would lead a developer to look for some other alternative of combinations of COTS, in-house and engineered components among possible candidate combinations. This means design itself can readily change. The very process of design of a software system and component selection seems to be heavily dependent on testing results. Instability of design, further, becomes more severe due to requirements change requests. Therefore, this instability of design has to be essentially mitigated by using proper design and testing approaches, otherwise, it may lead to exorbitantly high testing cost due to the repeated testing of various alternatives. How these three activities: Component-based software design, component selection and component-based software testing are interrelated? What process model is most suited to address this concern? This work explores the above questions and their implication in terms of nature of a process model that can be convincing in case of component-based software development.
基金Project supported by the Hi-Tech Research and Development Program (863) of China (No. 2002AA1Z2306) and HP Embedded Laboratory of Zhejiang University, China
文摘Classical software configuration management which deals with source code versioning becomes insufficient when most components are distributed in binary form. As an important aspect of software configuration, protocol configuration also encounters those problems. This paper focuses on solving protocol component versioning issues for protocol configuration man- agement on embedded system, incorporating the following versioning issues: version identification, version description and protocol component archiving and retrieving based on the version library.
文摘IntelligentPad approach provides a standard for dynamically linkable components. Based on the standard, this paper introduces an approach of developing dynamically linkable components by using object oriented techniques.
文摘Software reuse is considered as a practical approach to solving the software crisis. The BD-HCRUS, a software development supporting system based on heterogeneous component reuse, is introduced. The system has a reusable component library as its kernel in charge of the organization, storage and retrieval of the heterogeneous components, an object-oriented integrated language for the specification and composition of the heterogeneous components, and program comprehension tools for reverse-engineering and extracting reusable components from source code, then re-engineering the components. Therefore, a whole support is lent systematically to the acquisition, specification, organization, storage, retrieval and composition of reusable components.
文摘A continuing challenge for software designers is to develop efficient and cost-effective software implementations. Many see software reuse as a potential solution;however, the cost of reuse tends to outweigh the potential benefits. The costs of software reuse include establishing and maintaining a library of reusable components, searching for applicable components to be reused in a design, as well as adapting components toward a proper implementation. In this context, a new method is suggested here for component classification and retrieval which consists of K-nearest Neighbor (KNN) algorithm and Vector space Model Approach. We found that this new approach gives a higher accuracy and precision in component selection and retrieval process compared to the existing formal approaches.
基金Supported by the National High Performance Computation Foundation(984057)
文摘Software component library is the essential part of reuse-based softwaredevelopment. It is shown that making use of a single component library to store all kinds ofcomponents and from which components are searched is very inefficient. We construct multi-librariesto support software reuse and use PVM as development environments to imitate large-scale computer,which is expected to fulfill distributed storage and parallel search of components efficiently andimprove software reuse.
基金This work was supported by the 9th State Five-Year Plan, State 863 High-Tech Program, and the National Natural Science Foundation of China It also got support from Bell-Labs China and Software Production Research of Bell-Labs.
文摘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. However, it pays insufficient attention to the refinement and implementation of the architectural descriptions, and does not provide the necessary capability to automate the transformation or composition to form a final executable application. CBSD provides a bottom-up way by using existing middleware infrastructures. However, these technologies do not take into account the systematic methodology that can guide the CBSD process, especially the component composition at higher abstract levels. We argue that it is a natural solution to combine these two approaches.In this paper, an architecture-based component composition approach is presented. In this way, SA description, using mapping rules and mini-tools to narrow the gap between design and implementation , is used as the blueprint and middleware technology as the runtime scaffold for component composition. Our approach presents an ADL, which supports user-defined connectors and has an extensible framework, to specify software architectures. To map a SA description into implementation, it is necessary to map it first to an OO design model described in UML, then to the final implementation. The architectural description can be mapped into source code or executable code by using some ORB conforming to CORBA standard. Also a toolkit is provided to support this approach efficiently.
基金This work was supported by several government-funded projects, including the National Key Projects in the State 6th to 10th Five-Year Plan, the National High Technology Development 863 Program of China, the National Grand Fundamental Research 973 Program of China, and the National Natural Science Foundation of China, etc. Acknowledgements The authors would like to thank our research group for their inspiration and support in the past two decades. Due to the space limit and the language, so many papers and reports, especially in Chinese, referred by this paper are omitted here. We would like to thank the authors of these materials.
文摘In the past 40 years, software engineering has emerged as an important sub-field of computer science and has made significant contribution to the software industry. Now it is gradually becoming a new independent discipline. This paper presents a survey of software engineering development from a research perspective. Firstly, the history of software engineering is reviewed with focus on the driving forces of software technology, the software engineering framework and the milestones of software engineering development. Secondly, after reviewing the past academic efforts, the current research activities are surveyed and new challenges brought by Internet are analyzed. Software engineering researches and activities in China are also reviewed. The work in Peking University is described as a representative.
文摘In this paper we will discuss the software engineering technology for the 21 st century. First we review development over the last half century, overview application requirement and environment, accept a challenge. Then we outline following software engineering techniques: 1) Process;2) Analysis;3) Design;4) UML;5) Component;6) Java +XML;7) Integrated;8) Quality(ISO9000&CMM).
文摘This paper focuses on Distributed Object Oriented Software Engineering over Internet, which is a way to build software culture. We believe that our work will contribute to better understanding of how to meet the needs of the big potential software market and to promote the software industry in developing country. The United States and Western Europe have well established software industry and related civilization. Software science, technology, and engineering are needed in China; however, maybe what is needed, first of all, is software civilization, including software ideas, customs, skills, arts, etc. We will draw a framework for the software culture as following: Software is the most important commodity in this age; Brilliance of hardware component era has become past fact; A software component era is ahead; Traditional linear process model is obsolete; Modern software engineering has a new face, object evolution model; Distributed object oriented software engineering over Internet is an approach to software component era; and Complete software civilization will be formed all over the world in next century.
基金This research is supported by the Key Project of State Ninth "Five-Year Plan" the 863 High-Tech Program of CHina and the National Natural Science Foundatino of China.
文摘Software reuse is viewed as a key technology to improve software product quality and productivity. This paper discusses a series of technologies related with software reuse and software component technology: component model, which describes component’s essential characteristics; component acquisition technology, of which domain engineering is the main approach; component management technology, of which component library is the kernel; application integration and composition technology, of which application engineering is the main approach; software evolution technology, of which software reengineering is the main approach, etc. This paper introduces the software development environment: JadeBird Software Production Line System, which effectively integrates the above-mentioned technologies.
文摘以SRI-VC2110RC遥控系统为目标系统,设计了面向该目标系统的构件模型、架构风格和可复用软件构件库;设计并开发了基于Eclipse的构件化嵌入式软件开发工具。最后通过构建实例,展示了嵌入式软件构件化解决方案,并证明采用CBSE(Component Based Software Engineering)方法能够改善目标系统嵌入式软件的开发过程,提高开发效率。