A Complete Survey on Software Architectural Styles and Patterns

Abstract Software bought revolutionary change making entrepreneurs fortunate enough to make money in less time with least effort and correct output. SDLC (Software development life cycle) is responsible for software's reliability, performance, scalability, functionality and maintainability. Although all phases of SDLC have their own importance but Software architecture serves as the foundation for other phases of SDLC. Just like sketch of a building helps constructor to correctly construct the building, software architecture helps software developer to develop the software properly. There are various styles available for software architecture. In this paper, clear picture of all important software architecture styles are presented along with recent advancement in software architecture and design phases. It could be helpful for a software developer to select an appropriate style according to his/her project's requirement. An architectural style must be chosen correctly to get its all benefits in the system. All the architectural styles are compared on the basis of various quality attributes. This paper also specifies the application area, advantages and disadvantages of each architectural style.

[1]  Bashar Nuseibeh,et al.  Architecture-driven problem decomposition , 2004, Proceedings. 12th IEEE International Requirements Engineering Conference, 2004..

[2]  Oliver Sims,et al.  Business Component Factory : A Comprehensive Overview of Component-Based Development for the Enterprise , 1999 .

[3]  K. Mani Chandy Event Driven Architecture , 2009, Encyclopedia of Database Systems.

[4]  George T. Heineman,et al.  Component-Based Software Engineering: Putting the Pieces Together , 2001 .

[5]  Jing Dong,et al.  Event-based blackboard architecture for multi-agent systems , 2005, International Conference on Information Technology: Coding and Computing (ITCC'05) - Volume II.

[6]  Francine Berman,et al.  Grid Computing: Making the Global Infrastructure a Reality , 2003 .

[7]  Paul Clements,et al.  Software architecture in practice , 1999, SEI series in software engineering.

[8]  David Garlan,et al.  Acme: architectural description of component-based systems , 2000 .

[9]  Mathias Ekstedt,et al.  A survey on CIO concerns-do enterprise architecture frameworks support them? , 2006, Inf. Syst. Frontiers.

[10]  Jürgen Dunkel,et al.  Event-Driven Architecture , 2010 .

[11]  Nenad Medvidovic,et al.  Composing architectural styles from architectural primitives , 2003, ESEC/FSE-11.

[12]  Keir Davis,et al.  The Definitive Guide to Linux Network Programming , 2004, Apress.

[13]  Philippe Lalanda,et al.  A Domain-Specific Software Architecture for Adaptive Intelligent Systems , 1995, IEEE Trans. Software Eng..

[14]  Eila Niemelä,et al.  A Survey on Software Architecture Analysis Methods , 2002, IEEE Trans. Software Eng..

[15]  Jan Bosch,et al.  Software Architecture: The Next Step , 2004, EWSA.

[16]  Chonho Lee,et al.  A survey of mobile cloud computing: architecture, applications, and approaches , 2013, Wirel. Commun. Mob. Comput..

[17]  Yanpei Chen,et al.  Interactive Analytical Processing in Big Data Systems: A Cross-Industry Study of MapReduce Workloads , 2012, Proc. VLDB Endow..

[18]  Mary Shaw,et al.  The golden age of software architecture , 2006, IEEE Software.

[19]  Michael Luck,et al.  Agent-Based Software Development , 2004 .

[20]  Sajjad Mahmood,et al.  Survey of component-based software development , 2007, IET Softw..

[21]  J. Manyika Big data: The next frontier for innovation, competition, and productivity , 2011 .

[22]  David Garlan,et al.  Software architecture: a roadmap , 2000, ICSE '00.

[23]  Ian Foster,et al.  The Grid 2 - Blueprint for a New Computing Infrastructure, Second Edition , 1998, The Grid 2, 2nd Edition.