Abstract
Software architects typically spend a great deal of time and effort exploring uncertainties, evaluating alternatives, and balancing the concerns of stakeholders. Selecting the best architecture to meet both the functional and non-functional requirements is a critical but difficult task, especially at the early stage of software development when there may be many uncertainties. For example, how will a technology match the operational or performance expectations in reality? This paper presents an approach to building architecture-centric product line. The main objective of the proposed approach is to support effective requirements validation and architectural prototyping for the application-level software. Architectural prototyping is practically essential to architecture design and evaluation. However, architectural prototyping practiced in the field mostly is not used to explore alternatives. Effective construction and evaluation of multiple architecture alternatives is one of the critically challenging tasks. The product line architecture advocated in this paper consists of multiple software architecture alternatives, from which the architect can select and rapidly generate a working application prototype. The paper presents a case study of developing a framework that is primarily built with robust architecture patterns in distributed and concurrent computing and includes variation mechanisms to support various applications even in different domains. The development process of the framework is an application of software product line engineering with an aim to effectively facilitate upfront requirements analysis for an application and rapid architectural prototyping to explore and evaluate architecture alternatives.
Similar content being viewed by others
References
Alhussaini A, Balasubramaniam B, Chandrabose P, Kasinathan A (2004) Software restructuring and performance evaluation, project report, Department of Systems and Computer Engineering, Carleton University
Bardram JE, Christensen HB, Hansen KM (2004) Architectural prototyping: an approach for grounding architectural design and learning. In: Proceedings of the 4th working IEEE/IFIP conference on software architecture, 15–24
Bachmann F, Bass L, Klein M (2003) Preliminary design of ArchE: a software architecture design assistant. Technical report CMU/SEI-2003-TR-021, Software Engineering Institute, Sept 2003
Batory D, Chen G, Robertson E, Wang T (2000) Design wizards and visual programming environments for GenVoca generators. IEEE Trans Softw Eng 26(5):441–452
Batory D, Sarvela JD, Rauschmayer A (2004) Scaling step-wise refinement. IEEE Trans Softw Eng 30(6):355–371
Batory D (2006) Multi-level models in model driven development, product-lines, and metaprogramming. IBM Syst J 45(3):1–13
Bosch J (2000) Design and use of software architectures: adopting and evolving a product-line approach. Addison-Wesley, Reading, MA
Botterweck G, O’Brien L, Thiel S (2007) Model-driven derivation of product architectures. In: Proceedings of the 22nd IEEE/ACM international conference on automated software eng, 469–472
Cao Y, Lung C-H, Majumdar S (2011) A peer-to-peer model for XML publish/subscribe services. In: Proceedings of the 9th conference on communication networks and services research conference (CNSR)
Chen L, Babar MA (2011) A systematic review of evaluation of variability management approaches in software product lines. Inf Softw Technol 53:344–362
Christensen HB, Hansen KM (2010) An empirical investigation of architectural prototyping. J Syst Softw 83(1):133–142
Czarnecki K, Eisenecker UW (2000) Generative programming methods, tools, and applications. Addison-Wesley, Reading
Czarnecki K et al (2012) Cool features and tough decisions: a comparison of variability modeling approaches. In: Proceedings of the sixth international workshop on variability modeling of software-intensive systems, 173–182
Diao Y, Rizvi S, Franklin MJ (2004) Towards an internet-scale XML dissemination service. In: Proceedings of the 30th VLDB conference, 612–623
Duran-Limon HA, Castillo-Barrera FE, Lopez-Herrejon RE (2011) Towards an ontology-based approach for deriving product architectures. In: Proceedings of the 15th international software product line conference, vol 2, Article 19, p 5
Fayad M, Schmidt D, Johnson R (eds) (1999) Building application framework. Wiley, New York
Franks G, Al-Omari T, Woodside M, Das O, Derisavi S (2009) Enhanced modeling and solution of layered queueing networks. IEEE Trans Softw Eng 35(2):148–161
Hatton L, van Genuchten M (2012) Early design decisions. IEEE Softw 29(1):87–89
Heineman GT, Councill WT (2001) Component based software engineering: putting the pieces together. Addison-Wesley, Reading
Hillston J (1996) A compositional approach to performance modelling. Cambridge University Press, Cambridge
Holl G, Grunbacher P, Rabiser R (2012) A systematic review and an expert survey on capabilities supporting multi product lines. Inf Softw Technol 54(8):828–852
Kazman R, Klein M, Barbacci M, Longstaff T, Lipson H, Carriere J (1998) The architecture tradeoff analysis method. In: Proceedings of the 4th international conference on engineering of complex comp. sys., 68–78
Khurum M, Gorschek T (2009) A systematic review of domain analysis solutions for product lines. J Syst Softw 82:1982–2003
Krueger C (2002) Eliminating the adoption barrier. IEEE Softw 19(4):29–31
Lee J-C, Zhang X (2004) Performance investigation of a network system on different Linux kernels. Project report 2004, Department of Systems and Comp. Eng., Carleton University
Lung C-H, Kalaichelvan K (2000) A quantitative approach to software architecture sensitivity analysis. Int J Softw Eng Knowl Eng 10(1):97–114
Lung C-H, Zhao Q, Xu H, Mar H, Kanagaratnam P (2004) Experience of communications software evolution and performance improvement with patterns. In: Proceedings of IASTED software engineering, 321–326
Lung C-H, Zhao Q (2004) Pattern-oriented reengineering of a network system. J Syst Cybern Inform 2(5):19–23
Lung C-H, Balasubramaniam B, Selvarajah K, Elankeswaran P, Gopalasundaram U (2010) Towards architecture-centric software generation. In: Proceedings of the 4th European conference on software architecture (ECSA), 38–52
Martensson F, Grahn H, Mattsson M (2004) Prototype-based software architecture evaluation—component quality attribute evaluation. In: Proceedings of the 4th conference on software engineering research and practice in Sweden, 11–17
Northrop LM, Clements PC (2005) A framework for software product line practice, Version 5.0. Software Engineering Institute, Carnegie Mellon University
Ovaska E, Evesti A, Henttonen K, Palviainen M, Aho P (2010) Knowledge based quality-driven architecture design and evaluation. Inf Softw Technol 52:577–601
Perovich D, Rossel PO, Bastarrica MC (2009) Feature model to product architectures: applying MDE to software product lines. In: Proceedings of WICSA/ECSA 2010 conference, 201–210
Poulin JS (1997) Measuring software reuse: principles, practices, and economic models. Addison-Wesley, Reading, MA
Poulin JS (2001) Measurement and metrics for software components. In: Heineman GT, Councill W (eds) Component based software engineering. Addison-Wesley, Boston, MA, pp 435–452
Schmidt D, Stal M, Rohnert H, Buschmann F (2000) Pattern-oriented software architecture: patterns for concurrent and networked objects. Wiley, New York
Sinnema M, Deelstra S, Nijhuis J, Bosch J (2004) COVAMOF: A framework for modeling variability in software product families. In: Proceedings of the 3rd international software product line conference, 197–213
Smith CU, Williams LG (2001) Performance solutions a practical guide to creating responsive and scalable software. Addison-Wesley, Reading
TAO Framework, http://www.dre.vanderbilt.edu/~schmidt/TAO.html
Tawhid R, Petriu DC (2011) Automatic derivation of a product performance model from a software product line model. In: Proceedings of the 15th software product line conference
Thaker S, Batory D, Kitchin D, Cook W (2009) Safe composition of product lines. In: Proceedings of the 6th international conference on generative programming and component engineering, 95–104
Thiel S, Hein A (2002) Systematic integration of variability into product line architecture design. In: Proceedings of the 2nd international software product line conference, 67–102
Trujillo S, Batory D, Diaz O (2007) Feature oriented model driven development: a case study for portlets. In: Proceedings of the 29th international conference on software eng, 44–53
Trujillo S, Azanza M, Diaz O (2007) Generative metaprogramming. In: Proceedings of the 6th international conference on generative programming and component engineering, Oct 2007, 105–114
Wang Q, Lung, C-H, Majumdar S (2005) Effective fair share resource management algorithms in support of quality-of-service. In: Proceedings of the international symposium on performance evaluation of computer and telecommunication systems (SPECTS)
Wyatt DF, Wynn DC, Clarkson PJ (2009) Comparing representations for product architecture design through life-cycle evaluation methods. In: Proceedings of the 2nd NORDIC conference on product lifecycle management, pp 1–14
Weiss DM, Li J, Slye H, Sun H (2008) Decision-model-based code generation for SPLE. In: Proceedings of the 12th international software product line conference, 129–137
Williams LG, Smith CU (2002) PASA: an architectural approach to fixing software performance problems. In: Proceedings of CMG
Woodside CM, Franks G, Petriu DC (2007) The future of software performance engineering. In: Proceedings of the 29th international conference on software engineering, pp 171–187
Zhang X, Lung C-H, Franks G (2010) Towards architecture-based autonomic software performance engineering. In: Proceedings of the 4th conference on software architectures (CAL), March 2010, pp 155–167
Zhang X, Lung C-H (2010) Improving software performance and reliability with an architecture-based self-adaptive framework. In: Proceedings of the 34th annual IEEE computer software and applications conference (COMPSAC), July 2010
Zeng X, Lung C-H, Huang C, Srinivasan A (2004) A bandwidth-efficient scheduler for MPLS DiffServ networks. In: Proceedings of the 12th annual meeting of the IEEE/ACM international symposium on modeling, analysis, and simulation of computer and telecommunication systems (MASCOTS), pp 251–258
Kruchten P (2003) The rational unified process: an introduction, 3rd edn. Addison-Wesley, Boston
Runeson P, Hoest M (2009) Guidelines for conducting and reporting case study research in software engineering. Empir Software Eng 14:131–164
Schmidt D, Gokhale A, Natarajan B (2004) Frameworks: why leveraging application frameworks. ACM Queue Mag 2(5):66
Acknowledgments
We would like to thank Nortel Networks for providing us with a network routing software system, cgNet, for research and education. The project was partially funded by National Sciences and Engineering Research Council (NSERC) of Canada.
Author information
Authors and Affiliations
Corresponding author
Appendix
Appendix
The appendix demonstrates the challenge of architecture evaluation for performance. Three systems were evaluated using different architecture alternatives: ST, HS/HA, and LFs. ST was the architecture of the original system, which has been restructured using HS/HA and LFs for performance improvement based on the recommendation of the patterns documentation. However, some results were inconsistent with the expectation. The performance issue is even more challenging at the front-end stage where only abstract representations are available. The experience was one of the reasons that motivated this research.
We present partial performance results of a network routing application running on three independent systems implemented in C++ [1, 27]. Those three systems were designed using ST, HS/HA, and LFs architecture patterns, respectively. Tables 4 and 5 present partial results for a new network protocols, open shorted path first (OSPF), and multi-protocol label switching (MPLS), with respect to the number of packets processed and discarded. The experiments were conducted using PCs with a 2-GHz CPU and 256 MB RAM running on Linux 2.4.18-27.7.x. The results were average of multiple runs, and the duration of each run was 20 min. Figures 5 and 6 illustrate the number of packets discarded for three different architecture alternatives for OSPF and MPLS, respectively.
The results for this particular application revealed that the performance based on the HS/HA architectural pattern is much better and scalable than LFs and ST. The outcome for different number of threads (from 2 to 15) for LFs is very close (<1 % difference). Further, as presented in Table 4, the performance of the re-engineered systems based on the LFs architectural pattern was even worse than that of the traditional ST design in many situations for the OSPF protocol. Table 5 also shows that ST and LFs have similar results. The outcome for this specific study did not conform to the general understanding that LFs pattern performs faster [36] due to its lower overhead and high parallelism. This outcome may have to do with a high degree of parallelism and high input rates in the specific application under consideration. The results presented here are not meant to draw a general conclusion of performance for three architecture patterns. Nevertheless, the study did illustrate the challenge of conducting software performance engineering at the early stage of the development process.
Rights and permissions
About this article
Cite this article
Lung, CH., Balasubramaniam, B., Selvarajah, K. et al. On building architecture-centric product line architecture. Requirements Eng 20, 301–321 (2015). https://doi.org/10.1007/s00766-014-0201-3
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s00766-014-0201-3