|
In this book we set out to investigate some of the most difficult problems that
software engineering faces. Although a young discipline, it nonetheless faces
the most difficult challenges, as software is the most complex artefact ever
crafted by humankind. As such, many of the problems can be traced to
inadequate abstraction. Satisfying theoretical and practical demands in one
visual, scalable, and decidable language has so far proven to be a genuine
challenge. Any claim that one modelling language or one tool can be a “silver
bullet” is patently false. Indeed, there are no silver bullets, and LePUS3, the
language of Codecharts, is no exception.
As a first step in seeking a solution, we have set eight guiding principles
of our design description language (Chapter 3). Jointly, these reduce the
scope of our problem significantly. They leave much out. Nonetheless, we did
discover that many of the problems in the theory and practice of software
specification, verification, visualization, modelling, and design recovery have
a common root. At their heart is the question of representation. Committing
ourselves to these guiding principles has enabled us to tackle these difficult
problems head on and reach a very useful result.
Is our task complete? Far from it. Additional cases need to be studied.
And our attempt at formalizing our specification language is incomplete. In
particular, our analysis of the mathematical properties of Codecharts is
preliminary. To the eyes of the logician, the exhibition of this subject in this
book is both inadequate and uninteresting, and the propositions and “proofs”
we provide are sketchy and mathematically shallow. But this has been our
conscious choice: The logician is not in our target audience; programmers and
students of programming are.
At the time of writing this book, our research project is still in early
stages. However, a controlled experiment conducted in our labs [Eden &
Gasparis 2009] clearly indicates that a tool supporting automated design
verification and software visualization with Codecharts, the Two-Tier
Programming Toolkit, provides very significant productivity gains in key
tasks in software development and maintenance. We therefore have every
reason to believe that this book will help programmers overcome the difficult
problems they encounter on a daily basis. |