Uncertainty in software development: a threat and a possibility
Ylikotila, Arttu (2023)
Ylikotila, Arttu
2023
Tietojenkäsittelyopin maisteriohjelma - Master's Programme in Computer Science
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2023-07-06
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202306296999
https://urn.fi/URN:NBN:fi:tuni-202306296999
Tiivistelmä
Uncertainty is a pervasive and inevitable phenomenon in software development. It affects most if not all stakeholders in software projects in different ways. Mostly uncertainty is seen as a risk or threat that is one of the causes behind the failures of software projects. But there are also possibilities or opportunities that can be found from uncertainty.
Uncertainty has been researched in academia, but not often from the viewpoint of software development. Understanding the causes and effects of uncertainty is needed to be able to mitigate the negative and to increase the positive aspects. Understanding the subject may also help in coping with the effects of inevitable uncertainties. This thesis explores the subject by conducting a literature review. The aim of this work is to increase understanding of causes and effects of uncertainty and how uncertainty can be managed in software development projects.
This thesis discusses different types and sources of uncertainty that affect software development projects. The type represents what the uncertainty is about, and the source represents what causes the uncertainty. The presented types include for example requirements, stakeholders, and situation. The examined sources contain ambiguity, complexity, and lack of trust among other things. The effects of uncertainty on development projects and individual developers are dis-cussed as well. The effects on projects include for example delays in schedule, decreased product quality, and poor estimates, while the effects on developers include stress, feelings of inadequacy, or increased motivation among other things. Discussion of uncertainty management is divided into reducing uncertainty and coping with uncertainty. The former can be achieved for example by maintaining continuous and direct communication with stakeholders and by doing the development of the project in short, repeated iterations that builds the project in small steps. Coping with uncertainty can be facilitated by high autonomy of the team and trust between project members among other things. Also, the suitability of different software development processes in relation to uncertainty are discussed with the conclusion being that project type is a major factor in what software development process should be used.
Uncertainty has been researched in academia, but not often from the viewpoint of software development. Understanding the causes and effects of uncertainty is needed to be able to mitigate the negative and to increase the positive aspects. Understanding the subject may also help in coping with the effects of inevitable uncertainties. This thesis explores the subject by conducting a literature review. The aim of this work is to increase understanding of causes and effects of uncertainty and how uncertainty can be managed in software development projects.
This thesis discusses different types and sources of uncertainty that affect software development projects. The type represents what the uncertainty is about, and the source represents what causes the uncertainty. The presented types include for example requirements, stakeholders, and situation. The examined sources contain ambiguity, complexity, and lack of trust among other things. The effects of uncertainty on development projects and individual developers are dis-cussed as well. The effects on projects include for example delays in schedule, decreased product quality, and poor estimates, while the effects on developers include stress, feelings of inadequacy, or increased motivation among other things. Discussion of uncertainty management is divided into reducing uncertainty and coping with uncertainty. The former can be achieved for example by maintaining continuous and direct communication with stakeholders and by doing the development of the project in short, repeated iterations that builds the project in small steps. Coping with uncertainty can be facilitated by high autonomy of the team and trust between project members among other things. Also, the suitability of different software development processes in relation to uncertainty are discussed with the conclusion being that project type is a major factor in what software development process should be used.