Architecture and reference architecture are terms that we often hear in software development and Information Technology (IT) domain. Some of us are also aware that architect is one of most important role in the success of IT strategy. This article take us to the basic and definition of architecture and reference architecture, which would provide us reference to the importance of IT and software architect.
What is architecture?
According to Garlan and Perry (1995), architecture is a system structure that comprises of the system components, their interrelationship, guideline and principles that governs the design and evolution of that system. Based on the IEEE standard, architecture is the fundamental organization of a system components, relationship between system components, environment where the system resides and principles that guide its design and change (IEEE, 2000). Software architecture is a set of structures that provides reasons for the composition the software elements, properties, and components relationships (Bass, Clements, & Kazman, 2012).
Architecture in Summary
- A structure of components of program/system, their interrelationships, principles, and guidelines governing their design and evolution
- An organization of a system embodied its components, relationship, environment and principles guiding its design and evolution
- Structure that guide reasons for system to comprise its elements, relation and properties
- Abstraction of detail and show only system public components, properties and behavior
- Description of concrete system
- Focus and designed for specific problem context
- (Angelov,Grefen, & Greefhorst, 2012; Bass, Clements, & Kazman, 2003; Bass, Clements, & Kazman, 2012; Galster, & Avgeriou, 2011; Garlan, & Perry,1995; Gorton, 2011; IEEE, 2000; Kurbel, 2008; Nakagawa, & Oliveira, 2011; Nakagawa, Becker, & Maldonado, 2012; Rozanski, & Woods, 2005)
What is reference architecture?
While architecture is a representation/abstraction of a concrete system that solves and focus on specific problem context, reference architecture take the abstraction one level higher; it is an abstraction of concrete software architectures designed for a certain domain, and expose all essence in architecture specific for that domain (Angelov, Grefen, & Greefhorst, 2012; Galster, & Avgeriou, 2011, Nakagawa & Oliveira, 2011; Nakagawa, Becker, & Maldonado, 2012). Reference architecture solves not a problem but a class of problems; it depicts knowledge about a domain, functionalities, requirements, and the flow of information’s between functionalities/reference models (Angelov, Grefen, & Greefhorst, 2012; Bass, Clements, & Kazman, 2003), Nakagawa, Becker, & Maldonado, 2012; Stonebraker, Bruckner, Ilyas, Beskales, Cherniack, Zdonik, Pagan, & Xu, 2013)
- Abstraction of architecture of systems
- Focus on classification/category/domain of system instead of a single concrete system
- Generalization of architecture that solve group of system
- Show relationship among reference model or functionalities
- Serve as a guide for future design of concrete system in regard to specific domain/category/classification
- (Angelov, Grefen, & Greefhorst, 2012; Galster, & Avgeriou, 2011, Nakagawa & Oliveira, 2011; Nakagawa, Becker, & Maldonado, 2012; Stonebraker, Bruckner, Ilyas, Beskales, Cherniack, Zdonik, Pagan, & Xu, 2013)
Angelov, S.Grefen, P. & Greefhorst, D. (2012). A framework for analysis and design of software reference architectures. Information and Software Technology, 54(4):417–431, April 2012. doi: 10.1016/j.infsof.2011.11.009. URL http://www.sciencedirect.com/science/article/pii/S0950584911002333.
Bass, L., Clements, P., & Kazman, R. (2003). Software Architecture in Practice (3 edition). Upper Saddle River, NJ: Addison-Wesley Professional.
Bass, L., Clements, P., & Kazman, R. (2012). Software Architecture in Practice (3 edition). Upper Saddle River, NJ: Addison-Wesley Professional.
Galster, M. & Avgeriou, P. (2011). Empirically-grounded Reference Architectures: A Proposal. In Proceedings of the Joint ACM SIGSOFT Conference on Quality of Software Architectures and ACM SIGSOFT Symposium on Architecting Critical Systems, QoSA-ISARCS ’11, pages 153–158. ACM, 2011. doi: 10.1145/2000259.2000285.
Garlan, D. & Perry, D. (1995). Introduction to the Special Issue on Software Architecture. IEEE Transactions on Software Engineering, 21(4):269–274, April 1995. ISSN 0098-5589. URL http://dl.acm.org/citation.cfm?id=205313.205314.
Gorton, I. (2011). Essential Software Architecture. Springer Heidelberg Dordrecht London New York
IEEE. (2000). IEEE Recommended Practice for Architectural Description of Software-Intensive Systems. IEEE Std 1471-2000, i-23. https://doi.org/10.1109/IEEESTD.2000.91944
Kurbel, K. (2008). Information Systems Architecture. In The Making of Information Systems, pages 95–154. Springer Berlin Heidelberg. ISBN 978-3-540-79260-4. doi: 10.1007/ 978-3-540-79261-1_3.
Nakagawa, E. & Oliveira, L. (2011). Using Systematic Review to Elicit Requirements of Reference Architectures. In Anais do WER11 – Workshop em Engenharia de Requisitos, Rio de Janeiro-RJ, Brasil..
Nakagawa, E., Becker, M. & Maldonado, J. (2012). A Knowledge-based Framework for Reference Architectures. In Proceedings of the 27th Annual ACM Symposium on Applied Computing, SAC ’12, pages 1197–1202, New York, NY, USA, 2012. ACM. ISBN 978-1-4503-0857-1. doi: 10.1145/2231936.2231964.
Rozanski, N. & Woods, E. (2005). Software Systems Architecture – Working With Stakeholders Using Viewpoints and Perspectives. Pear
Stonebraker, M., Bruckner, D., Ilyas, I., Beskales, G., Cherniack, M., Zdonik, M., Pagan, A. & Xu, S. (2013). Data Curation at Scale: The Data Tamer System. In Proceedings of the Conference on Innovative Data Systems Research, CIDR ’13. URL http://www.cidrdb.org/cidr2013/Papers/CIDR13_Paper28.pdf.