Hide menu

TDDE41 Software Architectures


Seminar 3: Sustainability in software design

Groups: your lab project groups

The goal of this seminar is to discuss the impact of the decisions we make when designing the software architecture on the sustainability of the product as well as the ethical impact of the product. Below is a list of suggested questions around the topic of sustainable design to get discussion started, but you can bring up and discuss any interesting and relevant issues. You can discuss the questions below in the order that is comfortable for the group. For the purpose of this discussion imagine that the project you are working on is the building block of a larger, long term project. Eg: immagine that it will be deployed on a large scale, for a set of research institutions and that data will need to be collected and shared between different countries.

The scope and definition of sustainability

Software sustainability is a large topic, covering economical, social and ethical concerns amongst others, today we will focus primarily on technical and design related issues but it is important to consider different aspects to identify trade-offs.

"The combined rate of cancelled plus unsuccessful projects was between 26 percent and 34 percent. By most standards, this would be considered a high failure rate for an applied discipline." (ref: El Emam, Khaled, and A. Günes Koru. "A replicated survey of IT software project failures." IEEE software 25.5 (2008): 84-90.)

  • What does sustainability mean to you as a architect? What aspects of sustainability are important to consider for this project? What is the possible impact of design decisions on sustainability for your project?
  • Are there any design trade-offs for different sustainability aspects?
You can come back to these questions again after discussing technical implications for the questions below.

Making design decisions for software with a long life-cycle

Food for thought: We need to design systems that will execute on hardware and operating systems that do not exist yet.

  • What strategies can we use to build a design that holds the test of time? Can any of the patterns/ architectural styles we discussed in the course be useful?
  • Rapid prototyping creates "throwaway" versions of software to meant to clarify requirements, consuming unnecessary time and resources. Do you agree or disagree with this statement?
  • Can we plan ahead for changes? What techniques can we use to ensure any changes benefit the system long term?
  • What is the role of documentation in long term architecture sustainability?
  • Based on your answers to the questions above, identify 2-3 strategies for your project that have potential for increasing long-term sutainability. How would making these changes affect the project? Are there any trade-off or down-sides to prioritizing sustainability?

Sustainable resource management

A lot of work in green computing has been on reducing energy consumption. This can be done on several levels of abstraction: by using greener energy sources, by producing more energy efficient hardware, optimizing resource management or optimizing the sofware itself in terms of energy consumption.

One example of optimization of resource management is power-aware scheduling algorithms aim to reduce overall power consumption of the machines, for example by maximizing the use of all the cores on the machines.

On software level, a study has been conducted to show the impact of applying design patterns to software on energy consumption. Results vary from 10% decrease in energy consumption to 700% increase. We can see that the increase in computational efficiency does not translate to lower consumption.

  • Another optimization that reduces power use, is the ability to shut down unused/idle machines. How do you think this impacts the design of the system?
  • Can you come up with examples of optimizations to reduce energy consumption that can be made for your project?
  • Which architectural paradigms discussed in the course are helpful when designing for energy efficiency?
  • Putting the problem into a larger context, should we be also considering the impact of the application itself on the environment in terms of energy consumption? eg: a car sharing service might use resources to run but will result in less car-trips, so less fuel consumption? How do we decide on which level we should optimize?

Ethics and Social aspects

You can look at LiUs security policy for inspiration.
  • What are the ethical and societal implications you see for your project?
  • As an architect how can you contribute to ensure that you design a trust- worthy architecture?
  • In a more general context, to what extent can a software architecture be trusted and what is the responsability of the architect? For example what about electronic elections?
We will follow up with a round of summaries from each group highlighting interesting discussion points - the summary should include your group's interpretation of sustainability and the strategies that you have come up with.

Further reading on sustainability:

  1. Venters, Colin C., et al. "Software sustainability: Research and practice from a software architecture viewpoint." Journal of Systems and Software 138 (2018): 174-188. https://doi.org/10.1016/j.jss.2017.12.026
  2. B. Penzenstadler, “Towards a definition of sustainability in and for software engineering,” in Proceedings of the 28th Annual ACM Symposium on Applied Computing, SAC ’13, (New York, NY, USA), pp. 1183– 1185, ACM, 2013.
  3. C. Sahin et al., "Initial explorations on design pattern energy usage," 2012 First International Workshop on Green and Sustainable Software (GREENS), Zurich, 2012, pp. 55-61. doi: 10.1109/GREENS.2012.6224257
  4. U. Zdun, R. Capilla, H. Tran and O. Zimmermann, "Sustainable Architectural Design Decisions," in IEEE Software, vol. 30, no. 6, pp. 46-53, Nov.-Dec. 2013. doi: 10.1109/MS.2013.97
  5. R. Capilla, E. Y. Nakagawa, U. Zdun and C. Carrillo, "Toward Architecture Knowledge Sustainability: Extending System Longevity," in IEEE Software, vol. 34, no. 2, pp. 108-111, Mar.-Apr. 2017. doi: 10.1109/MS.2017.54.
  6. A. J. Younge, G. von Laszewski, L. Wang, S. Lopez-Alarcon and W. Carithers, "Efficient resource management for Cloud computing environments," International Conference on Green Computing, Chicago, IL, 2010, pp. 357-364. doi: 10.1109/GREENCOMP.2010.5598294
  7. Z. Durdik, B. Klatt, H. Koziolek, K. Krogmann, J. Stammel and R. Weiss, "Sustainability guidelines for long-living software systems," 2012 28th IEEE International Conference on Software Maintenance (ICSM), 2012, pp. 517-526, doi: 10.1109/ICSM.2012.6405316.

Page responsible: Lena Buffoni
Last updated: 2024-04-24