Am Anfang steht das Wort. Jemand beschreibt, was er von der Software erwartet. Dies geschieht in deutsch, englisch oder sonst einer menschlichen Sprache. Daher ist es unvollständig, in sich widersprüchlich und mißverständlich. Am Ende steht ein Softwareprogramm, daß sich nach präzisen Regeln verhält.
Man kann den Entwicklungsprozeß also als zunehmende Präzisierung und Formalisierung der Anforderung begreifen.
Jeder Schritt auf diesem Weg führt zu einer Einengung der Auslegungsmöglichkeiten der Formulierung der Anforderung. In jedem Schritt sind somit auch fachliche Entscheidungen zu treffen.
Damit werden viele klassische Ansätze fragwürdig, die vorsehen, daß das fachliche Verständnis in einer Analysephase festgehalten wird und anschließend in einer Designphase nur die technische Umsetzung behandelt wird. Diese Vorgänge verschwimmen alle zusammen mit der Programmierung.
Eine vollständige, überprüfbare Darstellung der Software kann nur in einer formalen Sprache erfolgen. Dies war z.B. auch der Ansatz von UML/MDA. Jedoch kann es auch eine DSL oder ein hinreichend gut strukturiertes Programm sein. Wenn die Interfaces der Komponenten so gestaltet sind, daß sie die fachliche Intention offenbaren, werden Analyse, Design und Codierung eins.
Wenn eine vollständige, widerspruchsfreie Beschreibung vorliegt, so läßt sie sich zumindest prinzipiell Compilieren. Es gibt heute genügend Werkzeuge, um dies auch wirklich zu tun. Menschliche Arbeit ist hier meist Verschwendung von Ressourcen, so billig sie auch zu bekommen ist.
Keine Kommentare:
Kommentar veröffentlichen