White Papers
Modernization of Legacy Systems: When and How?
Should IT executives continue to pour money into their legacy systems, replace, or modernize itt? Those responsible for IT systems face this
question at the end of each fiscal year.
Automotive Industry: Process Focus Only Insufficient?
Software is a major worldwide industry. Software pervades a multitude of products and is an important corporate asset, with demand still
increasing, especially in the automotive industry. Without software, car manufacturers could not survive in the current marketplace, and both the
impact of software on everybody’s life and our dependence on software is rapidly increasing. It cannot, however, be denied that software
engineering is still a discipline with much potential for improvement. Software projects are characterized by schedule and budget overruns, and
the delivery of unreliable, and difficult to maintain, software products. Existing improvement strategies mainly focus on improving the
operational efficiency. There is however no indication that any improvement strategy can result in the performance improvements needed, matching
the exponential growth of the variety and size of software products. One can still speak of a software crisis, in the sense that the turning
point has probably not yet been reached. Typical car manufacturers are likely to become increasingly less predictable in terms of cost, quality
and time-to-market. Without adopting a paradigm shift towards the adoption of formal methods, the most important challenge for this industry in
the future will no longer be the satisfaction of new needs, but the reparation of damage by the software of today.
An Interactive Reverse-Engineering Environment for Large-Scale C++ Code
Few toolsets for reverse-engineering and understanding of C++ code provide parsing and fact extraction, querying, analysis and code metrics,
navigation, and visualization of source-code-level facts in a way which is as easy-to-use as integrated development environments (IDEs) are for
forward engineering. We present an interactive reverse-engineering environment (IRE) for C and C++ which allows to set up the fact extraction
process, apply userwritten queries and metrics, and visualize combined query results, metrics, code text, and code structure. Our IRE tightly
couples a fast, tolerant C++ fact extractor, an open query system, and several scalable dense-pixel visualizations in a novel way, offering an
easy way to analyze and examine large code bases. We illustrate our IRE with several examples, focusing on the added value of the integrated,
visual reverse-engineering approach.
SolidFX: An Integrated Reverse Engineering Environment for C++
Many C++ extractors exist that produce syntax trees, call graphs, and metrics from C++ code, yet few offer integrated querying, navigation, and
visualization of sourcecode- level facts to the end-user. We present an interactive reverse engineering environment which supports
reverseengineering tasks on C/C++ code, e.g. set up the extraction process, apply user-written queries on the extracted facts, and visualize
query results, much like classical forwardengineering IDEs do. We illustrate our environment with several examples of reverse-engineering analyses.
A Tool for Optimizing the Build Performance of Large Software Code Bases
We present Build Analyzer, a tool that helps developers optimize the build performance of huge systems written in C. Due to complex C header
dependencies, even small code changes can cause extremely long rebuilds, which are problematic when code is shared and modified by teams of
hundreds of individuals. Build Analyzer supports several use cases. For developers, it provides an estimate of the build impact and distribution
caused by a given change. For architects, it shows why a build is costly, how its cost is spread over the entire code base, which headers cause
build bottlenecks, and suggests ways to refactor these to reduce the cost. We demonstrate Build Analyzer with a use-case on a real industry code
base.
Previous research
Design of a Methodology to Support Software Release Decisions
PhD Thesis Hans Sassenburg
An Economic Model for Market Entry Strategies
In unpredictable software manufacturer organizations, it is difficult to determine when a software product will be released, the features the
product will have, the associated development costs or the resulting product quality. The NPVI-method is presented, enabling a software
manufacturer to compare and evaluate different release or market entry strategies. However, information has its price in time and cost, forcing
decision-makers to make a trade-off between search costs and opportunity costs. In addition, decision-makers simplify the real world, as they
cannot escape the diverse psychological forces that influence individual behaviour. Combined with the potential presence of sources of conflict,
this often leads to the situation where different stakeholders experience difference aspiration levels. As such, satisficing behaviour where
decision-makers try to find consensus and choose a satisfactory release alternative is a good characterisation of the software release
decision-making process as found in practice. Successful adoption of the NPVI-method requires that software manufacturers reach the zone of cost
effectiveness for the perfection of information; a zone where numbers make business sense, and can be convincingly used to support informed
decision-making.
Optimal Release Time: Numbers or Intuition?
Despite the exponential increase in the demand for software and the increase in our dependence on software, many software manufacturers behave in
an unpredictable manner. In such an unpredictable software manufacturer organization, it is difficult to determine the optimal release time. An
economic model is presented supporting the evaluation and comparison of different release or market entry alternatives. This model requires
information with respect to achieved reliability and maintainability. Existing literature reveals many models to estimate reliability and limited
models to estimate maintainability. The practicality of most available models is however criticized. A series of case studies confirmed that
software manufacturers struggle with determining the reliability and maintainability of their products prior to releasing them. This leads to a
combination of non-analytical methods to decide when a software product is ‘good enough’ for release: intuition prevails where sharing convincing
information is required. Next research steps are put forward to investigate ways increasing the economic reasoning about the optimal release time.
A Multi-Disciplinary View on Software Release Decisions
A relatively unexplored area in the field of software management is the implementation or release decision, deciding whether or not a software
product can be transferred from its development phase to operational use. Many software manufacturers have difficulty in determining the ‘right’
moment to release their software products. It is a trade-off between an early release, to capture the benefits of an earlier market introduction,
and the deferral of product release, to enhance functionality, or improve quality. In this research project software release decisions are
researched from three perspectives: economics, decision-making and software management. All perspectives are reviewed, explored indepth, both
from a theoretical and from an empirical point of view, by studying practical examples. The results are used in a proposed methodology to improve
strategic software release decisions, characterized by the existence of large prospective financial loss outcomes, including the presence of high
costs for reversing a decision. The methodology identifies the critical factors for a high quality decision outcome, being the sum of quality of
the decision inputs and the quality of the decisionmaking process.
