Software Design and Architecture The once and future focus of software engineering

The design of software has been a focus of software engineering research since the field's beginning. This paper explores key aspects of this research focus and shows why design will remain a principal focus. The intrinsic elements of software design, both process and product, are discussed: concept formation, use of experience, and means for representation, reasoning, and directing the design activity. Design is presented as being an activity engaged by a wide range of stakeholders, acting throughout most of a system's lifecycle, making a set of key choices which constitute the application's architecture. Directions for design research are outlined, including: (a) drawing lessons, inspiration, and techniques from design fields outside of computer science, (b) emphasizing the design of application "character" (functionality and style) as well as the application's structure, and (c) expanding the notion of software to encompass the design of additional kinds of intangible complex artifacts.

[1]  Herbert A. Simon,et al.  The Sciences of the Artificial , 1970 .

[2]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[3]  Russ Abbott Program design by informal English descriptions , 1983, CACM.

[4]  Craig Larman,et al.  Applying UML and patterns , 1997 .

[5]  Gregory D. Abowd,et al.  Using style to understand descriptions of software architecture , 1993, SIGSOFT '93.

[6]  Preston G. Smith The art of innovation: lessons in creativity from IDEO, America’s leading design firm: Tom Kelley with Jonathan Littman; New York: Doubleday, 2001, 308 + xii pages, $26.00 , 2002 .

[7]  P. Krutchen,et al.  The Rational Unified Process: An Introduction , 2000 .

[8]  Richard N. Taylor,et al.  Moving Architectural Description from Under the Technology Lamppost , 2006, 32nd EUROMICRO Conference on Software Engineering and Advanced Applications (EUROMICRO'06).

[9]  D. Gabbay,et al.  Inconsistency Handling in Multiperspective Specifications , 1994 .

[10]  Will Tracz,et al.  DSSA (Domain-Specific Software Architecture): pedagogical example , 1995, SOEN.

[11]  Stephanie D. Teasley,et al.  Perspectives on socially shared cognition , 1991 .

[12]  Jeff Magee,et al.  The Koala Component Model for Consumer Electronics Software , 2000, Computer.

[13]  Valérie Issarny,et al.  A Perspective on the Future of Middleware-based Software Engineering , 2007, Future of Software Engineering (FOSE '07).

[14]  Alexander L. Wolf,et al.  Acm Sigsoft Software Engineering Notes Vol 17 No 4 Foundations for the Study of Software Architecture , 2022 .

[15]  David Lorge Parnas,et al.  Review of David L. Parnas' "Designing Software for Ease of Extension and Contraction" , 2004 .

[16]  Stewart Brand,et al.  How Buildings Learn: What Happens After They're Built , 1997 .

[17]  Michael L. Begeman,et al.  gIBIS: a hypertext tool for exploratory policy discussion , 1988, CSCW '88.

[18]  Frederick P. Brooks,et al.  The Mythical Man-Month: Essays on Softw , 1978 .

[19]  Peter Freeman The Central Role of Design in Software Engineering , 1976 .

[20]  Kim B. Clark,et al.  Design Rules: The Power of Modularity , 2000 .

[21]  A. Agrawala,et al.  Domain-specific software architectures for intelligent guidance, navigation and control , 1992, IEEE Symposium on Computer-Aided Control System Design.

[22]  Gregor Kiczales,et al.  Aspect-oriented programming , 1996, CSUR.

[23]  MSc Mbcs CEng Michael Bronzite BSc System Development , 2000, Springer London.

[24]  James A. Landay,et al.  The Design of Sites: Patterns, Principles, and Processes for Crafting a Customer-Centered Web Experience , 2002 .

[25]  Jef Verschueren 3. A Case Study , 1985 .

[26]  Hasso Plattner,et al.  Architecture recovery of Apache 1.3 — A case study , 2002 .

[27]  Klaus Pohl,et al.  Software Product Line Engineering , 2005 .

[28]  Robert Balzer,et al.  Tolerating Inconsistency , 1991, [1989] Proceedings of the 5th International Software Process Workshop.

[29]  Jr. Frederick P. Brooks,et al.  The Mythical Man-Month: Essays on Softw , 1978 .

[30]  D. Schoen,et al.  The Reflective Practitioner: How Professionals Think in Action , 1985 .

[31]  J. Christopher Jones,et al.  Design methods: Seeds of human futures , 1970 .

[32]  Alexander Egyed Consistent Adaptation and Evolution of Class Diagrams during Refinement , 2004, FASE.

[33]  Mary Shaw,et al.  Abstractions for Software Architecture and Tools to Support Them , 1995, IEEE Trans. Software Eng..

[34]  Henry Petroski,et al.  The Evolution of Useful Things , 1992, Symposium on Designing Interactive Systems.

[35]  Richard C. Holt,et al.  Architecture recovery of web applications , 2002, ICSE '02.

[36]  David W. Binkley,et al.  Source Code Analysis: A Road Map , 2007, Future of Software Engineering (FOSE '07).

[37]  David Lorge Parnas,et al.  The Modular Structure of Complex Systems , 1984, IEEE Transactions on Software Engineering.

[38]  Herbert H. Clark,et al.  Grounding in communication , 1991, Perspectives on socially shared cognition.

[39]  Bernhard Rumpe,et al.  Model-driven Development of Complex Software : A Research Roadmap , 2007 .

[40]  Avinash C. Kak,et al.  API-Based and Information-Theoretic Metrics for Measuring the Quality of Software Modularization , 2007, IEEE Transactions on Software Engineering.

[41]  Philippe Kruchten,et al.  The Rational Unified Process: An Introduction, Second Edition , 2000 .

[42]  Henry Petroski,et al.  Invention by design: how engineers get from thought to thing , 1996 .

[43]  Klaus Pohl,et al.  Software Product Line Engineering - Foundations, Principles, and Techniques , 2005 .

[44]  Fred P. Brooks,et al.  The Mythical Man-Month , 1975, Reliable Software.

[45]  Christopher Alexander,et al.  The Timeless Way of Building , 1979 .

[46]  Dov M. Gabbay,et al.  Inconsistency Handling in Multi-Perspective Specifications , 1993, ESEC.

[47]  David K. Gifford,et al.  A computer science perspective of bridge design , 1986, CACM.

[48]  Edward Yourdon,et al.  Techniques of Program Structure and Design , 1976 .

[49]  Donald E. Knuth,et al.  The art of computer programming, volume 3: (2nd ed.) sorting and searching , 1998 .

[50]  Richard C. Holt,et al.  Linux as a case study: its extracted software architecture , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[51]  Nenad Medvidovic Moving Architectural Description from Under the Technology Lamppost , 2006, EUROMICRO-SEAA.

[52]  Philippe Kruchten,et al.  The 4+1 View Model of Architecture , 1995, IEEE Softw..

[53]  Somesh Jha,et al.  Software Design as an Investment Activity: A Real Options Perspective , 1998 .

[54]  R. J. Bogumil,et al.  The reflective practitioner: How professionals think in action , 1985, Proceedings of the IEEE.

[55]  Kim B. Clark,et al.  Design Rules: The Power of Modularity Volume 1 , 1999 .

[56]  Matthew B. Dwyer,et al.  Formal Software Analysis Emerging Trends in Software Model Checking , 2007, Future of Software Engineering (FOSE '07).

[57]  Jorge L. Díaz-Herrera,et al.  Improving software practice through education: Challenges and future trends , 2007, Future of Software Engineering (FOSE '07).

[58]  Colin Potts,et al.  Design of Everyday Things , 1988 .

[59]  M. V. Wilkes,et al.  The Art of Computer Programming, Volume 3, Sorting and Searching , 1974 .

[60]  P. Kidwell,et al.  The mythical man-month: Essays on software engineering , 1996, IEEE Annals of the History of Computing.

[61]  André van der Hoek,et al.  Examining Software Design from a General Design Perspective , 2006 .

[62]  Craig Larman,et al.  Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process , 2001 .

[63]  Jeff Kramer,et al.  Is abstraction the key to computing? , 2007, CACM.

[64]  C. Pollard,et al.  Center for the Study of Language and Information , 2022 .

[65]  Henry Petroski,et al.  To Engineer is Human , 1985 .

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

[67]  Donald E. Knuth,et al.  Computer programming as an art , 1974, CACM.

[68]  Grady Booch Managing object-oriented software development , 1996, Ann. Softw. Eng..

[69]  B. Krishna,et al.  On using Net Options Value as a value based design framework , 2005 .

[70]  Mikael Lindvall in Software Engineering , 2002 .

[71]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[72]  David Garlan,et al.  Exploiting style in architectural design environments , 1994, SIGSOFT '94.

[73]  Sushil Krishna Bajracharya,et al.  On using Net Options Value as a value based design framework , 2005, ACM SIGSOFT Softw. Eng. Notes.

[74]  Roy T. Fielding,et al.  Principled design of the modern Web architecture , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[75]  Todd C. Kelley,et al.  The Art of Innovation: Lessons in Creativity from IDEO, America's Leading Design Firm , 2001 .

[76]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[77]  Michael Jackson,et al.  Principles of program design , 1975 .

[78]  James D. Herbsleb,et al.  Global Software Engineering: The Future of Socio-technical Coordination , 2007, Future of Software Engineering (FOSE '07).

[79]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[80]  Donald E. Knuth,et al.  Literate Programming , 1984, Comput. J..

[81]  Grady Booch,et al.  Object-oriented development , 1986, IEEE Transactions on Software Engineering.

[82]  David Lorge Parnas,et al.  On the Design and Development of Program Families , 2001, IEEE Transactions on Software Engineering.

[83]  Gloria Mark,et al.  Group-to-Group Distance Collaboration: Examining the "Space Between" , 2003, ECSCW.

[84]  David Lorge Parnas,et al.  A rational design process: How and why to fake it , 1986, IEEE Transactions on Software Engineering.

[85]  G. Fischer Communities of Interest: Learning through the Interaction of Multiple Knowledge Systems , 2001 .

[86]  Richard N. Taylor,et al.  A Classification and Comparison Framework for Software Architecture Description Languages , 2000, IEEE Trans. Software Eng..

[87]  Jeff Magee,et al.  Self-Managed Systems: an Architectural Challenge , 2007, Future of Software Engineering (FOSE '07).

[88]  John Chris Jones,et al.  Design Methods: Seeds of Human Futures , 1981 .