| The last two decennia have witnessed many advances in the area of software development. The advent of object-oriented programming languages and modelling languages such as Unified Modeling Language (UML) has increased our ability as developers to design and realize large and enterprise-wide software systems. However, software engineering, as a discipline seems to be lacking in its support for reference models that can be used in order to help developers create new systems quickly and efficiently. The software development process is still a very context-sensitive and idiosyncratic process. Whereas disciplines such as chemical engineering and mathematics have developed domain models for a range of problems, the IT industry is in general lacking in such models. Software development tends to be a very personal experience and in many cases how a system is to be developed is a product of a single person’s insights. This is a potentially dangerous state of affairs because there is no guarantee that the resulting model reflects the problem domain well.
This book introduces a number of so-called models (we call them domain architectures) that act as ‘cookie-cutters’ or reference models for more specific real-life applications. Working with domain architectures demands a shift in thinking because when designing a new software system we try to categorize it as an instance system of one or more domain architectures. Having done that we can reuse and specialize the requirements, viewpoints and generic architecture to the specific systems. This results in massive reuse at the architectural and design levels while the risk of failure is reduced because the reference models in this book are based in real-life applications and experience. They have been used on real projects with real customers.
The reference models can and should be used in much the same way as people reason about the world around them. This is the Ausubel subsumption theory: when developing software systems we relate new knowledge to relevant concepts and propositions we already know. |
|
|
|