Strongly Adequate Software Architecture

Components of a software system may be related in a wide variety of ways. These relationships need to be represented in software architecture in order develop quality software. In practice, software architecture is immensely challenging, strikingly multifaceted, extravagantly domain based, perpetually changing, rarely cost-effective, and deceptively ambiguous. This paper analyses relations among the major components of software systems and argues for using several broad categories for software architecture for assessment purposes: strongly adequate, weakly adequate and functionally adequate software architectures among other categories. These categories are intended for formative assessments of architectural designs.

Authors:



References:
[1] R. S. Pressman, Software Engineering: A Practitioner-s Approach. (7th ed.), McGraw-Hill, 2010.
[2] Y. Wang, Software Engineering Foundations: A Software Science
Perspective, Auerbach Publications, 2008.
[3] M. Shaw, and D. Garlan, "Formulations and Formalisms in Software
Architectures", Computer Science Today: Recent Trends and Developments, Springer-Verlag LNCS, 1000, 307-323, 1995.
[4] E. Braude, and M. Bernstein, Software Engineering: Modern
Approaches, (2nd Edition), John Wiley & Sons, 2011.
[5] J. Hong, "Why is Great Design so Hard?", Communications of the ACM,
July 2010.
[6] J. L. Azevedo, B. Cunha, and L. Almeida, "Hierarchical Distributed
Architectures for Autonomous Mobile Robots: A case study", in
Proceedings of the IEEE Conference on Emerging Technologies and
Factory Automation, 2007.
[7] D. E. Knuth, Seminumerical Algorithms: The Art of Computer
Programming 2. Addison-Wesley, Reading, Mass., 1969.
[8] D. Gries, The Science of Programming. Springer, 1981.
[9] W. Humphrey, Managing the Software Process, Reading, MA.
Addison-Wesley, 1989.
[10] I. Sommerville, Software Engineering, 9th Edition, Addison Wesley,
2010.
[11] S. Pfleeger, and J. Atlee, Software Engineering, Prentice-Hall, 2010.
[12] B. Agarwal, S. Tayal and M. Gupta, Software Engineering and Testing,
Jones and Bartlet, 2010.
[13] F. Tsui, and O. Karam, Essentials of Software Engineering, 2nd Ed.,
Jones and Bartlet, 2011.
[14] L. Bass, P. Clements, and R. Kazman, Software Architecture in
Practice, 2nd Edition Addison-Wesley, 2003.
[15] J. Miller, and J. Mujerki, Editors, MDA Guide, Version 1, OMG
Technical Report. Document OMG/200-05-01,
http://www.omg.com/mda, 2003.
[16] B. Bruegge and A. H. Dutoit, Object-Oriented Software Engineering
Using UML, Patterns, and Java (3rd Edition), Prentice Hall, 2009
[17] Capers Jones, Software Engineering Best Practices: Lessons from
Successful Projects in the Top Companies, McGraw-Hill, 2009.
[18] R. Rumbaugh, I. Jacobson, and G. Booch, The Unified Modeling
Language Reference Manual. (2nd Edition), Addison Wesley, 2005.
[19] B. Tekeinerdogan, and M. Aksit, "Classifying and Evaluating
Architecture Design Methods", in M. Aksit (editor), Software
Architectures and Component Technology, Kluwer Academic
Publishers, 2002.
[20] P. Clements, R. Kazman, and M. Klein. Evaluating Software
Architectures.Addison-Wesley, 2002.
[21] S. McConnel. Code Complete, Microsoft Press, 2004.
[22] M. Babar, T. Dingsoyr, P. Lago, and H. van Vliet, Editors, Software
Architecture Knowledge Management, Springer, 2009.
[23] E. Bouwers, J. Correia, A. van Deursen, and J. Visser, "Quantifying the
Analyzability of Software Architectures," Technical Report, Delft
University of Technology, 2011.