objective is a SCA that minimizes complexity and
maximizes adaptability.
Information systems in general, and service
cloud applications in particular, need to be designed
for change. They need to be adaptive. Ideally, they
need to be self-adaptive, but such an aim is
unreachable as yet in practical software engineering
(Maciaszek, 2012).
The confluent factors of modern software
engineering reflect the necessity of designing for
change. Unfortunately, this is not sufficiently
reflected in contemporary practice of software
engineering. Current practice is full of ideas,
methods and tools to facilitate
development/programming for change, but lacks
systematic and rigorous approach to designing for
change.
The development/programming for change is
exemplified, for example, by the growing popularity
of DevOps, which is an approach to merging
development and operations (Huttermann, 2012).
Another example, on the level of user interface and
web programming, are approaches known as
responsive development, progressive enhancement,
graceful degradation (Overfield et al., 2013).
The design for change must revolve around the
software architecture, which sets a fundamental
structural organization for a software system. Such
an organization must determine hierarchical layers
of software elements (components, objects, services)
ensuring separation of concerns and resulting in a
tractable/adaptive complexity of the solution.
There seem to be three approaches to considering
software architecture in software engineering
projects. The architecture:
1. can be designed into the system,
2. can emerge from the implementation,
3. can result from roundtrip engineering
The first approach is synonymous with the
architecture-first approach. It is a commendable
approach, but increasingly impractical in the fast-
paced world demanding immediate software
solutions.
The second and third approach can be best
understood by reference to complexity theory (e.g.
Agazzi, 2002). Since complexity entails existence of
relations/dependencies between elements, then - by
opposition - simplicity (something that is
analytically simple) entails no internal relations.
Further, the complexity theory distinguishes
between emergence and resultance. We speak of
emergence when a complex structure emerges from
the properties of the “analytic simples” in a way that
is not completely understandable and explainable. In
this sense, software architecture can emerge in a
bottom-up fashion from the implementation of
software elements.
By contrast, we speak of resultance when a
complex structure results from the properties of the
analytic simples by the guidance of the relations
between software elements. This means that a meta-
architecture exists prior to the implementation and it
guides software engineers in designing concrete
system architecture (an instance of meta-
architecture) in parallel with software
implementation. This is a roundtrip engineering
effort leading to, what we call, a resultant
architecture.
REFERENCES
Agazzi, E. (2002). What is Complexity? In Agazzi, E.,
Montecucco, L. (Eds) Complexity and Emergence.
Proceedings of the Annual Meeting of the International
Academy of the Philosophy of Science, pp. 3-11, World
Scientific.
Banerjee, P. et al. (2011). Everything as a Service:
Powering the New Information Economy, Computer
(IEEE), March, pp.36-43
Booch, G. (2007). The Economics of Architecture-First,
IEEE Software, Sept./Oct., pp.18-20
Brenner et al. (2014). User, Use & Utility Research. The
Digital User as New Design Perspective in Business
and Information Systems Engineering, Business &
Information Systems Engineering, 1, pp.56-61
Chesbrough, H. and Spohrer J. (2006). Research
Manifesto for Services Science, Comm. ACM, Vol. 49,
No. 7, pp.35-40
Cusumano, M.A. (2008). The Changing Software
Business: Moving from Products to Services, IEEE
Computer, January, pp.20-27.
Eppinger, S.D., Browning T.R. (2012). Design Structure
Matrix Methods and Applications, The MIT Press.
Fowler, M. (2003). Patterns of Enterprise Application
Architecture, Addison-Wesley.
Huttermann, M. (2012). DevOps for Developers, Apress.
ISO (2011). International Standard ISO/IEC 2510:
Systems and Software Engineering - Systems and
Software Quality Requirements and Evaluation
(SQuaRE) - System and Software Quality Models,
ISO/IEC.
Jacobson, I. and Seidewitz, E. (2014). New Software
Engineering, Comm. ACM, Vol. 57, No. 12, pp.49-54
Kakoutsis, K., Paspallis, N., Papadopoulos, G.A. (2010).
A Survey of Software Adaptation in Mobile and
Ubiquitous Computing, Enterprise Information
Systems, Vol. 4, No. 4, pp.355-389
Fifth International Symposium on Business Modeling and Software Design
44