Adam M. Ross (Massachusetts Institute of Technology, USA); Donna H. Rhodes (Massachusetts Institute of Technology, USA)
Introduction. The contemporary environment and large-scale systems challenges motivate research in support of a new paradigm: value robustness. By value robustness, we mean the ability of a system to continue to deliver stakeholder value in the face of a changing context. The authors’ research seeks to develop methods for concept exploration, architecting, and design using a dynamic perspective for the purpose of realizing systems, products, and services that deliver sustained value to stakeholders in a changing world. The research is aimed at improving the development of real world systems and systems of systems, and involves deep engagement with government and industry stakeholders in the research conduct and the transition of research outcomes to industry practice.
Approach.
The concept of value robustness is responsive to the issues cited in a number of reports and studies on the challenges of systems acquisition and development over the past decade. For example, a 2004 workshop explored the topic of engineering for robustness, that is, developing systems capable of adapting to changes in missions and requirements; able to reliably function given changes in threats and environmental be easily modified to leverage new technologies; and scalable and adaptable (Rhodes 2004). The workshop prompted such questions as what this really implies for systems engineering, how this type of robustness can be measured, and who bears the cost.
The evolution of a new paradigm, value robustness, requires a new mindset that recognizes the dynamic context, understands the fallacy of static preferences as a basis for design and embraces the ‘inevitability’ of change (Ross 2006). Research seeks to understand how to match changing systems to changing needs as a mechanism to ensure sustainable system success. Conceptual and analytic methods are needed to enhance the ability to design for changeability. The ability to quantitatively assess changeability is a key element for being able to specify and verify system adherence to changeability specifications as an explicit metric for designing systems. Complementary research is likewise underway to develop analytic methods for discovering “clever” system designs that remain successful in spite of changing contexts without the systems having to change themselves. The research is leading to the articulation of principles for design of value robust systems, including designing for specific “ilities”. The paper discusses research on principles for architecting for survivability as one example of this, where survivability is framed by the value robustness concept.
Results. The paper will discuss the research progress and several recent research outcomes that are currently be tested in industry and government practice. These include: a dynamic tradespace exploration method; Epoch-Era Analysis method; metrics of system changeability; and a taxonomy of “ilities”. We discuss several ongoing collaborative research projects designed to engage the practitioner community as collaborative research partners, and the associated mechanisms for transitioning academic research to real world practice.
Example References
Richards, M.G., Ross, A.M., Hastings, D.E., and Rhodes, D.H., “Design Principles for Survivable System Architecture,” 1st Annual IEEE Systems Conference, Honolulu, HI, April 2007.
Richards, M.G., Hastings, D.E., Rhodes, D.H., and Weigel, A.L., “Defining Survivability for Engineering Systems,” 5th Conference on Systems Engineering Research, Hoboken, NJ, March 2007
Rhodes, D., Report on the AF/LAI Workshop on Systems Engineering for Robustness, Massachusetts Institute of Technology, July 2004.
Ross, A.M., Rhodes, D.H., and Hastings, D.E., “Defining Changeability: Reconciling Flexibility, Adaptability, Scalability and Robustness for Maintaining Lifecycle Value,” INCOSE International Symposium 2007, San Diego, CA, June 2007.
Ross, A.M. and Rhodes, D.H., “The System Shell as a Construct for Mitigating the Impact of Changing Contexts by Creating Opportunities for Value Robustness,” 1st Annual IEEE Systems Conference, Honolulu, HI, April 2007.
Ross, A.M. and Hastings, D.E., “Assessing Changeability in Aerospace Systems Architecting and Design Using Dynamic Multi-Attribute Tradespace Exploration,” AIAA Space 2006, San Jose, CA, September 2006.
Ross, A.M. Managing Unarticulated Value: Changeability in Multi-Attribute Tradespace Exploration, Doctor of Philosophy Dissertation, Engineering Systems Division, MIT, June 2006
Ross, A.M. Multi-Attribute Tradespace Exploration with Concurrent Design as a Value-centric Framework for Space System Architecture and Design, Dual Master of Science Thesis, Aeronautics and Astronautics and Technology and Policy Program, MIT, June 2003
George Frederick (Florida Institute of Technology, USA); Pat Bond (Florida Institute of Technology, USA); Scott Tilley (Florida Institute of Technology, USA)
Software design patterns are prescribed solutions to common families of software implementation problems. Though design patterns have proven to be effective and efficient in many applications, many would argue that they have not been used nearly often enough or been effectively implemented. This is particularly true when constructing large-scale systems, where the complexity of the software is exacerbated by the integration with hardware devices.
Software design patterns are implemented in order to promote high quality code and reduce debugging and design time. Design patterns accomplish this by acting as a coarse-grained form of code reuse. Whenever a recognized problem is encountered, designers need only to look through the pattern catalogue to determine which pattern addresses the problem and customize the solution for the application in question. Doing this avoids wasting time spent in crafting and debugging a new solution. In addition, design patterns conceptually encapsulate these solutions and allow for a common vocabulary amongst software designers, allowing for better communication of ideas and proposed pattern solutions. The same vocabulary can also be employed in official design documentation for future review, aiding in understanding the overall system architecture.
This paper presents a prototype tool called VULCAN that aims to assist with the creation of high quality code through the use of design patterns. This tool comes in the form of a plug-in for integration with the popular Eclipse development environment. VULCAN facilitates high quality code creation through the automatic generation of design pattern code templates, customized with user input and integrated into pre-existing projects. This paper also provides an analysis of the need for design pattern use, past efforts at automated pattern code creation, and the description of the tool VULCAN and its implementation. By automating the design pattern generation process through the application of a practical and easily usable tool, the reluctance to use and difficulty in coding design patterns can be substantially mitigated, resulting in an over-all higher quality body of finished code.