Transparency in Software Engineering

by Yu-Cheng Tu, PhD in Electrical and Electronic Engineering, 2014.

Abstract.

Transparency has the meaning of making information visible to people. Good transparency enhances the reputation of organisations and enables people to make informed decisions. Transparency is widely used in software engineering, but it is unclear how the concept of transparency might help software development. Two questions inspire this thesis: What is transparency in software engineering? How useful is transparency to software development?

Current definitions in software development lack specific measurable characteristics and ways to measure transparency. We propose an introductory definition of transparency as it relates to software development: the degree to which stakeholders can answer their questions by using the information they obtain about a software system during its life cycle. This definition rests on three attributes: accessibility, understandability, and relevance. These attributes affect stakeholder's ability to see the information necessary to achieve their goals.

We use evidence from an exploratory survey which asks software practitioners their personal opinions about transparency. We also collect evidence from a controlled experiment which compares two software artefacts with different degrees of transparency in presenting functional requirements to software practitioners and tertiary students. This experiment enables us to test how useful transparency is in requirements engineering.

The results from the exploratory survey reveal that software practitioners encounter transparency problems during communication in their software projects. The findings from the controlled experiment illustrate that a more transparent software artefact is more effective in presenting functional requirements than a less transparent software artefact. Future research in this area will give software developers a diagnostic framework which enables them to articulate transparency problems and to improve communication in the software life cycle.