ABSTRACT
While the notion of components has had a major positive impact on the way software architectures are conceptualized and represented, they have had relatively little impact on the processes and procedures used to develop software systems. In terms of software development processes, use case-driven iterative and incremental development has become the predominant paradigm, which at best ignores components and at worse is even antagonistic to them. However, use-case driven, I&I development (as popularized by agile methods) and component-based development have opposite strengths and weaknesses. The former's techniques for risk mitigation and prioritization greatly reduce the risks associated with software engineering, but often give rise to suboptimal architectures that emerge in a semi-ad hoc fashion over time. In contrast, the latter gives rise to robust, optimized architectures, but to date has poor process support. In principle, therefore, there is a lot to be gained by fundamentally aligning the core principles of component-based and I&I development into a single, unified development approach. In this position paper we discuss the key issues involved in attaining such a synergy and suggest some core ideas for merging the principles of component-based and I&I development.
- McIlroy, D.: Mass-Produced Software Components, Software Engineering: Report of a conference sponsored by the NATO Science Committee, Garmisch, Germany, 1968.Google Scholar
- Szyperski, C. Component Software: Beyond Object-Oriented Programming (2nd ed.), Addison-Wesley, 2002. Google ScholarDigital Library
- Beck, K. Extreme Programming Explained: Embrace Change. Addison-Wesley, 1999. Google ScholarDigital Library
- Larman, C. Applying UML and Patterns (3rd ed.). Prentice Hall, 2004.Google Scholar
- Hummel, O., Janjic, W., Atkinson, C. Code Conjurer: Pulling Reusable Software out of Thin Air, IEEE Software (Vol. 25, Iss. 5), 2008 Google ScholarDigital Library
- Booch, G. The Accidental Architecture. IEEE Software, Volume 23, Issue 3, 2006. Google ScholarDigital Library
- Crnkovic, I., Chaudron, M., Larsson, S. Component-Based Development Process and Component Lifecycle. Proceedings of the International Conference on Software Engineering Advances, 2006. Google ScholarDigital Library
- Erl, T. Services-Oriented Architectures, Prentice Hall, 2005. Google ScholarDigital Library
- Lau, K.K., Wang, Z. Software Component Models. IEEE Transactions on Software Engineering, Volume 33, Issue 10, 2007. Google ScholarDigital Library
- Kleppe, A., Bast, W., Warmer, J. MDA Explained: The Model-Driven Architecture. Addison-Wesley, 2003. Google ScholarDigital Library
- Atkinson, C., Bayer, J., Bunse, C., Kamsties, E., Laitenberger, O., Laqua, R., Muthig, D., Paech, B., Wüst, J., Zettel, J.: Component-based Product Line Engineering with UML, Addison-Wesley, 2001. Google ScholarDigital Library
- Atkinson, C., Bostan, P., Brenner, D., Falcone, G., Gutheil, M., Hummel, O., Juhasz, M., Stoll, D.: Modeling Components and Component-Based Systems in KobrA. In Rausch, Reussner, Mirandola, Plasil (editors): The Common Component Modelling Example, Springer, 2008. Google ScholarDigital Library
- Fowler, M. Refactoring, Addison-Wesley, 1999.Google Scholar
- Sherif, K., Vinze, A. Barriers to adoption of software reuse: A qualitative study. Journal of Information Management, Vol. 41, No. 2, 2003. Google ScholarDigital Library
- D'Souza, D.,Wills, A. Objects, Components, and Frameworks with UML: The Catalysis Approach: The Catalysis Approach, Addison-Wesley, 1998. Google ScholarDigital Library
- Cheesman, J., Daniels, J. UML Components: A Simple Process for Specifying Component-Based Software, Addison-Wesley, 2000. Google ScholarDigital Library
- Schwaber, K. Agile Project Management with Scrum, Microsoft Press, 2004. Google ScholarDigital Library
- Hummel, O. Semantic Component Retrieval in Software Retrieval, PhD Dissertation, University of Mannheim, 2008.Google Scholar
Index Terms
- Iterative and incremental development of component-based software architectures
Recommendations
"Leagile" software development
In recent years there has been a noticeable shift in attention from those who use agile software development toward lean software development, often labelled as a shift "from agile to lean". However, the reality may not be as simple or linear as this ...
Traditional, iterative, and component-based development: A social analysis of software development paradigms
Information systems have always been developed through social processes, wherein actors playing a variety of specialized roles interact to produce new business applications of information technology. As systems development practices continue to evolve, ...
Adopting to Agile Software Development
Abstract Agile software development can be made successful, but there is no well-defined way how to achieve this. The problem is that the successful adoption of agile methods and practices is a complex process and this process should be customizable for ...
Comments