Home

Skriptum softwaretechnik - WSI Programmiersprachen und Übersetzer

image

Contents

1. Projekt Projekt Projekt Angebot genehmigt definiert ausgeschrieben abgegeben Projektfortschritt erpr berpr ft 9 Iteration Projekt geplant abgeschlossen Alle V Modell Projekte Oost este SMR Vorgehensmodell Vorgehensmodell Verbesserung Verbesserung analysiert Vorgehensmodell konzipiert Vorgehensmodell realisiert Abbildung 43 Das V Modell XT 6 4 Fr he prototypen Bei dieser strategie rapid prototyping geht es darum m glichst schnell einen oder mehrere prototypen eines systems zu gewinnen um damit zu ex perimentieren und erfahrungen zu sammeln Dabei benutzt man in m glichst grossem umfang bereits existierende software und attrappen d h also modu le die eine bestimmte funktion nur simulieren Analogie im automobilbau windkanalmodell aus plastilin im massstab 1 1 designstudien innenraum nachbauten aufbau eines prototypen aus teilen anderer typen Anhand der mit den prototypen gewonnenen erfahrungen wird anschliessend das system von grund auf neu entworfen wobei dann ein modifizierter d h verk rzter lebenslauf befolgt wird Unterscheiden m ssen wir bei prototyping zwischen sog explorativen proto typen die nur zur ermittlung von bestimmten vorstellungen der benutzer die nen bzw die machbarkeit gewisser konzepte nachweisen sollen und die sp ter keinen eingang in das fertige produkt finden throwaway prototypes und sog evolution
2. Die arbeit von Drake 1996 zeigt eine reihe interessanter masse auf die durch werkzeuge mittels statischer analyse von programmen gewonnen wer den k nnen und die erfahrungsgem ss grossen einfluss auf die programm qualit t haben Abb 35 zeigt eine solche auswertung f r ein programm in form eines sogenannten Kiviat Diagramms Diese form von diagrammen eignet sich besonders f r den fall wo eine vielzahl von metriken bez glich ihrer einhal tung bestimmter unter und obergrenzen dargestellt werden soll Es gibt hier einen inneren kreis beschriftet mit dem jeweiligen minimum f r die einzelnen metriken und einen usseren kreis mit den maxima die messwerte werden al le entsprechend skaliert und durch eine linie verbunden Das bild zeigt dass einige messwerte ber deren bedeutung wir hier nicht diskutieren wollen stark ausserhalb der zul ssigen grenzen liegen Drake nennt die hier ent standene figur den fliegenden albatros und sagt dazu dass es ein zeichen f r ein besonders schlechtes programm ist Die verbesserung des programms aufgrund der so gewonnenen erkenntnisse zeigt dann ein bild wie in abb 36 hnlich wertvolle erkenntnisse lassen sich durch analyse der schleifenstruk tur gewinnen abb 37 zeigt ein zu kompliziertes programm und abb 38 das berarbeitete programm Copyright Herbert Klaeren 29 Juni 2015 118 5 5 Statische analyse Eile Option Print 50 00 4 insted Time To Develop 6125
3. weswegen einige IBM kunden die abk rzung PTF als permanent temporary fix bezeich nen swkorr tex 5 SOFTWAREQUALIT T 105 einem problem ernsthaft besch ftigen Andererseits machten auch einige kun den die eilfertig alle zugesandten PTFs sofort installierten schon die tr be erfahrung dass durch die PTFs pl tzlich bei ihnen erst fehler auftraten wo vorher alles reibungslos verlaufen war Dies f hrte nat rlich zu einer gewis sen abneigung gegen PTFs zumal das komplexe geflecht der abh ngigkeiten PTF 40190 setzt PTF 38175 voraus zwischen PTFs nicht immer zu durch blicken ist Die datenbanken ber APARs und PTFs sind brigens auch f r die kunden direkt im internet einsehbar In der zitierten arbeit von Adams 1984 wird deshalb mit statistischen me thoden eine absch tzung versucht wann sich ein PS gegen ber einem CS wirt schaftlich rechnet Gleichzeitig ergeben sich dabei interessante daten ber die fehlerh ufigkeit und anzahl s abb 34 die zugrundeliegenden daten sind auch in tab 4 aufgef hrt Die aufbereitung der daten stammt von Cobb und Mills 1990 woher auch die bodenzeile aus tab 4 stammt Ich habe jedoch die acht separaten MTTF klassen in sechs zusammengefasst Wir wollen an MTTF Klasse gt 1583a 500a 158a 50a 15 83a lt 5a Prozent der Fehler 623 182 97 45 32 2 2 Wahrscheinlichkeit 2 9 44 79 12 3 187 53 7 Tabelle 4 MTTF nach Adams dieser stelle nicht di
4. IN Hoh Identifying Quality Requirement Conflicts In IEEE Software 13 1996 Nr 2 S 25 35 Booch 1998 BOOCH Grady The Unified Modeling Language User Guide Addison Wesley 1998 du Bousquet u a 2004 BOUSQUET L du LEDRU Y MAURY O ORIAT C LANET J L A Case Study in JML based Software Validation In Proc of 19th IEEE Conf on Automated Software Engineering ASE 04 Linz IEEE CS Press 2004 S 294 297 Bowen 2005 BOWEN Jonathan The Z Notation http vl zuser org Sep 2005 Bowen und Hinchey 2006 BOWEN Jonathan P HINCHEY Michael G Ten Commandmends of Formal Methods Ten Years Later In IEEE Computer 33 2006 Nr 1 S 40 48 British Standards Institute 2011 BRITISH STANDARDS INSTITUTE Sy stems and software engineering Systems and software Quality Requi rements and Evaluation SQuaRE System and software quality mo dels British Standards Institute 2011 BS ISO IEC 25010 2011 http http janus uclan ac uk pagray BS ISO IEC 2025010 202011 20quality 20requirements 20models pdf Brooks 1975 BROOKS Frederick P The Mythical Man Month Essays on Soft ware Engineering Addison Wesley 1975 Brooks 1995 BROOKS Frederick P The Mythical Man Month After 20 Years In IEEE Software 12 1995 Nr 5 S 57 60 Broy und Pree 2003 BROY Manfred PREE Wolfgang Ein Wegweiser f r Forschung und Lehre im Software Engineering eingebetteter Systeme In Informatik Spektrum 26 20
5. schrieben hatte welches einerseits testf lle mit dem ziel eines bestimmten berdeckungsgrades erzeugte und andererseits im laufenden programm die messung der tats chlich angetroffenen berdeckung erlaubte Anfang der 80er jahre war diese methode relativ popul r vor allem auch wegen ihrer bez ge zu graphentheoretischen eigenschaften des programmablaufgraphen des sen komplexit t durch die von McCabe 1976 vorgeschlagene zyklomatische komplexit t gemessen werden kann Wir sprechen dann beispielsweise von einer 50 igen abdeckung wenn 50 der in betracht gezogenen Pfade berdeckt sind d h also w hrend eines test falls betreten werden Die relevanz des ablaufbezogenen testens ist jedoch ge ring Vergleiche etwa die empirischen daten von Adams s tab 4 Wir werden bei hohen berdeckungsgraden m glicherweise viele fehler finden die jedoch swkorr tex 5 SOFTWAREQUALIT T 113 in der praxis nie oder fast nie auftreten werden andererseits ist vollkommen klar dass wir mit ablaufbezogenem testen niemals alle fehlerarten entdecken k nnen Experimentelle daten zeigen Sneed 1988 dass auch bei sehr hohen berdeckungsgraden stets weniger als 50 der aufgefundenen fehler durch ablaufbezogenes testen entdeckt wurden Es lassen sich in der tat n mlich nur bestimmte arten von fehlern auf diese art und weise entdecken z b uner reichbarer code endlose schleifen und unvollst ndige bzw widerspr chliche bedingungen Da die sp
6. ten systems beschreibt automatisch erzeugt Hierzu gibt es ein eigenes pro gramm autoconf Es hat deshalb keinen sinn im makefile dinge zu ndern weil sie beim n chsten aufruf von configure verloren gehen Ebenso hat es keinen sinn in makefile in dinge zu ndern die in makefile am auch vor kommen denn diese werden beim n chsten aufruf von automake verschwin den Es ist auch v llig sinnlos in dem configure skript etwas ndern zu wol len ganz abgesehen davon dass daf r der schwarze g rtel in der shell pro grammierung n tig w re denn der n chste aufruf von autoconf wird diese nderungen vernichten Die configure skripte leisten im wesentlichen das folgende e Pr fen der vorliegenden plattform d h hardware betriebssystem com piler etc Auffinden der suchpfade f r programmquellen und bibliotheken Auffinden weiterer wichtiger details des substrats compiler linker fen stersystem installationsprozeduren hilfsprogramme Setzen aller relevanten pr prozessorvariablen e Erzeugung von makefiles aus vorgegebenen rahmen 9 5 Versionshaltung mit SVN Jedes programm das wirklich eingesetzt wird wird auch st ndig ge ndert Ein geordneter softwaretechnikprozess setzt voraus dass solche nderungen protokolliert werden Was wurde ge ndert wann warum und von wem Im prinzip k nnte man dies nat rlich in form von kommentaren in den quellen vermerken allerdings w rden dann die quellen sehr bald zieml
7. 1 EINF HRUNG WAS IST SOFTWARETECHNIK 9 theoretische informatik beweist zur ckgehend auf G del und Turing dass bestimmte fragen aus prinzipiellen erw gungen heraus unm glich durch ein programm beantwortet werden k nnen von anderen fragen die theoretisch l sbar sind beweist sie dass sie einen prohibitiv grossen rechenaufwand bedingen Solches grundlagenwissen ist aber von v llig anderer art als physikalische gesetze Auch ist es unter den program mierern noch nicht berall verbreitet Bei den klassischen ingenieurwis senschaften achten die standesvereinigungen und der gesetzgeber streng darauf dass mit dem titel Ingenieur ein ganz bestimmtes qualit tsni veau verbunden ist Im softwarebereich gibt es dagegen zahlreich leute die glauben dass bereits die beherrschung der syntax einer programmier sprache sie zu programmierern macht In vieler hinsicht hnelt die heu tige softwarepraxis dem zustand der ingenieurwissenschaften zur renais sancezeit wo mit unglaublicher imagination und raffinesse immer wieder versucht wurde ein perpetuum mobile zu konstruieren und wo man das nicht funktionieren der apparaturen auf die mangelnde handwerkli che qualit t der ausf hrung zur ckf hrte Wenn man den zweiten haupt satz der thermodynamik einmal verstanden hat sieht man dagegen die fruchtlosigkeit dieser bem hungen sofort ein Wenn heute auf dem soft waresektor hnlich unm gliches versucht wird und nat rlich nicht f
8. 29 Juni 2015 104 beispiel f hren sie das Arbeitslosenunterstiitzungssystem ALU II vor das 25 mil lionen Euro zu viel auszahlte Eine parlamentarische untersuchung des landes Schleswig Holstein zeigte dass eine manuelle auszahlung der arbeitslosengel der in einem bundesland jahrlich 300 millionen Euro gekostet hatte durch die fehler im ALU II System kostete sie jedoch 380 millionen Euro wegen der feh ler in der berechnung gingen t glich zwei arbeitsstunden pro sachbearbeiter verloren Viele aussagen im bereich der software qualit tssicherung sind statistischer natur und deshalb mit den blichen warnungen vor statistischen aussagen zu belegen Die meisten statistischen eigenschaften einer gesamtheit von objekten k nnen an einem einzelfall oft in dramatischer weise widerlegt werden Vieles von dem zahlenmaterial stammt noch aus der zeit der grossrechner deren relativ hoher preis und dementsprechend relativ niedrige installations h ufigkeit eine genaue verfolgung von fehlern m glich machte Sehr ausge feilt ist das von Adams 1984 geschilderte verfahren bei der firma IBM das aus der grossrechnerzeit mit eher geringen anzahlen installierter maschinen stammt und jetzt auch auf mittlere maschinen und workstations mit ungleich h heren installationzahlen bertragen wurde Vermutet hier ein kunde einen software fehler so benachrichtigt er eine zentrale problemaufnahmestelle die einen Problem Management Record PMR anfer
9. Ah how long indeed My private opinion ist that the rats would kill the cat Lewis Carroll 1880 Das zitat von Carroll macht deutlich was im grunde genommen sowieso klar sein sollte Messgr ssen wie mannmonate implizieren heimlich dass hier ein dreisatzverh ltnis gilt im richtigen leben trifft diese mathematische idealisierung aber h ufig nicht zu Fred Brooks 1975 hat dies in seinem buch plastisch vorgef hrt s auch sein zitat in anh E s 239 F r den fall der softwa reerstellung gilt n mlich dass bei einer vollst ndigen trennung der teilaufga ben die entwicklungsdauer t umgekehrt proportional zur anzahl n der mitar beiter w re t 1 n s abb 3 Leider lassen sich aber die teilaufgaben fast nie v llig unabh ngig darstellen sodass mehr oder weniger kommunikation zwischen den mitarbei tern notwendig wird Bei n mitarbeitern gilt f r den kommunikationsaufwand k und eine konstante c im schlimmsten fall jeder muss mit jedem kommuni zieren n n Balz Durch superposition der beiden kurven s abb 3 sieht man dass ab einem ge wissen punkt zus tzliche mitarbeiter die entwicklungsdauer wieder vergr s sern Kontrollfragen Die nachfolgenden fragen sollten sich ohne nachlesen im skriptum beantwor ten lassen sweinf tex 1 EINF HRUNG WAS IST SOFTWARETECHNIK 17 Kommunikationszeit Gesamtzeit N Programmierzeit Abbildung 3 Mannmonate und minimale entwicklungsz
10. EUR so kostet eine programmzeile 36 EUR Es gibt auch noch ande re zahlen Drake 1996 von der National Security Agency nennt 7 8 LOC pro tag also h chstens 40 LOC woche und dementsprechend kosten von 70 USD pro zeile Interessanterweise ist diese programmierleistung in LOC woche unabh ngig von der programmiersprache Zwar muss man etwa im assembler viel mehr zeilen schreiben als in einer h heren programmiersprache um eine vergleichbare aufgabe zu erledigen und diese zeilen sind ungleich weniger komplex als die der h heren programmiersprache aber daf r sind diese zei len wegen der verwicklung mit der maschinenarchitektur und des niedrigen abstraktionsniveaus viel schwerer zu erstellen und zu testen Tab 1 enth lt ausserdem angaben f r sog mannjahre f r den program mieraufwand Diese zahlen sind so entstanden dass die anzahl der besch f tigten in einem projekt multipliziert wurden mit der anzahl der jahre die f r das projekt gebraucht wurden Die zahl 2000 mannjahre f r die Apollo Skylab Software bedeutet logischerweise nicht dass hier eine person 2000 jah re programmiert hat aber auch nicht dass 2000 programmierer dies innerhalb eines jahres geschafft haben Auf diese problematik gehen wir im n chsten Abschnitt Brookssches gesetz genauer ein F r die Windows familie ha be lassen sich keine aufwandszahlen angeben weil keine publiziert worden sind und weil man angesichts des umfangreichen w
11. In IEEE Software 19 2002 Nr 5 S 15 17 Graham u a 1982 GRAHAM Susan L KESSLER Peter B MCKUSICK Marshall K gprof A Call Graph Execution Profiler In SIGPLAN 82 Sym posium on Compiler Construction Bd 17 6 1982 S 120 126 Guttag u a 1993 GUTTAG John V HORNING James J GARLAND S J JONES K D MODET A WING J M Larch Languages and Tools for Formal Specification Springer 1993 Henning 2007 HENNING Michi API Design Matters In ACM Queue 5 2007 Nr 4 S 25 36 Also in CACM 52 5 2009 p 46 56 Hertzfeld 1982 HERTZFELD Andy 2000 Lines of Code http www folklore org StoryView py project Macintosh amp story Negative_2000_Lines_Of_Code txt Feb 1982 Copyright Herbert Klaeren 29 Juni 2015 252 LITERATUR Hoare 1969 HOARE C A R An axiomatic basis for computer program ming In Communications of the ACM 12 1969 October Nr 10 S 576 580 Hoare 1972 HOARE C A R Proof of Correctness of Data Representations In Acta Informatica 1 1972 S 271 281 Hoare 1993 HOARE C A R Algebra and Models In Proceedings SIGS OFT 93 Bd 18 5 ACM Veranst 1993 S 1 8 Hoare 2009 HOARE C A R Retrospective An Axiomatic Basis for Compu ter Programming In Communications of the ACM 52 2009 October Nr 10 5 30 32 Holbzk Hanssen u a 1977 HOLBAK HANSSEN E HANDLYKKEN P NY GAARD K System Description and the Delta Project Norske Regnecen tra
12. Mackey 1996 MACKEY Karen Why Bad Things Happen to Good Projects In IEEE Software 13 1996 Nr 3 S 27 32 MacLennan 1997 MACLENNAN Bruce J Who Cares About Elegance The Role of Aesthetics in Programming Language Design In SIGPLAN Notices 32 1997 Nr 3 S 33 37 McCabe 1976 MCCABE Thomas J A Complexity Measure In IE EE Trans Soft Eng SE 2 1976 Dec Nr 4 S 308 320 http www literateprogramming com mccabe pdf McConnell 1996 MCCONNELL Steve Missing in Action Information Hi ding In IEEE Software 13 1996 Nr 3 S 128 127 McCracken und Jackson 1982 MCCRACKEN Daniel D JACKSON Micha el A Life Cycle Concept Considered Harmful In Software Engineering Notes 7 1982 Nr 2 S 29 32 Metropolis u a 1980 METROPOLIS Nicholas C Hrsg HOWLETT Jack Hrsg ROTA Gian Carlo Hrsg A History of Computing in the Twentieth Century Academic Press 1980 Meyer 1990 MEYER Bertrand Objektorientierte Software Entwicklung Han ser Prentice Hall M nchen u a 1990 ISBN 3 446 15773 5 Meyer 1992 MEYER Bertrand Applying Design by Contract In IEEE Computer 25 1992 Nr 10 S 40 51 swquote tex LITERATUR 255 Meyer 1995 MEYER Bertrand From Process to Product Where is Software Headed In IEEE Computer 28 1995 August Nr 8 S 23 Meyer 1996 MEYER Bertrand Teaching object technology In IEEE Computer 29 1996 Nr 12 S 117 Miller u a 1990 MILLER Barton
13. NPAT x length of pattern x int starting UCHAR MAX 1 NSTART patterns starting with char int nstarting UCHAR MAX 1 x number of such patterns x isspam_ test mesg for occurrence of any pat x int isspam char mesg int i j k unsigned char c For jie o Coe mess se NOM a for i 0 i lt nstarting c i k starting c i if memcmp mesg j pat k patlen k 0 printf spam match for s n pat k return return 0 swtune tex 8 LEISTUNGSVERBESSERUNG VON SOFTWARE 173 8 1 Fallstricke Millsap 2010 weist auf einige fallstricke hin in die man bei der leistungsver besserung leicht geraten kann e Verwechslung von leistung mit durchsatz Angenommen ein system kann pro sekunde 1 000 aufgaben einer bestimmten art erledigen Dann kann nicht angenommen werden dass die durchschnittliche antwortzeit eine tausendstel sekunde ist denn der durchsatz k nnte durch parallelsie rung erreicht worden sein Im schlimmsten fall standen 1 000 prozessoren zur verf gung und die antwortzeit ist eine sekunde Perzentil spezifikationen Eine durchschnittliche antwortzeit von einer se kunde sagt berhaupt nichts aus wenn antwortzeiten stark streuen In so einem fall w re es besser zu wissen dass etwa das 90 perzentil eine se kunde ist dann werden 90 der anfragen in einer sekunde oder schneller erledigt Amdahls gesetz die beschleunigung die durch eine l
14. Windows aus der Asche In Spie gel online 2009 http www spiegel de spiegel 0 1518 634334 2 00 html 6 Juli 2009 Dorner 1989 DORNER Dietrich Die Logik des Miflingens Strategisches Den ken in komplexen Situationen Rowohlt 1989 EB99 1999 engineering Encyclopedia Britannica Online 1999 http members eb com bol topic eu 108127 amp query engineering AccessedApril13 1999 Ehrich u a 1989 EHRICH GOGOLLA LIPECK Algebraische Spezifikation abstrakter Datentypen Teubner 1989 Ernst u a 1997 ERNST Dietmar HOUDEK Frank SCHULTE Wolfram SCHWINN Thilo Experimenteller Vergleich der statischen und dynami schen Softwarepr fung Universit t Ulm Fakult t f r Informatik 1997 97 13 Ulmer Informatik Berichte Everett 1980 EVERETT Robert E Whirlwind In Metropolis u a 1980 S 365 384 Fagan 1976 FAGAN M E Design and code inspections to reduce errors in program development In IBM Systems Journal 15 1976 Nr 3 S 182 211 Fayad und Schmidt 1997 FAYAD M E SCHMIDT D C Object Oriented Application Frameworks In Communications of the ACM 40 1997 Nr 10 S 32 38 Feldman 1979 FELDMAN Stuart I Make A Program for Maintaining Computer Programs In Software Practice and Experience 9 1979 Nr 3 S 255 265 Floyd 1994 FLOYD Christiane Software Engineering und dann In Informatik Spektrum 17 1994 Nr 1 S 29 37 Floyd u a 1989 FLOYD Christiane R
15. abb 25 Die zustands bergangsdiagramme entsprechen dem konzept des endlichen automaten das aus der theoretischen informatik bekannt ist genauer gesagt der generalised sequential machine Es gibt hier eine endliche menge von zu st nden und dazwischen zustands berg nge transitionen Einer der zust nde ist durch einen schwarzen ausgef llten kreis als anfangszustand ausgezeich net im beispiel Checking zust nde aus denen keine transitionen wegf h ren gelten als endzust nde im beispiel Cancelled und Delivered Jeder zu stand hat einen namen und m glicherweise auch noch unter dem strich aktio nen die ausgef hrt werden wenn das system in diesem zustand ist Manche transitionen werden durch bestimmte ereignisse ausgel st im beispiel Item Received andere k nnen sich spontan ereignen im beispiel die transition von Checking nach Dispatching Dar ber hinaus k nnen transitionen aber auch von einem guard in eckigen klammern bewacht werden also einer bedingung Copyright Herbert Klaeren 29 Juni 2015 74 4 4 Model driven architecture Not all items checked all items checked amp amp get next item f Checking all items available er do check a item amp Dispatching do initiate delivery All items checked amp amp some items not in stock Item Received some items not in stock y Ut Cancelled Delivered ae Abbildung 24 Transitionsdiagramm d
16. andererseits auch an der weiterentwicklung mitarbeiten konnte Die anfangszeit der com putersoftware ist also durch das open source prinzip charakterisiert Das ist auch nicht verwunderlich denn die fr hen computer waren s mtlich in den h nden von wissenschaftlern die sich in ihrer computerverwendung von dem paradigma der wissenschaften leiten liessen wissenschaftler publizieren ihre erkenntnisse die dann von allen anderen wissenschaftlern frei verwendet Copyright Herbert Klaeren 29 Juni 2015 198 verbessert weiterentwickelt und erneut der menschheit zur verfiigung gestellt werden Es geh rt zum guten ton in der wissenschaft jeweils die quellen an zugeben auf die man sich gest tzt hat Jede fremde erkenntnis jeden fremden text muss ich als wissenschaftler ordentlich zitieren Es gibt aber dar ber hin aus keine einschr nkungen dar ber was ich mit den erkenntnissen anderer anstelle Konkret gesprochen wenn jemand aufbauend auf den wissenschaft lichen erkenntnissen des einen etwas ableitet was diesem nicht gef llt oder gar seinen absichten zuwiderl uft so gibt es f r den ersten keine m glichkeit dagegen vorzugehen Der einzige schutz den ein wissenschaftler vor seiner ansicht nach missbr uchlicher verwendung seiner erkenntnisse haben kann ist diese erkenntnisse f r sich zu behalten Das entspricht aber nicht dem in der wissenschaft blichen vorgehen Schon im jahr 1957 hatte SHARE 47 mitglieder und es ga
17. geisteshaltung an in der man den entwurf durchf hren kann Mit anderen worten ist es nicht genug die zugrundeliegende technik zu beherrschen noch reicht es die aufgabe verstanden zu haben und sie so gut zu l sen wie eine schmalbandige ausbildung erlauben kann sondern architekturentwurf muss von h chster qualit t sein und alle diesbez glichen kenntnisse umfassen Ze manek bemerkt dass entwurfss nden erbs nden sind Sie binden die nachfolgenden Generationen und das ist viel schlimmer als es klingt Unsere Nanosekunden verf hren alle Parteien in den Irrglauben dass man im Computer und mit Hilfe des Computers mit hoher Geschwindigkeit handeln und korrigieren kann Es gibt sicherlich superschnelle Prozesse aber nicht im Bereich des Entwurfs und noch weniger in der Korrektur von Systemkonzepten 8 Architecti est scientia pluribus disciplinis et variis eruditionibus ornata Heute w rden wir sa gen dass es sich um eine interdisziplin re wissenschaft handelt lat ingeniosus daher das wort ingenieur swhist tex C HISTORISCHES 231 In ganz hnlicher art und weise argumentiert MacLennan 1997 welcher die Softwaretechnik mit dem bauingenieurwesen vergleicht und hierzu ein buch von Billington 1985 zitiert Hiernach hat die technik drei dimensionen die wissenschaftliche scientific die soziale und die symbolische Diesen wer den gegen bergestellt drei inh rente werte der technik n mlich effizienz ko nomie e
18. immer mehr vorg nge finden computergesteuert statt und immer mehr von den leistungen komplexer systeme wird in deren softwareanteil verlagert Die automobiltechnik bietet hierzu grossartige beispiele siehe abb 1 aus der publikation von Klein u a 2004 die auch deutlich macht wozu die softwa re im automobil verwendet wird Oft l sst sich ein unerw nschtes oder gar gef hrliches fahrverhalten von autos durch eine nderung der software korri gieren s etwa den artikel aus der S dwestpresse in anhang E S 244 Der trend zu softwarel sungen hat zum grossen teil mit den produktions kosten zu tun jede noch so clever konstruierte elektronik verursacht trotzdem immer noch kosten bei ihrer replikation w hrend sich eine einmal erstellte software praktisch zum nulltarif vervielfachen l sst Andererseits ist die her stellung der software nicht ganz billig Die International Technology Roadmap for Semiconductors 2010 www itrs net berichtet dass von den entwicklungsko sten f r eingebettete systeme 80 auf die entwicklung der software entfallen Von industriellen erzeugnissen wie waschmaschinen autos fernseher sind Der begriff Lines of Code wird in abschnitt 1 4 aufgegriffen Copyright Herbert Klaeren 29 Juni 2015 2 1 1 Motivation wir es gew hnt dass die hersteller eine gewisse garantie f r das korrekte funk tionieren des produkts ber einen gewissen zeitraum bernehmen Garantie bestimmungen f r soft
19. l zen bis zu toleranten wo die Vorbedingungen schwach sind und damit die Last der Funktion erh hen Die Auswahl zwischen den beiden ist eine Sache der pers nlichen Pr ferenzen das Kriterium ist wiederum die Einfachheit der Architektur insgesamt zu maximieren Die Erfahrung mit Eiffel speziell mit dem Entwurf der Bibliotheken legt nahe da der systematische Gebrauch des fordernden Stils ziemlich erfolgreich sein kann In diesem Ansatz konzentriert sich jede Funktion darauf einen wohldefinierten Auftrag m glichst gut auszuf hren anstatt zu versuchen jeden erdenklichen Fall zu be handeln Meyer 1992 Im Jahr 1988 schlo ein Konsortium bestehend aus Hilton Hotels Corporation Mar riott Corporation und Budget Rent A Car Corporation einen Vertrag ber ein Gro pro jekt mit AMR Information Services einer Tochterfirma der American Airlines Corporati on Diese Unternehmensberatung sollte ein neues Informationssystem mit dem Namen CONFIRM als ein hochmodernes umfassendes Reiseindustrie Reservierungsprogramm in Kombination von Fluglinien Mietwagen und Hotelinformation entwickeln Ein neu es Unternehmen Intrico wurde speziell f r den Betrieb des neuen Systems gegr ndet Das Konsortium hatte gro e Pl ne den Dienst auch an andere Gesellschaften zu ver markten aber als Hilton das System testete traten gr ere Probleme auf Wegen der Fehlfunktionen k ndigte Intrico eine 18 monatige Verz gerung an Die Probleme konn t
20. nachtr glichen nderungen der anforderungen ergeben 3 Ungef hr 80 prozent der vermeidbaren berarbeitungen gehen auf 20 prozent der fehler zur ck 4 Ungef hr 80 prozent der fehler stammen aus 20 prozent der module und ungef hr die h lfte der module sind fehlerfrei Mehrj hrige messdaten zeigen prozent s tze zwischen 60 und 90 prozent mit einem median bei 80 5 Ungef hr 90 prozent der ausfallzeiten geht auf 10 prozent der fehler zur ck Daten aus neun grossen IBM projekten zeigen sogar auf dass 90 prozent der fehler auf rund 0 3 prozent der fehler zur ckzuf hren sind 6 Inspektionen durch kollegen finden 60 prozent der fehler In mehrj hrigen messdaten fanden sich prozents tze zwischen 31 und 93 prozent mit ei nem median von 60 7 Perspektivenbasierte inspektionen finden 35 prozent mehr fehler als ungerichte te inspektionen Hierbei geht es darum inspektionen nicht allgemein und losgel st von spezifischen problemen durchzuf hren K nnte irgend et was an diesem code nicht in ordnung sein sondern gezielt bestimmte f r die anwendung bzw den auftraggeber wichtige szenarien unter umst nden auf der basis der erfahrung mit lteren fehlerf llen durch zuspielen 8 Disziplinierte pers nliche praktiken k nnen die fehler einf hrungsraten um bis zu 75 prozent senken Zu solchen disziplinierten praktiken geh rt beispiels weise das von Linger 1994 beschriebene Cleanroom Process Model oder de
21. nderung eines variableninhalts praktisch vollkommen un bemerkt vonstatten gehen kann 2 4 Spezifikation von software Beim design by contract spielt der begriff der spezifikation eine grosse rolle Es ist nicht schwierig einzusehen dass in diesem falle spezifikationen um so wertvoller sind je formaler sprich mathematischer sie sind denn nur die mathematische pr zision liefert wirklich unmissverst ndliche spezifikationen Sp ter werden wir noch spezifikationen betrachten die in fr heren phasen der softwarekonstruktion anwendung finden und diese werden kaum formal sein k nnen Pr dikatenlogik zweiter stufe ist selten hilfreich im gespr ch mit mathematisch nicht trainierten kunden Deshalb sind die kontrakte die zwi schen softwareherstellern und ihren kunden geschlossen wurden absolut un vergleichbar mit kontrakten im Meyer schen sinne Copyright Herbert Klaeren 29 Juni 2015 28 2 4 Spezifikation von software Im sinne des geheimnisprinzips ist es notwendig dass spezifikationen einen gewissen freiraum f r unterschiedliche implementierungen lassen die von programmierern gelegentlich vertretene ansicht dass der quelltext eines pro gramms selbst die sch nste spezifikation ist widerspricht dem geheimnisprin zip diametral Was nun kommt ist f r informatiker keine berraschung es gibt speziel le spezifikationssprachen in denen sich der mathematische formalismus ma schinenlesbar notieren l sst und di
22. ngig von der frage ob er f r den erwerb etwas zahlen musste oder nicht besitzt sind laut Stall man 1 Die freiheit das programm zu jedem beliebigen zweck laufen zu lassen 2 Die freiheit zu studieren wie das programm funktioniert und es an die pers nlichen bed rfnisse anzupassen 3 Die freiheit kopien weiterzuverteilen um dem nachbarn zu helfen 4 Die freiheit das programm zu verbessern und die verbesserungen zu pu blizieren so da die ganze gesellschaft davon profitieren kann swfloss tex 10 FREE LIBRE OPEN SOURCE SOFTWARE 203 Dabei ist offensichtlich dafs die zweite und vierte dieser freiheiten voraus setzen da der quelltext des programms verf gbar ist Im wortspielerischen gegensatz zum urheberrecht englisch Copyright spricht Stallman vom Copy left left heisst nicht nur links was durchaus zur politischen haltung der hacker im allgemeinen passt sondern auch hinterlassen und die standard angabe Alle Rechte vorbehalten all rights reserved verwandelt er in all rights reversed alle rechte umgekehrt Hacker wie Stallman lieben wortspiele Dazu passt auch das ge nderte zeichen abb 58 Abbildung 58 Copyleft Der trick mit dem Stallman die verbreitung von freier software f rdert ist n mlich der jeder der unter der GPL software annimmt und ver ndert ver pflichtet sich sie entweder f r sich zu behalten oder aber wenn er sie wei tergeben will unter d
23. ren darstellung wird gar nichts bekannt gemacht ausser dass es typen sind Diese information wird auch unbedingt gebraucht denn sonst lassen sich die schnittstellen der zugeh rigen prozeduren gar nicht aufschreiben Der ver wender der diese module importiert kann deshalb mit variablen dieser opa ken typen auch gar nichts tun ausser sie den zugeh rigen funktionen als argumente anzubieten Das modul Jobs zeigt wie funktionen angeboten wer den die ber die bestandteile einer verborgenen datenstruktur auskunft ge ben Definitionsmodule m ssen wie implementierungsmodule auch vom Mo dula 2 compiler bersetzt werden das ergebnis nennen wir eine symboldatei Bei diesem bersetzungsprozess wird ein jeweils eindeutiger sogenannter mo dulschliissel erzeugt welcher die symboldatei mit dieser version der export schnittstelle verbindet Wie wir noch sehen werden l sst sich auf diese art und weise sp ter garantieren dass bei der verwendung eines moduls dessen im portierte schnittstelle auch wirklich diejenige der aktuellen implementierung ist Nachdem diese definitionsmodule compiliert wurden lassen sich schon mo dule schreiben die diese verwenden auch wenn noch keine einzige zeile des implementierungscodes geschrieben wurde Der compiler kann aber bereits jetzt pr fen ob die syntaktischen eigenschaften vor allem die typen der schnittstellenspezifikation eingehalten wurden und kann auch schon objekt code erzeugen Die impl
24. so ergibt sich erneut eine verz ge rung bis zum zeitpunkt t4 wiederum ein fertiges system abgeliefert werden kann Auch dieses erf llt aber nicht die zum zeitpunkt t3 spezifizierten anfor derungen sodass sich die argumentation hier wiederholt Wir sehen dass es praktisch niemals m glich ist die anforderungen der be nutzer auch nur ann hernd zu erf llen 6 3 Das V modell Kaum besser als das wasserfallmodell ist das V modell das trotz der genann ten schw chen immer noch das vorgeschriebene prozessmodell f r alle IT projekte der deutschen bundesbeh rden inkl der bundeswehr ist H hn und H ppner 2008 Im prinzip ist hier der wasserfall einfach in der mitte geknickt und teilweise nach oben umgelenkt wodurch sich immerhin durch gedachte horizontale verbindungslinien ein bezug zwischen den phasen herstellen l sst Urspr nglich als V Modell 92 publiziert und sp ter aktualisiert zum V Modell 97 grassiert es inzwischen unter der markenbezeichnung V Modell XT wobei XT f r eXtreme Tailoring d h also eine extreme anpassbarkeit steht Abb 43 zeigt das V Modell XT mit den bundeswehr spezifischen erweite rungen Zwei verfahrensweisen werden zur abl sung der software entwicklung ent sprechend einem software lebenslauf vorgeschlagen wir werden sie in den n chsten beiden abschnitten diskutieren fr he prototypen und inkrementeller bau Copyright Herbert Klaeren 29 Juni 2015 138 6 4 Fr he prototypen
25. ufiger betont Etwas weiter im text fordert Vitruv s S 239 vom architekten Deshalb muss er auch erfindungsreich und gelehrig in der ausbildung sein denn we der einfallsreichtum ohne ausbildung noch ausbildung ohne erfindungsgabe k nnen einen vollkommenen k nstler hervorbringen Diese s tze sollte man wahrscheinlich mit goldenen buchstaben ber jede aus bildung in softwaretechnik schreiben Etwas spezifischer sagt Vitruv vor ber 2000 jahren ber den architekten folgendes Er soll viel gelesen haben und erfahren sein mit dem bleistift ausgebildet in geometrie nicht unkundig der optik unterwiesen in arithmetik er wird viel geschichte gelernt haben und die philosophen aufmerksam geh rt haben Er wird musik kennen und nicht unkundig in der medizin sein Er wird die kommentare der rechtsgelehrten kennen und soll astrologie und die massverh ltnisse des himmels kennengelernt haben Zemanek bemerkt dazu dass dies in der tat ein umfassendes programm ist dessen gr sse fast das fehlen jeglicher systematischen ausbildung f r architek ten rechtfertigen k nnte macht sich dann aber sehr stark f r eine solch umfas sende ausbildung auch f r softwaretechniker und computerarchitekten Die breite ausbildung die Vitruv f r einen architekten fordert so Zemanek hat in der tat nicht unbedingt einen direkten einfluss auf die produkte die der archi tekt schaffen kann Vitruv sieht sie eher als vorausbedingung f r eine gewisse
26. 0 01 11 93 __mcount_construct_ 0 1 0 01 11 94 exit 0 0 0 00 11 94 1 0 Man sieht dass die meiste zeit in dem unterprogramm f r die wurzelfunk tion verbracht wird welches fast drei millionen mal aufgerufen wird Das ist auch der grund warum Bentleys programm so langsam lief denn auf der VAX wird typischerweise ein unterprogramm zur n herungsweisen berech nung der quadratwurzel verwendet was dementsprechend langsam ist Auf einer IBM RS 6000 die ber einen schnellen coprozessor verf gt hat sich das programm um den faktor 33 beschleunigt wir brauchen jetzt nur noch knapp 12 sekunden Copyright Herbert Klaeren 29 Juni 2015 168 Unser fehler ist nattirlich dass wir die wurzelfunktion in der innersten schleife aufrufen Das stellen wir jetzt ab int prime int n int i bound bound root n for i 2 i lt bound i if n i 0 return 0 return Damit ergibt sich Name Time Seconds Cumsecs Calls msec call prime 70 4 2 59 2 59 99999 0 0259 __Mmcount 5 7 0 21 2 80 _doprnt 4 3 0 16 2 96 9592 0 017 root 3 0 0 11 3 07 99999 0 0011 fwrite 2 7 0 10 3 17 19184 0 0052 sqrt 2 4 0 09 3 26 __Mmcount 2 4 0 09 34938 _xwrite 1 6 0 06 3 41 9592 0 006 itrunc 1 6 0 06 3 47 _xflsbuf 1 6 0 06 3 53 9592 0 006 main 1 1 0 04 3 57 1 40 memchr 0 8 0 03 3 60 19184 0 0016 strlen 0 8 0 03 3 63 memcpy 0 5 0 02 3 65 printf GL 0 3 0 01 3 66 write 0 3 0 01 3 67 9592 0 001 printf
27. 0 3 0 01 3 68 9592 0 001 exit 0 0 0 00 3 68 1 0 Wir kommen also jetzt schon unter 4 sekunden und finden trotzdem immer noch 9 592 primzahlen Als weitere verbesserung nehmen wir die ersten drei f lle teilbarkeit durch 2 3 und 5 aus der schleife heraus Diese f lle treten so h ufig auf dass es sich hierf r lohnen sollte die schleifeninitialisierung einzu sparen int root int n return int sqrt float n int prime int n int i bound if n 2 0 return n 2 if n 3 0 return n 3 if n 5 0 swtune tex 8 LEISTUNGSVERBESSERUNG VON SOFTWARE 169 return n 5 bound root n for i 7 i lt bound i i 2 if n i 0 return 0 return 1 main int i n n 1000 for i 2 i lt n i if prime i printf d n i A Wie man sieht ist diese einsparung nicht mehr so wesentlich wir bekom men nur noch eine anderthalbfache beschleunigung Name Time Seconds Cumsecs Calls msec call prime 58 8 1 37 1 37 99999 0 0137 _doprnt 6 0 0 14 1 51 9592 0 015 main 6 0 0 14 1 65 1 140 fwrite 5 6 0 13 1 78 19184 0 0068 __Mmcount 5 2 0 12 1 90 strchr 2 6 0 06 1 96 root 2 6 0 06 2 02 26665 0 0023 __Mmcount 2 6 0 06 2 08 itrunc 2 1 0 05 2 13 _Xwrite 2 1 0 05 2 18 9592 0 005 sqrt 1 7 0 04 2 22 memchr 1 3 0 03 2 25 19184 0 0016 write 1 3 0 03 2 28 9592 0 003 printf GL 0 4 0 01 2 29 mcount 0 4 0 01 2 30 _xfl
28. 5 2f n wt_gold printf _ Value_of_gold_pieces _____ on 7 2f n val_gold printf n printf _ Silver pieces oo 2d n num_silver printf _ Weight_of_silver_pieces ooun 5 2f n wt_silver printf _ Value_of_silver pieces ow 7 2f n val_silver printf n printf _ Total_number_of_pieces uu 2d n NR printf ___Value_of_ collection ww 7 2f n total Der aufruf awk f coins awk coins txt liefert dann die ausgabe Summary data for coin collection Gold pieces 9 Weight of gold pieces 6 10 Value of gold pieces 2958 50 Silver pieces 4 Weight of silver pieces 12 50 Value of silver pieces 200 00 Total number of pieces 13 Value of collection 3158 50 9 2 Das werkzeug make Die im letzten kapitel geschilderte situation mit den schnittstellenbeschreibun gen bei Modula 2 zeigt auf dass es h ufig komplexe abh ngigkeiten zwischen dateien geben kann Wird eine schnittstellenbeschreibung M def ge ndert so muss anschliessend die entsprechende symboldatei M sym neu erzeugt wer den Wir sagen M sym h ngt ab von M def Die kompletten spielregeln lassen sich wie folgt beschreiben e Eine symboldatei h ngt ab von ihrem zugeh rigen definitionsmodul so wie von den symboldateien aller in das definitionsmodul importierten module e Ein objektmodul h ngt ab von seinem zugeh rigen implementierungsmo dul seiner zugeh rigen symboldatei sowie von den symboldate
29. A Za z 012 verwandelt alle folgen s wie single von zei chen die keine buchstaben sind c wie complement in je einen einzigen line feed 3 tr A Z a z verwandelt alle grossbuchstaben in kleinbuchstaben sort sortiert diese zeilen alphabetisch 5 uniq c eliminiert aufeinanderfolgende identische zeilen und f gt am en de die zahl gefundener gleicher zeilen an gt Bentley geht wie alle Amerikaner davon aus dass texte in US ASCII geschrieben werden Will man auch mit umlauten umgehen k nnen w rde man in den tr anweisungen jeweils statt A Z und a z die wendungen upper und lower verwenden swtool tex 9 SOFTWAREWERKZEUGE 177 6 sort r n sortiert diese zeilen in absteigender r wie reverse numeri scher n folge und 7 sed 15q listet die ersten 15 zeilen der ergebnisdatei Bezogen auf das vorliegende skriptum ergibt sich brigens hieraus 1721 die 1499 der 965 in 949 und 758 von 625 ist 594 zu 576 das 495 werden 473 eine 418 dass 415 es 402 den 400 ein 370 auf Wie kaum anders zu erwarten sind die h ufigsten w rter nicht gerade die am meisten bedeutungstragenden Ich stelle hier anstelle von IDEs lieber individuelle softwarewerkzeuge vor weil sie einfacher zu beschreiben sind als komplexe werkzeugk sten und weil man hier noch besser erkennen kann wie die mechanismen funktionieren Letztlich kann man die IDEs nicht wirklich verstehen wenn einem die grund legenden
30. Boolean equations Top Push s i i Pop Push s i s IsEmpty Clear True IsEmpty Push s i False end Abbildung 13 Algebraische spezifikation eines abstrakten datentypen Als beispiel betrachten wir den ADT kellerspeicher f r den es zahlreiche verwendungen und unterschiedliche implementierungen gibt Es sollte keine rolle spielen welche art von informationen im keller gespeichert wird dies stellt sozusagen einen parameter f r den ADT dar Will man die gr sste all gemeinheit der implementierung wird man vermutlich eine verzeigerte liste bevorzugen Ein eintrag im keller ist dann immer ein paar bestehend aus ei nem element und einem zeiger auf den restlichen keller Beim leeren Keller ist dies der nullzeiger und das element ist undefiniert Zum einspeichern eines neuen elements wird platz alloziert der alte zeiger in das element eingespei chert und der kellerzeiger auf das neue element umgestellt Das top element des kellers findet sich immer unter dem kellerzeiger und das entfernen des obersten elements wird durch ersetzen des kellerzeigers durch den unter ihm Copyright Herbert Klaeren 29 Juni 2015 50 3 3 Modularisierung durch datenabstraktion zu findenden restzeiger bewerkstelligt Diese implementierung ist allerdings nicht sonderlich effizient weswegen normalerweise die darstellung durch ein feld mit index bevorzugt wird Dann hat der kellerspeicher aber eine maxima le kapazit t die nicht b
31. CUSUMANO Michael A SELBY Richard W Microsoft Secrets How the World s Most Powerful Software Company Creates Technology Shapes Markets and Manages People New York The Free Press Simon amp Schuster 1995 Cusumano und Selby 1996 CUSUMANO Michael A SELBY Richard W Die Microsoft Methode Sieben Prinzipien wie man ein Unternehmen an die Welt spitze bringt Freiburg Rudolf Haufe Verlag 1996 Cusumano und Selby 1997 CUSUMANO Michael A SELBY Richard W How Microsoft Builds Software In Communications of the ACM 40 1997 Nr 6 S 53 61 Davis 1994 Davis Alan M Fifteen Principles of Software Engineering In IEEE Software 11 1994 Nr 6 S 94 96 101 Davis u a 1988 DAvis Alan M BERSOFF E COMER E A Strategy for Comparing Alternative Software Development Life Cycles In IEEE Tran sactions on Software Engineering 14 1988 Nr 10 S 1453 1460 Descartes 1637 DESCARTES Ren Discours de la M thode pour bien conduire sa raison et chercher la verit dans les sciences Paris 1637 Drake 1996 DRAKE Thomas Measuring Software Quality A Case Study In IEEE Computer 29 1996 Nr 11 S 78 87 Copyright Herbert Klaeren 29 Juni 2015 250 LITERATUR Dunsmore u a 2003 DUNSMORE Alastair ROPER Marc WOOD Murray Practical Code Inspection Techniques for Object Oriented Systems An Ex perimental Comparison In IEEE Software 20 2003 Nr 4 S 21 29 Dworschak 2009 DWORSCHAK Manfred
32. Dem gegen ber stehen die Pflichten des softwareentwicklers Du hast die pflicht e zu verstehen was ben tigt wird und warum es die priorit t deines auf traggebers ist e Qualit tsarbeit abzuliefern auch wenn man dich n tigt das gegenteil zu tun swll tex 6 VORGEHENSMODELLE FUR DIE SOFTWAREENTWICKLUNG 149 e andere zu betreuen und alle fertigkeiten und kenntnis die du vielleicht hast zu teilen e deine absch tzungen so genau wie m glich zu machen zu wissen wenn du hinter dem plan zur ckbleibst woran das liegt und wie du den plan m glichst schnell so ndern kannst dass er der realit t entspricht e die konsequenzen deiner aktionen zu tragen http c2 com cgi wiki DeveloperBill0fResponsibilities Aug 2006 Auch der auftraggeber hat rechte Rechte des auftraggebers Du hast das recht e die priorit t einer jeden user story f r dein unternehmen festzulegen e einen berblicksplan zu bekommen zu wissen was erreicht werden kann wann und zu welchen kosten e aus jeder programmierwoche den maximalen gegenwert zu erhalten e fortschritt in einem laufenden system zu sehen das nachweislich funktio niert indem es wiederholbare tests besteht die du spezifizierst e entwickler ber nderungen in den anforderungen zu beraten e ber zeitplan nderungen so fr h informiert zu werden dass du entschei den kannst wie die funktionalit t reduziert werden kann um das ur spr ngliche datum wieder zu erreich
33. Dynamische analyse testen Sneed 1988 teilt testtechniken entsprechend einer von Miller und Howden vorgegebenen terminologie in zwei hauptkategorien ein statische analyseme thoden und dynamische analysemethoden Nach heutiger terminologie w rde ich die statischen analysemethoden eher zum thema inspektionen z hlen das wir noch danach behandeln Die meisten leute d rften unter testen dyna mische analysemethoden verstehen bei denen man das programm tats chlich laufen l sst Dabei spielt der begriff des testfalls eine grosse bedeutung Wir verstehen unter einem testfall zun chst einmal eine bestimmte kombination von eingabedaten in zweiter linie dann aber auch die dazugeh rigen ausga bedaten bzw systemreaktionen Gem ss der zuvor erw hnten beobachtung dass wir durch testen stets nur die anwesenheit von fehlern nachweisen k nnen aber nicht deren abwesenheit sprechen wir von einem erfolgreichen testfall dann wenn es gelungen ist mit seiner hilfe einen fehler nachzuweisen anderenfalls war der testfall erfolglos Wir werden im folgenden drei grunds tzlich verschiedene dynamische test methoden besprechen die allesamt irgendwo ihre berechtigung haben Ablaufbezogenes testen hier bildet der prozedurale ablauf die basis f r die ermittlung der testf lle d h ein testfall wird mit der absicht konstruiert bestimmte abl ufe im programm zu provozieren Copyright Herbert Klaeren 29 Juni 2015 112 5 4 Dynamische
34. Grad zu dem ein system produkt oder eine komponente wie geplant funktioniert trotz der gegenwart von hardware oder softwarefehlern Flexibilit t flexibility Grad zu dem ein produkt oder system mit effektivit t effizienz risikofreiheit und befriedigung ber die anf nglich in den anfor derungen spezifizierten einsatzkontexte hinaus benutzt werden kann Funktionale angemessenheit functional appropriateness Grad zu dem ein produkt oder system die erf llung spezifizierter aufgaben und ziele er leichtert Funktionale eignung functional suitability Grad zu dem ein produkt oder system funktionen bereitstellt die ausgedr ckte und implizierte bed rf nisse befriedigen wenn sie unter den spezifizierten bedingungen ge braucht werden Funktionale korrektheit functional correctness Grad zu dem ein produkt oder system die korrekten resultate im notwendigen pr zisionsgrad lie fert swprop tex B NICHTFUNKTIONALE EIGENSCHAFTEN VON SOFTWARE 223 Funktionale vollstandigkeit functional completeness Grad zu dem die funk tionen alle spezifizierten ziele und zielvorgaben der benutzer erf llen Glaubw rdigkeit authenticity Grad zu dem bewiesen werden kann dass die identit t eines gegenstands oder einer ressource mit der behaupteten bereinstimmt Integrit t integrity Grad zu dem ein system produkt oder eine komponente unberechtigten zugriff auf oder modifikation von computerprogrammen oder daten verhindert I
35. Klaeren 29 Juni 2015 146 6 6 Agile methoden die wie folgt in vier kategorien eingeteilt werden die einteilung findet sich im Wiki Der komplette englische text findet sich im anhang E e Feingranulare r ckkopplung TDD TestDrivenDevelopment Testgetriebene entwicklung mit unit tests und customer tests auch akzeptanztests genannt PG PlanningGame Planungsspiel WT WholeTeam Ganzheitliche mannschaft PP PairProgramming Programmieren in paaren e Stetiger prozess statt schubweise bearbeitung CI ContinousIntegration Stetige integration DI DesignImprovement Entwurfsverbesserung SR SmallReleases Kleine releases e Gemeinsames verst ndnis SD SimpleDesign Einfacher entwurf DoSimpleThings You ArentGon naNeedIt OnceAndOnlyOnce SimplifyVigorously SM SystemMetaphor System metapher CCO CollectiveCodeOwnership Gemeinsames eigentum am code CS CodingStandard Programmiernorm oder programmierkonven tionen e Wohlergehen der programmierer SP SustainablePace Nachhaltige geschwindigkeit Von der tests first devise sprachen wir schon Dabei sind die unit tests diejeni gen testf lle welche von den programmierern geschrieben werden bevor sie code implementieren und es sollte an dieser stelle bemerkt werden dass alle diese testf lle aufgehoben werden und als regressionstests sp testens vor jedem release der software erneut durchgef hrt werden Die akzeptanztests sind di
36. Normalerweise kostet effizienz geld sicherheit er h ht die komplexit t verbesserte leistung erh ht das gewicht Die l sung des ingenieurs ist Copyright Herbert Klaeren 29 Juni 2015 8 1 3 Software ist anders die optimale l sung das endresultat das unter ber cksichtigung vieler faktoren das wiin schenswerteste ist Es kann das zuverlissigste innerhalb einer gegebenen gewichtsgrenze sein das einfachste welches gewisse sicherheitsanforderungen erfiillt oder das effizienteste zu gegebenen kosten Eine sehr lesenswerte diskussion von entwurfsentscheidungen findet sich auch bei Colwell 2004 der als chefentwickler der Pentium prozessor reihe mit vielen ingenieursfragen besch ftigt war Colwell schreibt unter anderem Eins der dinge welche die t tigkeit des ingenieurs so interessant machen abgese hen von der tatsache dass man daf r bezahlt wird ist das wechselspiel zwischen so vie len widerspr chlichen einfl ssen merkmale leistung technik risiko zeitplan f higkeiten des entwicklerteams und wirtschaftlichkeit Du kannst eine perfekte abstimmung zwischen diesen allen finden und trotzdem erfolglos bleiben weil du etwas entworfen hast das die k uferschicht zuf llig nicht haben will 1 3 Software ist anders Versucht man all dieses fortzudenken auf entwurf und entwicklung von pro grammsystemen so merkt man sehr bald dass sich softwaretechnik grund s tzlich von den klassischen ingenieurdisz
37. P FREDERIKSEN Lars SO Bryan An empirical study of the reliability of Unix utilities In Communications of the ACM 33 1990 Nr 12 S 32 44 Millsap 2010 MILLSAP Cary Thinking Clearly about Performance In Queue 8 2010 Nr 9 S 10 20 ISSN 1542 7730 Myers 1979 MYERS G The Art of Software Testing J Wiley 1979 Naur und Randell 1969 NAUR Peter Hrsg RANDELL Brian Hrsg Soft ware Engineering Report on a conference sponsored by the NATO Science Commit tee Garmisch Germany 7th to 11th October 1968 Bruxelles NATO Scientific Affairs Division January 1969 Neumann 1987 NEUMANN Peter G Risks to the Public in Computers and Related Systems In ACM Software Engineering Notes 12 1987 Nr 1 S 3 Neumann 1988 NEUMANN Peter G Risks to the Public in Computers and Related Systems In ACM Software Engineering Notes 13 1988 Nr 4 S 3 Neumann 1989 NEUMANN Peter G Risks to the Public in Computers and Related Systems In ACM Software Engineering Notes 14 1989 Nr 1 S 6 9 Neumann 1995a NEUMANN Peter G Computer Related Risks Addison Wesley 1995 ISBN 0 201 55805 X Neumann 1995b NEUMANN Peter G Risks to the Public in Computers and Related Systems In Software Engineering Notes 20 1995 Nr 5 S 8 Neville Neil 2008a NEVILLE NEIL George V Code Spelunking Redux In Communications of the ACM 51 2008 Nr 10 S 36 41 Neville Neil 2008b NEVILLE NEIL George V Latency a
38. X 83 95 97 X X 85 97 99 X X X 95 99 99 99 gt lt lt x Tabelle 10 Kombinierte wirkung von QS strategien auf dass die besseren zahlen praktisch nur mit hilfe formeller entwurfsinspek tionen zu erzielen sind kombiniert man diese noch mit formellen inspektio nen des programmcodes so erreicht man bereits die genannten 85 effizienz Nimmt man jetzt noch formelles testen der software hinzu so kommt man bereits auf 99 was als ausgezeichnet zu betrachten ist 5 7 Value driven testing 2 Um die wirtschaftlichkeit von tests zu belegen entwickeln Sneed und Jung mayr 2011 fiir den testaufwand die formel Dabei bedeutet swkorr tex 5 SOFTWAREQUALIT T 127 A Testaufwand AF Korrekturfaktor Standardwert 1 TF Anzahl der Testf lle TU Test berdeckung TP manuelle Testproduktivit t TA Testautomatisierungsgrad TE Skalierungsexponent Standardwert 1 03 MT mittlere Testbarkeit TB Testbarkeitsmetrik Standardwert 0 45 AF TE MT und TB sind erfahrungswerte die ber die zeit hin durch ge messene werte verbessert werden m ssen TF ergibt sich aus der anzahl der anweisungen im zu testenden programm Sneed und Jungmayr 2011 be haupten dass ca ein testfall pro 20 zeilen eines modernen objektorientierten programms notwendig ist TU gibt an welcher prozentsatz dieser theoretisch n tigen testf lle wirklich durchgef hrt werden soll Die
39. absteigenden CPU sekunden geordnet so dass die grossver braucher am anfang der liste besonders ins auge fallen In der spalte Cum secs cumulative seconds sind zur vermeidung besonderer rechnungen die Seconds werte bis zur gegenw rtigen zeile aufsummiert Wir erkennen dass dieser programmlauf insgesamt 401 66 sekunden gedauert hat also reich lich sechseinhalb minuten Zwei weitere spalten Calls und msec call geben die anzahl der aufrufe und die durchschnittlichen millisekunden pro einzelnem aufruf an Wir sehen dass die 99 999 aufrufe der funktion prime durchschnittlich rund 4 millisekunden verbraucht haben und dass wir ins gesamt 9 592 primzahlen gefunden haben F r die vom linker eingebunde nen bibliotheksfunktionen erhalten wir diese angaben nicht da die bibliothe ken aus effizienzgr nden ohne messoptionen bersetzt wurden Bei manchen programmierer freundlichen Unixen kann man durch eine linker option alter native bibliotheken mit messfunktionen einbinden lassen Nun die versprochenen zahlen f r das modifizierte programm Name Time Seconds Cumsecs Calls msec call root 28 3 3 38 3 38 2755286 0 0012 prime 21 4 2 55 5 93 99999 0 0255 sqrt 18 7 2 23 8 16 __mcount 17 0 2 03 10 19 itrunc 12 5 1 49 11 68 __mcount 0 7 0 08 11 76 _doprnt 0 4 0 05 11 81 9592 0 005 mcount 0 4 0 05 11 86 strchr 0 3 0 03 11 89 main 0 2 0 02 11 91 1 20 printf 0 1 0 01 11 92 9592 0 001 strlen 0 1
40. analyse testen Datenbezogenes testen hier werden testf lle auf der basis der datenbeschrei bungen konstruiert Meist wird dabei aber auf die berpr fung der ein ausgaberelation verzichtet Funktionsbezogenes testen hier dient die funktionale beschreibung bzw die spezifikation als basis f r die ermittlung von testf llen Back to back testen hier werden zwei verschiedene versionen des pro gramms in ihrem verhalten gegeneinander verglichen Ausserdem unterscheiden wir beim testen gerne die hauptkategorien black box test Das quellprogramm wird nicht ben tigt bzw ist nicht verf g bar white box test Das quellprogramm wird zum test mitverwendet Bei manchen softwareentwicklern haben white box tests die h here reputati on einer hat das in die worte gekleidet Das programm hat ein recht angeh rt zu werden Die sp ter hier noch anzusprechenden inspektionsmethoden ge hen nur von dem quelltext des programms aus ohne es laufen zu lassen wie sich zeigt sind diese methoden in summa erfolgreicher als alle teste 5 4 1 Ablaufbezogenes testen Beim ablaufbezogenen testen auch structured testing genannt steht der ab laufgraph des zu testenden programms im vordergrund Bei der auswahl von testf llen geht es darum m glichst viele pfade durch das programm zu er zwingen Man spricht hier von einer pfad berdeckung coverage Dieser ansatz wurde erstmals 1975 von Miller vorgeschlagen der ein werkzeug ge
41. auf eine h ufig angetroffene situation eingestellt Ein soft wareanbieter verteilt programme in quellform diese werden lokal weiterent wickelt bzw modifiziert Nun sollen f r den fall eines neuen releases durch den softwareanbieter die seit dem letzten release lokal vorgenommenen n derungen auf den neuen quellen wiederum nachgezogen werden Es leuchtet ein dass auch dies wie das mischen von parallel erfolgten nderungen eine anspruchsvolle aufgabe ist CVS war wie seine vorg ngersysteme darauf abgestimmt einzelne dateien zu verwalten aber nicht ganze projekte Nat rlich ist ein ganzes projekt immer eine sammlung einzelner dateien aber einige aufgaben in der verwaltung von pro jekten sind nur schwierig zu bew ltigen wenn man sich auf einzelne dateien konzentriert e Schwierigkeiten macht CVS beim umbenennen von dateien und beim ver schieben von dateien aus einem verzeichnis in ein anderes F r CVS l sst sich beides nicht anders beschreiben als dass eine datei gel scht und eine andere neu der versionshaltung hinzugef gt wird beides hat aber nega tive auswirkungen auf die darstellung der projektgeschichte gt 1Ein geschickter administrator k nnte aber auch unter umgehung des CVS im repositorium Copyright Herbert Klaeren 29 Juni 2015 C 3 Geschichte der versionshaltung e Ein weiteres problem beim CVS sind die non atomic commits Angenom men ein programmierer hat eine gewisse menge von dateien ge ndert un
42. bed rfnisse der benutzer befrie digt werden wenn das produkt oder system im spezifizierten gebrauchs kontext eingesetzt wird Das andere ist das fehlen geeigneter werkzeuge missing tools crisis Copyright Herbert Klaeren 29 Juni 2015 222 Brauchbarkeit usability Grad zu dem ein produkt oder system von spezifi zierten benutzern gebraucht werden kann um spezifizierte ziele mit ef fektivit t effizienz und befriedigung in einem spezifizierten einsatzkon text zu erreichen Effektivitat effectiveness Genauigkeit und vollstandigkeit mit dem die benut zer spezifizierte ziele erreichen Effizienz efficiency Abw gung des aufwands im vergleich zur genauigkeit und vollst ndigkeit mit der benutzer ziele erreichen Erkennbarkeit der Angemessenheit appropriateness recognizability Grad zu dem benutzer erkennen k nnen ob ein produkt oder system f r ihre be d rfnisse angemessen ist Erlernbarkeit learnability Etwas kompliziert formuliert Grad zu dem ein produkt oder system von spezifizierten benutzern benutzt werden kann um spezifizierte ziele zu erreichen wie sie lernen das produkt oder sy stem mit effektivit t effizienz risikofreiheit und befriedigung in einem spezifizierten einsatzkontext nutzen k nnen Ersetzbarkeit replaceability Grad zu dem ein produkt ein anderes spezifi ziertes softwareproduct zum gleichen zweck in der gleichen umgebung ersetzen kann Fehlertoleranz fault tolerance
43. bei einem vollautomatisierten test ist immer noch erfahrungsgem ss mindestens 25 menschliche arbeit f r die vorbereitung und die sp tere kontrolle der auswertung notwendig so dass der automatisie rungsfaktor maximal 0 75 sein wird Wir werden in abschnitt 5 7 nochmals auf den test ROI zur ckkommen 5 2 Fehlerdichte Wir messen h ufig die fehlerdichte eines programms in fehlern pro kLOC Es gibt untersuchungen von 1994 bei denen bis zu 25 fehler pro tausend pro grammzeilen gefunden wurden Das klingt sehr viel bedeutet aber bezogen auf die programmzeilen nur eine fehlerquote von 2 5 Sneed und Jungmayr 2011 zitieren aktuelle fehlerraten aus dem jahr 2006 die wir hier auszugsweise in tab 5 wiedergeben Copyright Herbert Klaeren 29 Juni 2015 108 5 2 Fehlerdichte Bereich mittl fehler kLOC Milit r Raumfahrt 0 4 Milit r Luftfahrt 0 5 Milit r Boden 0 8 Eingebettete Systeme 1 0 Automatisierungstechnik 5 0 Finanzwirtschaft 6 0 Telekommunikation Switching 6 0 IT Systeme Datenbanken 8 0 Webapplikationen 11 0 Tabelle 5 Fehlerraten nach branche in den USA Wirklich gute software hat heute etwa zwei bis drei fehler pro tausend zei len also eine fehlerquote von zwei bis drei promille Es geht aber noch besser Von einem hersteller medizinischer ger te weiss ich dass dort nur ca 2 feh ler pro zehntausend zeilen gemacht werden brigens zeigt ein Buch von Holzmann 2003 dass erfahrene progra
44. berechnung wird an einem beispiel vorgef hrt 100 000 anweisungen ergibt 5000 testf lle test berdeckung TU 67 testproduktivit t TP 4 testf lle pro tag automatisierungsgrad TA 40 Angenommen wird ausserdem eine fehlerrate von 6 fehlern pro 1000 anwei sungen das ergibt insgesamt 600 fehler die zun chst im produkt verbleiben Die berechnung des aufwands ergibt also 5000 0 67 0 5 2 3350 T 4 4 1 0 4 0 451 6 4 pe Es sind also f r diese vorgaben 700 personentage fiir den test vorzusehen Nun kann die eigentliche berechnung des test ROI beginnen Dazu treffen wir die folgenden zus tzlichen annahmen A 1 e Bedienung des systems durch 100 sachbearbeiter die 40 EUR je stunde verdienen e schwere systemausf lle legen das system f r eine stunde lahm leichte systemausf lle f r eine halbe stunde 10 der fehler f hren zu einem schweren systemausfall e falsche ergebnisse treten bei 50 der fehler auf und kosten im schlimmsten fall jeden sachbearbeiter eine halbe stunde im g nstigsten fall nur 10 der sachbearbeiter eine halbe stunde e entwickler kosten 800 EUR pro tag Copyright Herbert Klaeren 29 Juni 2015 128 5 8 Verifizieren e tester kosten 720 EUR pro tag W rden die 600 fehler im produkt verbleiben so g be es also 60 ausf lle und 300 falsche ergebnisse die kosten beim kunden w ren im schlimmsten fall 60 100 40 EUR 300 50 40 EUR 840 000 EUR
45. bereits vor der eigentlichen sitzung billige papier implementierungen von graphischen wid gets men s fensterinhalten dialogboxen etc entwerfen je nachdem wie gut das problem bereits verstanden wurde Eine testsitzung des prototypen invol viert dann mindestens vier personen abb 46 n mlich 1 den benutzer der auf einer vorbereiteten arbeitsfl che anhand der papier prototypen eine programmsitzung zu simulieren versucht 2 einen eigenen betreuer englisch facilitator der den benutzer durch swll tex 6 VORGEHENSMODELLE FUR DIE SOFTWAREENTWICKLUNG 141 Abbildung 46 Lo fi prototype setup seine aufgabe f hrt ihm fragen stellt und seine gedanken bei den arbeits l ufen zu erkunden sucht 3 einen sog computer der in grosser geschwindigkeit mit den vorbereite ten k rtchen hantiert oder im bedarfsfall neue anfertigt und entsprechend den w nschen des benutzers die arbeitsfl che modifiziert und 4 einen beobachter der sich ber die ereignisse und beobachtungen notizen anfertigt Auch die notizen werden auf k rtchen notiert jeweils eine beobachtung pro karte sodass sie nach der sitzung problemlos nach sachgebieten geordnet werden k nnen Zur vermeidung irgendwelcher missverst ndnisse zeichnet eine videokamera alle vorg nge auf der arbeitsfl che und die dazu gesproche nen kommentare auf 6 5 Inkrementeller bau Beim inkrementellen bau versucht man zun chst ein ganz schmales sys
46. bindung liegt vor wenn ein modul berhaupt nur eine ein zige prozedur exportiert 4 Modulkopplung coupling Modulkopplung ist ein mass daf r wie stark die einzelnen module eines systems voneinander abh ngig sind Kopp lung ist eine eigenschaft zwischen je zwei modulen eines systems Datenkopplung liegt vor wenn die argumentlisten der prozeduren des untergeordneten moduls nur primitive datenelemente beinhalten ADT kopplung liegt vor wenn die argumentlisten komplexe datenstruk turen beinhalten und somit das untergeordnete modul diesen daten typ ebenfalls kennen muss Steuerkopplung liegt vor wenn bestimmte argumente nur dazu ver wendet werden um im untergeordneten modul bestimmte pfade im steuerfluss auszuw hlen z B OPEN filename false ergibt feh lermeldung wenn filename nicht existiert OPEN filename true legt filename neu an falls es noch nicht existiert Externe kopplung liegt vor wenn module ber globale datenbereiche ausserhalb der modulstruktur kommunizieren Inhaltskopplung liegt vor wenn das bergeordnete modul details der implementierung des untergeordneten moduls verwendet Copyright Herbert Klaeren 29 Juni 2015 56 3 6 API Entwurf 3 6 API Entwurf Henning 2007 weist darauf hin wie wichtig entwurfsfragen gerade im zu sammenhang mit APIs Application Programmer s Interfaces sind hier muss berlegt werden in welchen zusammenh ngen die funktionen einer bi bl
47. dem slogan software is soft ausdr cken l sst die scheinbar leichte und kostenlose nderbarkeit von software Wenn ein bauingenieur ein bestimmtes geb ude geplant und durchge rechnet hat ist sp testens in dem moment wo die fundamente oder die ersten betondecken gegossen sind klar dass man nicht noch zwei zus tz liche stockwerke aufsetzen oder eine tragende wand weglassen oder ver setzen kann ohne dass sehr hohe kosten f r den abriss von bereits ge bautem sowie gr ssere verz gerungen auftreten In der softwarebranche ist es jedoch noch durchaus blich aufgaben ziele und umfang eines sy stems oft selbst im letzten moment radikal zu ndern weil es ja scheinbar so einfach ist es brauchen ja bloss ein paar softwaremodule umgruppiert ge ndert bzw neu geschrieben werden das ganze produkt steht ja letzt lich immer nur auf dem papier bzw auf dateien 1 3 1 Die arbeitswelt des softwareingenieurs Sicher ist die frage berechtigt inwiefern diese vorlesung etwas mit dem be rufsleben des informatikers zu tun hat denn die folgenden beobachtungen sind nicht von der hand zu weisen 1 Die anpassung existierender software kommt h ufiger vor als das schreiben neu er systeme Software ist teuer und wird von den firmen die sie einsetzen als investitionsgut betrachtet Es mag f r den PC hobbyisten befremdlich sweinf tex 1 EINF HRUNG WAS IST SOFTWARETECHNIK 11 wirken dass beispielsweise im rahmen des J
48. der quellprogramme statt in dem sinne dass dann keine neuen vorrichtungen mehr in den code eingef hrt werden sondern le diglich fehler beseitigt werden Cusumano 2007b macht sich aus betriebswirtschaftlicher sicht gedanken um die strategie von Microsoft f r die n chsten jahre Dabei macht er sich vor allem sorgen um das wachsende alter der Microsoft firmenf hrung Can a veteran leadership team envision the future of the changing software business before it happens and make the foresighted kinds of investments that have brought so much recent attention to Google Apple and Web 2 0 entrants such as YouTube Figuring out how to build the next version of Windows the operating system however difficult that may be seems trivial in comparison to building the next version of Microsoft the company Kritisiert werden von Cusumano allerdings in gleichem atemzug die hohen ausgaben fiir forschung und entwicklung 2006 hat Microsoft 15 seines Ein kommens 6 6 milliarden Dollar daf r ausgegeben ohne dass dadurch ent sprechende innovationen in den produkten zu erkennen seien Microsoft m s se lernen sein geld gezielter auszugeben statt es mit der giesskanne ber alle stellen zu verteilen die auch nur einigermassen erfolgversprechend seien Den augenblicklichen trend in der softwarebranche die eigentliche softwa re regelrecht zu verschenken und dann von erweiterten leistungen service beratung zu leben wie er von IBM und SAP vorge
49. des einen programms sofort als eingabe des n chsten verwendet werden ohne dass die pro gramme auf diese art der kooperation eigens eingerichtet sein m ssen Wenn es sich herausstellt dass eine bestimmte aufgabe nicht von den Unix werkzeugen erledigt werden kann ist es h ufig sehr einfach ein relatives klei nes und bersichtliches programm zu schreiben das sich ber den mechanis mus der pipe zu einer werkzeugkette kombinieren l sst welche das vorliegen de problem l st brigens sei am rande auch bemerkt dass die werkzeuge von Unix haupt s chlich deshalb so gut sind weil sie auf soliden und universell einsetzbaren konzepten aus der theoretischen informatik basieren Eine intensive besch f tigung mit der theorie ist deshalb im gegensatz zur landl ufigen meinung vieler studierender essentiell f r einen erfolg in der praxis Eine sehr gu te einf hrung in die Unix ideologie mit vielen interessanten beispielen findet sich bei Raymond 2003 Ein kleines bersichtliches beispiel schildert Bentley 1986 Angenommen wir wollen wissen welches die 15 h ufigsten w rter in einem auf viele dateien verteilten textdokument sind und wie h ufig jedes dieser w rter vorkommt Der Unix programmierer w rde diese aufgabe sehr schnell mit einer pipe erledigen cat tr cs A Za z 012 tr A Z a z sortluniq clsort r n sed 15q Die erkl rung daf r folgt 1 cat verkettet alle dateien in eine einzige 2 tr cs
50. die vorbedingung hinein schreibt und damit dem kunden als beweisverpflichtung aufgibt und welchen teil man dann doch innerhalb der funktion selbst berpr ft ist eine entwurfs entscheidung s anh E S 241 aber der sogenannte fordernde stil demanding style bei dem die vorbedingungen m glichst aggressiv formuliert werden hat sich in der praxis seiner ansicht nach bew hrt Etwas spezifischer ist der fordernde stil durch die folgenden prinzipien cha rakterisiert Non rendundancy principle Methoden pr fen niemals ihre vorbedingun gen da diese bereits vom aufrufer berpr ft wurden Copyright Herbert Klaeren 29 Juni 2015 26 2 3 Bestandteile eines Moduls Reasonable precondition principle Eine methode verlangt an vorbedingun gen gerade so viel wie sie f r ihre arbeit braucht aber nicht mehr Die notwendigkeit der vorbedingung ergibt sich also aus der spezifikation Precondition availability principle Es muss m glich sein die vorbedingung im namensraum des aufrufers zu formulieren d h dem aufrufer sind alle begriffe verf gbar die er f r die berpr fung der vorbedingung braucht Dies bedeutet insbesondere dass keine details der implementierung ver wendet werden k nnen da dies auch dem geheimnisprinzip widerspre che w rde Es ergibt sich daraus nat rlich logischerweise auch dass dies f r die nachbedingung ebenfalls gelten muss Die frage des austauschens eines moduls M gegen ein modul M k nnen
51. diese listen auch wenn sie ber l ngere zeitr ume unver ndert bleiben vor jedem aufruf kopiert werden was umst ndlich ist und nicht gut skaliert Ein zweites problem ist dass die liste der sockets in der errorList in der re gel die vereinigung der sockets der readList und der errorList ist Wenn ein server also je 100 sockets f r das lesen und schreiben berwachen soll dann muss er in jedem schleifendurchlauf 400 listenelemente kopieren Das dritte swentw tex 3 SYSTEMENTWURF 57 problem ist dass zwar als viertes argument ein timeout in mikrosekunden angegeben wird aber dass Select den r ckgabetyp void hat also nicht ge sondert mitteilt ob berhaupt irgendeiner der sockets bereit gewesen ist Dem anwendungsprogrammierer bleibt also nichts anderes brig als die l nge aller drei listen zu berpr fen um festzustellen ob berhaupt irgendetwas zu tun ist Schlimmer noch auch wenn gar nichts auf irgendeinem der sockets pas siert ist hat Select die argumentlisten zerst rt so dass sie erneut kopiert werden m ssen Eine sinnvollere schnittstelle f r Select w re die folgende gewesen public static int Select ISet checkRead ISet checkWrite Timespan seconds out ISet readable out ISet writeable out Set error gt Offensichtlich hat der entwerfer der schnittstelle in NET nicht darauf r ck sicht genommen wie diese funktion denn sp ter verwendet werden soll Konkret gibt He
52. dieses Telefon ist ja eine Metapher auf die Kapitalismuskritik Auswahl gibt es gewiss nur das was der Mensch wirk lich braucht ist nicht dabei n mlich dir endlich deine neuen Nachrichten vorspielen Briiderchen Ich habe Weiter h ren gew hlt Der Anrufbeant worter spielte Nachricht Nummer zwei vor Das hat mir nicht gen gt Wir wol len alles In der Hoffnung die erste Nachricht zu erfahren habe ich nochmals den Knopf Weiter gedr ckt Jetzt erschienen auf dem Display f nf Bildchen es waren eine Musiknote eine Aktentasche eine Uhr ein Schraubenschl ssel und eine Art Fernseher Also w hlte ich aus Neugierde den Fernseher Jetzt erschienen potz Blitz die Worte Anrufbeantwort und Anruferliste auf dem Display Klar ich habe Anrufbeantwort gedr ckt Das Telefon spielte nun aber keineswegs Nachricht eins ab sondern bot wieder vier M glichkei ten an Nachrichten Infos Ansagen und AB Ausschalten Ich w hl te Nachrichten worauf das Telefon anbot Neue Nachrichten und Alle Nachrichten Da dachte ich fuck you you phone of a bitch Ich habe die Ta gesschau geguckt Da kommen auch Nachrichten Vielleicht sollte ich erw h nen dass es ein Telefon von Siemens ist Nein verbittert bin ich berhaupt nicht Dies alles werde ich eines Tages in den Griff bekommen Copyright Herbert Klaeren 29 Juni 2015 216 A 2 LEBENSZEICHEN swui tex B N
53. distribution Distribution SL sublicensing Erteilung von sublizenzen PG patent grant Patenterteilung Copyright Herbert Klaeren 29 Juni 2015 206 PU CU MO DI SL PG Apache v2 X X XIXIX GPL v2 X xX X X MIT License X X XIX Mozilla Public License 2 0 X X XIXIX LGPL v2 1 X X IXIXIX BSD 3 clause X X XIX Artistic License 2 0 X X XIXIX GPL v3 X XIX X LGPL v3 X xX IXIXIX Affero GPL X X X Public Domain Unlicense X X X X X GitHub no license X X Eclipse Public License v1 0 XIXIXIX IX BSD 2 clause X X XIX Verboten Hier bedeutet HL hold liable Haftung UT use trademark Namen logos oder warenzeichen d rfen nicht ver wendet werden SL sublicensing Erteilung von unterlizenzen MO modification DI distribution Distribution UT SE MO DI Apache v2 GPL v2 MIT License Mozilla Public License 2 0 LGPL v2 1 BSD 3 clause Artistic License 2 0 GPL v3 LGPL v3 Affero GPL Public Domain Unlicense GitHub no license Eclipse Public License v1 0 BSD 2 clause KERAKKA Sel x x Ob alle diese verschiedenen lizenzmodelle einen irgendwie gearteten sinn ergeben oder in dieser vielfalt wirklich n tig sind mag dahingestellt bleiben swfloss tex 10 FREE LIBRE OPEN SOURCE SOFTWARE 207 Die GPL ist wie alle lizenzvereinbarungen in einem fiir normale menschen schwer verst ndlichen juristenchinesisch abgefasst legalese nicht alle
54. dort durch stetige zerlegung bis zu den ele mentaren komponenten Auch das zitat von Descartes im anhang E scheint diese strategie nahezulegen In wirklichkeit l sst sie sich ebenso wie die ana loge bottom up methode bei der schrittweise immer komplexere komponenten aufgebaut w rden bis zuf llig das fertige system herausk me nicht immer in reinform anwenden auch wenn manche autoren z B Klaus Wirth 1978 das Programmieren durch schrittweise Verfeinerung als vern nftige metho de zum algorithmenentwurf propagieren Den wechsel zwischen top down und bottom up betrachtungsweise schildert schon Descartes 1637 in seiner schrift Diskussion ber die methode seinen verstand richtig zu lenken und die wahrheit in den wissenschaften zu suchen wie folgt Der forscher soll e nur dasjenige als wahr annehmen was der vernunft so klar ist dass jegli cher zweifel ausgeschlossen bleibt e gr ssere probleme in kleinere aufspalten e immer vom einfachen zum zusammengesetzten hin argumentieren und das werk einer abschliessenden pr fung unterwerfen 3 3 Modularisierung durch datenabstraktion Das konzept des abstrakten datentyps ist von fundamentaler bedeutung f r die gesamte informatik schon in der Informatik I vorlesung Klaeren 1990 Klaeren und Sperber 2007 wird dies deshalb ganz klar dargestellt Die erfah rung der programmierer besagt dass datenstrukturen ein ganzes programm derart festzurren k nnen das
55. effizient Die effizienz dieser methoden wird beispielshalber von Jones 1996 1997 verglichen wobei er effizienz definiert als den quotienten zwi schen der anzahl der im rahmen der qualit tssicherung bei der software ent wicklung gefundenen fehler zu der gesamtzahl der fehler nach einer gewissen zeit des betriebs des fertigen produkts Eine effizienz von 90 bedeutet des halb dass der qualit tssicherungsprozess 90 der fehler auffindet die sonst beim kunden auftreten w rden Damit sind fehler die auch beim kunden nicht auftreten automatisch von der betrachtung ausgeschlossen Auf der basis empirischer daten von AT amp T BellCore Bell Sygma Bell Nor thern Research Hewlett Packard IBM Microsoft Motorola Siemens Nixdorf und einigen hundert kleineren firmen wird etwa in tab 9 zusammengefasst dass zwischen 25 und 40 der insgesamt aufgetretenen fehler durch eine informelle inspektion des entwurfs gefunden werden k nnen Besser ist das ergebnis bei formalen inspektionen des programm codes 45 bis 70 Jones bemerkt ausserdem dass jede kombination von verfahren die nicht minde stens 85 effizienz in der fehlerbeseitigung bringt unakzeptabel ist da solche programme vom benutzer als unzuverl ssig betrachtet werden Leider sind diese 85 im augenblick der durchschnitt der effizienz in der US amerika nischen software industrie Nur die klassenbesten ermitteln wirklich selbst die effizienz der fehlerbeseitigung und diese komme
56. einer nderung des gegenstands gibt es im prinzip zwei m glichkeiten a Der gegenstand sendet selbst Notify nach jeder von einem beobach ter angeforderten zustands nderung Vorteil ist dass sich die beob achter nicht um dieses detail k mmern m ssen nachteil ist dass eine zusammengeh rige folge von zustands nderungen die nur in ihrer gesamtheit ein Notify verlangen w rden zu einer m glicherweise un bersehbaren folge von Update operationen in allen beobachtern f hren w rde b Jeder beobachter sendet Notify nach einer relevanten zustands nde rung Hier ist der vorteil dass dies erst am ende einer zusammen geh renden folge von nderungen geschehen muss der nachteil ist dass es m glicherweise vergessen wird und dann zu inkonsistenten zust nden f hrt 4 H ngende referenzen Wenn ein gegenstand gel scht wird sollten seine re ferenzen in allen beobachtern auch gel scht werden Die beobachter selbst k nnen nicht ohne weiteres gel scht werden da sie m glicherweise auch noch andere gegenst nde beobachten 5 Garantie eines konsistenten zustands Bevor ein gegenstand bei allen sei nen beobachtern die Update methode aufruft sollte er zuerst seinen inne ren zustand konsolidieren Auch wenn dies trivial erscheint gibt es doch trickreiche situationen wenn eine unterklasse eines gegenstands ererbte methoden aufruft Copyright Herbert Klaeren 29 Juni 2015 94 4 7 Das beobachter muster 6 Push modell
57. freiheit Bill Gates spricht aus begreiflichen gr nden von der GPL als einem virus das die soft ware verseucht Copyright Herbert Klaeren 29 Juni 2015 204 Der begriff Public Domain dagegen sagt tiberhaupt nichts aus ausser dafs jemand seine quellprogramme der 6ffentlichkeit zur verf gung stellt d h also auf seine besitzrechte verzichtet In analogie zum strandgutparagra phen kann jeder der sie findet damit tun was immer ihm gef llt Google Codesearch bietet stand november 2011 die folgenden open source lizenzmodelle an Aladdin Public License Artistic License Apache License Apple Public Source License BSD license Common Public License Eclipse Public License GNU Affero General Public License GNU General Public License GNU Lesser General Public License Historical Permission Notice and Disclaimer IBM Public License Lucent Public License MIT License Mozilla Public License NASA Open Source Agreement Python Software Foundation License O Public License Sleepycat License Zope Public License Einen guten berblick ber die eigenschaften der am weitesten verbreite ten lizenzmodelle bietet choosealicense com Auf der startseite werden drei lizenzmodelle f r personen angeboten die sich nicht viele gedanken machen wollen simple and permissive die MIT Lizenz concerned about patents die Apache Lizenz care about sharing improvements die GPL version 2 oder 3 Wer es genau
58. future is formal methods It is difficult here for someone like me who became a computer scientist by working on abstract data types and the original Z to avoid mistaking wishful thinking for technology assessment It is clear to all the best minds in the field that a more mathematical approach is needed for software to progress much But this is not acepted by the profession at large I can see two possible scenarios The best one is that software science education will involve higher doses of formalism and that this will translate over time into a more formal approach in the industry at large The other scenario is that formal techniques will be used only in high risk development projects controlled by governmental regulatory agencies and will continue to exert some influence on the better programming languages I must say that wishful thinking aside the last scenario is more likely barring the unhappy prospect of a widely publicized software induced catastrophe Meyer 1995 Als beispiel dafiir was manager verstehen miissen betrachten wir ein in der industrie bliches ma f r die produktivit t n mlich das verh ltnis von produziertem code zum produktionsaufwand Ein proze mit ber cksichtigung von wiederverwendung w rde vermutlich einige zeit darauf verwenden softwareelemente die bereits funktionieren zu verbessern in der absicht ihr potential f r die wiederverwendung in zuk nftigen projekten zu verbessern Dieser verallgemeineru
59. gen gend gro e Sammlung von freier Software zusammenzustellen so da ich in der Lage sein werde ohne jegliche nicht freie Software auszukommen Ich habe meinen Beruf im AI lab aufgegeben um dem MIT keinen rechtlichen Vorwand zu bieten mich daran zu hindern GNU weiter zugeben Deutsche bersetzung in http www gnu de documents manifesto de html Copyright Herbert Klaeren 29 Juni 2015 202 General Public License liegt vorne Verteilung der Opensource Projekte nach Lizenzen im Jahr 2003 373 SUES GNU General Public License GNU Lesser General Public License BSD License Artistic License MIT License E Apache Software License W Mozilla Public License 1 0 1 1 QT Public License QPL zlib libpng License Python License Common Public License E Andere Die GNU General Public License ist mit weitem Abstand die am h ufigsten genutzte Opensource Version obwohl sie mit dem strengsten Copyleft Effekt auf wartet Eine beliebte und hinsichtlich Copyleft Effekt einfachere Alternative stelit die BSD Lizenz dar sk Quelle Berlios COMPUTER ZEITUNG 6 2006 Abbildung 57 Verteilung von OSS lizenzen Das lizenzmodell das Stallman 1984 f r seinen GNU Emacs formulierte ist inzwischen in berarbeiteter form als GPL GNU General Public Licence bekannt und das am weitesten verbreitete modell f r open source software s abb 57 Die freiheiten die jeder erwerber von software unabh
60. gestellt die wir vollst ndig verstanden haben m ssen wir sie von jeder berfl ssigen darstellung abstrahieren sie auf ihre einfachstm gliche form reduzieren und sie in m glichst kleine teile zerlegen die wir dann aufz hlen Rene Descartes 1637 Places devant une question parfaitement comprise nous devons l abstraire de toute representation superflue la reduire a sa forme la plus simple et la diviser en parties aussi petites que possibles dont on fera l num ration 3 Als mein Gro vater seine erste Maschine gebaut hatte stand er and chtig vor seinem Werk Und siehe es war alles kr ftig und stark Und dann fragte er sich was wohl ka puttgehen k nne wenn etwas kaputtgeht Er hatte zwei Jahre an dieser Maschine kon struiert und sie eigenh ndig gebaut und nun fand er nichts was am schw chsten war Weil er aber kein Verk ufer sondern Ingenieur war wu te er da doch einmal etwas kaputtgehen wird Zum Beispiel wenn ein Schraubenschl ssel in die Zahnr der fallen w rde Dann w re es ihm lieber gewesen es w rde dasjenige kaputtgehen das am bil ligsten ist Da trieb er aus dem gro en Schwungrad die Keilbefestigungen heraus und ersetzte sie durch einen Kupferstift Und nun wu te er da es in aller Zukunft nur der Kupferstift sein kann der kaputtgeht wenn etwas in das R derwerk ger t Alexander Spoerl Gentlemen k nnen es selbst 1969 4 Es ist eine sehr besch mende erfahrung einen fehler f r viele mi
61. hinblick auf eine gew nschte funktion wirtschaftlichkeit des betriebs und sicherheit von leben und eigentum Dies wird dann anschliessend in einem l ngeren artikel n her ausgef hrt Wir finden im obigen zitat drei wirklich spezifische wesensmerkmale der t tigkeit eines ingenieurs vor Kreative anwendung wissenschaftlicher grundlagen zur erbringung einer gewissen funktion Der ingenieur hat immer wieder den schritt vom was zum wie zu vollziehen dabei verwendet er die erkenntnisse der physik chemie und anderer wissenschaften und hat im brigen zun chst freie hand Beispielsweise k nnte die aufgabe f r einen maschinenbauer lauten ein auto matik getriebe f r einen PKW zu konstruieren das bei allen betriebszust nden den jeweils optimalen gang ausw hlt Geht man einmal davon aus dass durch weitergehende angaben die zu l sende aufgabe pr zise genug beschrieben ist dass also z b eindeutig festgelegt ist in welcher beziehung der ausgew hlte gang optimal sein soll so bieten sich un bersehbar viele m glichkeiten an wie man diese aufgabe theoretisch l sen k nnte Der ingenieur muss diese m glichkeiten berblicken untersuchen und auf ihre praktische verwirklich barkeit pr fen Forschung in den zugrundeliegenden wissenschaften betreibt er dabei nicht die Encyclopeedia Britannica sagt 3Der begriff retirement wird normalerweise fiir menschen verwendet und bedeutet das aus scheiden aus dem berufsleben ruh
62. immer auf zwei dateien verteilt Die datei mit der schnittstellenbeschreibung beginnt mit den schl sselw rtern DEFINITION MODULE die mit der implementie rung beginnt mit IMPLEMENTATION MODULE Modula 2 programmierer reden deshalb irref hrenderweise vom definitionsmodul und dem implemen tierungsmodul als ob dies zwei getrennte module seien Wir verwenden hier auch diese terminologie da sie sich leider etabliert hat In einem definitions modul sind alle die objekte aus dem modul aufgef hrt die von anderen mo dulen verwendet werden k nnen exportschnittstelle importe aus anderen modulen finden an dieser stelle nur insoweit statt als sie dazu gebraucht wer den um die exportschnittstelle aufzuschreiben Am beispiel einer einfachen druckerwarteschlange soll dies vorgef hrt werden In abb 10 finden sich die schnittstellenbeschreibungen eines moduls Jobs welches die eigenschaften ei nes druckauftrags einkapselt und einer druckerwarteschlange PrintQueue Copyright Herbert Klaeren 29 Juni 2015 36 2 5 Softwaretechniksprachen DEFINITION MODULE Jobs x Define the essential properties of a print job x CONST maxDescLen 40 TYPE job desc ARRAY 0 maxDescLen 1 OF CHAR PROCEDURE priorityOf j job CARDINAL PROCEDURE descriptionOf j job VAR d desc PROCEDURE create d desc prio CARDINAL job END Jobs DEFINITION MODULE PrintQueue x A simple print queue x FROM Jobs IMPORT job
63. k nnen immer wieder neue einer konkreten problemstellung angepasste l sungsvarianten abgeleitet werden Das erste allgemein verwendbare objektorientierte muster war das von Krasner und Pope 1988 im zusammenhang mit der entwicklung von Small talk ver ffentlichte model view controller muster es beschreibt einen ent wurf zur entwicklung von graphisch interaktiven systemen Es geht zur ck auf ein von Trygve Reenskaug 1979 ein paar Jahre fr her beschriebenes thing model view editor muster Hier werden die klassen einer graphischen benutzeroberfl che in drei grup pen eingeteilt model view und controller e Das modell beinhaltet die zentralen zustandsdaten des modellierten sy stems und alle methoden die zur beschreibung der zustands nderungen des modells notwendig sind jedoch keinerlei methoden f r die evtl in teraktion mit dem benutzer Copyright Herbert Klaeren 29 Juni 2015 86 4 6 Muster View Display layout and interaction Controller User input device interaction messages Application domain state and behavior Abbildung 30 Model View Controller MVC e Die ansicht view zeigt dem benutzer einen ausschnitt der informationen auf dem bildschirm an Es ist durchaus normal dass ein system mehre re verschiedene ansichten zu einem modell enth lt Die f r die erzeu gung der ansicht notwendigen daten bekommt die ansicht vom modell Andererseits registrier
64. konferenz des NATO Science Committees 1968 in Garmisch Partenkirchen Naur und Randell 1969 die von F L Bauer vorbereitet und durchgef hrt wurde ist das neue schlagwort Software Engi neering begeistert aufgenommen worden und hat seitdem seinen festen platz in der informatik eingenommen Christiane Floyd 1994 sagt Nach meiner Auffassung hat Software Engineering die Softwarekrise der 60er Jahre im Prinzip bew ltigt Insbesondere liegen f r Modellierung Softwarearchitektur und Pro grammierung ausgereifte lehrbare Konzepte vor die vielfach in der Praxis erprobt sind Zu bedauern ist da nach wie vor in der Praxis gro enteils von ihnen keine Kenntnis genom men wird so da die alten Probleme noch immer nicht generell berwunden sind An anderer Stelle bemerkt sie dann allerdings Besonders gravierend ist der Widerspruch zwischen dem anerzogenen Selbstverst nd nis der Softwareingenieure und ingenieurinnen sie sollten nur algorithmische L sungen f r wohldefinierte Probleme erarbeiten und den Anforderungen der Praxis an Flexibilit t Kommunikations und Teamf higkeit I Diese Probleme halte ich f r so gravierend da sie angesichts der ver nderten wirtschaftlichen Situation zu einer neuen Softwarekrise der 90er Jahre f hren k nnten C 2 Qualifikation des softwareingenieurs Das zitat von Floyd zielt auf das selbstverst ndnis der softwareingenieure Be reits im einleitungskapitel haben wir die t tigkeit des
65. lich f r jeden auf der Hand In diesen Wochen ist nun viel von der Verantwortung f r die Mitar beiter die Rede von Werten wie Stabilit t Rationalit t und Kontinuit t die traditionell mit dem Prinzip Siemens verbunden waren und es nun wohl nicht mehr sind Dass diese Werte jedoch fr her auch auf einem Handwerksethos beruhten das jedem einzelnen Siemens Mitarbeiter wichtig war dass in der Siemenskultur keiner etwas aus der Hand gab was nicht gut durchdacht und technisch ausgereift war davon spricht merkw rdigerweise niemand Die Siemens Topmanager in ihrer Gier und ihrer strategischen Unf higkeit m gen an vielem schuld sein aber die Men Software im Handy meiner Mutter ha ben sie nicht entwickelt Wer auch immer daf r die Verantwortung tr gt wer das getestet abgesegnet oder versucht hat dieses Handy zu verkaufen ohne einen internen Aufstand anzuzetteln der muss jetzt auch der anderen Seite des Desasters ins Auge sehen Kein Politiker kein Gewerkschafter kein Sozi alplan kann uns auf Dauer vor den Folgen retten wenn unsere Arbeit derart katastrophale Ergebnisse produziert A 2 LEBENSZEICHEN Sie haben Nachrichten Martenstein k mpft mit seinem Anrufbeantworter Harald Martenstein Die ZEIT Nr 44 26 Oktober 2006 Trotz all dieser Probleme die ich in der letzten Zeit hatte m chte ich um Gottes Willen nicht den Eindruck erwecken ich sei verbittert Ich bin nicht swui tex A DIE BEDEUTUNG DER BENUTZUNGSSCHNITT
66. nur 30 beschleunigt werden was nicht ausreichte An dieser stelle wird es zeit sich zu berlegen ob wir das richtige pro blem l sen Bis jetzt sind wir von der vorstellung ausgegangen eine zeichen kette suchmuster in einer anderen zeichenkette nachricht zu suchen Copyright Herbert Klaeren 29 Juni 2015 172 Diese vorstellung beinhaltet dass wir fiir jedes der suchmuster im wesentli chen doch die ganze nachricht durchforsten Das bedeutet zeichenvergleiche in der gr ssenordnung strlen mesg xnpat Wir l sen also das falsche pro blem denn in wirklichkeit suchen wir nach einer zeichenkette aus einer be stimmten menge innerhalb einer anderen zeichenkette Sinnvoller ware des halb die nachricht nur einmal zu durchsuchen und dabei nach allen mustern zu suchen for j 0 mesg j 0 j 4 if some pattern matches starting at mesg j return 1 Der leistungsgewinn kommt jetzt daher dass wir gar nicht alle muster an schauen miissen wenn wir bei mesg j stehen kommen sowieso nur solche muster in frage die mit mesg j beginnen Theoretisch k nnte dies einen be schleunigungsfaktor von 52 bedeuten 26 gross 26 kleinbuchstaben aber die buchstaben kommen nicht gleichverteilt in einer nachricht vor Mit dem folgenden programm das eine reihe von vorberechneten tabellen verwendet kommen wir zu einer beschleunigung von 7 bis 15 gegen ber dem urspr ng lichen programm Fi patlen
67. ren prototypen bei denen jeweils verbesserte versionen des sy stems hergestellt werden die zun chst prototypisch einsetzbar sind aber zu weiten teilen ihren eingang in das fertige produkt finden werden Hier ist eine grenzlinie zum inkrementellen bau s n chster abschnitt teilweise recht schwer zu ziehen Manche leute verwenden die scherzhafte bezeichnung provotypen f r be stimmte explorative prototypen die so konstruiert sind dass sie reaktionen des benutzers provozieren swll tex 6 VORGEHENSMODELLE FUR DIE SOFTWAREENTWICKLUNG 139 RAPID THROWAWAY PROTOTYPE APPROACH CONVENTIONAL APPROACH FUNCTIONALITY Abbildung 44 Wasserfallmodell mit explorativen prototypen In abb 44 ist die produktivit t eines wasserfallmodells mit explorativen pro totypen gegen bergestellt mit dem reinen wassermodell Wir erkennen dass bereits kurz nach dem beginn der systemtentwicklung zum zeitpunkt t0 ein prototyp hergestellt wurde der nennenswerte teile der gew nschten funktio nalit t implementiert Auf der basis dieses verbesserten verst ndnisses kann ein fertiges system bereits zu einem fr heren zeitpunkt als t1 abgeliefert wer den und erf llt dann tats chlich alle zum zeitpunkt t0 spezifizierten anfor derungen Jetzt besteht nur noch das problem dass sich die anforderungen des benutzers in der zwischenzeit weiterentwickelt haben ber eine gewisse zeit hinweg kann man auch hier mit wartungsarbeiten den abstand zu den a
68. sache schwieriger IDEs k mmern sich gew hnlich um alle arten von abh ngigkeiten und machen dann automatisch alles richtig 9 3 Das werkzeug Ant Ein modernerer ansatz zum gleichen problem ist Ant siehe z B Serrano und Ciordia 2004 Die beschreibung der abh ngigkeiten ist hier in einer build datei enthalten die in XML geschrieben ist Normalerweise heisst sie build xm1 Ant entstand im zusammenhang mit dem Apache projekt ist eindeutig auf Copyright Herbert Klaeren 29 Juni 2015 186 9 4 Konfiguration von software Java als programmiersprache zugeschnitten und macht sich von der vorstel lung frei dass hier unbedingt ein Unix hnliches betriebssystem zum einsatz kommen muss Ausserdem nimmt Ant r cksicht auf die tatsache dass Java projekte typischerweise mit einer ganzen reihe unterschiedlicher verzeichnis se directories zu tun haben w hrend make im grunde nur auf die anwen dung innerhalb eines einzigen verzeichnisses eingerichtet ist In einem typi schen makefile wird man deshalb beobachten dass make rekursiv in allerlei verzeichnisse einsteigt und die dort liegenden makefiles separat ausf hrt Abgesehen davon dass eine Ant build datei dem projekt als ganzem einen namen gibt k nnen hier bestimmte eigenschaften properties global definiert werden jedes einzelne target wird durch einen XML teilbaum beschrieben kann dabei wie das ganze projekt auch mit einer kurzen beschreibung verse hen werden und ei
69. schon bei einer voraufgehenden phase der problemanalyse statt wird aber dort nach rein logischen gesichtspunkten durchgef hrt die nur dar auf abzielen die verst ndlichkeit zu f rdern Copyright Herbert Klaeren 29 Juni 2015 46 3 1 Der systembegriff In der analysephase wird das zu entwickelnde system also aus der sicht des benutzers oder auch der real existierenden welt beschrieben Der vorherr schende gedanke dabei ist jeweils nur zu beschreiben was zu tun ist aber niemals wie dies getan werden soll Die strukturierung entspricht den anfor derungen der anwendung Das implementierte system muss nach ganz anderen gesichtspunkten struk turiert sein In der entwurfsphase muss das system n mlich aus der sicht der maschine beschrieben werden Ein g ngiges paradigma hierbei ist die bildung sog abstrakter maschinen welche stufenweise von den f higkeiten der realen maschine abstrahieren und zu den anforderungen der anwendung hinleiten Systementwurf besch ftigt sich sowohl mit dem leistungsumfang des systems was als auch mit der realisierung wie Gegen ber der analyse findet hier also ein wesentlicher standpunktwechsel statt Aus der oben aufgef hrten systemdefinition sollen einige dinge hier noch weiter ausgef hrt werden Schnittstellen Aus der formulierung ein teil der welt ergibt sich dass ein jedes system ber bestimmte schnittstellen zum rest der welt der hier also ausserhalb des syst
70. softwaretechnikers oder softwareingenieurs verglichen mit der eines architekten In der tat sind eine f lle von gemeinsamkeiten zu entdecken Wie der architekt so gestaltet auch der softwaretechniker r ume in denen menschen leben und arbeiten k nnen bzw m ssen Beim architekten sind die r ume real zu verstehen beim softwa retechniker eher im bertragenen sinne Beide berufe schaffen jedoch struk turen und umgebungen die einen wesentlichen einfluss darauf aus ben ob sich menschen darin und damit wohlf hlen k nnen Nicht umsonst sprechen wir ja auch von der softwarearchitektur Schon 1979 hat Heinz Zemanek auf diese verbindung hingewiesen und in bezug auf die softwarearchitektur den leibarchitekten von kaiser Augustus Lucius Vitruvius Pollio Vitruv ca 84 27 v chr zitiert der 10 b cher ber die architektur geschrieben hat Das erste kapitel im ersten buch hiervon De architectis instituendis besch ftigt sich mit der ausbildung der architekten und beginnt mit dem satz Die wissenschaft Copyright Herbert Klaeren 29 Juni 2015 230 C 2 Qualifikation des softwareingenieurs des architekten ist durch mehrere disziplinen und verschiedenartige ausbil dungsbereiche geschmiickt durch sein urteil werden alle werke bewertet die von den brigen k nsten ausgef hrt werden In der tat wird auch f r die softwaretechnik teilweise sogar f r die informatik im allgemeinen der in terdisziplin re charakter immer h
71. solches vorgehensmodell auch dokumentengesteuert oder dokumentenori entiert document driven In der fassung von Boehm wird zwischen den t tigkeiten und ihren ergebnissen nicht sauber unterschieden Auch kommt der begriff des meilensteins hier nicht vor Copyright Herbert Klaeren 29 Juni 2015 134 6 2 Kritik am wasserfallmodell Ausserdem scheint das modell auch r ckschritte explizit f r jeweils eine phase und ihren vorg nger vorzusehen liest man Boehm jedoch genauer stellt man fest dass er dies nur als einen bezug zur vorhergehenden phase f r die zwecke der validation gedeutet haben m chte Trotzdem wird Boehm von vie len leuten in der o a weise missverstanden Bezeichnend ist in diesem zusam menhang dass die meisten arbeiten in denen Boehms waterfall chart zitiert wird noch einen grossen r ckw rtspfeil von operation and maintenance zu r ck zu system requirements ziehen Solch ein pfeil w rde sich nat rlich via transitivit t aus dem angegebenen falschen verst ndnis der kleinen r ck w rtspfeile ergeben 6 2 Kritik am wasserfallmodell The management question therefore is not whether to build a pilot system and throw it away You will do that Hence plan to throw one away you will anyhow Brooks 1975 systems requirements cannot ever be stated fully in advance not even in principle because the user doesn t know them in advance not even in principle To assert otherwise is to
72. steer the piecemeal process of development toward that fixed imaginary world C Alexander 1975 Each pattern describes a problem which occurs over and over again in our environment and describes the core of the solution to that problem in such a way that you can use the solution a million times over without ever doing the same thing twice Alexander u a 1977 Get into a rut early Do the same processes the same way Accumulate idioms Standardize The only difference between Shakespeare and you was the size of his idiom list not the size of his vocabulary Perlis 1982 In early 1982 the Lisa software team was trying to buckle down for the big push to ship the software within the next six months Some of the managers decided that it would be a good idea to track the progress of each individual engineer in terms of the amount of code that they wrote from week to week They devised a form that each engineer was required to submit every Friday which included a field for the number of lines of code that were written that week Bill Atkinson the author of Quickdraw and the main user interface designer who was by far the most important Lisa implementor thought that lines of code was a silly measure of software productivity He thought his goal was to write as small and fast a program as possible and that the lines of code metric only encouraged writing sloppy bloated broken code He recently was working on optimizing Qu
73. stelle zu schaffen an der alle versionen einer software abgelegt sind das sogenannte repositorium repository Das repositorium ist nach dem paradigma einer leih bibliothek organisiert Hier kann man komponenten ausbuchen checkout und ge ndert wieder einbuchen checkin und ausserdem informationen ber den nderungsstand und andere verwaltungsdetails ablegen und erhalten Ein be stimmter zustand einer datei heisst hier eine revision Das versionshaltungs system f hrt buch ber revisionsnummern nderungszeitpunkte und die be nutzerkennzeichen der personen die neue revisionen im repositorium able gen F r jeden speicherprozess wird ein change comment verlangt der ber art und grund der nderung auskunft gibt Fr here versionshaltungssysteme sind in abschnitt C 3 beschrieben Heute im praktischen einsatz sind haupts chlich Subversion SVN Mercurial HG und Git diese folgen zwei unterschiedli chen strategien Zentrales repositorium SVN verwendet ein einziges zentrales repositorium von dem alle entwickler sich arbeitskopien ziehen Wenn ein entwickler einen seiner meinung nach stabilen zustand erreicht hat speichert er die nderungen zur ck ins repositorium commit Damit ist die nderung dann f r alle sichtbar die sich mit einem befehl update den letzten zustand abholen k nnen Typisch f r SVN verwaltete projekte ist es dass das re positorium verschiedene zweige alternative versionen branches eines sy
74. teil der angelegenheit ist die sitzung mit der diskussion ist sehr wichtig 34 der meldungen wur den erst w hrend der sitzung erzeugt sie waren auf den vorbereitungslisten nicht enthalten Dunsmore u a 2003 listen die besonderheiten auf mit denen man im in spektionsprozess von OO systemen zu k mpfen hat u a den delokalisie rungseffekt Da OO systeme mit zahlreichen verweisen nach der art der ty pischen deutschen beh rde arbeiten und ausserdem noch vererbungshierar chien ins spiel kommen ist die information die man zum verstehen weniger codezeilen braucht h ufig ber weite teile des systems verstreut TODO Neville Neil 2009 gibt praktische hinweise auf die durchf hrung von code reviews und erw hnt das Google tool Rietveld http code google com p rietveld 5 6 Effizienz der fehlerbeseitigung T tigkeit Effizienz Informelle entwurfsinspektion 25 40 Formelle entwurfsinspektion 45 65 Informelle programminspektion 20 35 Formelle programminspektion 45 70 Modultest 15 50 Test neuer funktionen 20 35 Regressionstest 15 30 Integrationstest 25 40 Systemtest 25 55 Kleiner betatest bis 10 kunden 25 40 Grosser betatest ber 1000 kunden 60 85 Tabelle 9 Wirkung einzelner QS massnahmen swkorr tex 5 SOFTWAREQUALIT T 125 Selbstverst ndlich sind nicht alle methoden zur fehlersuche gleichermas sen
75. testen Sie stellen berdies fest Messungen sind ein unverzichtbarer teil der leistungsverbesserung denn argumenta tion und intuition sind tr gerische f hrer und m ssen durch werkzeuge wie zeitmessungs kommandos und profiler unterst tzt werden Leistungsverbesserung hat viel gemeinsam mit testen inklusive solcher techniken wie automatisierung sorgf ltige buchf hrung und verwendung von regressionstests die sicherstellen dass nderungen die korrektheit erhal ten und nicht vorherige verbesserungen r ckg ngig machen Zum messen von programmausf hrungen verwenden wir sogenannte pro filer Abseits von leistungsdaten k nnen solche profiler auch zu ganz rudimen t ren korrektheits berlegungen oder zur gewinnung ganz anderer einsichten ber das programm eingesetzt werden Eine erste grobe unterscheidung der profiler trifft man wie folgt Line count profiler Z hlen wie oft eine zeile ausgef hrt wurde auch n tz lich f r elementare konsistenzpr fungen oder pfad berdeckung Run time profiler Z hlen wie oft eine prozedur aufgerufen wurde und wie viel zeit dabei jeweils verbracht wurde In der regel l uft die messung in beiden f llen so ab 1 Eine spezifische compileroption reichert den code um messinstruktionen an 2 W hrend des programmlaufs wird messinformation in eine datei ge schrieben 3 Nach dem programmlauf wird die messinformation durch ein separates programm aufbereitet Einfac
76. vs pull modell Wie sollen beobachter an die fiir sie relevan ten informationen kommen Im push modell schickt der gegenstand mit seiner Update nachricht sofort alle informationen mit auf die gefahr hin dass manche beobachter gar nichts damit anfangen k nnen Im reinen pull modell gibt es nur die nachricht dass sich irgendetwas ge ndert hat und die beobachter m ssen alles einzeln erfragen Dazwischen sind na t rlich allerlei abstufungen m glich 7 Explizite spezifikation von interessen Eine andere m glichkeit ist es dass be obachter im zusammenhang mit ihrer registrierung beim gegenstand spe zifizieren f r welche details im zustand sie sich interessieren Dann kann der gegenstand seine Update nachricht auf die beobachter beschr nken die sich f r die ge nderte zustandskomponente angemeldet haben 8 Kapselung komplexer Update vorg nge Wenn die beziehungen zwischen den zust nden von gegenstand und beobachter sehr komplex sind kann es sich lohnen einen ChangeManager als instanz des Mediator musters zwi schenzuschalten 4 7 11 Beispielcode Den schenken wir uns hier 4 7 12 Bekannte anwendungen Das muster wird in zahlreichen situationen vor allem im zusammenhang mit grafischen benutzerschnittstellen verwendet am bekanntesten ist das bereits erw hnte Model View Controller muster von Smalltalk 4 7 13 Verwandte muster Das Mediator muster kann verwendet werden um komplexe Update prozesse zu entkoppeln Dabei k
77. welchen anderen mustern zu sammen sollte dieses muster verwendet werden 4 7 Das beobachter muster Damit die diskussion ber die objektorientierten muster nicht so abstrakt bleibt stellen wir ein wichtiges muster hier etwas detaillierter dar das observer swoo tex 4 OBJEKTKONZEPT OOD UND OOA 89 observers change notification requests modifications Abbildung 31 Gegenstand und beobachter pattern Dabei orientieren wir uns trotz aller kritik an Gamma u a 1995 wo bei aber zahlreiche details unterdrtickt werden Das beobachter muster prapa riert einen wesentlichen aspekt des MVC heraus dass es n mlich eine modell komponente geben kann hier subject genannt die einen oder mehrere beob achter observer beeinflusst s abb 31 4 7 1 Name und klassifikation Beobachter Objekt verhaltensmuster 4 7 2 Absicht Definiere eine 1 n abh ngigkeit zwischen objekten so dass zustands nde rungen des einen objekts automatisch zu anpassungen in allen abh ngigen objekten f hren 4 7 3 Alias Observer Dependents Publish Subscribe 4 7 4 Motivation In ziemlich vielen systemen kommt es vor dass eine reihe von objekten auf einander synchronisiert werden muss z b wenn ein bestimmter sachverhalt in unterschiedlichen fenstern auf verschiedene art angezeigt werden soll Die Copyright Herbert Klaeren 29 Juni 2015 90 4 7 Das beobachter muster kopplung zwischen einer solchen ansamml
78. 03 Nr 1 S 3 7 Cardelli und Wegner 1985 CARDELLI Luca WEGNER Peter On Under standing Types Data Abstraction and Polymorphism In ACM Computing Surveys 17 1985 Dezember S 471 522 Carey 1996 CAREY Dick Is Software Quality Intrisic Subjective or Relatio nal In ACM Software Engineering Notes 21 1996 Nr 1 S 74 75 Chiles 2001 CHILES James Inviting Disasters Lessons From the Edge of Tech nology New York Harper Business 2001 Coad und Yourdon 1991 COAD Peter YOURDON Edward Object Oriented Analysis Englewood Cliffs New Jersey Yourdon Press 1991 swquote tex LITERATUR 249 Cobb und Mills 1990 COBB Richard H MILLS Harlan D Engineering Software under Statistical Quality Control In IEEE Software 7 1990 Nr 11 S 44 54 Colwell 2002 COLWELL Bob Near Misses Murphy s Law Is Wrong In IEEE Computer 35 2002 Nr 4 S 9 12 Colwell 2004 COLWELL Bob Design Fragility In IEEE Computer 37 2004 Nr 1 S 13 16 Coy u a 1993 Coy Wolfgang u a Ethische Leitlinien der Gesellschaft f r Informatik In Informatik Spektrum 16 1993 Nr 4 S 239 240 Cusumano 2007a_CUSUMANO Michael A Extreme Programming Compa red with Microsoft Style Interative Development In Communications of the ACM 50 2007 Nr 10 S 15 18 Cusumano 2007b CUSUMANO Michael A What Road Ahead for Microsoft the Company In Communications of the ACM 50 2007 Nr 2 S 15 18 Cusumano und Selby 1995
79. 1 verminderten unteren grenzwert den oberen grenzwert den um 1 vermehrten oberen grenzwert und sicherheitshalber noch einen mittelwert beschr nkt Dies nennt Myers die grenzwertanalyse Bei datenfeldern mit definierten relationen zu anderen da tenfeldern versucht man invariante relationen aufzusp ren und die erhaltung dieser invarianten durch das programm durch gezielt ausgew hlte testf lle zu berpr fen Unter umst nden kann ein gutes datenlexikon zur auswahl von testf llen hier entscheidend beitragen 5 4 3 Funktionsbezogenes testen Beim funktionsbezogenen testen steht die spezifikation der programmfunk tionen im vordergrund Entsprechend dieser spezifikation werden testf lle ausgew hlt Die soeben angesprochenen grenzwerte von Myers k nnen da bei sinnvollerweise herangezogen werden Funktionsbezogenes testen ist im grunde die sinnvollste art des software tests da hierbei wirklich der kontakt zur spezifikation hergestellt wird Die unit tests wie sie durch werkzeuge la JUnit unterst tzt werden geh ren ge nau zu dieser kategorie 5 4 4 Back to back testen Beim sog back to back testen werden mehrere versionen des gleichen pro gramms bez glich ihrer funktionalit t miteinander verglichen Eine wichtige variante hiervon ist der sog regressionstest den alle seri sen softwarehersteller verwenden In einer datenbank werden alle jemals im leben des programms aufgefundenen fehler registriert Nach einem nderungsz
80. 10 00 Abbildung 35 Kiviat Diagramm eines schlechten programms File Option Print EEE Seon ARE Avg Cyclomatic weise gt Ext Cyclomatic a 200 Cyclomatic En exity Sa r a Estimated Time To Develop 00 Abbildung 36 Kiviat Diagramm eines guten programms swkorr tex 5 SOFTWAREQUALIT T 119 ata gqa METRICS QW9S oldmain Abbildung 37 Schleifenstruktur eines schlechten programms Abbildung 38 Verbesserte schleifenstruktur Copyright Herbert Klaeren 29 Juni 2015 120 5 5 Statische analyse Nebenbei sei bemerkt dass solche werkzeuge zur statischen analyse von programmen hnliche methoden verwenden wie die die man f r den compi lerbau braucht 5 5 2 Inspektionen Eine andere methode der software qualit tssicherung ist es programm ent wurfs oder analysedokumente manuell auf die einhaltung bestimmter krite rien oder auf vollst ndigkeit konsistenz plausibilit t etc zu pr fen Dies ge schieht im rahmen von formell veranstalteten besprechungen der dokumente im entwurfsteam Hierf r haben sich begriffe wie inspektion code review structured walkthrough formal technical review und hnliche etabliert Roth man 1999 erw hnt neben anderen bekannten vorteilen dieser methode auch p dagogische bzw organisatorische Wir zeigten der ganzen firma wie man gute programme schreibt und wir halfen dem ganzen team das produkt kennenzulernen D
81. 1991 S 28 40 Vortrag beim Festkolloquium 20 Jahre Institut f r Informatik Z rich 1988 Bauer 1993 BAUER Friedrich L Software Engineering wie es begann In Informatik Spektrum 16 1993 S 259 260 Beck 1999 BECK Kent Embracing Change with Extreme Programming In IEEE Computer 32 1999 Nr 10 S 70 77 Bentley 1986 BENTLEY Jon Programming Pearls Addison Wesley 1986 Bentley 1988 BENTLEY Jon More Programming Pearls Addison Wesley 1988 Berenbach und Broy 2009 BERENBACH Brian BROY Manfred Professional and Ethical Dilemmas in Software Engineering In IEEE Computer 42 2009 Nr 1 S 74 80 Berry und Kamsties 2005 BERRY Daniel M KAMSTIES Erik The Syntacti cally Dangerous All and Plural in Specifications In IEEE Software 22 2005 Nr 1 S 55 57 Bessey u a 2010 DBESSEY Al BLOCK Ken CHELF Ben CHOU Andy FULTON Bryan HALLEM Seth HENRI GROS Charles KAMSKY Asya MCPEAK Scott ENGLER Dawson A few billion lines of code later using static analysis to find bugs in the real world In Commun ACM 53 2010 Nr 2 S 66 75 ISSN 0001 0782 Billington 1985 BILLINGTON David P The Tower and the Bridge Princeton University Press 1985 Boehm und Basili 2001 BOEHM Barry BASILI Victor R Software Defect Reduction Top 10 List In IEEE Computer 34 2001 Nr 1 S 135 137 Copyright Herbert Klaeren 29 Juni 2015 248 LITERATUR Boehm und In 1996 BOEHM Barry
82. 244 1424425424 238 bas 188 9 6 Werkzeuge zur dokumentation 0 190 10 Free Libre Open Source Software 197 A Die bedeutung der benutzungsschnittstelle 211 Al Das Prinzip Siemens 2 2 22 2 tea A I I 213 A2 IEEBENSZEICHEN ve 2k co eh miak ah aoak ee 2 Beets aed 214 B Nichtfunktionale eigenschaften von software 217 C Historisches 227 C L TIESOHWaTektise 8 a a ahuri Ee auh A k a U a ah ak 227 C 2 Qualifikation des softwareingenieurs 229 C 3 Geschichte der versionshaltung a er nr awe ne ae 232 D Philosophische aspekte der softwaretechnik 237 D 1 Die ethik des softwareingenieurs 237 E Zitate zur Softwaretechnik 239 1 EINF HRUNG WAS IST SOFTWARETECHNIK 1 Navigation Communication Driver Information Distronic Parktronic Keyless Go Internet Java Safety critical Lines of Code 10K Vehicle Dynamics Controls 1K ABS 1978 ASR ABC ESP 1995 Controls En Engine amp Transmission Control Airbag 1981 X Distributed u Controller based Injection and Ignition Controle 10 Control Bosch Motronic 1979 c Code Generation Realtime OS Injection Control Bosch D Jetronic 1967 Assembler 1886 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980 1990 2000 2010 Abbildung 1 Software im PKW 1 Einf hrung Was ist Softwaretechnik 1 1 Motivation Funktionierende software wird st ndig wichtiger f r das funktionieren der welt
83. 831 return Q0 168 return 1 main int i n 1 n 1000 1 for i 2 i lt n i 999 if prime i 168 printf d n i Copyright Herbert Klaeren 29 Juni 2015 166 d Wir sehen dass die teilbarkeitstests von 78022 auf 5288 zur ckgegangen sind Gl cklicherweise hat sich an der zahl der gefundenen primzahlen 168 nichts ge ndert Bentley bemerkt berrascht dass die verbesserte version trotzdem auf seiner VAX deutlich langsamer l uft als das ausgangsprogramm Um zu sehen wohin die zeit geht verwenden wir einen run time profiler in der originalarbeit von Bentley gen gt es dazu wie in den beispielen aufgezeigt die primzahlen bis zu 1000 ausrechnen zu lassen Die von Bentley verwendete VAX kann sich aber mit heutigen rechnern berhaupt nicht messen wir m s sen hier schon bis 100 000 gehen um signifikante zahlen zu erhalten In einem vanilla Unix gibt es f r die zeitmessung ein programm prof das wie folgt bedient wird cc lm p o primes primes c Mit mathe bibliothek und profiling primes Programmlauf erzeugt datei mon out prof primes Auswertung und aufbereitung Verbesserte informationen bekommt man mit dem call graph profiler gprof von Susan Graham u a 1982 dort wird f r jede funktion separat die zeit ausgewiesen die auf aufrufe von jeder anderen funktion aus aufgewendet wurde Das heisst also statt einer information funktion f hat insgesamt x s
84. 977 40 MLOC 8000 mannjahre Windows 95 1996 15 MLOC 22 Windows 2000 2000 30 MLOC 22 Windows XP 2001 35 MLOC 22 Windows Vista 2007 50 MLOC 22 Tabelle 1 Umfang von softwarepaketen zunehmende komplexit t von softwaresystemen beklagen und deren notwen digkeit in frage stellen aber das ndert nichts daran dass die meisten interes santen systeme tats chlich sehr gross sind Tab 1 liefert dazu einige zahlen In dieser tabelle wird die einheit LOC Lines of Code verwendet die auch mit den blichen pr fixen als kLOC MLOC etc auf taucht Es soll nicht verschwiegen werden dass manche autoren z B Sneed und Jungmayr 2011 einen grossen unterschied machen zwischen anzahl von zeilen im programm und anzahl von anweisungen da es ja anweisungen geben mag die mehr als eine zeile beanspruchen Das sind im grunde aber spitz findigkeiten die ausserdem zu streitigkeiten f hren k nnen was denn nun eine anweisung ist Betrachte etwa das folgende codesegment in Modula 2 WHILE p NIL DO p p next END Ist dies nun eine anweisung Oder zwei Oder gar drei Egal wie man sich hier entscheidet es ist in jedem fall eine syntaktische analyse des programms notwendig um anweisungen z hlen zu k nnen Da ist es wesentlich einfacher z B mit dem Unix hilfprogramm wc die zeilen zu z hlen Manche leute m chten aber auch klarmachen dass kommentarzeilen eben so wie eingestreute leerzeilen bei ihnen nicht
85. EBERHARD KARLS UN IVE RS TAT ies le TUBINGEN Fakultat Skriptum softwaretechnik Entwurf Herbert Klaeren 29 Juni 2015 Dieses Werk steht unter der Creative Commons by sa Lizenz Namensnen nung Weitergabe unter gleichen Bedingungen Copyright Herbert Klaeren 1997 2012 Abbildungsnachweis Titelbild M C Escher Volker Klaeren Abb 3 5 7 15 18 22 23 39 Volker Klaeren Abb 20 40 41 47 Frank Gerhardt Zahlreiche verbesserungsvorschl ge von Markus Leypold und Mandeep Singh Multani wurden dankbar entgegengenommen Zum abschnitt ber objektorientierte softwareentwick lung hat Andreas Speck wertvolle beitr ge geliefert Eine bemerkung zur rechtschreibung Deutschland diskutiert permanent ber die rechtschreibung vermeidet dabei aber echte fortschritte Dieses skriptum ver wendet zum teil eine experimentelle orthographie nach den folgenden drei regeln 1 Grossgeschrieben werden satzanf nge eigennamen und kapitalisierte ab k rzungen CORBA OMG TCP UML alles andere wird kleinge schrieben 2 Das scharfe s Eszet wird ausser in eigennamen berall durch ss er setzt Die Schweizer k nnen s schliesslich auch so Was es bedeuten mag schokolade in massen zu geniessen berlasse ich der phantasie der le serin 3 W rtliche zitate verwenden die an der fundstelle vorhandene schreibung Prof Dr H Klaeren Universit t T bingen Wilhelm Schickard
86. EISIN F M SCHMIDT G STEPS to Software Development with Users In GHEZZI C Hrsg MCDERMID J A Hrsg ESEC 89 1989 Lecture Notes in Computer Science 287 S 48 64 swquote tex LITERATUR 251 Fowler u a 1999 FOWLER Martin BECK Kent BRANT John OPDYKE William ROBERTS Don Refactoring Improving the design of existing code Addison Wesley 1999 Fowler und Scott 1998 FOWLER Martin SCOTT Kendall UML Distilled Applying the Standard Object Modeling Language Addison Wesley 1998 Gabriel 1997 GABRIEL Richard P Patterns of Software Oxford University Press 1997 ISBN 0 19 510269 X Gamma u a 1995 GAMMA Erich HELM Richard JOHNSON Ralph VLIs SIDES John Design Patterns Elements of Reusable Object Oriented Software Addison Wesley 1995 Gilb 1988 GILB Tom Principles of Software Engineering Boston Addison Wesley 1988 Glass 2005 GLASS Robert L IT Failure Rates 70 or 10 15 In IEEE Software 22 2005 Nr 3 S 112 110 Gotterbarn u a 1999a GOTTERBARN Don MILLER Keith ROGERSON Si mon Computer Society and ACM Approve Software Engineering Code of Ethics In IEEE Computer 32 1999 Nr 10 S 84 88 Gotterbarn u a 1999b GOTTERBARN Don MILLER Keith ROGERSON Si mon Software Engineering Code of Ethics is Approved In Communications of the ACM 42 1999 Nr 10 S 102 107 Graham 2002 GRAHAM Dorothy Requirements and Testing Seven Missing Link Myths
87. Eine linie zwischen modulen charakterisiert dann eine import ex portbeziehung Konzentrieren wir uns nun auf das modul M in der mitte der modulstruktur Aus irgendwelchen gr nden soll dieses modul neu geschrie ben werden sagen wir in form von M Wenn wir den modulgedanken ernst nehmen m ssen M und M kompatible schnittstellen haben d h die export swmodu tex 2 MODULKONZEPT 23 schnittstelle von M muss die von M enthalten und die importschnittstelle von M darf nicht ber die von M hinausgehen und in bezug auf die exportierten bestandteile von M die gleiche funktionalit t aufweisen Testbett E Testumgebung Abbildung 6 Testbett f r ein Modul Wollen wir also das neue modul M auf einfache weise testen ohne durch die komplexit t des gesamtsystems belastet zu sein so schreiben wir ein so genanntes testbett welches die funktionalit t von M in ausreichender weise pr ft und hier ber ggf protokoll f hrt Diese situation ist in abb 6 dargestellt Damit wir diesen test berhaupt durchf hren k nnen m ssen wir auch die importe von M korrekt bereitstellen notfalls indem wir eine eigene testumge bung bereitstellen welche diese funktionalit t anbietet Hauptmodul Erportschnittstelle I A mportschnittstelle Abbildung 7 Austausch eines Moduls Copyright Herbert Klaeren 29 Juni 2015 24 2 2 Design by contract Ist der test dann erfolgreich durchgef hrt so l ss
88. ICHTFUNKTIONALE EIGENSCHAFTEN VON SOFTWARE 217 B Nichtfunktionale eigenschaften von software Jede software hat nat rlich gewisse funktionale eigenschaften das sind eigen schaften die sich auf die funktion der software beziehen eine textverarbei tungssoftware soll text verarbeiten eine tabellenkalkulation tabellen kalkulie ren usf Dar ber hinaus gibt es jedoch auch eine menge in der literatur doku mentierter allgemeinerer anforderungen an industriell verwendbare software die von der beabsichtigten funktion unabh ngig sind und sich eher auf die gebrauchseigenschaften beziehen Sie heissen deshalb nichtfunktionale anforde rungen viele davon lassen sich im weitesten sinne unter der berschrift pro duktqualit t zusammenfassen Wiederherstellbarkeit Stabilit t N Datensicherheit Zuverl ssigkeit Korrektheit Robustheit Kompatibilit t Normengerechtigkeit Wartbarkeit Lesbarkeit ie Modularitat Anpassbarkeit Entwicklungskosten Antwortzeit Wirtschaftlichkeit Effizienz Laufzeit bertragbarkeit Speicherbedarf Abbildung 62 Qualit tsb ume Ich habe die meiner meinung nach wichtigsten 18 nichtfunktionalen anfor derungen ausgew hlt und versucht in ein diagramm abb 62 so einzuord nen dass gewisse anforderungen als spezialf lle bzw komponenten von all gemeineren anforderungen gesehen werden ber diese einordnung taxono mie l sst sich nat rlich trefflich streiten Es gibt konkurrenzmodel
89. In S ddeutsche Zeitung 2010 5 M rz Nr 53 S 9 Copyright Herbert Klaeren 29 Juni 2015 258 LITERATUR Traufetter 2010 TRAUFETTER Gerald Ermittler werfen Airbus mangelhafte Piloten Information vor In Spiegel online 2010 http www spiegel de wissenschaft technik 0 1518 681655 00 html1 zuletzt gesehen 9 Marz 2010 Valk 1997 VALK R diger Die Informatik zwischen Formal und Human wissenschaften In Informatik Spektrum 20 1997 Nr 2 S 95 100 Voas 1997 VOAS Jeffrey How Assertions Can Increase Test Effectiveness In IEEE Software 14 1997 Nr 2 S 118 119 122 Voas u a 1997 VOAS Jeffrey MCGRAW Gary KASSAB Lora VOAS Larry A Crystal Ball for Software Liability In IEEE Computer 30 1997 Nr 6 S 29 36 Weiss 2008 WEISS Harald CAD Inkompatibilit t verursacht bei Airbus Milliardensch den In Computerzeitung 2008 April Nr 15 Wikipedia 2008 WIKIPEDIA Toll Collect http de wikipedia org wiki Toll_Collect Jan 2008 Wirth 1978 WIRTH Niklaus Systematisches Programmieren Teubner 1978 Wirth 1995 WIRTH Niklaus A Plea for Lean Software In IEEE Computer 28 1995 Nr 2 S 64 68 Zemanek 1979 ZEMANEK Heinz Abstract Architecture General Con cepts for Systems Design In BJORNER Dines Hrsg Abstract Software Specification Proceedings of 1979 Copenhagen Winter School Springer 1979 Lecture Notes in Computer Science 86 S 1 42 swquote tex
90. Institut D 72076 T bingen 49 7071 29 75457 klaeren informatik uni tuebingen de INHALTSVERZEICHNIS i Inhaltsverzeichnis 1 Einf hrung Was ist Softwaretechnik 1 EU Motivation oS ur ty st a a a a nat Jt 1 1 2 Ingenieurwissensch ft 22 2 Es a 0 22 HSS 2 4 1 3 Software ist anders 2 2 2 Comm 8 1 4 Programmieren im grossen vs programmieren im kleinen 12 1 5 Das Brookssche Gesetz 2 2222 22 2 nn nennen 16 2 Modulkonzept 19 21 Geheimnisptinzip se ec Ra ee 21 2 2 Desig mM by Contact i yr e Sate A A T AT en ATA 24 2 3 Bestandteile eines Moduls oaaae 00000 26 2 4 Spezifikation von software oaoa a 27 2 5 Softwaretechniksprachen ooa a 34 2 6 Keine softwaretechniksprache Was nun 41 2 7 gt Wasist mitJava Su an dae eae aa erstes 42 3 Systementwurf 45 Orly Der SY SLEDS CCIE s maiers Sie aai ani oth Dre 45 3 2 Systemarchitektur a 3 be a 47 3 3 Modularisierung durch datenabstraktion 48 34 Empfehlungen ra eea eaor a gui a wy Paie tins ME Peek Bes 52 3 5 Qualit t eines entwurfs ooa a ee ee ee 53 3 6 SAP HEA WE os isee cno es ehr 56 4 Objektkonzept OOD und OOA 61 41 Klassen und objektens iari rra aair ani nel 63 4 2 Statische modellierung ooa ae Se oe 222 OS 64 4 3 Dynamische modellierung ooa 73 4 4 Model driven architecture o oo a 74 4 5 Prozess einer objektorientierten modellierung 79 2 6 Muster rasant a a BE een
91. ML kennengelernt Mit diesem mechanismus kann eine entsprechende zusicherung ber den korrek ten datenzustand daf r sorgen dass auch bedingungen 2 und 3 erf llt werden 5 5 Statische analyse Die bis jetzt angesprochenen dynamischen analysemethoden sind per defini tionem nur f r fertige fehlerfrei bersetzte programme zu gebrauchen Wir haben aber bereits zuvor erkannt dass wir auch bereits auf der stufe der analy se und des entwurfs qualit tssicherungsmassnahmen einsetzen m ssen Diese massnahmen k nnen per definitionem nur statisch sein d h sie m ssen ohne programmlauf auskommen Bedenkt man dass analyse und entwurfsfehler viel teurer zu beseitigen sind als reine codierfehler so kommt diesem bereich sogar noch gr ssere bedeutung zu als den dynamischen analysemethoden 5 5 1 Vollst ndigkeit und konsistenz Eine erste m glichkeit der statischen analyse ist es den zieltext auf vollst n digkeit und konsistenz zu pr fen Dies ist auch f r Dokumente aus der Pro blemanalyse und dem Systementwurf bereits m glich Auf der programmstufe ist die situation recht unterschiedlich Es gibt sog sichere programmiersprachen die relativ restriktive bedingungen vor allem Copyright Herbert Klaeren 29 Juni 2015 116 5 5 Statische analyse im bereich der kontextsensitiven syntax haben etwa Pascal Modula 2 Obe ron Ada Eiffel Hier ist bereits eine erfolgreiche compilation ein gutes indiz f r das fehlen von unvolls
92. Nr 12 S 1326 1335 Perlis 1982 PERLIS Alan Epigrams on Programming In SIGPLAN Notices 17 1982 Nr 9 S 7 13 Perrow 1999 PERROW Charles Normal Accidents Living with High Risk Tech nologies Princeton N J Princeton University Press 1999 Petroski 1985 PETROSKI Henry To Engineer is Human The Role of Failure in Successful Design New York St Martin s Press 1985 Raymond 1991 RAYMOND Eric S The New Hacker s Dictionary MIT Press 1991 Raymond 2003 RAYMOND Eric S The Art of UNIX Programming Addison Wesley 2003 Also available under http www catb org esr writings taoup Reenskaug 1979 REENSKAUG Trygve Models Views Controllers XEROX PARC Dec 1979 Technical Note http heim ifi uio no trygver 1979 mvc 2 1979 12 MVC pdf Reiter 2008 REITER Michael Softwarepannen wie am Flughafen Heathrow sind auch in Deutschland an der Tagesordnung In Computerzeitung 2008 15 Apr swquote tex LITERATUR 257 Rettig 1994 RETTIG Marc Prototyping for Tiny Fingers In Communications of the ACM 37 1994 Nr 4 S 21 27 Reuf 2010 REUSS Johann Untersuchungsbericht In Bundesstelle fiir Flug unfalluntersuchung 2010 M rz Nr 5X003 0 08 http www bfu web de c1n_007 nn_223532 DE Publikationen Untersuchungsberichte 2008 Bericht__08__5X003__A320__Hamburg Seitenwindlandung templateld raw property publicationFile pdf Bericht_08_5X003_ A320_Hamburg Seitenwindlandung pdf Rothma
93. S 105 133 Koch 1998 KOCH Richard The 80 20 Principle The Secret of Achieving More with Less London Nicholas Brealy Publishing 1998 Kranz 2000 KRANZ Gene Failure ist Not an Option New York Berkley Books Penguin Putnam 2000 Krasner und Pope 1988 KRASNER G E POPE S T A Cookbook for Using the Model View Controller User Interface Paradigm in Smalltalk 80 In Journal of Object Oriented Programming 1 1988 August September Nr 3 S 26 49 Leavens 2007 LEAVENS Gary JML Reference Manual Iowa State University Feb 2007 http www cs iastate edu leavens JML jmlrefman Copyright Herbert Klaeren 29 Juni 2015 254 LITERATUR Leavens und Cheon 2006 LEAVENS Gary T CHEON Yoonsik Design by Contract with JML ftp ftp cs iastate edu pub leavens JML jmldbc pdf Sep 2006 Leveson 1995 LEVESON Nancy G Safety as a System Property In Commu nications of the ACM 38 1995 Nr 11 S 146 Licklider 1969 LICKLIDER J C Underestimates and Overexpectations In CHAYES Abram Hrsg WIESNER Jerome Hrsg ABM An Evaluation of the Decision to Deploy and Anti Ballistic Missile Harper amp Row 1969 Linger 1994 LINGER Richard C Cleanroom Process Model In IEEE Soft ware 11 1994 Nr 2 S 50 58 Best practice paper from ICSE 15 selected by IEEE Software Editorial Board Louridas 2006 LOURIDAS Panagiotis Static Code Analysis In IEEE Soft ware 23 2006 Nr 4 S 58 61
94. SM kardinalit ten und rollen erweitert Im Java PSM abb 29 sind die beziehun gen zwischen den klassen erschreckenderweise gar nicht so deutlich sichtbar Erst auf den zweiten blick sieht man in der Customer klasse ein attribut orders und in der Order klasse umgekehrt ein attribut custoner In instanzen dieser klassen wird man an diesen stellen objektreferenzen vorfinden Entsprechend findet sich in der Order klasse ein attribut items das auf die artikel einer be stellung verweisen kann Ein umgekehrter verweis von einem artikel auf eine bestellung ist nicht vorhanden in der tat ist die beziehung zwischen Order und Item im PIM ja auch nur in einer richtung als navigierbar gekennzeichnet Die OMG redet bei der MDA sehr gerne von transformationen zwischen die sen klassen von modellen die dann wom glich auch noch halb automatisch durch werkzeuge durchgef hrt werden Klar ist jedoch dass der bergang vom CIM zum PIM nicht automatisch sein kann weil das CIM viel zu wenig formal ist es besteht in der regel aus sehr viel umgangssprache und weil in der festlegung welche teile des gesamtsystems computerisiert werden sollen eine wichtige und schwer zu treffende entscheidung liegt Auch der bergang vom PIM zum PSM kann sicher nur in bescheidenem masse durch werkzeu ge unterst tzt werden auch wenn Kleppe u a 2003 hier grosse erwartungen wecken Eine r cktransformation von einem PSM zu einem PIM ist offensicht lich niemals m gli
95. STELLE 215 verbittert Ich bin gut drauf Sicher im Detail k nnte manches besser laufen Als ich nach Hause kam blinkte an dem neuen Telefon ein roter Knopf Auf dem Display stand Sie haben neue Nachrichten Bei meinem alten Telefon wurden wenn man auf den roten Knopf dr ckte die neuen Nachrichten vor gespielt Hier aber leuchteten stattdessen zwei Botschaften auf dem Display auf n mlich Neue Nachr 1 2 sowie das Wort Pause Ich dachte sehr wahrscheinlich habe ich zwei neue Nachrichten Jetzt fragt mich das Telefon ob ich lieber die erste oder lieber die zweite der beiden neuen Nachrichten h ren oder ob ich lieber eine Pause machen m chte Ich dachte jemand der nach Hause kommt m chte doch mit 99 9 prozentiger Wahrscheinlichkeit oh ne weitere Umschweife hintereinander seine neuen Nachrichten h ren zack zack und nicht nachdem er erfahren hat dass es zwei Nachrichten gibt erst einmal eine Auszeit nehmen um diese Information geistig zu verarbeiten Die Leute die dieses Telefon gebaut haben wissen allzu wenig ber die mensch liche Psychologie Ich habe den Knopf Weiter gedr ckt Daraufhin bot mir das Telefon die folgenden M glichkeiten an Weiter h ren Akt Nachr 16 schen Nummer w hlen Kurzwahlliste Wiederholen Alte Nachr l schen Anzeigen Auf neu setzen Nr ins Tel buch Geschwindig keit und Beenden Ich dachte
96. Spiel Ich lud mir die Bedienungsanleitung von der fr heren Copyright Herbert Klaeren 29 Juni 2015 214 A 2 LEBENSZEICHEN Siemens und jetzigen BenQ Website herunter ich konsultierte Internetforen Die Stunden vergingen Nichts half Am Ende als meine Mutter langst im Bett war gab ich auf legte ihre Karte in mein Nokia ein l schte nderte und speicherte ihre Daten innerhalb von drei Minuten und fiel danach in einen unruhigen Traum in dem der Technikstandort Deutschland sehr d ster kar stig und menschenleer aussah Ungef hr so wie das Land Mordor im Herrn der Ringe Das Handy meiner Mutter ich habe nachgeschaut kam im Herbst 2004 auf den weltweit expandierenden Markt der Mobiltelefone Im Sommer 2005 war Siemens vom dritten Platz der Handyhersteller bereits auf den f nf ten Platz zur ckgefallen der Marktanteil auf 5 5 Prozent abgesackt Seither ging es weiter bergab Der Zusammenhang ist zumindest mir nun son nenklar Politiker Gewerkschaftsfunktion re und Wirtschaftskommentatoren die sich ber den gro en Niedergang noch wundern oder erregen k nnen ha ben wahrscheinlich schon lange kein Siemens Handy mehr benutzt und ganz sicher haben sie nie versucht einen berfl ssigen Adressbucheintrag wie bei spielsweise den Vodafone Blumengruss aus ihrem Siemens Handy zu l schen Aber Moment Kann das alles wirklich so simpel sein Ich f rchte ja In der Welt der Konsumg ter liegen die Beweise schlie
97. TYPE queue PROCEDURE new VAR q queue x Create a new print queue x x Calls to the next three procedures are only valid after q has been created via new q x PROCEDURE enqueue VAR q queue j job x Enter a job j into queue q PROCEDURE next VAR q queue job x Get the next job from the queue at the same time deleting it from the queue x PROCEDURE isEmpty q queue BOOLEAN x Test for empty print queue x END PrintQueue Abbildung 10 Eine einfache druckerwarteschlange swmodu tex 2 MODULKONZEPT 37 Bemerkt werden muss hier dass wir dieses beispiel textlich ganz knapp ge halten haben zu jedem konstrukt waren hier normalerweise selbstverstand lich eingehende kommentare f llig welche die leistungen und einschrankun gen davon beschreiben Von design by contract ist bei Modula 2 keine rede bestenfalls liessen sich diesbez gliche spezifikationen in kommentaren unter bringen Das modul PrintQueue offenbart ausserdem noch eine andere eigen art die sich h ufig bei modulen findet Die angebotenen funktionen sind nicht alle unabh ngig voneinander sondern setzen teilweise voraus dass vor dem aufruf einiger funktionen zuerst andere aufgerufen werden Im extremfall gibt es regelrechte path expressions welche die korrekten aufrufreihenfolgen spezi fizieren In Modula 2 kann auch dies nur in kommentaren angedeutet werden Eine besonderheit hierbei sind die opaken typen stack und queue ber de
98. XP prozess letztlich in der hackerkultur gr nden liegt es nahe diese beiden ans tze zu vergleichen Cu sumano 2007a hat dies getan und kommt zu den folgenden bereinstimmun gen die er selbst als teilweise oberfl chlich kennzeichnet bzw unterschieden Planung mit user stories Wie bei den user stories von XP stehen auch bei Mi crosoft kleine st cke von funktionalit t die features im vordergrund der betrachtung Kleine releases Beim XP prozess bekommt der kunde sein produkt h pp chenweise in kleinen inkrementen eine analogie im haus Microsoft das einen auftraggeber im klassischen sinne nicht kennt besteht hier in den daily builds die dem usability lab als simuliertem auftraggeber in kurzen zyklen bergeben werden System metapher Die entsprechung zum im XP prozess angestrebten ge meinsamen sicht des systems sind im haus Microsoft die vision statements die in k rze beschreiben welche schl ssel features im system enthalten bzw nicht enthalten sein sollen Einfacher entwurf O Ion Cusumano There is no Microsoft style analogy for this point In der Tat r t er der firma Microsoft dringend diesem punkt st rkere beachtung zu schenken Cusumano 2007b Stetiges testen Die idee des test driven design ist bei Microsoft nicht pr sent aber es wird trotzdem grosser wert auf t gliche tests gelegt Es sind auch in der entwicklung des Internet Explorer und des NetMeeting f lle do kumentiert in denen die
99. ael Kifer Viper author Aamod Sane VIP 4 4 author Masahiko Sato VIP 3 5 page vskip Opt plus 1filll insertcopying end titlepage contents ifnottex node Top Overview DIR unnumbered Viper We believe that one or more of the following statements are adequate descriptions of Viper example Viper Is a Package for Emacs Rebels it is a VI Plan for Emacs Rescue and or a venomous VI PERil end example Abbildung 56 Texinfo swtool tex 9 SOFTWAREWERKZEUGE 195 zeugen andererseits kann man aus den gleichen quellen ber TEX als umweg ein gedrucktes handbuch erstellen Abb 56 zeigt ein beispiel aus einer datei viper texi wie die aufbereitete seite in der online dokumentation aussieht kann man sehen indem man im Emacs M x info RET tippt dann m viper RET 9 6 3 Javadoc Ganz deutlich auf die erzeugung technischer dokumentation ausgerichtet ist Javadoc welches wiederum gleichzeitig der name eines werkzeugs und eines dateiformats ist Javadoc ist dem sogenannten single source prinzip verpflichtet d h die dokumentation steht in der gleichen datei wie das zu dokumentie rende programm Ein solches vorgehen hat den vorteil dass die konsistenz zwischen dokumentation und programm leichter zu erreichen ist da letztlich nur jeweils eine datei angeschaut und modifiziert werden muss Die voraus setzung daf r ist dass die dokumentation f r den compiler nicht sichtbar ist dies ist leicht zu erreichen in
100. ahr 2000 Problems heraus kam dass es grosse mengen an software im einsatz gab die fast 50 jah re alt war und in diesem zeitraum nat rlich h ufig den neuen anforde rungen angepasst wurde Deshalb haben softwareingenieure viel mehr mit der anpassung existierender programme zu tun als mit dem schrei ben neuer programme Daraus ergibt sich dass sie nicht nur in der lage sein m ssen programme in der jeweils modernsten sprache zu schreiben sondern sie m ssen auch programme in allen m glichen und teilweise abstrusen programmiersprachen lesen und verstehen k nnen In zwei ter konsequenz ergibt sich daraus dass ein echter profi programme stets so schreibt dass sie auch von anderen wirklich gelesen und verstanden werden k nnen von cleveren tricks hacks ist abzuraten 2 Beim schreiben neuer systeme entf llt der gr sste marktanteil auf sog standard software der gr sste arbeitsaufwand auf individuell gefertigte systeme Wir be sch ftigen uns in dieser vorlesung praktisch nur mit der individuellen an fertigung von software auf der basis spezifischer anforderungen eines auf traggebers wohl wissend dass das grosse gesch ft nicht mit dieser art von software gemacht wird sondern mit sog standardsoftware oft auch wegen ihrer verpackungsform shrink wrap software genannt Schaut man jedoch nicht auf das verdiente geld den umsatz sondern auf die anzahl von projekten so sind die individuell auf kundenanforderung geschriebe
101. algorithmen die aus der mathe matik bekannt waren e Konstrukteure programmierer und benutzer bildeten eine im wesentli chen geschlossene gruppe mit durchweg gleicher vorbildung e Die programme behandelten eine eingeschr nkte problemklasse und grif fen nicht unmittelbar in irgendwelche handlungsabl ufe ein In diesem szenarium war nat rlich kein bedarf f r software engineering die bekannten techniken aus der mathematik bzw der elektrotechnik oder gar mechanik reichten v llig aus Sp testens in den sechziger jahren wur de es aufgrund der fortschritte auf dem hardwaresektor m glich systeme zu entwickeln die so komplex waren dass sie sich durch blosse umsetzung ma thematischer algorithmen in computerprogramme offensichtlich nicht mehr beschreiben liessen Ein beispiel ist das SAGE system von 1951 Everett 1980 Die folgenden abschnitte sind zitiert aus Klaeren 1994 3 Dieselben charakteristika findet man auch heute noch durchweg in der universit ren programmierausbildung wieder was einer der gr nde sein mag warum softwaretechnik so schwer lehrbar ist Copyright Herbert Klaeren 29 Juni 2015 228 C 1 Die softwarekrise Semi automated ground environment ein fr her SDI urahn Dieses system bestand aus einem netz von radarstationen die mit einem rechner verbunden waren und sollte automatisch vor einem feindlichen fliegerangriff warnen Es stellte sich an diesem beispiel wie an zahlreichen
102. anderen heraus dass pro grammieren eben nicht nur aus der umsetzung bekannter algorithmen in eine computersprache besteht sondern dass in den meisten fallen algorithmen erst einmal gefunden werden m ssen Hierzu ist als wichtigste voraussetzung die pr zise spezifikation des problems notwendig Im SAGE beispiel etwa war zu n chst einmal zu kl ren was eigentlich ein flugzeug ist d h inwiefern sich sei ne radarsignale von denen eines vogelschwarms oder anderer flugobjekte un terscheiden Hat man diese frage gel st ist zu kl ren wodurch sich ein feind liches flugzeug von einem eigenen unterscheidet etc Diese fragen sind aus serordentlich schwer zu entscheiden und blieben im SAGE system ungel st Noch 1960 hat ein SAGE nachfolger das Ballistic Missile Early Warning System den aufgehenden mond als einen feindlichen raketenangriff gemeldet Lickli der 1969 p 122 123 Dass die problematik bis heute im wesentlichen ungel st ist beweisen der abschuss eines britischen gazelle hubschraubers durch das britische kriegsschiff Cardiff im falklandkrieg Neumann 1987 und der ab schuss eines iranischen verkehrsflugzeugs durch den amerikanischen kreuzer Vincennes im golfkonflikt Neumann 1988 1989 Wir haben zuvor drei wesentliche merkmale der fr hzeit der programmie rung vorgestellt stellen wir jetzt dem gegen ber was danach charakteristisch wurde und bis heute gilt e In den meisten f llen ist der computer nur teil einer ganzh
103. ann auch das Singleton muster verwendet werden um einen ChangeManager eindeutig global verf gbar zu machen TODO Jetzt nochmals kommentieren vorkommen des observer pattern im MVC auch die m gliche observer beziehung zwischen controller und model TODO weitere patterns view handler command command processor me mento layers pipes amp filters swoo tex 4 OBJEKTKONZEPT OOD UND OOA 95 4 8 Verteilte objektorientierte anwendungen Gerade im OO sektor hat sich das client server paradigma sehr etabliert bei dem anbieter von diensten server und abnehmer hiervon client unter um st nden auf r umlich getrennten maschinen eines netzwerks laufen Konse quentes fortdenken dieses ansatzes bringt sofort den gedanken ein dass cli ent und server auch verschiedene betriebssysteme haben und in verschiede nen programmiersprachen programmiert sein k nnen Es wird dann eine ge wisse vermittlungsfunktion maklerdienst ben tigt um einerseits die ge w nschten dienste im netzwerk lokalisieren zu k nnen und andererseits die unterschiedlichen aufrufkonventionen datendarstellungen etc aufeinander abzubilden 4 9 Komponenten und frameworks Viele autoren im dunstkreis objektorientierter techniken machen sich gedan ken um die zeit nach OO Vieldiskutierte ans tze in diesem zusammenhang sind komponenten und frameworks Was komponenten wirklich sind bzw in wiefern sie sich von modulen unterscheiden ist nicht so g
104. ann spezialfall einer anderen klasse sein und somit von dieser klasse eigenschaften attribute und methoden erben Wir sprechen dann von subklasse und superklasse und von einer is a relation In abb 23 sind der fir menkunde Corporate Customer und der privatkunde Personal Customer spezialf lle des allgemeinen kunden Customer mit dem sie sich die attribute name und adresse und die methode kreditrahmen teilen Dar ber hin aus haben sie jedoch je eigene attribute und methoden Die abbildung zeigt auch noch einen weiteren aspekt von assoziations beziehungen die navigierbarkeit beispielsweise an der assoziation zwischen Order und Customer Wenn wir diese navigierbarkeit in begriffen der analy se betrachten dann bedeutet der pfeil dass ein Order objekt stets weiss zu welchem Customer objekt diese bestellung geh rt Umgekehrt braucht das Customer objekt nicht zu wissen welche bestellungen damit ver bunden sind In begriffen der implementierung heisst die navigierbarkeit dass ein Order objekt eine referenz auf ein Customer objekt haben wird aber nicht umgekehrt Diese sichtweise findet sich auch in der annotation Order customer creditRating wieder In der klasse Order gibt es gar kein feld customer aber wegen der navigierbarkeit darf man annehmen dass es eine entsprechende referenz geben wird Wir reden hier von einer vererbungsbeziehung inheritance relation auch der begriff klassifikationsbe
105. anz klar ausser dass komponenten irgendwie gr sser als module sind Der UML User Guide Booch 1998 sagt dazu component a physical and replaceable part of a system that conforms to and provides the realization of a set of interfaces Etwas klarer ist die situation in bezug auf frameworks Zwar sagt der UML User Guide auch hierzu nur framework an architectural pattern that provides an extensible template for applications within a domain etwas genauer beschreiben aber Fayad und Schmidt 1997 A framework is a semi complete application that can be specialized to produce custom applications In contrast to earlier OO reuse techniques ba sed on class libraries frameworks are targeted for particular business units such as data processing or cellular communications and application do mains such as user interfaces or real time avionics Frameworks sind wiederverwendbare sozusagen halbfertige anwendun gen die sich leicht zu vollst ndigen programmen konfigurieren lassen Sie stammen eindeutig aus dem bereich der graphischen benutzerschnittstellen Copyright Herbert Klaeren 29 Juni 2015 96 4 9 Komponenten und frameworks z B MacApp Ot Microsoft MFC X Windows und gehen erst in neuerer zeit verstarkt auf vorfabrizierte anwendungen zu etwa informationssysteme finanztransaktionen buchungssysteme Entsprechend ihres anwendungsgebiets k nnen nach Fayad und Schmidt 1997 frameworks in drei unt
106. ardsoftware die notwendig keit nach experten gr sser wird welche in der lage sind diese standard software zu konfigurieren und anderweitig an bed rfnisse des benutzers anzupassen vergleiche dies mit den nderungsschneidereien Hier wer den dann jedoch genau die f higkeiten und fertigkeiten relevant die wir zuvor bei der produktion der shrink wrap software ausgeklammert haben 1 4 Programmieren im grossen vs programmieren im kleinen Ein g ngiges missverst ndnis ist die verwechslung von softwaretechnik mit programmierkunst Sicherlich ist programmierkunst wichtig das erlernen ei nes soliden fundaments an datenstrukturen und algorithmen ebenso wie das entwickeln einer gewissen virtuosit t in der handhabung einer m glichst gros sen anzahl von programmiersprachen Trotzdem kann all dies die probleme der praxis nicht l sen weil die schiere gr sse von softwaresystemen ganz an dere probleme schafft als diejenigen die von programmierk nsten gel st wer den Zwar gibt es auch einsame rufer in der w ste Wirth 1995 welche die 4So berichtet das Handelsblatt Nr 123 vom 1 7 1998 auf s 55 Viele neue Jobs entstehen bei Beratern und Integratoren Im Wachstumsmarkt Information und Kommunikation nimmt das Gesch ft mit Standardsoftware die f hrende Rolle ein sweinf tex 1 EINF HRUNG WAS IST SOFTWARETECHNIK 13 Software Jahr Umfang Aufwand Apollo Skylab software 1970 10 MLOC 2000 mannjahre Space Shuttle software 1
107. are 84 4 7 Das beobachter muster 2 2 2 CE En 88 4 8 Verteilte objektorientierte anwendungen 95 4 9 Komponenten und frameworks 2 2 2222 95 5 Softwarequalit t 99 5 1 Valuesdriven testing aos cecs so ar ad an Be 107 5 2 Fehlerdichte Oncaea ars a Rabe a 107 5 3 Wo sind die fehler 2 2 2425 235 253 wh 3 3855 109 5 4 Dynamische analyse testen ax na 23 san 228 2a aa 111 5 5 Statische analyse gar mre er 115 Copyright Herbert Klaeren 29 Juni 2015 ii INHALTSVERZEICHNIS 5 6 Effizienz der fehlerbeseitigung 0 124 5 7 Value driven testine 2 2 aio So 2 8 2 hes a 126 5 8 Verifizieren 32 4 2 4 ee Ns ee ee 128 6 Vorgehensmodelle fiir die softwareentwicklung 131 6 1 Software lebensl ufe 0 0 0000 ee eee 131 6 2 Kritik am wasserfallmodell 2 22 2222 22222 134 6 3 Das V modell nd u ren 137 6 4 Fr he prototypen 2 a3 u Ra 138 6 5 Inkrementeller bau aoaaa aa CG Re ee BS 141 6 6 Agile methoden u a he aoak Bik aie SP ae wed 143 7 Die Microsoft methode 155 Tad Vetgleich mit XP e Solar Sec a At BR ee ea ah tie tae aR mee HE oa 160 8 Leistungsverbesserung von software 163 8 1 Fallstricke 6 14 lt p Saeed ie be ae gd SS hs Bs ob He De ade 173 9 Softwarewerkzeuge 175 91 awk grep digg 177 9 2 Das werkzeug make na en a 180 9 3 Daswerkzeug ant 24 oe niewa mman ea ee aod 185 9 4 Konfiguration von software a saoao a 186 9 5 Versionshaltung mit SVN 24
108. assignable nothing erg be F r die behandlung von Java programmen mit JML spezifikationen stehen die folgenden werkzeuge bereit e Der JML compiler jmlc dient als alternative zum normalen Java compiler javac Er liest und verarbeitet die JML annotierten Java programme und erzeugt daraus einen bytecode der zus tzlich zu den normalen leistun gen auch pr fcode f r alle vor und nachbedingungen und invarianten enth lt Das wrapper skript jmlrac runtime assertion checker setzt die pfade f r die JVM java so dass in jmlruntime jar auch die f r JML notwendigen klassen gefunden werden so dass die priifung der bedingungen funktio nieren kann Das werkzeug jmlunit erzeugt aus den von jmlc verarbeiteten JML annotierten Java programmen automatisch testfalle zur verwendung mit dem popul ren Java testwerkzeug JUnit Copyright Herbert Klaeren 29 Juni 2015 34 2 5 Softwaretechniksprachen e Der dokumentationsgenerator jmldoc erzeugt HTML seiten welche die spezifikationsanteile herauskristallisieren und lesbar aufbereiten e Der erweiterte syntaxpr fer escjava2 extended static checker pr ft m g lichst viel von den bedingungen bereits zur tibersetzungszeit nach ohne dass dazu ein lauff higes programm erzeugt werden muss ESC Java2 f hrt die blichen syntaxpr fungen des Java compilers durch inklusive verbesserter typpriifungen verwendet aber ausserdem einen theo rembeweiser um m gliche denkfehler aufzude
109. ation about the current locale or a list of all available locales When locale is run with no arguments it will display the current source of each locale category When locale is given the name of a category it acts as if it had been given each keyword in that category For each keyword it is given the current value is displayed OPTIONS a Lists all public locales Dd August 27 2004 Dt LOCALE 1 Os Darwin Sh NAME Nm locale Nd display locale settings Sh SYNOPSIS Nm Op Fl alm Nm Op Fl ck Ar name Op Sh DESCRIPTION Nm displays information about the current locale or a list of all available locales Pp When Nm is run with no arguments it will display the current source of each locale category Pp When Nm is given the name of a category it acts as if it had been given each keyword in that category For each keyword it is given the current value is displayed Sh OPTIONS Bl tag width indent It Fla Lists all public locales Abbildung 55 Unix man page Copyright Herbert Klaeren 29 Juni 2015 194 9 6 Werkzeuge zur dokumentation dircategory Editors direntry VIPER viper The newest Emacs VI emulation mode also A VI Plan for Emacs Rescue or the VI PERil end direntry finalout titlepage title Viper Is a Package for Emacs Rebels subtitle a Vi emulator for Emacs subtitle November 2008 Viper Version 3 11 2 author Mich
110. auf Motor und Kupplung und regele die Geschwindigkeit der angetriebenen R der Das Nachr sten geschieht durch einfaches Nachladen der Software sagte ein Smart Sprecher Bei bis her ausgelieferten Fahrzeugen wird das System kostenlos nachgeladen S dwestpresse 26 1 1999 Extreme Programming Core Practices The 12 XpXtudes of ExtremeProgramming grouped into four categories e Fine scale feedback TestDrivenDevelopment via ProgrammerTests and CustomerTests were UnitTests amp AcceptanceTests PlanningGame WholeTeam was OnsiteCustomer PairProgramming e Continuous process rather than batch ContinuousIntegration DesignImprovement was RefactorMercilessly SmallReleases e Shared understanding SimpleDesign DoSimpleThings YouArentGonnaNeedIt OnceAndOnlyOnce Sim plifyVigorously SystemMetaphor CollectiveCodeOwnership CodingStandard or CodingConventions e Programmer welfare SustainablePace original name FortyHourWeek http c2 com cgi wiki ExtremeProgrammingCorePractices Jun 2007 Developer Bill Of Responsibilities You have the responsibility to e understand what is needed and why it is your customer s priority e produce quality work even when you are pressed to do otherwise e mentor others and impart whatever skills and wisdom you may have e make your estimates as accurate as possible know when you are off schedule why and how to make the schedule to reflect reality as
111. ause you designed something the buying public happens not to want Colwell 2004 Copyright Herbert Klaeren 29 Juni 2015 246 27 The XP ideal as Beck says is mutual respect and collaboration among programmers In contrast at Microsoft and most other software companies we often see marketing goals take priority over professional goals in a project forcing companies to use overtime to compensate for unrealistic schedules or poor project management and teamwork Another approach common in Windows and other Microsoft groups rather than simply relying on overtime is to delay products sometimes for years Cusumano 2007a 28 I believe iterative development practices are useful for any software project where the upfront specifications are incomplete which is nearly always the case Cusumano 2007a swquote tex LITERATUR 247 Literatur Adams 1984 ADAMS Edward N Optimizing Preventive Service of Softwa re Products In IBM J Res Develop 28 1984 Nr 1 S 2 14 Alexander u a 1977 ALEXANDER C ISHIKAWA S SILVERSTEIN M JA COBSON M FIKSDAHL KING I ANGEL S A Pattern Language New York Oxford University Press 1977 Armour 2005 ARMOUR Philip G The business of software The uncons cious art of software testing In Communications of the ACM 48 2005 Nr 1 S 15 18 Bauer 1991 BAUER Friedrich L Informatik und Algebra In BROY M Hrsg Informatik und Mathematik Springer Verlag
112. aussetzung dass die variable MODULES richtig definiert wurde zu bevor zugen da es dabei nicht so leicht vorkommt dass eine abh ngigkeit verges sen wird In der tat taucht die variable MODULES an mehreren stellen in diesem makefile auf W re hier berall die expandierte form angegeben so w re es ziemlich wahrscheinlich dass bei nderungen in der projektstruktur irgend wo vergessen w rde die weiter notwendigen module hinzuzuf gen Dies ist sowieso eine der grundlegenden regeln f r das programmieren Alles was mehrfach auftaucht soll unbedingt durch eine einzige definition herausfak torisiert werden In der aktionszeile bezeichnet das ziel und die folge aller abh ngigkei ten durch leerstellen getrennt Interessant ist sicher die strophe zu PrintQueue sym Hier ist gar keine akti onszeile angegeben Diese ist auch nicht notwendig da bereits die zu beginn aufgef hrte regel die n tige aktion enth lt Die strophe hat hier nur den ein zigen zweck die zus tzliche abh ngigkeit von Jobs sym zu erfassen die sich aus dem import von Jobs in das definitionsmodul von PrintQueue ergibt Ein aufruf von make ohne zus tzliche parameter f hrt dazu dass das im makefile zuerst genannte ziel primary target entsprechend der darunter spe zifizierten aktion einmalig herzustellen versucht wird Man kann aber auch z b durch den Aufrufmake TestSchedule o ein anderes ziel anstatt des ersten erzeugen In dem zuerst genannten b
113. auswahl treffen k nnen Mit dem qualifizierenden import ist andererseits klar dass das unter diesem namen importierte objekt nicht noch einmal von einer an deren stelle importiert oder gar im laufenden modul neu deklariert werden kann Eine andere m glichkeit die vom standpunkt der wartbarkeit deutlich zu bevorzugen ist und die deshalb in der nachfolgersprache von Modula 2 Obe ron als einzige vorgesehen ist ist der sog modulimport der in abb 12 f r das modul Foo verwendet wurde Hierdurch wird das importierende modul in ei ner weise vorger stet dass wir durch sog qualifizierte bezeichner qualified identifier der form Foo f auf die exportierten bezeichner zugreifen k nnen Damit werden einerseits namenskonflikte umgangen wir k nnen jetzt etwa Foo g und g das eine abk rzung f r Bar g ist nebeneinander verwenden Ausserdem wird aber auch die m glichkeit zu missverst ndnissen beim lesen des moduls durch menschliche leser eingeschr nkt da an jeder verwendungs stelle klargemacht wird woher der bezeichner kommt Der preis daf r ist ein erh hter schreibaufwand und ein l ngerer programmquelltext 2 6 Keine softwaretechniksprache Was nun Viele der heute beliebten programmiersprachen sind definitiv keine softwa retechniksprachen C C und trotzdem m ssen mit ihnen grosse pro grammsysteme hergestellt werden Was kann das modulkonzept hierbei hel fen bzw wie sollen die in diesem abschnitt vorgestellten me
114. awk assoziative arrays das heisst also arrays die auch durch zeichenketten indiziert werden k nnen und nicht nur wie sonst durch zahlen Ein paar beispiele sollen zeigen was awk leisten kann Grundlage ist eine kleine textdatei coins txt mit angaben zu einer miinzsammlung gold gold silver gold gold gold gold silver gold silver silver gold gold Ein aufruf 1 1 jk oO FPOoOrRrOCcOrRrO OFF 25 25 1986 1908 1981 1984 1979 1981 1986 1986 1986 1986 1987 1987 1988 USA Austria Hungary USA Switzerland RSA RSA PRC USA USA USA USA USA Canada American Eagle Franz Josef 100 Korona ingot ingot Krugerrand Krugerrand Panda Liberty dollar Liberty 5 dollar piece Liberty 50 cent piece Constitution dollar Constitution 5 dollar piece Maple Leaf awk gold coins txt leistet nichts anderes als ein grep gold coins txt Was grep aber nicht kann ist folgendes awk gold print 5 6 7 8 coins txt Hier druckt awk nur das f nfte bis achte feld der datei mit den textlichen be schreibungen der m nzen aus und zwar nur f r die goldm nzen 3 von http www vectorsite net tsawk_1 html swtool tex 9 SOFTWAREWERKZEUGE 179 American Eagle Franz Josef 100 Korona ingot Krugerrand Krugerrand Panda Liberty 5 dollar piece Constitution 5 dollar piece Maple Leaf Ein beispiel fiir eine etwas komplexere aktion die a
115. b chern als sammlungen wiederverwendbarer erfahrungen Objektorientierte muster sind ein schritt in diese richtung Sie erm glichen zum einen dass erfolgrei che architekturentw rfe wiederverwendet werden k nnen Zum anderen er leichtern sie die dokumentation von software indem sie zur beschreibung der architektur verwendet werden k nnen Das konzept bei der entwicklung von systemen auf wiederverwendbare muster zur ckzugreifen ist zuerst von C Alexander u a 1977 formuliert worden s a anh E p 240 Jedes muster beschreibt ein problem das immer und immer wieder in unserer umge bung auftritt und es beschreibt den kern der l sung zu diesem problem in einer weise dass man die l sung millionen von malen benutzen kann ohne jemals die gleiche sache zweimal tun zu m ssen Alexander bezieht sich dabei auf die entwicklung von geb uden und st d ten aber seine aussage kann als grundlegende definition von mustern in der objektorientierten software entwicklung verwendet werden Alexander for dert dass jeder architekt sich eine eigene sprache solcher muster zulegen muss in der er sich ausdr ckt um einerseits seinen pers nlichen wiederer kennbaren stil zu finden und andererseits nicht immer wieder von neuem das rad erfinden zu m ssen Objektorientierte muster sind l sungsvorlagen f r problemstellungen die immer wiederkehren Dabei beschreibt ein muster nur den abstrakten l sungs ansatz f r den entwurf Von ihm
116. b rund 300 gepr f te programme in einer von IBM verwalteten bibliothek die von mitgliedern kostenlos bezogen werden konnte darunter das SOAP Symbolic Optimal As sembly Program der oben erw hnte assembler und das SOS Share Operating System f r die IBM 709 die inzwischen die 704 abgel st hatte Gegen ende der 1960er jahre hatte IBM deutlich mehr als 50 prozent des computermarkts besetzt und die konkurrenten strengten am 17 1 1969 eine antitrust klage an Ein resultat dieses prozesses der bis 1983 lief war dann das sogenannte un bundling IBM durfte nun die software zu seinen grossrechnern nicht mehr verschenken sondern musste sie separat berechnen Dazu waren nun erstmals auch lizenzvertr ge notwendig welche unter anderem die weitergabe gekauf ter programme verboten Man kann ohne bertreibung sagen dass der oberste amerikanische gerichtshof hiermit die softwareindustrie gegr ndet hat Sobald juristen das feld betreten wird das leben um einige gr ssenordnun gen komplizierter Lizenzen w rtlich erlaubnisse regeln im fall von softwa re was der empf nger damit tun darf und was ihm verboten ist Grundlage hierf r ist das urheberrecht im angels chsischen sprachgebrauch copyright das von land zu land unterschiedlich ausgeformt ist Das deutsche urheber recht ist eine scharfe waffe die beispielsweise auch dazu eingesetzt werden kann dass der enkel eines architekten versucht den abriss eines bahnhofs seitenfl gels
117. bersetzen und da bei v llig offen lassen auf welche weise sp ter linker und loader diese objek te auffinden sollen wird in Modula 2 eine eindeutige zuordnung von namen von objekten konstanten typen prozeduren zu modulen vorgenommen Im oben aufgef hrten beispiel ist vollkommen klar dass das modul PrintQueue den typ job aus dem modul Jobs importieren m chte und nicht irgendeinen anderen artikel gleichen namens Damit ist vor allem unter anderem klar in welchem objektmodul der linker sp ter das symbol finden wird Das C swmodu tex 2 MODULKONZEPT 39 Client c Foo c j gr f 0 222 ra static h 7 2 O x Bar c Abbildung 11 Namensr ume in C programmiersystem verf gt dagegen ber einen flachen bzw globalen namens raum Alle symbole in einem objektmodul die nicht ausdr cklich mit dem schl sselwort static markiert sind werden unver ndert in einen globalen na mensraum f r den linker exportiert Diese situation ist in abb 11 veranschau licht Die bersetzungseinheit Client verwendet das symbol g ohne es dekla riert zu haben Das st rt den C compiler bei der bersetzung von Client c auch gar nicht er reicht die information ber das fehlende symbol einfach an den linker weiter Wenn dieser sp ter in keinem der mit einem aufruf zusam men bergebenen objektmodule und in keiner der spezifizierten bibliotheken das symbol finden kann gibt es eine fehlermeldung Da der C compiler den typ von g nic
118. ch wie schon das oben angef hrte beispiel klarmacht Eben so klar ist aber andererseits dass der bergang vom PSM zum code und zu betr chtlichem anteil auch umgekehrt sehr gut durch werkzeuge unterst tzt werden kann Im universit ren FUJABA projekt From UML to Java and back http www fujaba de wurden werkzeuge entwickelt die ein solches round trip en gineering mit einem mehrfachen wechsel von modellierungsebenen in beiden richtungen erm glichen swoo tex 4 OBJEKTKONZEPT OOD UND OOA 79 4 5 Prozess einer objektorientierten modellierung Ein g ngiges paradigma der objektorientierten systemerstellung ist es aus ei ner beschreibung des systems als bestandteil der realen welt die hier involvier ten objekte ihre attribute und methoden sowie deren vielf ltige beziehungen zueinander herauszusch len und zu modellieren Zun chst wird ein system von aussen betrachtet und die benutzung des sy stems durch den anwender beschrieben Dabei wird das system als objekt auf gefasst und die interaktion der benutzer mit dem system als austausch von nachrichten Eine besondere rolle spielen in diesem zusammenhang die sog anwen dungsf lle use cases Abgesehen von der relativ wenig aussagekr ftigen m glichkeit solche anwendungsf lle in der UML graphisch zu veranschau lichen handelt es sich hierbei um kleine skripte drehb cher stories sce narios welche in m glichst standardisierter form for
119. ch Ada Eiffel und Oberon rechnen k nnen gibt swmodu tex 2 MODULKONZEPT 35 es eine ausgefeilte kontrolle tiber die sichtbarkeit von objekten Von einer soft waretechniksprache erwarten wir dass sie ber ein eingebautes modulsystem verf gt das mindestens die folgenden eigenschaften hat 1 Unterst tzung von Software abstraktionen durch mechanismen zur e Spezifikation einer schnittstelle e Pr fung einer implementation gegen die spezifizierte schnittstelle insbesondere auch auf vollst ndigkeit e Pr fung des gebrauchs einer schnittstelle gem ss ihrer spezifikation e Pr fung des konsistenten gebrauchs der gleichen version einer schnittstelle beim linken des programms 2 Kapselung von namensr umen durch e Konstrukte zur vermeidung von namenskonflikten qualifizierte na men e Gruppierung in namensr ume module Beachte dass sich aus diesen eigenschaften unter anderem zwingend er gibt dass der sprachprozessor compiler einer softwaretechniksprache syn taxpr fungen ber die grenzen von bersetzungseinheiten hinweg vorneh men muss Besonders deutlich wird dies am beispiel der sprache Modula 2 die gera de mit dem ziel entworfen wurde systeme als kollektionen von modulen si cher schreiben zu k nnen Die vorstellung bei Modula 2 ist dass die schnitt stellenbeschreibung eines moduls stets in einer anderen datei enthalten ist als die details der implementierung Der quelltext eines moduls ist somit
120. ch drei grunds tzliche m ngel an diesem schema die im prinzip von allen solchen vorgehensmodellen geteilt werden Abgrenzungsproblem W hrend das schema klar voneinander abgegrenzte phasen vort uscht kann in wirklichkeit der bergang fliessend sein Spe ziell bei ganz grossen projekten k nnen sich einzelne teile noch in der pla nung befinden w hrend andere schon in der ausf hrung oder gar schon im gebrauch sind Abfolgeproblem W hrend das schema vort uscht dass die einzelnen phasen streng zeitlich nacheinander ablaufen kommt es in wirklichkeit h ufig vor dass sich w hrend der ausf hrung planungsfehler herausstellen oder w hrend des gebrauchs ausf hrungsfehler und oder planungsfehler In diesen f llen sind r ckschritte im entwicklungsprozess unvermeidlich Angemessenheitsproblem Ein allgemeines schema das auf wirklich alle pro jekte passt so wie das oben aufgef hrte hat fast keinen informationsge halt mehr Ein sehr detailliertes schema bietet viel information und hilfe swll tex 6 VORGEHENSMODELLE FUR DIE SOFTWAREENTWICKLUNG 133 bei der organisation bringt aber die gefahr mit sich dass es nur auf we nige projekte passt vielleicht sogar nur ein einziges In der tat hat jedes projekt in wirklichkeit seinen eigenen lebenslauf Geht man davon aus dass vorgehensmodelle nur beschreiben wie etwas im prinzip abl uft dass man sie aber nicht allzu pedantisch ernst nehmen sollte so sind sie ein ganz brauchba
121. chanismen dann dargestellt werden Hierzu ist zun chst zu bemerken dass v llig unabh ngig von der pro grammiersprache die schaffung von modulen im hier definierten sinne mit klar definierten schnittstellen und einer rigorosen einhaltung des geheimnis prinzips immer m glich und auch in hohem mass ratsam ist Wenn die pro grammiersprache die beschreibung von schnittstellen nicht erm glicht dann k nnen diese trotzdem in dokumenten ausserhalb der programmiersprache beschrieben werden besser noch innerhalb von programmen in form von kommentaren die u u eine standardisierte form haben damit sie von werk zeugen behandelt werden k nnen Und wenn die programmiersprache die einhaltung einer abstraktion nicht erzwingt dann kann diese dennoch durch textliche inspektion der programmquellen durch werkzeuge durch den pro grammierer selbst oder durch kollegen berpr ft werden Manche programmiersprachen z b C sind von einer ausgepr gten libera lit t gepr gt und lassen dem programmierguru nur ungern ber den compiler kritik an seinen programmen ausrichten Es gibt dann aber in der regel sepa rate softwarewerkzeuge z B lint welche zus tzliche pr fungen anbieten Copyright Herbert Klaeren 29 Juni 2015 42 2 7 Was ist mit Java Diese sollten genutzt werden Die folgenden regeln werden fiir den fall empfohlen dass keine software techniksprache zur verf gung steht und keins der angesprochenen zusatzli c
122. che das abheben eines positiven betrags von einem konto implementiert und dabei den neuen kontostand als ergebnis liefert requires amount gt 0 ensures balance old balance amount amp amp result balance x public int debit int amount A Wir finden in diesem beispiel tibrigens eine verletzung des precondition availability principle Der aktuelle kontostand balance wird in jedem fall eine private variable der kontoklasse sein und sich nur ber entsprechende metho den ver ndern lassen Deswegen kann er in der nachbedingung auch nicht sinnvoll verwendet werden In abb 9 findet sich ein beispiel f r eine schwergewichtige heavyweight JML spezifikation Leavens 2007 Im gegensatz zu einer leichtgewichtigen lightweight spezifikation bei der nur einige aspekte spezifiziert werden si gnalisiert das schl sselwort normal_behavior dass der programmierer davon ausgeht dass er hier wirklich alle aspekte spezifiziert hat Insbesondere darf die methode largest wenn ihre vorbedingungen erf llt sind nicht mit einer ausnahmebedingung exception aussteigen sondern muss unbedingt normal beendet werden Die abbildung soll im folgenden noch detaillierter kommen tiert werden Es geht darum einen heap von ganzen zahlen zu spezifizieren Zeile 5 sagt dazu dass man sich diesen vorstellen kann als ein nicht leeres feld ganzer zahlen Die angabe model sagt dabei dass dies hier keinen bezug z
123. ckeln diese weiter Wenn Alice dann ihre n derungen speichert wird dies revision 106 und wenn Bob danach abspeichern will wird ihm dies verweigert weil die im repositorium befindliche revision 106 verschieden ist von der revision 105 auf der seine nderungen basieren Bob muss also zuerst seine dateien auf den zustand 106 bringen bevor er sei ne revision 107 abspeichern kann Sollten seine nderungen im konflikt mit Alices nderungen stehen muss er erst die konflikte bereinigen aber das pro blem entsteht wenn Alice an ganz anderen stellen gearbeitet hat als Bob dann geht das mischen klaglos vonstatten aber jetzt befindet sich im repositorium ein softwarezustand den in dieser form noch niemand gesehen geschweige denn getestet hat Das zentrale konzept bei SVN sind also revisionen Mercurial dagegen kon zentriert sich auch changesets d h auf die menge der nderungen zwischen einer revision und einer anderen Das wirkt zun chst wie ein streit um des kai sers bart hat aber wichtige auswirkungen wie Joel Spolski 2010 in seinem tutorial bemerkt W hrend SVN nur weiss dass es sich bei einem commit um zwei verschiedene revisionen eines projekts handelt und dann versucht die se irgendwie zu mischen hat Mercurial bereits einen berblick dar ber was sich konkret alles ge ndert hat und kann von daher besser einen konsistenten zustand herstellen Die anzahl der merge conflicts wird also drastisch reduziert 9 6 Werkze
124. cken Unter anderem werden stellen aufgedeckt an denen m glicherweise eine null referenz stattfindet auch berschreitungen von array grenzen werden soweit m glich bereits zur bersetzungszeit entdeckt class A byte b public void n b new byte 20 public void m n b 0 0 2 RGA Hier w rde ESC Java2 sich bei der zuweisung auf b 0 mit einer warnmel dung dahingehend ussern dass hier vielleicht zur laufzeit ein fehler auftre ten wird wenn b nicht richtig initialisiert wurde Die tatsache dass durch den aufruf von n genau diese initialisierung vorgenommen wurde ist f r das werkzeug nicht einsichtig dazu m ssten ja auch die eigenschaften des kon struktors f r byte inspiziert werden Es ist deshalb richtig und n tig die wirkung von n ausdr cklich selbst zu beschreiben z b durch ein ensures b null amp amp b length 20 vor der deklaration von n F r den angegebenen zweck h tte die erste h lfte dieser zusicherung gen gt aber wenn man schon einmal dabei ist kann man auch gleich alles spezifizieren was man weiss Gebraucht wird es bestimmt in der einen oder anderen situation Alternativ k nnte man auch vor die genann te zuweisung ein assumes b null amp amp b length gt 0 einf gen 2 5 Softwaretechniksprachen In den sogenannten softwaretechniksprachen software engineering languages zu denen wir ausser Modula 2 au
125. conomy und eleganz Dann ordnet er diese werte den unterschiedli chen dimensionen zu die effizienz welche definiert ist als minimierung des ressourcenverbrauchs geh rt zur wissenschaftlichen dimension der technik konomie dagegen ist ein soziales ziel bei dem der eingesetzte aufwand in re lation gesetzt wird zum erzielten nutzen Man beachte dass sich dies von dem ziel der effizienz unterscheidet selbst wenn der ingenieur beweist dass ein bestimmtes ziel wirklich mit minimalem ressourcenverbrauch erreicht wurde kann trotzdem die gesellschaftliche analyse zu dem schluss kommen dass das erzielte resultat den eingesetzten aufwand nicht wert ist Den wert eleganz ordnet MacLennan der symbolischen dimension der technik zu indem er sagt Eleganz symbolisiert einen guten entwurf Er diskutiert dies am beispiel der Tacoma Narrows br cke die auch in der softwaretechnik literatur sehr h ufig zitiert wird Diese br cke war eine der ersten welche mit hilfe ausgedehn ter computerberechnungen entworfen wurde In einem unwetter 1940 brach die br cke jedoch zusammen es existieren spektakul re filmaufnahmen von diesem ungl ck Nachfolgende analysen zeigten dass s mtliche computerbe rechnungen der statischen sicherheit der br cke vollkommen korrekt waren es war lediglich aufgrund des mangelnden fortschritts der damaligen technik darauf verzichtet worden auch ein dynamisches modell der br cke durchzu rechnen Durch die von dem unw
126. d Id Id Id Id misc c v 1 8 1993 05 10 06 20 23 anders Exp anders parsing c v 1 13 1993 05 10 06 11 00 anders Exp anders tracing c v 1 9 1993 05 10 05 49 42 anders Exp anders files c v 1 13 1993 05 10 06 19 06 anders Exp anders interp c v 1 7 1993 05 07 20 23 38 anders Exp anders lexsrc l v 1 13 1993 05 10 05 51 00 anders Exp anders yaccsrc y v 1 15 1993 05 07 21 31 04 anders Exp anders variable c v 1 14 1993 05 10 06 16 49 anders Exp anders strmath c v 1 7 1993 05 10 06 06 02 anders Exp anders expr c v 1 2 1993 05 10 05 52 08 anders Exp anders interpret c v 1 16 1993 05 10 06 17 35 anders Exp anders envir c v 1 2 1993 05 10 05 52 45 anders Exp anders shell c v 1 14 1993 05 10 06 11 51 anders Exp anders stack c v 1 13 1993 05 10 06 06 43 anders Exp anders rexx c v 1 13 1993 05 10 06 09 38 anders Exp anders macros c v 1 2 1993 05 10 06 04 06 anders Exp anders builtin c v 1 14 1993 05 10 06 12 40 anders Exp anders extlib c v 1 1 1993 05 07 21 36 04 anders Exp anders Header auto home flipper anders flipper prosj rexx src RCS convert c v 1 7 Id Id 1993 05 07 21 23 08 anders Exp anders unixfuncs c v 1 11 1993 05 10 06 08 07 anders Exp anders error c v 1 9 1993 05 10 05 55 53 anders Exp anders Abbildung 68 Ident strings swhist tex C HISTORISCHES 235 gere RCS Revision control system ging deshalb umgekehrt vor Fussend auf der beobachtung dass in der regel die aktuelle v
127. d will sie wieder ins repositorium einchecken Das geht f r einige da teien gut aber pl tzlich gibt es bei einer datei konflikte die nicht so leicht aufzul sen sind oder die netzwerkverbindung wird unterbrochen Dann ist das repositorium in einem inkonsistenten zustand es gibt f r den ver ursacher keine einfache m glichkeit seine bereits eingecheckten module wieder zur ckzusetzen Das n chste problem ist dass CVS grunds tzlich innerhalb eines einzigen dateisystems arbeitet alle mitarbeiter m ssen schreibberechtigung f r das verzeichnis des repositoriums haben also insbesondere auch ein login ac count f r das system H ufig f hrt dies dazu das weitere techniken z B VPN tunnel ben tigt werden Beim CVS hat jede datei ihre eigene versionsnummer s abb 68 Ein be stimmter softwarestand ist deswegen durch eine sammlung m glicher weise ganz unterschiedlicher versionsnummern charakterisiert und l sst sich damit nicht ohne weiteres rekonstruieren CVS bietet daf r das kon zept der tags an damit kann ein bestimmter zustand des repositoriums markiert werden und somit sp ter auch wieder aufgefunden werden Wird es allerdings vergessen im richtigen moment ein solches tag zu ver geben so wird die rekonstruktion wieder schwieriger direkt dateien umbenennen oder verschieben allerdings ein recht gef hrlicher prozess swhist tex D PHILOSOPHISCHE ASPEKTE DER SOFTWARETECHNIK 237 D Philosophische aspekte der so
128. dem funktionen so lokalisiert wer den dass nderungen voraussichtlich in nur einem modul lokal durchge f hrt werden k nnen e der bew ltigung des arbeitsumfanges da die entwicklung verschiede ner programmteile parallelisiert werden kann von verschiedenen abtei lungen firmen einrichtungen parallel durchgef hrt werden kann In Meyer s Enzyklop dischem Lexikon findet sich die folgende definition des begriffs modul ein austauschbares komplexes Teil eines Ger ts oder einer Maschine das eine geschlossene Funktionseinheit bildet Im softwarebereich ergibt es nat rlich kaum einen sinn von dem ger t bzw der maschine zu sprechen Es bleiben aber die drei wesentlichen merkmale eines moduls e austauschbarkeit ohne beeintr chtigung des restsystems swmodu tex 2 MODULKONZEPT 21 e komplexe leistung e seschlossene funktionseinheit Der begriff geschlossene funktionseinheit ist dabei so zu interpretieren dass es m glich sein muss die funktion des moduls innerhalb des gesamten systems sprachlich zu beschreiben m a w es muss m glich sein die rolle zu beschreiben die das modul im system bernimmt Ein gutes indiz f r die se tatsache ist es schon wenn es gelingt dem modul einen aussagekr ftigen namen zu geben Gelingt dies nicht dr ngt sich der verdacht auf dass hier ohne zwingenden grund irgendwelche berhaupt nicht zusammengeh ren den funktionen und daten willk rlich als pseudomodul
129. dem man sie in kommentaren unterbringt Die normale kommentarbegrenzung in Java ist compiler berlesen alles was sich dazwischen befindet Die Javadoc kommentare haben einen stern mehr den der compiler schon nicht mehr sieht Das werkzeug Ja vadoc erzeugt aus Java programmen HTML dateien mit dokumentation die mit jedem browser angeschaut werden k nnen Daraus ergibt sich dass inner halb der Javadoc dokumentation jede HIML konstruktion verwendet werden kann inklusive hyperlinks auf andere seiten Javadoc selbst kennt eine reihe von markierungen tags die gesondert be handelt werden und die zum teil bindend verlangt werden die wichtigsten davon sind author Autor nur bei klassen und schnittstellen bindend erforderlich version Version nur bei klassen und schnittstellen bindend erforderlich param Parameter von methoden und konstruktoren return R ckgabewert von methoden throws Ausnahmesituationen see Querverweis Es gibt bestimmte richtlinien wie Javadoc kommentare vern nftigerwei se geschrieben werden sollen z b ist die obige reihenfolge von mar kierungen verpflichtend siehe hierzu http java sun com j2se javadoc writingdoccomments index html Copyright Herbert Klaeren 29 Juni 2015 196 9 6 Werkzeuge zur dokumentation 9 6 4 Doxygen TODO Hier etwas ber Doxygen sagen www stacks nl dimitri doxygen siehe auch Neville Neil 2008a Kontrollaufgaben 1 Erl utern sie die fun
130. den 6 6 1 Extreme Programming Eine sehr interessante entwicklung ist das von Kent Beck 1999 propagierte Extreme Programming XP Kent Beck baut hier auf seiner langj hrigen er fahrung im objektorientierten programmieren in Smalltalk auf Auch er ver zichtet darauf einen grossen plan f r das gesamtprojekt zu entwerfen son dern es wird ganz stark inkrementell gearbeitet Beim XP prozess arbeiten auftraggeber und programmierer die ganze zeit zusammen wobei auftraggeber in wirklichkeit ein oder mehrere vertreter des der auftraggeber bedeutet Der auftraggeber definiert funktionalit ten des systems in form von user stories szenarien und liefert gleichzeitig testf lle anhand deren man die implementierung dieser szenarien berpr fen kann Die programmierer liefern dann f r jedes einzelne szenarium eine absch t zung wie lange sie f r dessen implementierung brauchen werden Ergibt sich bei der absch tzung dass die implementierung l nger als drei wochen dau ern wird so muss der auftraggeber es in st cke aufteilen die unterhalb die ser grenzen machbar sind Es wird sodann ein plan f r die n chsten eins bis drei wochen gemacht denn in diesem takt werden systemversionen iteratio nen genannt hergestellt Welche szenarien k nnen f r die n chste iteration des systems implementiert werden In der regel wird es nicht m glich sein alles zu implementieren in diesem fall w hlt der auftraggeber anhand der sch
131. die gespeichert werden m ssen e Orte Als namenskonvention sollte unbedingt eingehalten werden dass klassen namen im singular formuliert werden Also nicht Studenten sondern Stu dent nicht Vorlesungen sondern Vorlesung Selbstverst ndlich steht die klasse Student in gewissem sinne f r alle studenten aber wie schon gesagt ist eine klasse eine art schablone oder stempel um exemplare bzw instanzi ierungen zu erzeugen und diese erh lt man jeweils einzeln z b durch ei ne formulierung wie new Student In einer solchen formulierung w rde der plural merkw rdig aussehen Berry und Kamsties 2005 weisen ausserdem darauf hin dass der plural in spezifikationen anlass zu missverst ndnissen bieten kann brigens ist es auch konvention die klassennamen mit einem Ein ber hmtes bild von Magritte zeigt eine fotorealistisch gemalte pfeife mit der unter schrift Ceci n est pas une pipe In der tat es ist wirklich keine pfeife es ist das abbild einer pfeife 18 Vergleiche die beiden s tze Studenten belegen 6 vorlesungen und Studenten belegen hunderte von vorlesungen Nur das weltwissen macht deutlich dass in diesem fall im ersten satz jeder einzelne student gemeint ist und im zweiten die gesamtheit aller studenten Jeder student belegt 6 vorlesungen ist die deutlich bessere formulierung f r den ersten satz Copyright Herbert Klaeren 29 Juni 2015 82 4 5 Prozess ei
132. diesem wirklich simplen beispiel durchaus komplex zu nennen Ein system aus vielen modulen l sst sich deshalb kaum ohne werkzeuge vern nftig pflegen Unix hat ein entsprechendes werkzeug anzubieten n m lich das programm make von Stuart Feldman 1979 Das programm make liest aus einem sogenannten makefile beschreibungen der abh ngigkeiten zwi schen dateien und f hrt daraufhin alle jeweils notwendigen aktionen durch Eintr ge stanzas strophen in diesem makefile haben im wesentlichen die folgende struktur Zun chst wird ein gewisses ziel aufgelistet target welches daran zu erkennen ist dass dahinter ein doppelpunkt folgt In der re gel ist das ziel eine datei die durch den make prozess hergestellt werden soll wir werden jedoch sehen dass es auch sogenannte pseudoziele gibt bei denen andere aktionen ausgef hrt werden Hinter dem doppelpunkt folgt dann eine liste von sogenannten abh ngigkeiten dependants dies sind die dateien von denen das ziel abh ngt Unter der zeile mit den beschreibungen des ziels und der abh ngigkeiten findet sich dann eine aktion die ausgef hrt werden soll wenn eine der abh ngigkeiten j nger ist als das ziel Diese aktionszeile muss immer mit einem tabulator HT ASCH Zeichen 9 beginnen dies ist ein be r chtigter problempunkt wenn makefiles mit e mail verschickt werden denn dabei werden meist tabulatoren durch leerstellen ersetzt Abb 53 zeigt ein makefile f r das Pri
133. direktes abbild der entsprechenden physikalischen gr sse ist wird in einer digitalen darstellung eine pysikalische gr sse durch eine symbolische beschreibung z b zahlen in einer gewissen notation dargestellt Der begriff der stetigen funktion spielt hier keine rolle es herrscht viel mehr eine maximale unstetigkeit Wenn man in einer 64 bit bin rzahl eine einzige stelle von 0 zu 1 ndert entsteht nicht unbedingt eine ganz hn liche sondern unter umst nden eine weit entfernte zahl Selbst kleinste nderungen k nnen also gr sste auswirkungen haben siehe auch abb 2 1 2 Ingenieurwissenschaft Unsere vorlesung heisst softwaretechnik anderswo heisst diese veranstaltung etwas vornehmer weil englisch software engineering Laut lexikon w re soft waretechnik die pr zise bersetzung von software engineering allerdings wird die englische bezeichnung von vielen leuten auch in deutschen texten bevor zugt weil sie deutlicher macht dass die konstruktion von software eine inge nieurt tigkeit ist oder sein sollte Die mit dem 1968 eingef hrten begriff soft ware engineering verbundene absicht war in der tat die qualit t der pro gramme zu verbessern indem man ingenieursprinzipien auf ihre herstellung anwandte s anh C Bevor wir richtig beginnen daher zun chst einige defi nitionen aus der literatur Software Engineering nach dem IEEE Standard Glossary of Software Engi neering Terminology IEEE 1990 the
134. dukts notwendig ist Eine wichtige und wie Schnurer berichtet manchmal umstrittene aufgabe des moderators ist das klassifizieren von fehlern Fehler werden klassifiziert nach typ Ist das textst ck in bezug auf die spezifizierte aufgabe unvollst n dig unkorrekt oder berfl ssig nach schwere Hier wird unterschieden zwischen formalen fehlern d h ver st ssen gegen programmiernormen unzureichende oder missverst ndli che kommentare und hnliche leichtere vergehen funktionalen fehlern d h verst ssen gegen die spezifikation des S dokuments und offenen fragen Dies sind in gewissem sinne die h rtesten punkte da hier zun chst unei nigkeit besteht ob ein fehler vorliegt oder nicht In der inspektionssitzung m gen die meinungen hier ber auseinandergehen Eine protokollierung eines problempunkts als offene frage f hrt dazu dass autor und einige in spektoren im anschluss an die inspektionssitzung dieser frage gesondert nachgehen und hier ber bericht erstatten m ssen nach kategorien z b datendefinition registerbenutzung logik wartbarkeit entwurffehler normen testabdeckung nach fehlerquelle welcher entwicklungsschritt hat diesen fehler verursacht Phase Vorbereitung Inspektion Grobentwurf 200LOC 220 LOC Feinentwurf 100 LOC 100 LOC Code 125 LOC 90 LOC Tabelle 8 Inspektionsleistung pro stunde IBM empfiehlt unterschiedliche anzahlen von personen fiir die verschiede nen stufen von inspektionen Als grund
135. e bezeichnet die daraus entstan denen dateien f r die sp tere verwendung durch den linker dementsprechend als objektmodule F r unsere heutigen begriffe ist dies ein viel zu schwacher modulbegriff da die verantwortung daf r dass die einzelteile auch wirklich zusammenpassen ausschliesslich beim programmierer ruht das system kann hier keinerlei hilfestellung leisten cc c solve c solve c e solve o cc c foo c foo c PD foo o solve cc c bar c ld o solve solve o foo o bar o lc bar c bar o Abbildung 4 Getrennte bersetzung Die situation ist in abb 4 dargestellt Ein programm zur geleichungsl sung besteht aus drei verschiedenen C quellprogrammen die vom C compiler je weils getrennt bersetzt werden Der linker 1d setzt diese zu einem ausf hr baren programm zusammen Dabei geht auch die C bibliothek libc a ein in der h ufig benutzte unterprogramme in objektform bereitgestellt werden Von der rein technischen gegebenheit der getrennten bersetzung abgese hen existiert ausserdem in jedem fall die notwendigkeit systeme in bestand teile aufzuteilen da sie als ganzes in der regel nicht verstanden werden k n nen In der art und weise wie systeme in module strukturiert werden liegt ei ne kreative und wichtige leistung je nachdem wie angemessen dies durchge f hrt wurde kann das verst ndnis des ganzen systems erleichtert erschwert 5Es heisst brigens das modul pl die module C
136. e mit den jeweiligen lizenzen auflistet Darin ist die folgende passage enthalten Components of the software used in the vehicle may be free and open source software licensed under the terms of license of the GNU General Public License Version 2 GPL or GNU Lesser General Pu blic License Version 2 1 LGPL Upon request we will supply the source code of the components licensed under the GPL and LGPL on a data medium please specify the designation of your vehicle Please swfloss tex 10 FREE LIBRE OPEN SOURCE SOFTWARE 209 direct your request to the following address within three years after vehicle delivery Daimler AG HPC CAC Customer Service D 70546 Stuttgart The copyright holders usually do not provide any warranty and assume no liability whatsoever for the free and open source software components Note that any modification to the vehicle of any kind can void any warranty claim Copyright Herbert Klaeren 29 Juni 2015 210 swfloss tex A DIE BEDEUTUNG DER BENUTZUNGSSCHNITTSTELLE 211 Abbildung 59 Intuitive bedienung A Die bedeutung der benutzungsschnittstelle Ein wichtiges thema f r die softwaretechnik wo sehr viele dramatische fehler begangen werden ist die anlage einer vern nftigen benutzungsschnittstelle oft auch leicht f lschlich als benutzerschnittstelle bezeichnet Fehler k nnen hier in der regel vermieden werden indem benutzer fr hzeitig in den ent wurfsprozess integriert werde
137. e vom auftraggeber formulierten testf lle Der begriff planungsspiel soll einerseits den emotionalen stress im planungs prozess reduzieren und andererseits klarmachen dass es hier genaue regeln gibt an die sich jeder spieler halten muss Genaueres findet sich im Wiki an der genannten stelle lauf der Seite http c2 com cgi wiki ExtremeProgrammingCorePractices nttp c2 com cgi wiki The ideas of Wiki may seem strange at first but dive in and explore its links Wiki is a composition system it s a discussion medium it s a repository it s a mail system it s a tool for collaboration Really we don t know quite what it is but it s a fun way of communicating asynchronously across the network swll tex 6 VORGEHENSMODELLE FUR DIE SOFTWAREENTWICKLUNG 147 Ganzheitliches team bezieht sich auf die tatsache dass immer ein vertreter des auftraggebers anwesend ist ber das programmieren in paaren sprachen wir schon Besonderes augenmerk verdient der punkt entwurfsverbesserung der auch unter der berschrift Gnadenlos refaktorisieren bekannt ist Es heisst hier konkret wenn man zwei methoden findet die gleich aussehen dann sind diese auszufaktorisieren auszuklammern und durch eine einzige methode zu ersetzen Gleiches gilt f r zwei objekte mit gleicher funktionalit t Interessant an dem ansatz ist dass das wohlergehen der programmierer hier ausdr cklich betont wird Der begri
138. e einschr nkungen oder andere dynamische aspek te als notizen oder fussnoten notiert werden 4 6 Muster In etablierten ingenieurwissenschaften wie maschinenbau elektrotechnik bauingenieurwesen oder architektur werden erfahrungswerte aus handb chern kochbtichern verwendet Diese erfahrungen basieren auf immer wieder erfolgreich erprobten l sungen Eine wiederverwendung solcher 16 sungen spart nicht nur gedankenarbeit bei der konstruktion sondern erleich tert auch in erheblichem mass das verst ndnis von programmen wenn die se gewartet werden m ssen Nicht umsonst sagt Alan Perlis 1982 schon an zehnter stelle seiner Epigrams on Programming Komm schnell in eine spur Erledige die gleichen prozesse auf die gleiche Weise Sammle redewendungen Normiere Der einzige unterschied zwischen dir und Shakespeare ist die gr sse der liste seiner redewendungen nicht die gr sse seines vokabulars Bei der konstruktion von maschinen wird auf konstruktionskataloge zu r ckgegriffen in denen muster f r standardteile gesammelt sind In der elek trotechnik werden bauteile anhand bekannter muster zu gr sseren einheiten swoo tex 4 OBJEKTKONZEPT OOD UND OOA 85 baugruppen kombiniert Zus tzlich beschreiben sammlungen von abschat zungen das verhalten der baugruppen Durch diese absch tzungen lassen sich mit weitaus geringerem aufwand l sungen finden Ein fernziel der softwaretechnik ist die entwicklung von hand
139. e teilweise auch ber dedizierte werkzeu ge zur berpr fung ihrer typ korrektheit verf gen Bekannte beispiele sind VDM SL Jones 1990 und Z Bowen 2005 VDM SL ist die spezifikationsspra che specification language des VDM Projekts Vienna Development Me thod das am Wiener labor von IBM begonnen wurde Z stammt von der Oxford University und ist deutlich mathematischer angelegt Nat rlich ist die frage berechtigt wieso eine eigene spezifikationssprache notwendig ist wenn doch im prinzip die ganze sprache der mathematik zur verf gung steht Als antwort hierauf biete ich folgendes an 1 Softwaretechnik verlangt die einhaltung von normen wie jede andere inge nieurwissenschaft Die sprache der mathematik ist aber keineswegs nor miert sondern existiert in zahlreichen varianten 2 Der immense reichtum der mathematischen formelsprache muss f r spe zifikationszwecke stark eingeschr nkt werden sonst werden nur vollaus gebildete mathematiker in der lage sein spezifikationen zu lesen 3 Da spezifikationen maschinell behandelt werden sollen mindestens aber maschinell speicherbar sein m ssen wird eine maschinenlesbare version der spezifikationen ben tigt Dazu ist es jedoch notwendig den ben tig ten ausschnitt der mathematischen notation als sprache zu fixieren 4 Unter umst nden ist es sinnvoll den formalismus einzuschr nken auf konstrukte die auch in der maschine eine rolle spielen z b beschr
140. e zus tz lich alle im folgenden genannten Bedingungen erf llen a Das ver nderte Werk mu auff llige Vermerke tragen die besagen da Sie es modifiziert haben und die ein darauf bezogenes Datum angeben b Das ver nderte Werk mu auff llige Vermerke tragen die besagen da es unter dieser Lizenz einschlie lich der gem 87 hinzugef g ten Bedingungen herausgegeben wird Diese Anforderung wandelt die Anforderung aus 4 ab alle Hinweise intakt zu lassen c Sie m ssen das Gesamtwerk als Ganzes gem dieser Lizenz an je den lizensieren der in den Besitz einer Kopie gelangt Diese Lizenz wird daher ggf einschlie lich zus tzlicher Bedingungen gem 87 f r das Werk als Ganzes und alle seine Teile gelten unabh ngig da von wie diese zusammengepackt werden Diese Lizenz erteilt kei ne Erlaubnis das Werk in irgendeiner anderen Weise zu lizensieren setzt aber eine derartige Erlaubnis nicht au er Kraft wenn Sie sie diese gesondert erhalten haben Copyright Herbert Klaeren 29 Juni 2015 208 d Wenn das Werk tiber interaktive Benutzerschnittstellen verfiigt mtis sen diese jeweils angemessene rechtliche Hinweise anzeigen Wenn allerdings das Programm interaktive Benutzerschnittstellen hat die keine angemessenen rechtlichen Hinweise anzeigen braucht Ihr Werk nicht daf r zu sorgen da sie dies tun Als durchf hrungshilfe wird vorgeschlagen dass jeder unter der GPL pu blizierte quelltex
141. edes einzelnen moduls Zuf llige bindung liegt vor wenn kein prinzip erkennbar ist nach dem prozeduren bzw daten in das modul aufgenommen wurden Logische bindung liegt vor wenn alle prozeduren sich unter einem logi schen gesichtspunkt zusammenfassen lassen z b alle funktionen zur bedienung eines terminals etc Temporale bindung liegt vor wenn die gemeinsamkeit zwischen den prozeduren in einem modul darin besteht dass sie alle zum an n hernd gleichen zeitpunkt ausgef hrt werden z b div initialisie rungs und finalisierungsfunktionen Prozedurale bindung liegt vor wenn die elemente eines moduls von einander abh ngig sind und in bestimmten reihenfolgen ausgef hrt swentw tex 3 SYSTEMENTWURF 55 werden m ssen Ein beispiel bildet etwa der in Pascal eingebaute ADT FILE der dort allerdings kein modul darstellt sondern in die programmiersprache eingebettet ist Hier d rfen prozeduren nur in der in abb 18 angegebenen reihenfolge aufgerufen werden get reset Q close o 1 gt gt rewrite N close put Abbildung 18 Prozedurale bindung f r ADT FILE Pascal Kommunikationsbindung liegt vor wenn alle funktionen auf einer ge meinsamen datenstruktur operieren z b abstrakter datentyp Sequentielle bindung liegt vor wenn alle prozeduren nur in einer se quentiellen folge ausgef hrt werden k nnen und diese folge auch bis zum ende durchlaufen werden muss Funktionale
142. edeutung der zahlreichen formen von diagram men ist bei weitem nicht formal genug definiert und ber die frage zu wel chem zweck welche diagramme zu verwenden sind gibt es nicht sehr viel 12B Meyer interpretierte die abk rzung als Uninterrupted Marketing Literature swoo tex 4 OBJEKTKONZEPT OOD UND OOA 65 Abbildung 19 Camel and horse einigkeit Als vereinigung unified von mehreren unterschiedlichen ans t zen die zum teil recht alt sind 1970er jahre ist UML ausserdem nicht son derlich homogen die begr ndung daf r was in UML aufgenommen wurde und was aussen vor gelassen wurde ist h ufig nur in der durchsetzungskraft einzelner personen zu finden die einzelnen ausdrucksmittel sind im brigen nicht besonders gut aufeinander abgestimmt Dies ist ein typisches ph nomen im zusammenhang mit der arbeit von kommitees siehe Abb 19 oft zitiert wird der ausspruch A camel is a horse designed by a committee Ein wei teres problem besteht darin dass die objektorientierten programmiersprachen z t ganz divergierende vorstellungen von objekt klasse sichtbarkeit und ahnlichen konzepten haben und dass UML versucht allen diesen spra chen entgegenzukommen Eine recht brauchbare und gut lesbare einf hrung in UML 2 mit sehr aussa gekr ftigen beispielen aus einer fallstudie fluglinie gibt St rrle 2005 Bei der in diesem abschnitt angesprochenen statischen modellierung ge
143. edienzen des objektorientierten ansatzes Simula 67 vermischte im brigen das objektkonzept mit den hiervon v l lig unabh ngigen konzepten des zeigers und der nebenl ufigen programmie rung in form der sog coroutine Erst reichlich zehn jahre sp ter hat die sprache Smalltalk die notwendigen konzepte der objektorientierten programmierung in einer sauber definierten minimalen form zusammengetragen Smalltalk ent stand unter leitung von Alan Kay am XEROX PARC nachdem Kay die quellen eines Simula compilers studiert hatte Moderne ideen zur objektorientierten programmierung basieren in der regel auf dem Smalltalk modell Eine her vorstechende eigenschaft von Smalltalk ist dass programme in einen bytecode bersetzt werden der dann von einer virtuellen maschine VM interpretiert wird Leider ist die aktuelle literatur ber die objektorientierte programmierung sehr stark von den vorherrschenden programmiersprachen bestimmt und hier sogar noch besonders von den zweitklassigen OO sprachen C und Ja va Dadurch entsteht eine menge ganz spezifischer probleme die den blick auf die wirklich objektorientierte sicht und vorgehensweise verstellen e Die dynamische erzeugung und vernichtung von objekten wird vermischt mit fragen der speicherallokation und deallokation Nat rlich ist es klar dass auf der implementierungsseite auch speicher alloziert werden muss wenn ein objekt erzeugt wird und dass dieser speicher wieder freigege ben werden
144. ei der erf llung seiner pers nlichen bed rfnisse empfindet Vertrauen trust Grad der zuversicht eines benutzers oder interessenvertre ters dass das produkt oder system sich wie beabsichtigt verh lt Vertraulichkeit confidentiality Grad zu dem ein produkt oder system sicher stellt dass daten nur f r die zug nglich sind die eine zugriffsberechti gung haben Wartbarkeit maintainability Grad der effektivit t und effizienz mit der ein produkt oder system von dem beabsichtigten wartungspersonal modifi ziert werden kann Wiederherstellbarkeit recoverability Grad zu dem im fall einer unterbre chung oder eines fehlers ein produkt oder system die direkt betroffenen daten wiederherstellen kann und den gew nschten zustand des systems wieder einstellen kann Wiederverwendbarkeit reusability Grad zu dem ein gut asset in mehr als einem system oder zum bau anderer g ter verwendet werden kann Zeitverhalten time behaviour Grad zu dem antwort und verarbeitungszeit sowie durchsatz eines produkts oder systems bei der ausf hrung seiner funktionen den anforderungen entspricht Zug nglichkeit accessibility Grad zu dem ein produkt oder system von per sonen mit einem m glichst weiten bereich von eigenschaften und f hig keiten benutzt werden kann um ein spezifiziertes ziel in einem spezifi zierten einsatzkontext zu erreichen Zurechenbarkeit accountability Grad zu dem die aktionen einer entit t ein deutig auf di
145. eispiel w rde make zur feststellung der frage ob TestSchedule lter ist als eine seiner abh ngigkeiten zun chst ein mal versuchen diese abh ngigkeiten aufzusuchen Falls diese was minde stens beim ersten programmlauf auftritt selbst nicht existieren w rde make zun chst rekursiv versuchen diese abh ngigkeiten zu erzeugen Make stellt in der tat zun chst eine topologisch sortierte liste aller dateiabh ngigkeiten her so dass die notwendigen aktionen in jedem fall in einer logischen reihenfolge und nur ein einziges mal durchgef hrt werden k nnen In unserem beispiel w re beim ersten make nach der erstellung der quellda teien die folgende reihenfolge von aktionen sinnvoll mc Jobs def mc PrintQueue def mc c TestSchedule mod swtool tex 9 SOFTWAREWERKZEUGE 185 mc c Jobs mod mc c PrintQueue mod mc o TestSchedule TestSchedule o Jobs o PrintQueue o Eine besonderheit sind die pseudoziele im obigen beispiel test tar clean veryclean Hier ist berhaupt nicht daran gedacht irgendeine datei zu er zeugen sondern es sollen nur die nachfolgenden aktionen ausgef hrt werden Im beispiel clean ist dies die entfernung aller objektdateien und des ausf hr baren programms Beachte dass das ziel eine datei mit dem namen clean herzustellen durch diese aktion nicht erf llt wird Eine erweiterte stufe des aufr umens beschreibt das ziel veryclean Hier wird zun chst einmal clean gemacht d h die entfe
146. eistungsverbesse rung erreicht werden kann ist proportional zu dem prozentsatz in dem ein system die beschleunigte funktion verwendet Daher auch die emp fehlung vor und nach der verbesserung zu messen Wenn ausserdem die kosten einer verbesserungsmassnahme herangezogen werden was sich stets empfiehlt kann es besser sein eine billigere massnahme mit weni ger wirkung zu bevorzugen gegen ber einer sehr teueren massnahme mit gr sserer wirkung Kontrollfragen 1 Welches ist die beste methode die laufzeit eines programms zu verbes sern Wieso soll man ber ein programm zuerst detaillierte leistungsdaten mes sen bevor man optimierungen durchf hrt Was leisten profiler Welche arten davon gibt es Copyright Herbert Klaeren 29 Juni 2015 174 8 1 Fallstricke swtune tex 9 SOFTWAREWERKZEUGE 175 9 Softwarewerkzeuge Ein softwareprozess kann normalerweise nicht sinnvoll ohne eine reihe von werkzeugen durchgef hrt werden Am oberen ende der werkzeugkette fin den sich sogenannte IDEs Integrated Development Environments welche den gesamten softwareprozess unter einer einheitlichen oberfl che kapseln und damit glauben etwas gutes zu tun Diese denkweise findet sich auch in kommerziell erh ltlichen programmpaketen Word Excel wieder Merk w rdigerweise sind die meisten profis wenig begeistert von solchen ans tzen einerseits deswegen weil solche softwarepakete auf diese weise unn
147. eit 1 Welches sind die drei hauptmerkmale der ingenieurst tigkeit 2 Wodurch unterscheidet sich die herstellung von software von der herstel lung anderer ingenieursprodukte 3 Wodurch unterscheiden sich die charakteristika der programmierung im kleinen von denen der programmierung im grossen 4 Wieviel LOC woche schreibt ein programmierer durchschnittlich 5 Wieso h ngt die programmierleistung wenn man sie in LOC zeiteinheit misst kaum von der verwendeten programmiersprache ab 6 Inwiefern kann es unsinnig sein die produktivit t von programmierern in LOC zeiteinheit zu messen 7 Was genau besagt das Brookssche gesetz Wie kommt es zu diesem sach verhalt Copyright Herbert Klaeren 29 Juni 2015 18 1 5 Das Brookssche Gesetz sweinf tex 2 MODULKONZEPT 19 2 Modulkonzept Offensichtlich ist es unsinnig grosse systeme mit vielen tausenden oder gar millionen von programmzeilen immer an einem st ck zu bersetzen Aus gr nden der effizienz verf gten bereits die ersten ans tze zu h heren pro grammiersprachen ber vorrichtungen zur getrennten bersetzung von pro grammst cken Der compiler musste also f r einen bersetzungsprozess nicht das gesamtprogramm kennen die bestandteile wurden vom linker sp ter zu sammengesetzt unabh ngig von der frage aus welchen bersetzungsl ufen sie entstammten Damals hat man bereits getrennt bersetzte hauptprogram me bzw unterprogramme als sog quellmodul
148. eitlichen pro bleml sung die genaue beschreibung und aufteilung der aufgabe sowie geeignete algorithmen zu ihrer maschinellen l sung m ssen erst gesucht werden e Maschinenhersteller programmierer und benutzer der rechner bzw pro gramme sind verschiedene menschengruppen mit unterschiedlicher vor bildung Dies hat kommunikationsprobleme zur folge e Der einsatzbereich der programme ist un berschaubar die programme greifen z t unmittelbar in praktische handlungsabl ufe ein Von F L Bauer 1993 wurde deshalb mitte der sechziger jahre im wesentli chen der folgende gedanke vorgetragen Wenn es wahr ist dass die entwick 46Interessanterweise ist die abk rzung dieses systems BMEWS was sich auch als bemu se irritieren aussprechen l sst Der Vincennes zwischenfall er ffnet eine neue dimension Die software hat hier zumin dest was die kursangaben des verkehrsflugzeugs angeht richtig gearbeitet es war die kom plexitat der benutzerschnittstelle mit vier separaten alphanumerischen bildschirmen die zu dem fehler gef hrt hat swhist tex C HISTORISCHES 229 lung komplexer softwaresysteme unsystematisch geschieht und wenn ande rerseits bekannt ist dass die ingenieurwissenschaften sich traditionell mit der entwicklung komplexer systeme besch ftigen dann soll man doch versuchen auch softwaresysteme nach ingenieursm ssigen prinzipien und regeln zu er stellen Im nachgang zu der ber hmten
149. ektorientierte mu ster interessiert Zwei probleme mit diesem buch sollen aber kritisch ange merkt werden e Die grafischen darstellungen sind nicht in UML sondern in einer abwei chenden und in bezug auf abstrakte klassen typographisch heiklen lteren notation e Zur entstehungszeit des buchs gab es keine programmiersprache die in terfaces als eigenst ndiges konzept besass deshalb wird vieles mit hilfe von abstrakten klassen dargestellt was sich heute viel besser durch interfa ces erkl ren liesse Das muster zur beschreibung von mustern bei Gamma u a 1995 ist folgen des e Name und klassifikation des musters Der name eines musters gibt die leistung in der knappstm glichen form an Klassifikation bezieht sich auf eine einteilung der muster in drei ka tegorien Erzeugungsmuster creational strukturmuster structural und verhaltensmuster behavioral e Absicht Hier gibt es eine kurze textliche darstellung des problems das durch das muster gel st werden soll e Alias Falls das muster auch unter anderen bezeichnungen bekannt ist werden diese hier aufgelistet e Motivation Hier wird eine situation geschildert in der das muster sinnvoll angewen det werden kann und es wird aufgezeigt in welcher weise das muster hier zur l sung beitr gt e Anwendbarkeit In welchen situationen kann das entwurfsmuster angewandt werden Welche beispiele von schlechtem entwurf k nnen dadurch vermieden werden Wie erkennt
150. ekunden laufzeit beansprucht kann man hier erfahren funktion f hat y se kunden laufzeit f r aufrufe aus einer funktion g verbraucht und z sekunden f r aufrufe aus einer funktion h Die im folgenden aufgef hrten zahlen sind historisch sie entstanden auf einer IBM RiscSystem 6000 Hier zun chst die ergebnisse f r das ausgangs programm Name Time Seconds Cumsecs Calls msec call prime 99 9 401 16 401 16 99999 4 0116 _doprnt 0 0 0 16 401 32 9592 0 017 __Mmcount 0 0 0 10 401 42 __Mmcount 0 0 0 07 401 49 main 0 0 0 07 401 56 1 70 printf 0 0 0 03 401 59 9592 0 003 strchr 0 0 0 03 401 62 strlen 0 0 0 02 401 64 printf GL 0 0 0 02 401 66 exit 0 0 0 00 401 66 1 0 Diese liste enth lt in der Name spalte die namen von prozeduren C funktionen funktionen bilden hier die sogenannte messgranularit t Wir er kennen unsere eigene funktion prime in der ersten und das hauptprogramm main in der f nften zeile Die restlichen funktionen sind bibliotheksfunktio nen die teilweise inline compiliert wurden printf exit und teilweise vom swtune tex 8 LEISTUNGSVERBESSERUNG VON SOFTWARE 167 linker eingebunden wurden Die liste wurde am ende abgektirzt hier kom men in wirklichkeit noch 17 weitere zeilen Die spalte Time enth lt den anteil der gesamten laufzeit der auf die entsprechende funktion entfiel und Seconds die hier insgesamt verbrachten CPU sekunden Die zeilen in der ta belle sind nach
151. em ein produkt oder system mit effektivit t effizienz risikofreiheit und befriedigung in allen spezifizierten einsatzkontexten benutzt werden kann Copyright Herbert Klaeren 29 Juni 2015 224 Modifizierbarkeit modifiability Grad zu dem ein produkt oder system effek tiv und effizient modifiziert werden kann ohne fehler einzuf hren oder die existierende produktqualit t zu vermindern Modularit t modularity Grad zu dem ein system oder computerprogramm aus diskreten komponenten aufgebaut ist so dass eine nderung in einer komponente minimale auswirkungen auf andere komponenten hat Nachweisbarkeit non repudiation Grad zu dem nachgewiesen werden kann dass aktionen oder ereignisse stattgefunden haben so dass ereignisse und aktionen sp ter nicht abgestritten werden k nnen Operabilit t operability Grad zu dem ein produkt oder system attribute hat die es leicht machen es zu betreiben und zu steuern N tzlichkeit usefulness Grad zu dem benutzer zufriedengestellt werden in ihrer gef hlten erreichung pragmatischer ziele einschliesslich der resulta te und konsequenzen des gebrauchs Performanzeffizienz performance efficiency ein merkw rdiger begriff Per formanz relativ zu den ressourcen unter den angegebenen bedingungen Portabilit t portability Grad der effektivit t und effizienz zu dem ein sy stem produkt oder eine komponente von einer hardware software oder anderen betriebs oder einsatz
152. em punkt beginnen beispielsweise SH Definition einer zwischen berschrift section heading PP Anfang eines neuen abschnitts paragraph NH n Numerierte berschrift numbered heading der schachtelungstiefe n br Zeilenende break bp Seitenende begin page Abb 55 zeigt einen ausschnitt aus einer UNIX man page und die entspre chende nroff Quelle dazu Ein werkzeug mit einer ganz hnlichen ideologie ist TEX bzw TX der un terschied ist abgesehen von einer radikal verschiedenen syntax dass TEX den anspruch erhebt und erf llt wirklich professionellen buchsatz inklusive eines sthetisch befriedigenden satzes mathematischer formeln herzustellen w hrend nroff mehr auf den einsatz in einer werkzeugkette vorgerichtet ist 9 6 2 Texinfo Zum editor Emacs in seinen verschiedenen versionen geh rt ein dateiformat mit zugeh rigem werkzeug namens texinfo Auch dies ist f r die benutzer dokumentation gedacht und zwar mit einer doppelten zielrichtung einerseits gibt es die m glichkeit bildschirmtaugliche hypertexte mit suchfunktion na vigation durch men s und bl ttern mit hilfe von Up Next Previous zu er swtool tex 9 SOFTWAREWERKZEUGE 193 O O u 084 c008 eap uni tuebingen de klaeren u 084 c008 eap uni tu 1 LOCALE 1 BSD General Commands Manual LOCALE 1 NAME locale display locale settings SYNOPSIS locale a m locale ck name DESCRIPTION locale displays inform
153. ementierungen f r die importierten module m ssten sowieso sp ter vom linker eingebunden werden f r das augenblicklich er zeugte objektmodul werden sie nicht gebraucht Der Modula 2 compiler tr gt in das erzeugte objektmodul f r den linker ein welche entit ten er aus wel chen modulen ben tigt und welches die modulschl ssel der fremden module gewesen sind die er in den symboldateien vorgefunden hat 8In Modula 2 heissen die funktionen auch PROCEDURE Copyright Herbert Klaeren 29 Juni 2015 38 2 5 Softwaretechniksprachen Wird nun ein implementierungsmodul compiliert wozu zuerst das zugeh rige definitionsmodul compiliert worden sein muss so bertr gt der compiler den modulschl ssel aus dem zugeh rigen definitionsmodul in die objektdatei Somit enth lt jede objektdatei eine eindeutige charakterisierung der version von schnittstelle die dazugeh rt Der Modula 2 linker tr gt nun aus allen ihm bergebenen objektmodulen die modulnamen und die modulschl ssel zusammen Wenn nun ein modul A ein modul B importiert und wenn zu dem zeitpunkt wo das objektmodul zu A erstellt wurde kg der schl ssel von B war und wenn dann sp ter im zuge einer nderung der schnittstelle von B das objektmodul zu B einen anderen schl ssel k erh lt so stellt der linker fest dass diese beiden schl ssel nicht zueinander passen und meldet einen versionskonflikt Das ist auch richtig so denn das objektmodul zu A welches von einer i
154. ems gesehen wird verf gt Je nachdem ob ber diese schnittstellen informationen aus der restwelt in das system hinein fliessen oder ob sie aus dem system in die restwelt hinausfliessen sind dies eingabe oder ausgabeschnittstellen Dieser schnittstellenbegriff un terscheidet sich von dem begriff der modulschnittstellen Zustand Das system hat einen inneren zustand der normalerweise nicht di rekt beobachtbar ist geheimnisprinzip Das system wird somit meist als black box verstanden die von aussen undurchsichtig ist Durch die wir kung von eingaben kann sich dieser zustand ndern das system wird also auf gleiche eingaben nicht immer mit den gleichen ausgaben reagieren In der o a systemdefinition ist dieser zustand durch das wort merkmale angesprochen auch der begriff attribute ist gebr uchlich Aktionen Komponenten eines systems k nnen aktionen ausf hren funktio nen methoden dadurch kann sich der zustand dieser oder anderer kom ponenten ndern Verhalten ber die zeit hinweg zeigt ein system ein gewisses verhalten wie es n mlich auf folgen von eingaben mit folgen von ausgaben reagiert Dieses systemverhalten l sst unter umst nden f r einen beobachter der black box die bildung von theorien ber den inneren zustand zu swentw tex 3 SYSTEMENTWURF 47 3 2 Systemarchitektur Aufgabe des systementwurfs ist die herstellung einer architektur des systems das bedeutet hier im wesentlichen eines s
155. en e jederzeit das projekt zu beenden und ein n tzliches system zu behalten das deinen investitionen bis zu diesem zeitpunkt entspricht http c2 com cgi wiki CustomerBill0fRights M rz 2010 6 6 2 Refactoring Wegen der wichtigkeit des begriffs refactoring soll diesem ein eigener ab schnitt gewidmet werden Dabei beziehen wir uns auf Fowler u a 1999 Die se definieren refactoring als Eine anderung der internen struktur von software mit dem ziel sie leichter verst ndlich oder billiger modifizierbar zu machen ohne da bei ihr beobachtbares verhalten zu ndern Damit ist klar dass refactoring niemals damit zu tun haben kann neue funk tionalit t einzuf hren auch sind nicht irgendwelche beliebigen aufr umar beiten am code gemeint sondern ganz gezielt solche massnahmen die den Copyright Herbert Klaeren 29 Juni 2015 150 6 6 Agile methoden code einfacher und verst ndlicher machen Die stellen an denen angegriffen wird sind von Kent Beck als bad code smells schw bisch w rde man sa gen Das programm hat ein g schm ckle bezeichnet worden Beispiele f r solche bad smells sind Duplicated code Hier geht es nicht nur um code der 1 1 dupliziert wurde sondern auch um code der an mehreren stellen in ganz hnlicher form auftritt Hier dr ngt sich die vermutung auf dass eine modifikation die ses code an einer stelle auch eine modifikation an den jeweils anderen stellen zur
156. en wenn das exemplar der oberklasse vernichtet wird heis sen hier kompositionen und werden durch pfeile mit einer ausgef llten raute dargestellt Die bedeutung von abb 22 ist also dass ein polygonzug aus min destens 3 bis beliebig vielen punkten besteht die ausserdem angeordnet sind dass ein kreis aus genau einem punkt dem mittelpunkt besteht wobei mit der vernichtung eines polygonzugs bzw eines kreises auch die zugeh rigen punkte verloren gehen Dar ber hinaus haben polygonz ge und kreise auch noch einen darstellungsstil der jedoch von diesen geometrischen objekten un abh ngig ist und auch bei ihrer vernichtung erhalten bleibt Der unterschied 3Mandeep Singh machte mich darauf aufmerksam dass der has a begriff problematischer ist als der part of begriff Mike has a car bedeutet nicht dass das auto ein bestandteil von Mike ist deswegen handelt es sich hier nicht um eine has a beziehung Copyright Herbert Klaeren 29 Juni 2015 70 4 2 Statische modellierung Kreis radius Punkt Polygon Stil farbe ausgef llt Abbildung 22 Aggregationsstruktur zwischen aggregation und komposition wird aber erst beim implementieren bedeutsam ein polygonzugobjekt bzw ein kreisobjekt enth lt die beteiligten punkte direkt w hrend es nur eine referenz auf den darstellungsstil enth lt In der modellierungsphase haben solche fragen im grunde nichts zu suchen 4 2 3 Vererbung Eine klasse k
157. en aber nicht gel st werden und dreieinhalb Jahre nach Projektbeginn und nachdem eine Gesamtsumme von 125 Millionen Dollar investiert worden waren wurde das Pro jekt abgebrochen Oz 1994 Obwohl unsere Industrie reich ist an Beispielen von Software Systemen die schlecht funktionieren voll von Fehlern sind oder anderweitig darin versagen die W nsche der Benutzer zu erf llen gibt es Gegenbeispiele Gro e Softwaresysteme kann man mit sehr hoher Qualit t herstellen aber sie sind sehr teuer in der Gegend von 1 000 Dollar pro Programmzeile Ein Beispiel ist die Bord Software von IBM f r das Space Shuttle drei Millionen Programmzeilen mit weniger als einem Fehler pro 10 000 Zeilen Davis 1994 computers do not introduce new forms of error but they increase the scope for introducing con ventional errors by increasing the complexity of the processes that can be controlled In addition the software controlling the process may itself be unnecessarily complex and tightly coupled Ad ding even more complexity in an attempt to make the software safer may cause more accidents than it prevents Proposals for safer software design need to be evaluated as to whether any added Copyright Herbert Klaeren 29 Juni 2015 242 14 15 16 17 18 complexity is such that more errors will be introduced than eliminated and whether a simple way exists to achieve the same goal Leveson 1995 The big question mark in the
158. en alten verifikationsideen Voraussetzung f r das verifizieren ist nat rlich eine formale spezifikation f r das programm Am anfang dieses kapitels wurde bereits diskutiert wie schwer es sein kann eine solche spezifikation herzustellen Hat man sie je doch so kann man mit mitteln der mathematischen logik beweisen dass das programm dieser spezifikation entspricht Im einfachsten fall ergibt sich nur eine ja nein antwort in wirklichkeit wollen wir aber nicht nur erfahren dass das programm nicht korrekt ist sondern wir wollen pr zise wissen wo der fehler steckt An der universit t Ulm wurden mit Hilfe des KIV Karlsruhe Interactive Verifier einige kritische softwaremodule verifiziert z b zugangskontrolle f r ein kernkraftwerk crash control f r airbags und dabei mehrere hundert feh ler aufgedeckt Es hat sich dabei gezeigt dass ein experte im jahr zwischen 1000 und 2000 zeilen programm verifizieren kann Das sind immerhin 50 bis 100 EUR pro zeile nur f r die verifikation daf r ist die software dann per definitionem fehlerfrei Die verifikation der gesamten Space Shuttle software w rde allerdings nach diesen massst ben einen experten zwischen 1500 und 3000 jahren besch ftigen Copyright Herbert Klaeren 29 Juni 2015 130 5 8 Verifizieren Kontrollfragen 1 Z hlen sie die nach Boehm und Basili 10 wichtigsten erkenntnisse zur feh lerreduktion in programmen auf 2 Was versteht man unter einer Pareto verteilun
159. en an die einga ben und erwartete ausgaben Nur die anforderungsdefinition kann hierzu fundierte angaben liefern 7 Falsch Testen kann man nicht ohne ein anforderungsdokument Es gibt einen begriff des explorativen testens bei dem ein system weniger echt getestet als vielmehr erkundet wird Trotzdem kann ein intelligenter tester auch hier bereits eine f lle von ungereimtheiten aufdecken und zu mindest interessante fragen aufwerfen die zu beantworten w ren Falsch ist ebenfalls die in dem o a satz m glicherweise auch enthaltene auffas sung dass der tester erst dann mit seiner arbeit beginnen kann wenn das anforderungsdokument fixiert ist Vern nftige testf lle k nnen vielmehr ein wichtiger bestandteil eines anforderungsdokuments sein und tester k nnen dabei mithelfen diese zu formulieren Ein weitverbreiteter irrtum in bezug auf fehler in softwareprodukten ist es dass software ohne bzw mit wenig fehlern viel teurer ist als fehlerhafte soft ware Sneed und Jungmayr 2011 zitieren dass die Behebung von Fehlern zwischen 25 und 40 der gesamten War tungskosten ausmacht die wiederum f r mindestens 67 der Lebenszy kluskosten verantwortlich sind Demnach macht die Fehlerkorrektur 17 26 der gesamten Lebenszykluskosten aus Sie weisen in der folge noch darauf hin dass ausserdem ja auch die durch fehler beim kunden verursachten folgekosten recht erheblich sein k nnen Als Copyright Herbert Klaeren
160. en miteinander verwechseln Interessante ans tze die ber die leistung von lint hinausgehen sind z B das Secure Programming Lint SPecifications Lint projekt der University of Virginia www splint org Die arbeit von Louridas 2006 skizziert einige in teressante werkzeuge f r die statische analyse von Java programmen In einem sehr lesenswerten artikel diskutieren Bessey u a 2010 ihr werk zeug Coverity und die schwierigkeiten die auftreten wenn ein im akademi schen umfeld gut funktionierender ansatz in die richtige welt entlassen wird Einerseits ist die schiere menge aufgefundener fehler oft schockierend und wird von programmierern gern als falsch positiv charakterisiert ande rerseits ist die abweichung der compiler von der sprachdefinition bemerkens wert Programmierer betrachten code den ihr compiler ohne fehlermeldun gen akzeptiert als syntaktisch korrekt egal wie falsch er laut sprachdefinition sein mag The C language does not exist neither does Java C and C While a lan guage may exist as an abstract idea and even have a pile of paper a standard purporting to define it a standard is not a compiler What language do people wri te code in The character strings accepted by their compiler Further they equate compilation with certification A file their compiler does not reject has been certi fied as C code no matter how blatantly illegal its contents may be to a language scholar
161. en schaltern Copyright Herbert Klaeren 29 Juni 2015 212 Abbildung 60 Verstoss gegen normen Abbildung 61 Falsche benutzerf hrung swui tex A DIE BEDEUTUNG DER BENUTZUNGSSCHNITTSTELLE 213 zu tun Ein gegenbeispiel findet sich in abb 61 dieser geldautomat suggeriert durch die roten pfeile eine v llig falsche stelle an der man angeblich seine EC karte einf hren soll die richtige stelle ist weiter unten und viel unscheinbarer Dass die im folgenden angef hrten beispiele f r absolut missgl ckte benut zungsschnittstellen beide aus dem hause Siemens stammen ist fast ein reiner zufall ich habe diese texte einfach so im abstand von kaum einer woche gefun den und sie haben mir sehr aus der seele gesprochen weil ich am arbeitsplatz auch mit so einem praktisch unbedienbaren Siemens telefon geplagt bin An dererseits steckt vielleicht auch mehr dahinter m glicherweise haben wir hier ja den eigentlichen grund warum sich produkte dieser firma nur unter zah lung erheblicher schmiergelder in den markt dr ngen liessen Die entschei dung berlasse ich der leserin Siemens ist nicht die Mafia Man muss das vielleicht so deutlich sagen um Missver st ndnisse zu vermeiden Marc Beise Siemens langer Schatten S ddeutsche Zeitung Nr 88 15 April 2008 A 1 Das Prinzip Siemens Tobias Kniebe S ddeutsche Zeitung Magazin Heft 42 20 10 2006 Doch ja am Ende wird es auch hier um raffgierige Mana
162. en sich alle ansichten beim modell so dass die ses wenn sich etwas ndert die verschiedenen ansichten benachrichtigen kann Elemente der benutzer interaktion tastatureingaben mausklicks werden nach heutiger sicht des musters und im gegensatz zu Krasner und Pope von der ansicht entgegengenommen und an die steuerung weiterge leitet die dann entscheidet was nun zu geschehen hat Die steuerung controller interpretiert die grafischen eingaben des benut zers in der ansicht passt die ansicht dementsprechend an und sendet m glicherweise nderungsaufforderungen an das modell Insgesamt bleibt Reenskaug bei der erkl rung des musters auf einer sehr allgemeinen ebene Krasner und Pope beschreiben etwas genauer die vor g nge In der bibel der objektorientierten muster von Gamma u a 1995 kommt das eher komplizierte MVC nur als historische referenz vor wesentli che aspekte davon lassen sich griffiger durch das beobachter muster observer pattern 4 7 beschreiben swoo tex 4 OBJEKTKONZEPT OOD UND OOA 87 4 6 1 Dokumentation objektorientierter muster Damit muster allgemein verst ndlich in handbtichern gesammelt werden k n nen m ssen sie einheitlich dokumentiert werden Es gibt also auch ein mu ster zur beschreibung von mustern wie in der pattern bibel von Gamma u a 1995 vorgef hrt wird Dieses buch obwohl schon zehn jahre alt ist im mer noch eine lesenswerte quelle f r jeden der sich f r obj
163. en wurden Solche re inspektionen sind auf al len seiten gef rchtet weil sie die gefahr in sich bergen dass der gesamtprozess verz gert wird In etwas gr sserem detaillierungsgrad besteht der inspektionsprozess aus den folgenden schritten Planung Der projektleiter benennt moderator und inspektoren Der modera tor pr ft ob das inspektionsmaterial die eingangskriterien erf llt setzt zeit und ort f r die inspektion fest und verteilt ca 2 wochen vorher das zu inspizierende material Einf hrung Falls n tig wird in einer gesonderten sitzung die problematik des zu inspizierenden materials dargelegt Vorbereitung Die teilnehmer erarbeiten sich anhand der verteilten unterlagen ein verst ndnis von dem zu inspizierenden teilprodukt und notieren sich listen von fragen ber das produkt Inspektion Dies ist die eigentliche sitzung in der das produkt zeile f r zeile durchdiskutiert wird und alle fragen aus der vorbereitung der inspekto ren besprochen werden Aus dieser sitzung ergibt sich eine agenda liste f r die am produkt durchzuf hrenden nderungen Korrektur Innerhalb einer jeweils individuell festgelegten zeitspanne korri giert der autor die w hrend der inspektionssitzung angesprochenen pro bleme lat moderare m ssigen swkorr tex 5 SOFTWAREQUALIT T 123 Nacharbeit Der moderator pr ft ob alle fehler behandelt wurden bzw beho ben sind und ob gegebenenfalls eine erneute inspektion des verbesserten pro
164. enbank mit allen bekannten fehlern gefahren dieser test braucht bei 900 kLOC C code zwei wochen 24h rund um die uhr swkorr tex 5 SOFTWAREQUALIT T 109 herstellungsprozess kann man sich deshalb des sog error seeding be dienen Basierend auf statistischen erfahrungsdaten werden in ein ange nommenerweise fehlerfreies softwareprodukt ohne kenntnis der softwa reentwickler eine typische anzahl typischer fehler eingebaut Nach dem durchlaufen des normalen qualit tssicherungszyklus l sst sich dann exakt ermitteln wieviel fehler in dem produkt verblieben sind daraus ergibt sich dann eine statistische aussage wieviel fehler pro KLOC ein typisches programm mit dieser qualit tssicherung haben wird Die erste methode wird normalerweise bessere resultate aufweisen denn das error seeding wird unter anderem dadurch behindert dass die fehler nicht gleichverteilt auftreten dies wurde bereits zu eingang dieses kapitels in der liste von Boehm und Basili 2001 erw hnt So hat es sich in einem bestimmten komplexen softwareprodukt der IBM herausgestellt dass in einem gewissen zeitraum 2 133 von 2 731 modulen ohne fehler geblieben sind w hrend ande rerseits allein in einem einzigen modul 37 fehler gemeldet wurden hnliches berichten Ostrand und Weyuker 2002 ber ein grosses softwaresystem das sie ber einen l ngeren zeitraum beobachtet haben dort finden sich 100 der fehler in nur 7 der beteiligten dateien welche ihrerseits 24 d
165. enbank von bekannten fehlern automatisch getestet Dieser prozess heisst t glicher bau daily build bzw n chtlicher bau nightly build da dieser vorgang in der regel ber nacht stattfindet F r diesen pro zess ist in jedem projekt ein eigener mitarbeiter verantwortlich der sogenann te build master Die entwickler holen sich aus einer zentralisierten datenbank die programmaquelltexte ab in einen privaten dateibereich editieren diese te sten sie selbst und stellen sie in die zentrale datenbank zur ck Dieses zu r ckstellen geschieht nicht unbedingt t glich aber in der regel wenigstens 2 mal pro woche Das ergebnis nennt man eine zwischenversion Der bis zu ei nem bestimmten zeitpunkt jedes tages in die datenbank zur ckgestellte code muss compilierbar und bindbar sein und darf im fertigen produkt keine feh ler hervorrufen Normalerweise hat Microsoft also auch bei einer v llig im fluss befindlichen produktentwicklung jeden morgen eine lauff hige version jedes produkts Diese im grunde genommen sehr aufwendige methode der t glichen synchronisation hat den vorteil dass das projektteam wie auch die firmenleitung t glich ber den projektfortschritt informiert bleibt Wir zitieren aus Cusumano und Selby 1996 s 207 Wir bauen jeden Tag und zwar genau um 17 Uhr eine Zwischenversion selbst wenn am n chsten Tag Feiertag ist und wir genau wissen dass niemand die Zwischen version ben tigt Alle Beteiligten bekommen ein Gef
166. endbar sind und absatz 3 f hrt dazu weiter aus 3 Als Erfindungen im Sinne des Absatzes 1 werden insbesondere nicht angesehen 1 Entdeckungen sowie wissenschaftliche Theorien und mathematische Methoden 2 sthetische Formsch pfungen 3 Pl ne Regeln und Verfahren f r gedankliche T tigkeiten f r Spie le oder f r gesch ftliche T tigkeiten sowie Programme f r Datenverarbei tungsanlagen 4 die Wiedergabe von Informationen Wer ein patent erworben hat kann jedem anderen untersagen die entspre chende erfindung zu nutzen diese schutzfrist l uft nach dem deutschen recht 20 jahre Der beginn des verkaufs lizensierter software berlappte sich zeitlich mit dem start der microcomputer ra heimcomputer personal computer W hrend firmen die grossrechner einsetzten im wesentlichen keine andere wahl hatten als ordnungsgem sse softwarelizenzen zu kaufen waren die be sitzer kleiner privater computer eher geneigt die programme kostenlos un tereinander zu tauschen Bill Gates ist vermutlich einer der ersten die das ko pieren von software als diebstahl gebrandmarkt haben in einem offenen brief an die besitzer von homecomputern schrieb er schon 1976 Wie die mehrheit der computeramateure wissen m sste stehlen die meisten von euch ihre software F r hardware mu man bezahlen aber software ist etwas das man teilen kann Wen k mmert s schon ob die leute die daran gearbeitet haben bezahlt werde
167. enden hinweise bez glich des modulkonzepts geben Als grundlegende modulare einheit muss in Java das paket package gelten die konstrukte die hier exportiert werden k nnen sind klassen Es gibt drei methoden klassen aus einem paket zu verwenden 1 Einfach durch angabe des voll qualifizierten namens an der verwen dungsstelle In Unix kann das kommando nm dazu verwendet werden die in einem objektmodul oder ausf hrbaren programm enthaltenen symbole auszugeben Diese liste kann mit den symbolen aus dem header file verglichen werden swmodu tex 2 MODULKONZEPT 43 vendor util foopack Bar x Problematisch dabei ist dass nirgendwo an zentraler stelle des pro gramms vermerkt sein muss dass dieses das paket vendor util foopack verwendet Die tats chlichen importe m ssen deshalb durch textliche in spektion des gesamten programmtexts aufgesucht werden 2 Durch spezifischen import einer klasse import vendor util foopack Bar Bar x x 22 Dies ist die einzige form des imports welche den anspr chen der soft waretechnik gen gt Kritisch anzumerken bleibt jedoch was auch beim FROM x IMPORT y in Modula 2 angemerkt wurde dass n mlich jeg liche solche abk rzung f r den programmierer immer wieder die m g lichkeit zu missverst ndnissen und verwechslungen bietet Sog IDE s integrated software development environments wie etwa Eclipse mildern die ses Problem ab indem sie die ent
168. er da erste systemstufen bereits nach k rzerer zeit verf gbar sind e Das gesamtsystem wird fr her als gew hnlich fertig weil durch die r ck kopplung mit dem benutzern vermeintlich wichtige teile als unwesentlich erkannt werden und dann nicht implementiert zu werden brauchen swll tex 6 VORGEHENSMODELLE FUR DIE SOFTWAREENTWICKLUNG 143 Dem stehen selbstverstandlich auch gewisse nachteile gegentiber Einige da von sind e Die reibungslose integration der inkremente h ngt entscheidend von der gew hlten architektur ab ndern sich die grunds tzlichen anforderun gen im verlauf der entwicklung so werden die nachfolgenden inkremente selbstverst ndlich entsprechend angepasst Die gew hlte systemarchitek tur beruht aber auf den urspr nglich definierten anforderungen Entwe der hat man hier also ein inkongruentes system zu tolerieren oder es m s sen bereits fertiggestellte inkremente neu entwickelt werden was das mo dell wiederum eher in die n he des klassischen wasserfallmodells bringt e Die mehrmalige einf hrung von verschiedenen inkrementen erh ht den organisatorischen aufwand und kann endbenutzer verwirren Fr he prototypen und inkrementeller bau sind schwer voneinander zu tren nen Normalerweise wird man auch beim inkrementellen bau das erste fertige system verwerfen m ssen um ein neues system mit denselben usseren merk malen von grund auf neu zu bauen Inkrementeller bau ist auch nicht immer in beliebige
169. er gesamten LOC beinhalten ber mehrere nderungsst nde der software hinweg ergibt sich ausserdem der effekt dass die meisten fehler in den dateien enthalten sind bei denen sich schon bei den ersten releases fehler zeigten Sie schlies sen deshalb Wir sehen deshalb hinweise darauf dass es der m he wert sein k nnte den aufwand f r fehlerentdeckung und beseitigung auf die relativ kleine anzahl fehleranf lliger dateien zu konzentrieren wenn diese sich fr h identifizieren liessen Wie alle relativen masse ist fehler kLOC etwas t ckisch Carey 1996 fragt zu recht Wenn wir einen fehler beseitigen indem wir code hinzuf gen hat sich die software qualit t verbessert Ja Wenn wir einen fehler beseitigen indem wir code entfernen hat sich die softwarequalit t verbessert Ja Wenn wir einen fehler beseitigen ohne code hinzu zuf gen oder zu entfernen hat sich die softwarequalit t verbessert Ja Der gebrauch von fehler kLOC widerspricht dem urspr nglichen ziel die softwarequalit t zu verbessern Es gibt einen punkt wo wir wenn wir genug code bei der fehlerbeseitigung entfernen die intrinsische softwarequalit t berhaupt nicht verbessern 5 3 Wo sind die fehler Ein interessantes problem ist nat rlich herauszufinden wo sich in einem sy stem die fehler finden lassen sollen Wie bereits zuvor bemerkt sind fehler nie mals gleichverteilt und es lohnt sich absolut nicht an allen beliebigen stellen Copyr
170. er gleichen GPL weiterzugeben und solcherart auch den n chsten in der kette zu gleichem handeln zu verpflichten Die GPL wirkt da mit wie hefe oder sauerteig eine einzige verwendete zeile aus freier software im sinne der GPL verpflichtet einen verwender sein ganzes paket entweder still f r sich zu behalten oder aber ebenfalls als freie software weiterzugeben Es gibt noch eine abgeschw chte version f r die verwendung in programm bibliotheken die Lesser GPL An dieser stelle sollte bemerkt werden da der begriff Open Source Software OSS f r sich allein mehrdeutig ist und mindestens drei verschiedene inter pretationen zul sst e Von Free Software sollte im grunde nur dann gesprochen werden wenn damit gemeint ist da sie unter der GPL vertrieben wird Das bedeutet aber wie bereits zuvor bemerkt nicht da dies kostenlos geschehen mu es darf durchaus auch Geld daf r verlangt werden e Die mit dem Unix Derivat BSD der University of California Berkeley ver bundene BSD lizenz die nach der GPL und der LGPL dritth ufigst ver wendete lizenz stellt lediglich klar dass der hersteller nicht f r irgend welche sch den haftet die durch die software oder daraus abgeleitete pro dukte entstehen und verlangt im brigen dass die copyright notiz un ver ndert erhalten bleibt zwei punkte die im grunde selbstverst ndlich sind und auch in der GPL enthalten sind Davon abgesehen l sst die BSD lizenz dem verwender jede
171. er von Simula 67 haben sich entschieden konzepte der realen welt wie etwa hier schalter warteschlangen kunden als objekte zu bezeichnen und diese objekte in klassen zusammenzufassen soweit sie gleichartig sind Von klassen k nnen unterklassen gebildet werden welche automatisch alle ei genschaften der oberklasse erben und andere eigenschaften hinzuf gen k n nen oder aber auch vorgegebene merkmale der oberklasse ab ndern Es ergibt sich nahezu zwanglos dass solche objekte w hrend der laufzeit dynamisch er zeugt und wieder vernichtet werden k nnen und dass sie in der zeit zwischen erzeugung und vernichtung ein eigenleben f hren k nnen das heisst also von sich aus spontan irgendwelche aktionen ausf hren k nnen Schaut man ei ne ebene tiefer in die implementierung hinein so ergibt sich dass derartige objekte ansammlungen von daten und prozeduren darstellen Die daten charak terisieren hierbei so etwas wie den inneren zustand des objekts w hrend die prozeduren die m glichen aktionen des objekts beschreiben Simula 67 verf gte ber keine vorrichtungen zur datenkapselung d h der Copyright Herbert Klaeren 29 Juni 2015 62 verhinderung illegaler zugriffe auf den internen zustand von objekten in der tat entstanden die theoretischen arbeiten charakteristisch z B Hoare 1972 zum sinn der datenkapselung erst durch die anregung der programmierung in Simula 67 Heute geh rt die datenkapselung zu den wichtigsten ingr
172. er wissen will findet auf der dort verlinkten folgeseite etwas detailliertere Vergleiche stand vom 17 7 2013 unterteilt in die kategorien er forderlich erlaubt und verboten Hier wird auch darauf hingewiesen 42 www google com codesearch swfloss tex 10 FREE LIBRE OPEN SOURCE SOFTWARE 205 dass manche open source communities bestimmte dieser lizenzmodelle be vorzugen Hundertprozentig durchdacht erscheint der vergleich noch nicht berall es lohnt sich bestimmt die seite h ufiger anzuschauen Erforderlich Hier bedeutet LC license and copyright Abdruck von lizenz und copyright SC state change Markierung von nderungen DS disclose source Verpflichtung zur ver ffentlichung ge nderten codes LU library usage Dieser punkt scheint hier falsch zu sein er geh rt eher unter die abteilung erlaubt bibliotheken d rfen in projekten ver wendet werden die nicht open source sind SC DS LU X XIX Apache v2 GPL v2 MIT License Mozilla Public License 2 0 LGPL v2 1 BSD 3 clause Artistic License 2 0 GPL v3 LGPL v3 Affero GPL Public Domain Unlicense GitHub no license Eclipse Public License v1 0 BSD 2 clause K I xx xx xxx gt lt Erlaubt Hier bedeutet PU private use Privater gebrauch CU commercial use Kommerzieller gebrauch sollte privaten gebrauch implizieren aber wozu dann die unterscheidung MO modification Modifikation DI
173. erden von der Smalltalk VM in einem Smalltalk image aufbewahrt e C traf auf eine grosse zahl ausgebildeter C programmierer die nur noch die erweiterten konzepte lernen mussten e Deshalb basiert auch Java das von Smalltalk u a die idee einer virtuellen maschine bernahm aus marketing gr nden lieber auf C 4 1 Klassen und objekte Grady Booch definiert ein objekt als Copyright Herbert Klaeren 29 Juni 2015 64 4 2 Statische modellierung eine entit t die einen zustand hat die charakterisiert ist durch die ak tionen die sie einerseits ausf hrt und die sie andererseits von anderen objek ten anfordert Ein objekt ist eine instanz einer klasse wird bezeichnet durch einen namen hat eine eingeschr nkte sicht auf andere objekte und eine ein geschr nkte sichtbarkeit f r andere objekte In der tat ist alles was gegen ber den abstrakten datentypen hier an wesent lichem noch hinzukommt durch die begriffe der instanziierung von objekten aus klassen und die vererbung von oberklassen auf unterklassen vollst ndig beschrieben Alles brige ist ein reiner wechsel der terminologie zum bei spiel dass prozeduren jetzt methoden genannt werden und prozeduraufrufe nachrichten manche autoren bevorzugen das wort botschaften Eine klasse stellt gewissermassen eine fabrik f r objekte dar sie ist wie ein stempel oder eine schablone vor der immer neue abdr cke gezogen werden k nnen Die solchermassen dynamisch
174. erhalb der Funktion NewID k nnten Sie immer noch eine einzige Zeile return MaxID oder hnlich haben aber wenn Sie sp ter beschlie en bestimmte Bereiche von IDs f r spezielle Zwecke zu reservieren oder alte IDs wiederzuverwenden dann k nnten Sie diese nderungen innerhalb der NewID Funktion machen ohne Dutzende oder gar hunderte von Anweisungen anzufassen Jetzt nehmen Sie an da Sie fest stellen da Sie den Typ ID von einer ganzen Zahl zu einer Zeichenkette verwandeln m ssen Wenn Sie Deklarationen der Form int ID durch das Programm verteilt haben dann hilft Ihre Verwendung der NewID Funktion nicht weiter Sie m ssen immer noch durch das Programm gehen und Dutzende oder Hunderte von nderungen machen In diesem Fall ist der Typ von ID die Entwurfsentscheidung die Sie verstecken m ssen Sie k nnten einfach Ihre IDs als vom Typ IDTYPE deklarieren einem benutzerdefinierten Typ McConnell 1996 The field has been defined by the Engineers Council for Professional Development in the United States as the creative application of scientific principles to design or de velop structures machines apparatus or manufacturing processes or works utilizing them singly or in combination or to construct or operate the same with full cognizan ce of their design or to forecast their behaviour under specific operating conditions all as respects an intended function economics of operation and safety to life and proper t
175. erschiedliche kategorien eingeteilt werden 1 System Infrastructure Frameworks Diese frameworks dienen zur entwicklung der infrastruktur von syste men Beispiele f r diese art von frameworks sind betriebssystemzus tze oder kommunikations frameworks 2 Middleware Integration Frameworks Die integration verteilter komponenten wird durch Middleware Integrati on Frameworks unterst tzt Diese dienen dazu modulare und wiederver wendbare software zu entwickeln die in einer verteilten umgebung ar beiten soll Zu diesen frameworks geh ren beispielsweise Object Request Broker ORB oder transaktionsorientierte objektorientierte datenbanken 3 Enterprise Application Frameworks Diese art von frameworks unterst tzt die entwicklung von applikations software die direkt von einem endanwender genutzt wird Damit unter scheiden sie sich von den beiden anderen typen von frameworks die le diglich eine basis f r applikationen bieten Enterprise Application Frame works werden unter anderem bei der entwicklung von software im kauf m nnischen bereich der produktionsplanung und steuerung f r die te lekommunikation oder der steuerung von automatisierungsger ten im in dustriellen umfeld verwendet Typisch f r alle frameworks ist das sogenannte Hollywood prinzip der call backs Im gegensatz zu einer modulbibliothek s abb 32 welche funktionen anbietet die vom klienten aufgerufen werden k nnen beh lt ein solches fra mework
176. erschritten werden darf Eine von jeder darstellung freie algebraische spezifikation des kellerspeichers findet sich in abb 13 Das pr dikat isFull scheint hier berfl ssig zu sein da es f r die algebraische spezifikation keine rolle spielt es ist jedoch ein vorblick auf die implementierungen in der kellerspeicher begrenzt sind Um solche im plementierungen mit beschr nkter kellertiefe nicht auszuschliessen wurden hier keine gleichungen f r isFull angegeben Abb 14 zeigt den gleichen ADT in einer JML Variante analog zu abb 9 Wie dort legt auch hier die JML spezifikation eines modells nicht notwendig ei ne implementierung durch ein feld nahe Im vergleich zur algebraischen spe zifikation zeigt sich ausserdem dass das prim re argument vom typ Stack nat rlich in den methodenk pfen nicht mehr auftaucht da es in der objektori entierten programmierung anders bergeben wird Um die verlegenheit dass es in Java vor version 1 5 keine parametrisierten klassen gibt haben wir uns hier herumgemogelt indem wir eine abstrakte klasse Item f r die einzuspei chernden elemente vorausgesetzt haben Abstrakte datentypen als mengen zusammen mit spezifischen operationen liefern einen entscheidenden schl ssel zu der frage woher module kommen bzw wie man die richtigen module finden kann Kernfragen beim system entwurf sind n mlich die folgenden 1 Wie sehen die eingaben f r das system aus 2 Welche ausgaben soll das system e
177. ersion die interessanteste ist wird diese im repositorium abgelegt zusammen mit skripten die hieraus auf wunsch jede ltere version rekonstruieren k nnen SCCS und RCS gehen bei de von der vorstellung aus dass programmierer eine komponente aus dem repositorium entweder nur zum anschauen ausbuchen dann k nnen sie sp ter keine neue version davon einbuchen oder aber zum ndern ausbuchen dann kann kein anderer programmierer die gleiche komponente zum ndern ausbuchen Es sind dann mit jeder datei locks verbunden die erst beim nach folgenden checkin freigegeben werden Eine weitere Verbesserung war CVS Concurrent Versions System das sich sich von dieser einschr nkung freimachte und die parallelarbeit mehrerer pro grammierer an einem modul erlaubte Es gab daher nur eine einzige methode des ausbuchens von komponenten Wurde beim n chsten einbuchen festge stellt dass sich die version im repositorium von derjenigen unterschied die damals ausgebucht wurde so versuchte das werkzeug von selbst die versio nen zu mischen Wenn die parallelen nderungen in unterschiedlichen regio nen der datei vorgenommen wurden ging das auch gut anderenfalls wurden konflikte gemeldet die der zweite programmierer selbst aufl sen musste bevor er die komponente wieder einbuchen konnte Es gab brigens trotzdem die m glichkeit dass ein autor eine datei ausdr cklich verriegelte und so gegen nderungen durch andere sch tzte CVS war auch
178. erzeugten objekte heissen dann auch instanzen besser exemplare der klassen Obwohl solche exemplare nach einem einheitlichen strickmuster von der klasse abgezogen werden haben sie den noch jedes eine eindeutige objektidentit t sie k nnen von anderen exemplaren der gleichen klasse unterschieden werden Zum zugriff auf objekte dient eine objektreferenz zwei objekte haben dann die gleiche identit t wenn sie die glei che objektreferenz haben Objektreferenzen sind in der regel komplex struktu riert sie mit zeigern zu verwechseln ist wie gesagt ausgesprochen kurzsich tig 4 2 Statische modellierung In diesem zusammenhang muss die UML Unified Modeling Language Fowler und Scott 1998 St rrle 2005 erw hnt werden die durch vereinigung und ver einheitlichung mehrerer ans tze von Booch Jacobson und Rumbaugh ent standen ist und auch von der OMG unterst tzt wird Wir versuchen uns in dieser vorlesung m glichst in der UML auszudr cken auch wenn diese ein bewegliches ziel darstellt da h ufig neue versionen davon publiziert wer den Der begriff modeling language ist eigentlich irref hrend denn es han delt sich nicht wirklich um eine sprache sondern in der hauptsache um ei ne sammlung verschiedener graphischer notationsmittel Diese werden wirin der vorlesung nicht alle ansprechen sondern nur die wichtigsten davon Wie Bowen und Hinchey 2006 argumentieren darf man sich nicht zu viel von UML versprechen die b
179. es gemeinsam was in XP eine ite ration ist heisst hier sprint Davon abgesehen gibt es grosse unterschiede zum XP prozess insbesondere sind hier zwei rollen hervorgehoben Product owner Dieser definiert die bergreifenden ziele des projekts und k mmert sich um den return on investment Scrum master Dieser geh rt nicht zum entwicklerteam leitet aber den gesam ten prozess und sorgt f r die einhaltung der spielregeln Lesens und beachtenswert ist was hier zu den anforderungen user stories und aufgaben gesagt wird e Make SMART requirements Simple Measurable Achievable Realistic Traceable e INVEST in user stories Independent Negotiable Valuable Estimatable Small Traceable e Make sure a task is TECH Time boxed Everybody can pick it up Com plete Human readable 6 6 4 Andere agile methoden Von Alistair Cockburn alistair cockburn us stammt die Crystal family von methoden Crystal Clear Crystal Yellow Crystal Orange Crystal Red Cry stal Magenta Crystal Blue mit zunehmendem komplexit tsgrad Jeff de Luca www nebulon com articles fdd latestfdd html schlug das Feature Driven Development vor das eine gewisse hnlichkeit zu der im n chsten kapitel zu schildernden Microsoft methode hat Kontrollfragen 1 Erkl ren sie die drei grundlegenden mit jedem vorgehensmodell verbun denen probleme 2 Worin liegt die spezifische kritik am wasserfallmodell 3 Wie definiert man produktivit tsma e f r vo
180. ese entit t zur ckgef hrt werden k nnen Zuverl ssigkeit reliability Grad zu dem ein system produkt oder eine kom ponente spezifizierte funktionen unter spezifizierten bedingungen ber einen spezifizierte zeitraum hinweg durchf hrt Copyright Herbert Klaeren 29 Juni 2015 226 swprop tex C HISTORISCHES 227 C Historisches Hier werden einige informationen zusammengetragen die jede r informati ker in eigentlich wissen sollte auch wenn sie weniger wichtig sind C 1 Die softwarekrise In der anfangszeit der computerentwicklung und anwendung sah man in der software allgemein kein problem Metropolis u a 1980 die interessanten fragen lagen eindeutig auf dem hardwaresektor Der computer galt wie F L Bauer 1991 es heute formuliert als eine art vollautomatische handkurbel rechenmaschine Das dr ckt sich auch in den damaligen bezeichnungen rechenautomat bzw automatische rechenmaschine aus Auch die ersten kommerziell vertriebenen rechner wurden vom hersteller praktisch ohne jede software ausgeliefert was f r heutige verh ltnisse unvorstellbar ist Dieses vorgehen war nur deshalb m glich weil die damaligen computer einerseits noch ziemlich berschaubar waren und andererseits auch nur f r ganz eng umgrenzte anwendungen z b numerische algorithmen eingesetzt wurden Die charakteristika aus der fr hzeit der computer etwa 1942 1948 sind e Programme waren nachbildungen von
181. eshalb auch darin m g lichst programmabst rze zu provozieren und deren ursachen anschliessend zu ermitteln Auch eine stichprobenartige berpr fung der ausgabedaten bzw programmreaktionen ist denkbar Ein interessanter repr sentant dieser klasse von testfallerzeugung ist das werkzeug fuzz von Miller u a 1990 Hierbei handelt es sich um ein programm welches entsprechend vorgegebener konfi gurationsdateien und m glicherweise unter zuhilfenahme eines sog pseudo terminals eingabedaten in diesem fall f r UNIX dienstprogramme erzeugt Ein berraschend grosser anteil von UNIX dienstprogrammen konnte hiermit zum absturz gebracht bzw in endlosschleifen geschickt werden siehe die ta belle im zitierten artikel Wenn man die datenbezogene testmethode etwas verfeinert so teilt man die eingaben in mengen diskreter werte zusammenh ngende wertebereiche Copyright Herbert Klaeren 29 Juni 2015 114 5 4 Dynamische analyse testen und daten mit expliziten beziehungen zu anderen daten ein siehe hierzu das buch von Myers 1979 Die mengen diskreter werte teilt man dann in qui valenzklassen ein wobei daten aus der gleichen quivalenzklasse eine gleiche wirkung im programm erzeugen sollen Das testen mit repr sentativen werten aus einer quivalenzklasse nennt Myers die repr sentative wertanalyse Zusam menh ngende wertebereiche testet man mit hilfe ihrer grenzwerte wobei man sich in der regel auf den unteren grenzwert den um
182. ess project of object oriented software construction Initial training then should focus on implementation and design Meyer 1996 Nehmen wir an Sie haben ein System in dem jedes Objekt eine eindeutige ID haben soll die in einer Attributvariablen namens ID gespeichert ist Ein Entwurfsansatz w r de es sein ganze Zahlen f r die IDs zu verwenden und die h chste vergebene ID in einer globalen Variablen maxID zu speichern An jeder Stelle wo ein neues Objekt al loziert wird k nnte man einfach die Anweisung ID maxID verwenden Was k nnte daran falsch sein Eine Menge Was wenn Sie einen bestimmten Bereich von IDs f r spezielle Zwecke reservieren m chten Was wenn Sie IDs von Objekten wieder verwenden m chten die gel scht wurden Was wenn Sie eine Zusicherung einf gen m chten die einen Alarm ausl st wenn Sie mehr IDs allozieren wollen als die maxi mal vorgesehene Anzahl Wenn Sie IDs alloziert haben indem Sie Anweisungen ID MaxID durch das ganze Programm verstreut haben dann m ten Sie den Code von jeder dieser Anweisungen ndern Die Art wie neue IDs erzeugt werden ist eine Ent wurfsentscheidung die Sie verstecken sollten Wenn Sie die Phrase MaxID ber das Programm hinweg verwenden dann decken Sie auf da eine neue ID durch Erh hen von maxID erzeugt wird Wenn Sie statt dessen die Anweisung ID NewID im Pro gramm verwenden dann verbergen Sie die Information wie neue IDs erzeugt werden Inn
183. estand sweinf tex 1 EINF HRUNG WAS IST SOFTWARETECHNIK 7 Die funktion des wissenschaftlers ist es zu wissen aber die des ingenieurs ist es zu tun Der wissenschaftler erweitert den vorrat an verifiziertem systematisiertem wissen ber die tats chliche welt der ingenieur macht dieses wissen tragf hig f r praktische probleme Wirtschaftliche abw gungen Es lassen sich eine menge dinge bewerkstelli gen wenn man bereit ist beliebig viel geld daf r auszugeben Normalerweise ist man jedoch nicht gerne bereit unverh ltnism ssig viel f r dinge auszu geben die nicht unbedingt notwendig sind So entscheidet vielfach der preis ber leben und tod eines produkts Aufgabe des ingenieurs ist es daher nicht bloss ein produkt zu entwerfen das die gew nschte funktion irgendwie er bringt sondern er muss unter allen denkbaren und praktisch durchsetzbaren l sungsm glichkeiten die kosteng nstigste ausw hlen Sicherheit Von jeher geh ren sicherheits berlegungen zu den pflicht bun gen eines ingenieurs Der bestimmungsgem sse gebrauch eines apparats darf weder den bediener noch den rest des systems gef hrden in das dieser appa rat eventuell eingebaut ist Z b darf das automatikgetriebe nicht den motor besch digen es muss sich auch f r den fahrer berechenbar verhalten damit das fahrzeug sich nicht ungewollt in gang setzen kann usf Das erfordert ei ne ganz sorgf ltige analyse der grenzf lle des betriebs sowie de
184. etter induzierten schwingungen wurde der zusammenbruch der br cke herbeigef hrt MacLennan wie wahrscheinlich auch Billington bemerkt dass vor dem einsatz der computerprogramme der resultierende entwurf der br cke vermutlich aus eleganzerw gungen verwor fen worden w re Daraus leiten sie den ratschlag ab man m ge seine auf merksamkeit auf entw rfe beschr nken die gut aussehen weil sie vermutlich dann auch gut sind Auf der seite der bauingenieure l sst sich dies dadurch begr nden dass die mathematische analyse der probleme praktisch niemals vollst ndig sein kann Die relevanten gleichungen werden oft vereinfacht um berhaupt numerisch handhabbar zu werden und wir haben es sehr h ufig mit sog unterdeterminierten problemen zu tun Eleganz kann der schl ssel zu einem anderen technikverst ndnis sein Die belebte natur ist unter dem ge sichtspunkt der evolution daraufhin konstruiert jeweils optimale l sungen f r bestimmte probleme durchzusetzen So wie heute aerodynamiker und robo terkonstrukteure von l sungen aus dem tier und pflanzenreich lernen welche sich im laufe der evolution durchgesetzt haben so k nnen vermutlich allge mein ingenieure von dem im menschlichen geist vermutlich vor dem hinter grund der optimalen auswahl im reproduktionsprozess eingebauten sinn f r eleganz profitieren Die technischen l sungen welche von einer mehrzahl der Copyright Herbert Klaeren 29 Juni 2015 232 C 3 Geschichte der versi
185. ex 4 OBJEKTKONZEPT OOD UND OOA 73 Bei der einfachen vererbung hat keine klasse mehr als eine oberklasse Der nutzen der mehrfachvererbung wo eine klasse von mehreren oberklassen erben kann ist theoretisch und praktisch umstritten einige OO programmierspra chen verbieten die mehrfachvererbung Java bietet mit seinen interfaces eine pragmatische l sung an eine klasse kann mehrere verschiedene interfaces implementieren 4 3 Dynamische modellierung Wir haben im vergangenen abschnitt das zu entwickelnde system ledig statisch modelliert genau so wichtig ist die dynamische modellierung Hier geht es um die beschreibung von vorg ngen im system die einen gewissen zeitverlauf ha ben und um zustandsver nderungen im system Dazu geh rt auch die darstel lung der sogenannten objektgeschichte object life cycle d h die beschrei bung der stellen und zeitpunkte wo objekte erzeugt und vernichtet werden Etwas v llig anderes w re eine zusicherung dass gewisse attribute eines objektes ber seine lebensdauer hinweg konstant bleiben z b die in einen personalausweis eingedruckten personenmerkmale Auch dies ist zwar im grunde eine dynamische eigenschaft wird aber besser durch annotationen in einem klassendiagramm verankert werden Wichtige beschreibungsmittel in der UML zur dynamischen modellierung sind e Zustands bergangsdiagramme transitionsdiagramme im prinzip endli che automaten s abb 24 e Sequenzdiagramme s
186. ezifikation des programms v llig ausser acht bleibt k nnen logische fehler wie etwa vergessene funktionen unber cksichtigte da ten inkonsistente verwendung von schnittstellen etc auch bei h chster ber deckung niemals aufgefunden werden Nach Sneed liegt der hauptnutzen des ablaufbezogenen testens darin dass es den tester zwingt sich intensiv mit dem testobjekt auseinanderzusetzen Bei der suche nach testf llen zu einem gewissen berdeckungsgrad wird er bzw das von ihm eingesetzte software werkzeug mit grosser wahrscheinlichkeit auf logische ungereimtheiten und l cken im code stossen Das ablaufbezogene testen ist vergleichbar mit dem testen einer eisfl che durch vorsichtiges betreten wenn alle bereiche der fl che einmal betreten worden sind kann man davon ausgehen dass ein mensch mit dem gleichen oder einem niedrigeren gewicht in der n heren zukunft hier nirgendwo einbrechen wird ber die genauen physikalischen eigenschaften der eisfl che ist damit noch nichts gesagt 5 4 2 Datenbezogenes testen Diese technik ist auch als volume testing oder stress test bekannt Hier werden in grosser menge gegebenenfalls auf der basis vorgegebener wahr scheinlichkeitsverteilungen g ltige kombinationen von eingabedaten zufalls m ssig erzeugt und in das programm eingespeist Aufgrund dieses zufall prinzips ist auch das jeweils zu erwartende ergebnis im prinzip unvorher sehbar Der haupteinsatzzweck dieser technik liegt d
187. f die entwicklung von infor matikmethoden gehabt hat Vierzig jahre sp ter zieht Hoare 2009 ein resum und bemerkt dabei dass seine damalige ansicht verifizieren sei eine bessere alternative zum testen falsch gewesen sei swkorr tex 5 SOFTWAREQUALIT T 129 I did not realize that the success of tests is that they test the programmer not the program Jeder fehlgeschlagene testfall macht den programmierer darauf aufmerk sam dass er nicht sorgf ltig genug gearbeitet hat und tr gt damit zur verbes serung des programmierers ebenso bei wie zur verbesserung des programms The experience judgment and intuition of programmers who have sur vived the rigors of testing are what make programs of the present day use ful efficient and nearly correct Formal methods for achieving correctness must support the intuitive judgment of programmers not replace it Verifizieren ist also keine alternative zum testen sondern vielmehr ein anderer aspekt des problems My basic mistake was to set up proof in opposition to testing where in fact both of them are valuable and mutally supportive ways of accumulating evidence of the correctness and serviceability of programs Er weist anschliessend darauf hin wie seine verification conditions sp ter in von ihm nicht vorhergesehener weise als assertions abschn 5 4 5 eingang in den alltag des programmierers gefunden haben auch der design by contract ab schn 2 4 basiert letztlich auf d
188. ff der nachhaltigkeit engl sustainability was auch als ertr glichkeit bersetzt werden kann geht in diesem zusam menhang auf die oft gemachte erfahrung zur ck dass in sp ten nacht oder fr hen morgenstunden oder berhaupt in mehr oder weniger unwillig gelei steten berstunden hergestellte softwareprodukte in aller regel nicht das ge zahlte geld wert sind TDD f Wohlergehen der Feingranulare Programmierer R ckkopplung SP lt e PG Gemeinsames SD DI Verst ndnis Stetiger SR Prozess Abbildung 49 Einfl sse der Xtuden Manche der Xtuden beeinflussen andere positiv diese wirkungen sind in abb 49 dargestellt Die rechte des softwareentwicklers im XP prozess sind wie folgt beschrie ben Rechte des Softwareentwicklers Du hast das recht Copyright Herbert Klaeren 29 Juni 2015 148 6 6 Agile methoden e zu wissen was ben tigt wird mit klaren festlegungen von priorit ten in form detaillierter anforderungen und spezifikationen Beim Extreme Pro gramming kann der kunde die anforderungen und spezifikationen n dern indem er stories hinzuf gt oder entfernt oder er kann die priori t t der stories ndern Der programmierer bekommt die neuen stories zu sehen sch tzt sie ab und informiert den kunden ber die auswirkungen auf den arbeitsplan Wenn der plan nicht mehr auf das gew nschte liefer datum des kunden passt informiert der entwickler den kunden und der kunde kann en
189. fikation abgegeben Geht man davon aus dass es in der tat m glich ist eine vern nftige zutref fende spezifikation zu schreiben so ist sicherlich etwas wie korrektheit die wesentlichste eigenschaft von software aber im gegensatz zur theoretikermei nung handelt es sich dabei nicht um eine boolesche variable b T F sondern um ein wahrscheinlichkeitsmass p 0 1 In der praxis liegen die dinge wie blich komplizierter Uber die korrekt heit hinaus sind viele andere eigenschaften von software relevant In einem sehr lesenswerten artikel ber haftungsfragen im zusammenhang mit softwa re stellen Voas u a 1997 fest Korrekt ist unter umst nden nicht gut genug Damit zielen die autoren auf ein altbekanntes thema ab es ist unter umst nden gar nicht m glich eine zutreffende spezifikation zu erstellen Richard Gabriel Diese begriffsbildung ist nicht von Dijkstra sondern ich habe sie hier eingef hrt Ob die sch pfer des begriffs real existierender sozialismus woher ich diese formulierung genom men habe wohl auch eine gewisse ironie darin ausdr cken wollten Jedenfalls wussten sie genau dass ihr eigentliches ziel der kommunismus noch unvollkommen realisiert war in der zwischenzeit musste die welt mit dem real existierenden sozialismus vorlieb nehmen 21 Der hauptunterschied zwischen theorie und praxis liegt darin dass es ihn in der theorie gar nicht gibt in der praxis aber sehr wohl Copy
190. folge haben m sste Dann ist die gefahr jedoch gross dass die se nachgeordneten modifikationen vergessen werden Deshalb soll so ein redunanter code herausfaktorisiert werden wobei die u u vorhandenen unterschiede durch parameter erfasst werden Long method Ist eine methode viel l nger als die meisten anderen methoden so erschwert dies das verst ndnis Deshalb ist es sinnvoll nach wegen zu suchen diese methode in mehrere kleine methoden aufzuspalten Large class Eine hnliche berlegung in bezug auf klassen Shotgun surgery Schrotflinten operation Hier ist ein konzept derart auf viele klassen verteilt dass eine nderung des zugrundeliegenden kon zepts nderungen in allen beteiligten klassen verlangen w rde Ziel ist es deshalb diese klassen so neu zu b ndeln dass die zu dem konzept geh rigen codest cke m glichst innerhalb einer einzelnen klasse liegen Feature envy Merkmalsneid liegt vor wenn eine methode mehr auf die da ten anderer klassen als auf die der eigenen zugreift Das kann dadurch behoben werden dass die methode in die andere klasse verlagert wird Wichtig beim refactoring ist dass jeweils nur eine einzige massnahme in ei nem schritt vorgenommen wird und der code jeweils vor und nach dem refac toring die gleichen tests durchl uft Nur so kann gew hrleistet werden dass das refactoring die bedeutung des programms erh lt Beispiele f r refactoring operationen w ren etwa das umbenennen von
191. fraktal in dem jedes detail genau so lokal koh rent und so gut durchdacht ist wie jede andere ebene e Jeder teil des code ist transparent klar es gibt keine abschnitte die dun kel sind um effizienz zu gewinnen e Alles daran kommt mir vertraut vor Kommen wir nunmehr wieder auf den gesichtspunkt der pseudo korrekt heit von software zur ck bzw zu dem f r die softwaretechnik wichtigeren the ma der entdeckung und behebung von fehlern Boehm und Basili 2001 listen die zehn wichtigsten erkenntnisse zur reduzierung von fehlern in software wie folgt auf 1 Ein softwareproblem nach der auslieferung zu finden und zu beheben ist oft 100 mal teurer als es w hrend der anforderungs und entwurfsphase zu finden und zu beheben Anhand empirischer daten aus zahlreichen projekten hat Boehm 2 oder die DDR plattenbauten die Gabriel nicht bekannt waren swkorr tex 5 SOFTWAREQUALIT T 101 ermittelt da die kosten f r die beseitigung eines fehlers bei der system analyse exponentiell mit dem abstand von dieser fr hen phase steigen Boehm und Basili betonen aber dass es bei kleineren softwaresystemen h ufig nur ein faktor 5 ist 2 Heutige softwareprojekte verwenden rund 40 bis 50 prozent ihres aufwands auf vermeidbare berarbeitungen Als vermeidbar werden dabei berarbeitungen definiert sie sich bei einer besseren analyse des problems nicht ergeben h tten Unvermeidbar sind demgegen ber berarbeitungen die sich aus
192. ftwaretechnik Der titel dieses kapitels mag stark berzogen sein echte philosophen wer den sich sicher dar ber aufregen Was ich hier anbieten m chte sind im we sentlichen lesehinweise auf material das nicht direkt zum thema geh rt aber interessante ausblicke auf den geistigen hintergrund der softwaretechnik im speziellen oder der ingenieurwissenschaften im allgemeinen bietet Bob Colwell 2002 ein ehemaliger Intel chefarchitekt setzt sich mit Mur phy s Law auseinander nach dem alles was schiefgehen kann auch schiefge hen wird Colwell der selbst zugibt f r gewisse Pentium entwurfsfehler ver antwortlich zu sein r ckt hier das h ufig glorifizierte bild des ingenieurs zu recht der angeblich alles immer richtig macht und betont die rolle von kata strophen und beinahe katastrophen in der weiterentwicklung der technik Da bei gibt er eine fiille von lesehinweisen von denen ich einige hier mit seinen empfehlungen weitergeben m chte Petroski 1985 betont da die lernkurve in den ingenieurwissenschaften typischerweise immer direkt nach irgendwel chen ungl cken am steilsten ist Kranz 2000 schildert die hintergr nde der raumfahrtprogramme Mercury Gemini und Apollo und dabei insbesondere die entscheidungen h ufiger auch einen test mit v llig unbekanntem ausgang und relativ hohem risiko einzugehen Der soziologe Perrow 1999 weist dar auf hin wie das versagen komplexer systeme ziemlich direkt vom koppl
193. g Nennen sie drei beispie le wo solche verteilungen in der diskussion um softwarequalit t vorkom men 3 Welche fehlerdichten gibt es in kommerziell vertriebenen programmen 4 Wieso ist software mit wenig fehlern nicht teurer als software mit vielen fehlern 5 Was spricht gegen das sog error seeding 6 Ordnen sie die testmethoden ablaufbezogenes datenbezogenes und funk tionsbezogenes testen den kategorien black box test und white box test zu 7 Welche arten von fehlern lassen sich mit dem ablaufbezogenen testen fin den Welche lassen sich mit dieser methode bestimmt nicht finden 8 Beschreiben sie den prozess der programminspektion nach Fagan 9 Welche inspektionsleistungen pro stunde werden empfohlen 10 Wie verhalten sich statische und dynamische analysemethoden zueinan der in bezug auf den prozentsatz der aufgefundenen fehler 11 Welche massnahmen kann man treffen um eine fehlerbereinigungseffizi enz von 86 zu erreichen Wieso sind diese 85 so wichtig swkorr tex 6 VORGEHENSMODELLE FUR DIE SOFTWAREENTWICKLUNG 131 6 Vorgehensmodelle fiir die softwareentwicklung 6 1 Software lebensl ufe The same reused software components that killed people when used to control the Therac 25 had no dangerous effects in the Therac 20 Safety does not even exist as a concept when looking only at a piece of software it is a property that arises when the software is used within a particular overall system design Ind
194. gens angelegtes modul eingekapselt wird so dass man ber die konsistent eingehaltene schnittstelle dieses moduls in ver bindung mit dem geheimnisprinzip immer die m glichkeit hat sp ter die ent wurfsentscheidung nochmals anders zu treffen Sehr h ufig findet man in der diskussion um prinzipien des architekturent wurfs die begriffe top down und bottom up Dabei handelt es sich jedoch eher um beschreibungsans tze f r komplexe systeme als um echte vorgehensmodelle top down Die systembeschreibung geht von der logisch h chsten hierarchie stufe aus und verfeinert diese dann nach und nach bis zu den niedrigsten stufen F r den leser hat dies den vorteil dass er als erstes einen berblick ber das gesamtsystem bekommt und anschliessend schrittweise so tief in das system eindringen kann wie er es w nscht bottom up Die systembeschreibung beginnt auf der logisch niedrigsten hier archiestufe beschreibt also die bausteine des systems zuerst und dann die art und weise wie diese schrittweise zu immer komplexeren einheiten zusammengesetzt werden bis schliesslich das gesamtsystem beschrieben ist Copyright Herbert Klaeren 29 Juni 2015 48 3 3 Modularisierung durch datenabstraktion Die erfahrung hat gezeigt dass systembeschreibungen nach der top down methode besser verst ndlich sind H ufig entsteht aber auch der eindruck dass das system auf diese weise konstruiert worden ist n mlich ausgehend von dem gesamtsystem und von
195. ger heimt cki sche Globalisierungspl ne und die Vernichtung heimischer Arbeitspl tze ge hen Aber nicht sofort Zun chst muss vom Handy meiner Mutter die Rede sein Meine Mutter ist Jahrgang 1944 und wie viele Menschen ihrer Genera tion steht sie dem Fortschritt mit gesunder Distanz gegen ber Dass sie ber haupt ein Mobiltelefon hat h ngt haupts chlich mit dem Wunsch ihrer Kin der zusammen ihre Bewegungen durch die Welt halbwegs zu verfolgen Sie ist das was Handyhersteller gern einen Einsteiger nennen Folgerichtig be nutzt sie ein schon etwas lteres silberfarbenes Einsteigermodell namens A65 und das wurde jetzt kommt es von Siemens hergestellt als Siemens noch Siemens hie und nicht BenQ und noch keine Rede war von Insolvenz Wenn meine Mutter ihr Handy nicht versteht stellt sie gern Einsteigerfragen Neu lich war sie zu Besuch und behauptete dass es unm glich sei Eintr ge aus ihrem Handy Adressbuch zu l schen Das haben wir gleich sagte ich und machte mich an ihrem Men zu schaffen Es war ohne Zweifel das h sslichste und umst ndlichste Handymenii das ich je gesehen hatte Alles funktionier te genau andersherum als man spontan erwartet h tte Und Ich kam nicht zum Ziel Ich konnte einzelne Zahlen l schen und einzelne Buchstaben aber einen ganzen Eintrag Keine Chance Ist nicht so wichtig sagte meine Mutter die merkte wie Besessenheit in mir aufstieg Aber mein Ruf als Gadget Guru stand auf dem
196. geschrittenen dynamischen modellie rung s abschn 4 3 vern nftig durchgef hrt werden Das zweite ziel geh rt bereits zur implementationstechnik und soll auf keinen fall in den entwurf zu r ckwirken Vererbungsbeziehungen erzeugen sehr starke abh ngigkeiten zwischen sy stemteilen und m ssen deshalb so sp t als m glich eingef hrt werden Durch das vererbungskonzept bei objektorientierten sprachen kommt au tomatisch eine gewisse form der polymorphie ins spiel Cardelli und Wegner 1985 n mlich die sog inklusionspolymorphie An jeder stelle wo wir ein objekt einer bestimmten klasse C als argument einer methode erwarten kann auch jedes objekt jeder unterklasse von C bergeben werden Da es unterklassen erlaubt ist statt des kommentarlosen erbens von methoden aus einer ober klasse diese auch zu berschreiben stellt sich die interessante frage nach der bindung d h der auswahl einer bestimmten variante der methode aus mehre ren m glichkeiten innerhalb der vererbungshierarchie Besonders einfach und bersichtlich ist die sog statische bindung z b bei Oberon 2 Hier ist bereits der compiler in der lage diese auswahl zu treffen Komplizierter wird es etwa im fall von Smalltalk wo erst zur laufzeit feststehen kann auf welcher stu fe der vererbungshierarchie eine methode tats chlich ausgef hrt wird Hier sprechen wir von dynamischer bindung vgl meine bemerkung ber die vermischung von klassen und typen swoo t
197. gt werden J z quel und Meyer 1997 e Das Toll Collect system f r die LKW maut auf deutschen autobahnen soll am 31 August 2003 in dienst gehen erreicht aber erst am 1 Januar 2006 seine volle funktionalit t Die bundesregierung klagt gegen das konsor tium wegen 1 6 milliarden Euro vertragsstrafe und 3 5 milliarden Euro einnahmeausf llen Wikipedia 2008 e Zu kurze kabelb ume beim bau des A380 verursachen bei Airbus sch den von 4 8 millionen Euro Weiss 2008 ursache ist der einsatz zweier inkompatibler versionen des gleichen CAD programms 1 1 1 Ursachen Es gibt mehrere gr nde warum software oft nicht die in sie gesetzten erwar tungen erf llt 1 Software ist meistens eingebettet in komplexe systeme die nicht prim r als com puter dienen Wer bei dem wort software an seinen PC und die mehr oder weniger n tzlichen applikationen darauf denkt denkt nicht weit genug 98 der programmierbaren CPUs werden heute in eingebetteten syste men verwendet Broy und Pree 2003 d h rechner und ihre programme stellen nur komponenten in systemen dar die sich von aussen gar nicht als computer pr sentieren waschmaschinen videorecorder mobiltelefo ne autos 2 Die aufgabe der software in einem komplexen system ist schwer zu definieren weil die interaktion des computers mit der umwelt un bersichtlich ist 3 Das eigentliche programmieren ist nur ein kleiner teil der t tigkeit F r jedes softwarepro
198. h nachfolgende releases nicht nur fehler beseitigt sondern auch neue funktionen hinzugef gt werden 2 Die fehlerdichte lag bereits beim zweiten release unterhalb der hier er w hnten 2 fehler pro KLOC und ist von da an im wesentlichen gesunken bis zu einem halben fehler pro KLOC swkorr tex 5 SOFTWAREQUALIT T 111 3 Waren zu beginn der entwicklung noch knapp 40 der dateien fehlerhaft so waren es am ende nur noch gut 6 Das bedeutet jedoch dass knapp 94 der dateien berhaupt nicht mehr auf fehler untersucht werden m s sen da sie sowieso fehlerfrei sind Die wichtige frage in diesem zusammenhang ist nat rlich wie sich vorher sagen l sst in welchen dateien die fehler mit gr sster wahrscheinlichkeit an zutreffen sind Dazu haben Ostrand et al statistische untersuchungen durch gef hrt in die eine anzahl von variablen eingeflossen sind der logarithmus der LOC der nderungsstatus der datei neu ge ndert unge ndert alter der datei in anzahl von releases quadratwurzel der im letzten release in dieser da tei gefundenen fehler programmiersprache und nummer des release Vielleicht nicht berraschend hat sich dabei herausgestellt dass die wesentliche bestim mungsvariable die gr sse der datei in LOC ist diese allein ergibt eine zuver l ssigkeit der vorhersage von 73 das kompliziertere modell kann immerhin mit 83 iger wahrscheinlichkeit die dateien anzeigen in denen nach fehlern gesucht werden muss 5 4
199. han any other activity in software development is about disco very Armour 2005 The fundamental law of bug finding is No Check No Bug Bessey u a 2010 It is probably true that algorithms have specifications but this isn t true very often of regular code which has been constructed by a process of piecemeal growth Gabriel 1997 I ve bee in industry for over 10 years and I don t see a whole lot of people proving correctness Gabriel 1997 In der theoretischen informatik sprechen wir von der korrektheit der software als dem h chsten gut und davon dass diese korrektheit gegen ber einer for malen spezifikation des programms bewiesen werden muss Diese ansicht wird z b sehr energisch von Edsger W Dijkstra vertreten der von einer brandmau er spricht welche die ordentliche strukturierte formale welt der informatik abtrennt von dem ihm umgebenden urwald der real existierenden welt Softwareentwicklung geht dann davon aus dass uns jemand eine formale spe zifikation ber die mauer wirft diese pr fen wir informatiker dann zun chst auf widerspruchsfreiheit und machen uns sodann auf ein programm zu ent wickeln das dieser spezifikation entspricht Wir beweisen diese eigenschaft sogar formal und dann werfen wir das fertige programm wieder ber die mauer in den urwald Wenn es dem empf nger nicht gef llt Dijkstra spricht in der tat von pleasantness im gegensatz zur korrektheit dann hat er die falsche spezi
200. he Spezifikation Eine Einf h rung Berlin Heidelberg New York Springer Verlag 1983 Klaeren 1990 KLAEREN Herbert Vom Problem zum Programm Eine Ein f hrung in die Informatik Teubner Verlag 1990 2 Aufl 1991 Klaeren 1994 KLAEREN Herbert Probleme des Software Engineering Die Programmiersprache Werkzeug des Softwareentwicklers In Informatik Spektrum 17 1994 S 21 28 Klaeren 2006 KLAEREN Herbert Viren W rmer und Trojaner Streifz ge durch die Computerwelt T bingen Kl pfer amp Meyer 2006 Klaeren und Sperber 2002 KLAEREN Herbert SPERBER Michael Vom Pro blem zum Programm Architektur und Bedeutung von Computerprogrammen 3 Aufl Teubner 2002 Klaeren und Sperber 2007 KLAEREN Herbert SPERBER Michael Die Macht der Abstraktion Einf hrung in die Programmierung Teubner 2007 Klein u a 2004 KLEIN Torsten CONRAD Mirko FEY Ines GROCHT MANN Matthias Modellbasierte Entwicklung eingebetteter Fahrzeugs oftware bei DaimlerChrysler In Proc Modellierung 2004 Marburg Bd P 45 URL http www immos projekt de site_immos download p3_ KCF 04 pdf 2004 S 31 41 Kleppe u a 2003 KLEPPE Anneke WARMER Jos BAST Wim MDA explai ned the model driven architecture Practice and promise Boston u a Addison Wesley 2003 Ihe Addison Wesley object technology series Knuth 1971 KNUTH Donald E Empirical Study of Fortran Programs In Software Practice and Experience 1971
201. he run time profiler arbeiten zuweilen auch so dass in bestimmten in tervallen das programm unterbrochen wird und der wert des befehlszeiger registers anhand einer tabelle einer prozedur des programms zugeordnet wird Damit sind allerdings nur ganz grobe statistische aussagen m glich der swtune tex 8 LEISTUNGSVERBESSERUNG VON SOFTWARE 165 vorteil ist dass das eigentliche programm gar nicht modifiziert zu werden braucht Am beispiel eines primzahlprogramms f hren wir eine codeverbesserung vor dieses beispiel stammt von Bentley 1988 kap 1 Das ausgangsprogramm lautet e int prime int n int i 999 for i 2 i lt n i 78022 da im 0 831 return 0 168 return main int i n 1 n 1000 1 for i 2 i lt n i 999 if prime i 168 printf d n i Die zahlen am linken zeilenrand wurden hier durch einen line count profiler erzeugt Wir k nnen so z b erkennen dass 78022 mal auf teilbarkeit gepr ft wurde Das kann man drastisch reduzieren wenn man die obergrenze f r den teil barkeitstest heruntersetzt Das h tte man bei sorgf ltiger berlegung schon von vorneherein getan aber hier geht es ja darum die verbesserungen vorzu f hren Das verbesserte programm zusammen mit den line count profiles sieht dann so aus int root int n 5456 return int sqrt float n int prime int n int i 999 for i 2 i lt root n i 5288 if n i 0
202. hen werkzeuge eingesetzt werden kann 1 Sei m glichst spezifisch in der notation der schnittstellen header files ma che keinen gebrauch von erleichterungsm glichkeiten der programmier sprache z b unvollst ndige funktionsprototypen 2 Verwende niemals eine funktion mit unterschiedlichen anzahlen von pa rametern auch nicht wenn die programmiersprache dies erm glicht 3 Pr fe die vollst ndigkeit der implementierung gegen die schnittstellenbe schreibung Sind alle dort erw hnten funktionen implementiert Haben sie den richtigen typ Sind noch funktionen exportiert die in der schnitt stellenbeschreibung nicht vorkommen 4 Pr fe die verwendungsstellen externer symbole gegen die schnittstellen beschreibung Stimmen die typen berein 5 Schaffe getrennte namensr ume mindestens durch die etablierung und einhaltung geeigneter programmiernormen 6 Schreibe spezifikationen im sinne des design by contract in form von stan dardisierten kommentaren hnlich JML in die funktionsk pfe 2 7 Was ist mit Java Die programmiersprache Java die von vielen als das bessere C angesehen wird und als sehr modern und fortschrittlich gilt scheint softwaretechnikkon zepte bereits weitgehend zu unterst tzen Sie verf gt ber eine relativ gute datenkapselung mit abgestuften sichtbarkeitsregeln s u und kennt sogar eine import anweisung Trotzdem ist vorsicht geboten F r Java programmie rer m chten wir die folg
203. hl f r den Prozess und sehen da das Projekt kontrolliert abl uft bzw S 208 F r uns ist wichtig dass alle Beteiligten vor Feierabend synchronisieren da also jeder Entwickler seine nderungen abgleicht Wenn man dies aufschiebt bekommt man irgend wann einmal gr ere Konflikte beim Zusammenmischen Programmierer sind sehr daran interessiert einen code einzustellen der den bau der zwischenversion nicht behindert denn personen die einen abbruch beim bau der zwischenversion verursachen werden auf die eine oder andere art und weise bestraft z b dadurch dass sie die wenig geliebte aufgabe des build master bernehmen m ssen je nach abteilung wird auch eine geldstrafe f llig 5 6 oder es wird zu drastischeren mitteln gegriffen zitat Cusumano und Selby 1996 S 208 Wir hatten damals Ziegenh rner Wer einen Abbruch verursachte mufte die Ziegen h rner aufsetzen und so lange aufbehalten bis ein anderer den Zwischenversionsbau zum Absturz brachte Jeden morgen wird die erzeugte zwischenversion von einem usability lab ber nommen die sozusagen die rolle der anwender simulieren und das produkt t glich auf herz und nieren pr fen Bei Microsoft steht zahlenm ssig jedem swmicro tex 7 DIE MICROSOFT METHODE 159 programmierer ein tester gegen ber ein beweis f r das gewicht das die firma auf qualit t legt Zu bestimmten zeitpunkten meilensteine findet ausserdem nochmals ei ne separate stabilisierung
204. ht bereits der implementierung im aus programmierten code Customer title String name String dateOfBirth Date Abbildung 26 Kundenklasse im PIM Als Beispiel zeigt abb 26 ein PIM einer kundenklasse Customer und abb 27 das entsprechende auf Java abgezielte PSM Kleppe u a 2003 Diese abbil dungen zeigen auch die in abb 20 noch nicht genutzte m glichkeit daten typen und sichtbarkeiten f r ffentlich sichtbar public und f r privat private zu spezifizieren Im vergleich der beiden abbildungen zeigt sich ein typisches ph nomen das h ufig in der system modellierung angetroffen wird In der analysephase zu der das PIM geh rt und ebenso in der nachfolgen den grobentwurfsphase ist es durchaus blich die attribute einer klasse als ffentlich zu betrachten und sich an allen m glichen stellen darauf zu bezie hen In einem PSM stellt sich dies als schlechte idee heraus Damit eine klasse swoo tex 4 OBJEKTKONZEPT OOD UND OOA 77 Customer title String name String dateOfBirth Date getTitle String setTitle title String getName String setName name String getDateOfBirth Date setDateOfBirth d Date Abbildung 27 Kundenklasse in einem Java PSM ihre invarianten garantieren kann sollten die attribute unbedingt privat sein Dann braucht man methoden die ber die attribute auskunft geben get methoden und die attribute unter der kontr
205. ht es Copyright Herbert Klaeren 29 Juni 2015 66 4 2 Statische modellierung Konto Nummer Besitzer Saldo Einzahlen Abheben Abfragen Abbildung 20 Klassennotation am beispiel einer kontoklasse darum die klassen eines objektorientierten modells zu beschreiben und die beziehungen zwischen ihnen Dies geschieht haupts chlich durch die klassen diagramme In der aus guten gr nden sp ter stattfindenden dynamischen mo dellierung wird es dann um das verhalten von objekten ber einen zeitverlauf hinweg gehen Wie St rrle 2005 bemerkt lassen sich unter dem begriff klas se ganz unterschiedliche bedeutungen finden Konzept In der analysephase ist eine klasse oft nicht mehr als ein bestimmtes konzept das sich beim analysieren des problems auffindet Objektmenge Oft werden klassen aber auch als mengen irgendwie gleichar tiger objekte betrachtet ohne dass deren verwendungsm glichkeiten eine rolle spielen Typ Wie bereits oben angesprochen werden klassen oft im sinne von daten typen verwendet Objekte sind dann werte dieser typen Implementierung Nicht zuletzt bezeichnet klasse oft auch ganz einfach den programmtext einer klasse z b in C oder Java Den prozess wie man zu einem objektorientierten modell kommt werden wir in abschn 4 5 noch besprechen Klassen werden in form von k sten gezeichnet die in vertikaler richtung dreigeteilt sein k nnen Im einfachsten fall enth lt so ein ka
206. ht notwendigerweise kennt die sogenannten prototypen in den header files k nnen unvollst ndig spezifiziert sein kann er auch nicht pr fen ob g hier seinem typ entsprechend richtig verwendet wurde Der linker kann umgekehrt wenn er sp ter ein verwendetes symbol nicht finden kann nicht feststellen woher es h tte kommen sollen Findet er allerdings ein sym bol doppelt wie in abb 11 so gibt er wiederum eine fehlermeldung aus Kein problem entsteht dagegen wiederum wenn ein symbol das bereits in einem explizit bergebenen objektmodul enthalten war in einer bibliothek nochmals exportiert wird in diesem fall hat die explizite definition einfach vorrang vor der bibliothek Ein weiteres problem liegt in einem inkonsistenten gebrauch von headern Nehmen wir an gistinFoo h und Bar h verschieden deklariert Modul Client verwendet Foo h und ruft g auf beim linken wird aber versehentlich Bar o Copyright Herbert Klaeren 29 Juni 2015 40 2 5 Softwaretechniksprachen angegeben wobei Bar h eine v llig andere definition f r g enth lt In dem fall gibt es beim linken von Client mit Bar tiberhaupt keine fehlermeldung aber das programm wird mit grosser sicherheit fehlerhaft sein Client mod Foo def DEFINITION MODULE Foo MODULE Client IMPORT Foo PROCEDURE g PROCEDURE f FROM Bar IMPORT g i F600 Bar def v 9 DEFINITION MODULE Bar PROCEDURE 9 Abbildung 12 Namensr ume in Modula 2 Ganz a
207. ht so ist und wenn es wichtig ist einen nicht existenten eintrag von einem ausdr cklich mit dem leeren string versehenen eintrag zu unterscheiden muss der null zeiger zur ck gegeben werden Ist dies nicht wichtig kann auch der leere string zur ck gegeben werden APIs sollten aus der perspektive des aufrufers geschrieben werden damit ihm die arbeit erleichtert wird Als beispiel dient hier eine funktion zur erzeugung der schnittstelle f r einen fernseher Ist die funktion deklariert als void makeTV bool isBlackAndWhite bool isFlatScreen so kann der anwendungsprogrammierer im aufruf makeTV false true ohne blick in die dokumentation nicht erkennen welche wirkung die pa rameter haben Besser ware eine deklaration der form enum ColorType Color BlackAndWhite enum ScreenType CRT FlatScreen void makeTV ColorType col ScreenType st Dann kann der o a aufruf als makeTV Color FlatScreen geschrieben werden und ist somit selbsterklarend APIs sollten dokumentiert werden bevor sie implementiert werden Die gefahr der dokumentation nach der implementierung ist dass der im plementierer mental verseucht orig mentally contaminated durch seine implementierung ist und dann beschreibt was er getan hat und nicht wie es benutzt werden soll Dabei l sst er h ufig dinge weg die ihm aufgrund seiner implementierung hundertprozentig klar sind die aber keineswegs selbstverst ndlich sind Ein gesell
208. i 2015 12 1 4 Programmieren im grossen vs programmieren im kleinen che das meiste geld auf dem softwaremarkt machen leben nicht von der massschneiderei sondern vielmehr von der konfektionsware Auf der basis von marktforschungsdaten oder durch geniale intuition werden die bed rfnisse grosser kreise von computerbesitzern vorweggenommen bzw inferiert und eine software hergestellt die m glichst vielen anforde rungen gerecht wird Der grund f r den erfolg der standardsoftware liegt wie wir noch sehen werden darin dass die pr zise ermittlung der anfor derungen wesentlich schwieriger und teurer ist als der eigentliche pro grammierprozess Deshalb kann standardsoftware viel billiger als indivi duell angefertigte software sein weil f r jede teuere anforderungsanalyse grosse st ckzahlen identischer software verkauft werden k nnen Durch die massive marktmacht der shrink wrap software tritt die bedeutung der individuell nach bestimmten anforderungen hergestellten software schein bar in den hintergrund Trotzdem sind die in dieser vorlesung vermittelten kenntnisse aus zwei gr nden wichtig 1 Sehr vieles von dem was hier zu besprechen ist z b modularisierung qualit tssicherung schnittstellendefinitionen etc bezieht sich auf indivi duell hergestellte software in gleichem masse wie auf standardsoftware 2 Dort wo unterschiede auftreten werden diese teilweise dadurch kom pensiert dass durch das vordringen der stand
209. i der ISO British Standards Institute 2011 wird zwischen qualit t im ge brauch quality in use und system software produktqualit t unterschieden Klar sein muss dabei dass die meisten dieser eigenschaften sich gegenseitig beeintr chtigen und behindern wir k nnen nicht alle diese ziele gleichzeitig erreichen Das wurde auch schon im einleitungskapitel anhand des zitats ber die widerspr chlichen ziele deutlich denen sich die ingenieurt tigkeit unter werfen muss Karen Mackey 1996 von der Lotus Development Corporati swprop tex B NICHTFUNKTIONALE EIGENSCHAFTEN VON SOFTWARE 219 Completeness Traceability Correctness Consistency Error tolerance Reliability Accuracy Storage efficiency a Efficiency Execution efficiency Access audit ae Integrity Access control Communicativeness Taning Usability Operability Conciseness Maintainability Simplicity Instrumentation Expandability Testability Self descriptiveness Flexibility Modularity Generality Reusability Machine independence Portability Software system independence Interoperability Data commonality Communications commonality Abbildung 64 Qualit tsdiagramme nach McCall Copyright Herbert Klaeren 29 Juni 2015 220 Quality In Use Effectiveness Efficiency Satisfaction Prison con cor Effectiveness Efficiency Usefulness Economic risk Trust miligation Pleasure ee safety risk Comfort mitigation Environme
210. ich un ber sichtlich das eigentliche programm w re wom glich nur noch schwer zwi schen den kommentaren wiederzufinden M chte man berdies zur fehler suche alte versionen der programme rekonstruieren z b diejenigen die bei einem bestimmten kunden laufen so helfen solche kommentare wenig da sie nicht zweifelsfrei die rekonstruktion erm glichen swtool tex 9 SOFTWAREWERKZEUGE 189 Eine m glichkeit die ebenfalls unzufriedenstellend ist besteht in der ab speicherung kompletter systemabz ge in archiven wie im letzten abschnitt im makefile angedeutet Dies stellt einerseits eine ernorme platzvergeudung dar da ausser den ge nderten teilen auch alle unver nderten im archiv ent halten sind und enthalten sein m ssen andererseits beantwortet es nicht die frage nach den urhebern von nderungen und es schafft keine bersicht Der kernel von SunOS 4 0 besteht beispielsweise aus ber 1000 dateien in mehre ren dutzenden von verzeichnissen eine versionshaltung f r solch ein system l sst sich nicht durch systemabz ge verwirklichen Zu bedenken ist ausserdem dass softwareentwicklung heute h ufig ver teilt im netz stattfindet und nicht mehr wie fr her auf einem einzigen rechner Die zusammenarbeit in open source projekten ist in der tat einer der gr nde warum versionshaltungssysteme in den letzten jahren wieder stark an bedeu tung zugenommen haben Der kerngedanke eines versionshaltungssystems ist es eine zentrale
211. ickdraw s region calculation machinery and had com pletely rewritten the region engine using a simpler more general algorithm which after some swquote tex E ZITATE ZUR SOFTWARETECHNIK 241 10 11 12 13 tweaking made region operations almost six times faster As a by product the rewrite also saved around 2 000 lines of code He was just putting the finishing touches on the optimization when it was time to fill out the management form for the first time When he got to the lines of code part he thought about it for a second and then wrote in the number 2000 I m not sure how the managers reacted to that but I do know that after a couple more weeks they stopped asking Bill to fill out the form and he gladly complied Hertzfeld 1982 Anything can be made measurable in a way that is superior to not measuring it at all Gilb 1988 Das Verwerfen des defensiven Programmierens bedeutet da der Kunde und der Anbie ter nicht beide f r eine Konsistenzbedingung verantwortlich gemacht werden Entweder ist die Bedingung Teil der Vorbedingung und mu vom Kunden garantiert werden oder sie ist in der Vorbedingung nicht erw hnt und mu vom Anbieter behandelt werden Welche dieser beiden L sungen sollte gew hlt werden Da gibt es keine absolute Regel verschiedene Stile des Schreibens von Funktionen sind m glich von fordernden wo die Vorbedingungen stark sind und damit die Verantwortung auf die Kunden abw
212. ie erf llt sein muss bevor die transition stattfinden kann im beispiel all items available Des weiteren kann auch mit einer transition eine aktion verbunden sein im beispiel get next item die w hrend des zustands ber gangs ausgef hrt wird also jedenfalls bevor der folgende zustand wirksam wird Beim sequenzdiagramm abb 25 ist zu beachten dass hier objekte keine klassen in den k stchen vorkommen Die senkrechte achse ist die zeit achse in der horizontalen werden nachrichten notiert die sich objekte schicken Se quenzdiagramme sind von den message sequence charts MSCs der ITU T abge leitet sie zeigen welche abl ufe von interaktionen zwischen objekten in einem system m glich sind sagen aber nicht aus dass diese abl ufe stets in dieser form bis zu ende durchgef hrt werden m ssen Auch hier k nnen interaktio nen durch guards bewacht werden 4 4 Model driven architecture Nachdem nun die wesentlichen ingredienzien der UML vorgestellt sind kann die frage gestellt werden wie diese beschreibungsmittel denn zur objektori entierten modellierung politisch korrekt eingesetzt werden sollen Vor dem hintergrund eine vern nftige architektur gewinnen zu k nnen hat die OMG swoo tex 4 OBJEKTKONZEPT OOD UND OOA 75 ooo anOrder an Order Line a Stock Item window prepare I for all order lines Object prepare Message lhasSt
213. ie strengste interpretation des begriffs inspektion kommt aus dem hause IBM und geht auf Fagan 1976 zur ck Die genaue auspr gung inspektions artiger prozesse ist jedoch nicht so wichtig wie die grundtatsache dass diese prozesse mit genau definierten rollen und pr zise eingehaltenen spielregeln ablaufen je nach projekt oder firma m gen diese dann unterschiedlich ange legt sein Fagans inspektionen gehen nach einem festgeschriebenen drehbuch vor Ihr ziel ist es zwei dokumente in bezug auf konsistenz korrektheit und vollst n digkeit zu berpr fen Schnurer 1988 Das zu inspizierende dokument auch I dokument genannt I wie Implementation wird hier verglichen mit ei nem S dokument 5 wie Spezifikation Normalerweise stammt das S dokument aus einem vorherigen bereits abgeschlossenen entwicklungsschritt Ziel des inspektionsprozesses ist es eine m glichst grosse anzahl von feh lern zum fr hestm glichen zeitpunkt aufzudecken In der praxis werden hier bei aufgrund statistischer erfahrungsdaten konkrete vorgaben f r die anzahl der fehler gemacht die vermutlich im produkt vorhanden sind und deshalb im inspektionsprozess zu finden sind Auf einer meta ebene der software qualit tssicherung geht es dann auch noch darum den software entwick lungs und herstellungsprozess sowie den inspektionsprozess selbst stetig zu verbessern Zu einer inspektion geh ren mindestens drei bestandteile Eingangskriterie
214. ie versionsnummer Log f r die kom plette nderungsgeschichte u a m dann ersetzte es diese zeichenkette durch die jeweils nach dem eincheck vorgang relevante information Beachte aber dass sich die datei dadurch erneut nderte Abb 67 zeigt den anfang einer bersicht ber die versionsgeschichte einer datei des Informatik I buchs von Klaeren und Sperber 2002 Es war lange zeit tradition in jeder quelle und auch in jedem objektmodul bestimmte zeichenketten einzubetten die vom versionshaltungssystem ver waltet und jeweils beim einbuchen angepasst wurden Ein programm ident konnte dann auskunft ber die in einer datei enthaltenen komponenten geben siehe abb 68 Beim SCCS wurde im repositorium jeweils die erste version der datei abge legt zusammen mit einer sammlung von skripten um hieraus jede beliebige nachfolgende version erzeugen zu k nnen dazu kam nat rlich die verwal tungsinformation mit den change comments etc Bei h ufig ge nderten dateien stellte sich dieses verfahren als unpraktisch heraus da zum auschecken einer datei immer l ngere zeit durch die editiervorg nge ben tigt wurde Das j n 50Eine klassische wendung in C programmen war static char sccsid swhist tex C HISTORISCHES 233 RCS file afs informatik uni tuebingen de home sperber cvs problemprogramm ilvorw tex v Working file ilvorw tex head 1 13 branch locks strict access list symbolic names keyword subs
215. iederverwendeten alten MS DOS und Windows code auch schwer den aufwand absch tzen kann In tabelle 2 ist die programmierung im kleinen nochmals mit der program mierung im grossen verglichen diese tabelle ist aber cum grano salis zu lesen es trifft nicht immer alles gleichermassen zu Als grenzlinie zwischen klei nen und grossen programmen werden unterschiedliche zahlen genannt ich w rde die grenze etwa bei 5 kLOC ziehen sweinf tex 1 EINF HRUNG WAS IST SOFTWARETECHNIK 15 Prog im kleinen Prog im grossen Genaue spezifikationen liegen vor bzw werden nicht ben tigt Spezifikationen m ssen erst erarbei tet werden Entwicklung in einzelarbeit Entwicklung im team Einschrittige l sung L sung in vielen schritten l sung besteht aus einer komponente L sung in viele komponenten zerlegt Entwickler und benutzer einheitli cher personenkreis Entwickler und benutzer ungleiche vorbildung Kurzlebige programme unikate Langlebige programme programm familien Tabelle 2 Programmierung im kleinen programmierung im grossen Daraus folgt f r die softwaretechnik dass sie sich ber die reine program mierkunst hinaus mit den folgenden themen besch ftigen muss e Requirements engineering d h eine sammlung von techniken um zun chst einmal herauszufinden was genau der auftraggeber von dem zu erstel lenden system erwartet e Spezifikationsmethoden fo
216. ien aller in das implementierungsmodul importierten module swtool tex 9 SOFTWAREWERKZEUGE 181 Jobs def Jobs mod Jobs sym Jobs o Printqueue def PrintQueue mod Printqueue sym gt Printqueue o ie TestSchedule mod TestSchedule o TestSchedule Abbildung 52 Abh ngigkeiten im Printqueue beispiel Copyright Herbert Klaeren 29 Juni 2015 182 9 2 Das werkzeug make makefile for PrintQueue example requires GNU make MODULES Jobs PrintQueue sym def mc lt 0 mod sym mc c lt TestSchedule TestSchedule o MODULES o mc o TestSchedule o TestSchedule mod MODULES sym mc c TestSchedule mod test TestSchedule lt PrintQueue sym PrintQueue def Jobs sym tar PrintQueue tgz PrintQueue tgz MODULES mod MODULES def TestSchedule mod tar czvf clean rm f TestSchedule o tgz veryclean clean rm f sym Abbildung 53 makefile fiir die druckerwarteschlange swtool tex 9 SOFTWAREWERKZEUGE 183 e Ein ausf hrbares programm h ngt ab von den objektmodulen aller im portierten module Abb 52 zeigt die abh ngigkeiten f r das PrintQueue beispiel aus abschn 2 5 Zu beachten ist dabei dass wir es im grunde nur mit drei modulen zu tun ha ben auch wenn diese hier in form von 11 dateien auf uns zutreten Die abhan gigkeiten sind schon in
217. ight Herbert Klaeren 29 Juni 2015 110 5 3 Wo sind die fehler nach fehlern zu suchen Hierzu liefern Ostrand u a 2004 einen interessan ten beitrag Sie haben ber ein grosses system der firma AT amp T ber 17 releases hinweg die aufgefundenen fehler sorgf ltig untersucht und statistischen un tersuchungen unterworfen Rel Dat LOC Fehler Dichte Fehlerh fehlerh dateien dateien 1 584 145 967 990 6 78 233 39 9 2 567 154 381 201 1 30 88 15 5 3 706 190 596 487 2 56 140 19 8 4 743 203 233 328 1 61 114 15 3 7 993 291 719 207 0 71 106 10 7 10 1372 396 209 246 0 62 112 8 2 17 1950 538 487 253 0 47 122 6 3 Tabelle 6 Fehlerverteilung bei Ostrand Weyuker und Bell In tab 6 sind einige ihrer ergebnisse zusammengetragen Dabei bedeutet Rel die nummer des release Dat die anzahl der dateien in dem release LOC die gesamtzahl der lines of code Fehler die gesamtzahl der gefundenen fehler Dichte die fehlerdichte in fehlern pro 1kKLOC Fehlerh dateien die anzahl der dateien mit mindestens einem fehler fehlerh dateien den prozentsatz der dateien mit mindestens einem fehler Beobachtungen aus diesen daten sind zun chst einmal 1 Die gr sse des systems ist ber die zeit hinweg gewachsen sowohl was die anzahl der beteiligten dateien betrifft als auch die gesamtzahl der lines of code Das ist nat rlich da durc
218. ignore the fact that the development process itself changes the user s perceptions of what is possible increases his or her insights into the applications environment and indeed often changes that environment itself We suggest an analogy with the Heisenberg Uncertainty Principle any system development activity inevitably changes the environment out of which the need for the system arose System development methodology must take into account that the user and his or her needs and environment change during the process McCracken und Jackson 1982 Seit beginn der 80er jahre wird st ndig kritik am wasserfall modell ge us sert die kritikpunkte sind im wesentlichen 1 Dieses modell eignet sich nur f r relativ einfache projekte bei denen wir tats chlich in einem wurf erfolg haben k nnen 2 Das fr he festschreiben der anforderungen ist sehr problematisch da wir bereits gelernt haben dass nderungen umso teurer werden je weiter sie sich in die fr heren phasen auswirken Missverst ndnisse w hrend der problemanalyse kommen viel zu sp t ans tageslicht Die behebung erfor dert dann viel zu viel kosten schlimmstenfalls wird das system gar nicht benutzt 3 Die einf hrung des systems erfolgt erst sehr sp t nach beginn des ent wicklungszyklus Dementsprechend beginnt der kapitalr ckfluss ROI return on investment erst sehr sp t swll tex 6 VORGEHENSMODELLE FUR DIE SOFTWAREENTWICKLUNG 135 4 Die einf hrung des syste
219. il x int binarySearch int a int x In diesem beispiel ist auch sichtbar wie die syntax des forall gedacht ist die variable ber die hier quantifiziert wird muss selbstverst ndlich wie al les andere in Java typisiert sein Die zweite komponente gibt eine einschr n kung f r den bereich ber den hier quantifiziert wird und die dritte enth lt die eigentliche behauptung Damit ist aber auch klar auf welche weise hier code erzeugt werden kann der die einhaltung der vorbedingung zur lauf zeit berpr ft es wird einfach eine variable des angegebenen typs deklariert und dann l uft eine schleife ber den angegebenen bereich innerhalb deren rumpf die g ltigkeit der behauptung berpr ft wird Die einschr nkung kann Copyright Herbert Klaeren 29 Juni 2015 32 2 4 Spezifikation von software auch weggelassen werden allerdings mit der konsequenz dass dann kein au tomatischer pr fcode erzeugt werden kann Beachte dass die ableitung einer schleife aus der hier angegebenen bedingung eine nicht triviale leistung ist Eine hnliche wirkung hat die angabe eines einschr nkenden bereichs beim existenzquantor hier wird auf wunsch code erzeugt der alle elemente des be reichs darauf berpr ft ob sie die angegebene bedingung erf llen Wird keine gefunden ist der existenzquantor fehlgeschlagen Ein beispiel f r das zusammenspiel von vor und nachbedingungen findet sich in der folgenden methode wel
220. immte beobachter gerichtet sein sie k nnen auch einfach zentral publiziert und von jedem geh rt werden der daran interessiert ist 3 Eine gefahr besteht darin dass beobachter nicht wissen wie viele andere beobachter auf den gegenstand registriert sind und wie teuer daher eine nderung des zustands im gegenstand sind Unter umst nden kann eine harmlose von einem beobachter angeforderte zustands nderung des ge genstands eine lange kostspielige kette von zustands nderungen in nach geordneten beobachtern nach sich ziehen swoo tex 4 OBJEKTKONZEPT OOD UND OOA 93 4 7 10 Implementierung Bei der implementierung sind die folgenden fragen zu bedenken 1 Abbildung von gegenst nden auf ihre beobachter Die einfachste methode der f hrung einer liste von beobachtern eines gegenstands ist es die referen zen aller beobachter im gegenstand selbst abzuspeichern Wenn es aber viele gegenst nde gibt und nur wenige beobachter k nnte das zu viel speicher verbrauchen Dann liesse sich die zuordnung auch z B in ei ner hash tabelle speichern was den zugriff auf die beobachter allerdings verlangsamt 2 Mehr als einen gegenstand beobachten Unter umst nden beobachtet ein be obachter mehr als einen gegenstand Dann muss die Update methode so erweitert werden dass der beobachter erkennen kann welcher der gegen st nde eine zustands nderung hatte 3 Wer l st die anpassungen aus F r das senden der Notify nachricht nach
221. index 1 x public boolean IsEmpty ensures result gt index capacity x public boolean IsFull Abbildung 14 ADT kellerspeicher in JML Copyright Herbert Klaeren 29 Juni 2015 52 3 4 Empfehlungen 34 Empfehlungen Unabh ngig von der methode wie wir zu einer modulstruktur kommen kann man die folgenden empfehlungen f r den entwurf geben Die meisten davon sind relativ weich formuliert da in der praxis viele kompromisse geschlos sen werden m ssen 1 Die wichtigste empfehlung ist das geheimnisprinzip wirklich ernstzuneh men und nach der devise des design by contract zu verfahren s ab schn 2 4 2 Jede entwurfsentscheidung sollte in nur einem modul verk rpert sein Da bei sprechen wir von einer entwurfsentscheidung wenn irgend ein vorher unspezifiziertes detail algorithmus datenstruktur n her spezifiziert wird 3 Jedes modul sollte mindestens eine entwurfsentscheidung beinhalten 4 Jede entwurfsentscheidung soll mit ihrer begr ndung sorgf ltig doku mentiert werden da man sie vermutlich immer wieder in frage stellen wird 5 Schnittstellen sollen m glichst klein sein sowohl auf funktions als auch auf modulebene Bei modulen mit zu vielen funktionen stellt sich die frage ob man sie nicht aufspalten sollte funktionen mit zu vielen parametern sind ebenfalls problematisch 6 Die modulstruktur d h die importe zwischen den modulen sollte unter al
222. iothek in der regel verwendet werden so dass dem anwendungsprogram mierer das leben nicht unn tig erschwert wird Als beispiel f hrt er die funk tion Select aus dem NET framework an betont dabei aber dass es hnlich problematische beispiele berall gibt und gewiss nicht nur bei Microsoft Die typische anwendung von Select ist innerhalb der hauptschleife ei nes servers der anfragen von mehreren klienten verarbeiten m chte in je dem schleifendurchlauf werden alle die sockets bedient die gerade bereit sind dann wird Select erneut aufgerufen public static void Select List checkRead List checkWrite List checkError int microseconds Server code int timeout ArrayList readList Sockets to monitor for reading ArrayList writeList Sockets to monitor for writing ArrayList errorList Sockets to monitor for errors while done SocketList readImp readList Clone SocketList writeTmp writeList Clone SocketList errorTmp errorList Clone Select readTmp writeImp errorImp timeout for int i 0 i lt readTmp Count i deal with each socket ready for reading for int i 0 i lt writeTmp Count i deal with each socket ready for writing for int i 0 i lt errorTmp Count i deal with each socket with errors Das erste problem entsteht hier schon dadurch dass Select seine ersten drei argumente berschreibt Deswegen m ssen
223. iplinen wie etwa maschinenbau elektrotechnik bauwesen unterscheidet 1 Die klassischen ingenieurdisziplinen haben naturwissenschaftliche er kenntnisse ber die naturgesetze zur grundlage diese naturgesetze kann der ingenieur nicht berwinden Insofern gibt es eine kontrolle der in genieurt tigkeit Wer das unm gliche versucht wird durch die naturge setze eines besseren belehrt Die notwendigkeit der erlernung und be herrschung der naturwissenschaftlichen und mathematischen grundla gen ist allgemein derart anerkannt dass niemand sich ohne die erforderli che ausbildung als ingenieur bet tigen wird andererseits geh ren mathe matik physik chemie sowieso wegen ihrer allgemein anerkannten n tz lichkeit und notwendigkeit zum unabdingbaren standardprogramm der sekundar schulausbildung Demgegen ber gibt es auf dem software sektor scheinbar keine naturge setze alles was denkm glich ist erscheint auch machbar Wer hier das unm gliche versucht kann mit etwas gl ck ziemlich lange damit durch kommen Charakteristisches merkmal von software systemen die das un m gliche versuchen ist ihre gewaltige und st ndig zunehmende komple xit t Wir f hlen uns an einen ausspruch von Alan Perlis 1982 erinnert In seeking the unattainable simplicity only gets in the way Dabei ist es keineswegs so dass es f r die software erstellung keine grundlagen einer den naturgesetzen gleichkommenden qualit t g be die sweinf tex
224. ividual components of a system cannot be evaluated for safety without knowing the context within which the components will be used Leveson 1995 A NYC subway train on the Williamsburg bridge crashed into the rear end of another train on 5 June 1995 The motorman apparently ran through a red light See news service reports on 6 and 7 June 1995 The safety system did apply emergency brakes as expected However the safety parameters and signal spacing were set in 1918 when trains were shorter lighter and slower and the emergency brake system could not stop the train in time See The New York Times 16 Jun 1995 noted by Mark Stalzer Neumann 1995b Bereits in den vergangenen abschnitten haben wir von analysephasen ent wurfsphasen und implementierungsphasen gesprochen Damit wird ein gewis ses vorgehensmodell fiir die softwareentwicklung angesprochen Hier wollen wir uns jetzt mit solchen vorgehensmodellen n her auseinandersetzen Dabei kommt man normalerweise auch auf die softwareentwicklung als nur einer teilaufgabe bei der systementwicklung zu sprechen Die einleitenden zitate machen klar dass wir die folgenden konzepte unterscheiden m ssen Systeme bestehend aus hard und software und Software als solche Wir besch ftigen uns zwar mit software engineering aber man kann software nicht losgel st betrachten Bei einer systementwicklung erfordern also die vielf ltigen interaktionen zwischen software und hardware sorgf ltige be
225. jekt sind zahlreiche besprechungen notwendig um erst ein mal den funktionsumfang der software zu beschreiben zust ndigkeiten auf personen zu verteilen die in unterschiedlichen rollen im projekt auftreten termine festzulegen und den projektfortschritt zu kontrollieren etc 4 Softwarepakete haben gewaltige dimensionen und werden von grossen teams her gestellt Das hat gravierende auswirkungen auf den prozess der software erstellung Copyright Herbert Klaeren 29 Juni 2015 4 1 2 Ingenieurwissenschaft 5 Die digitale welt impliziert viel komplexere abh ngigkeiten als die analoge welt der stetigen funktionen Der begriff der stetigen funktion dr ckt gerade das prinzip aus dass kleine nderungen kleine oder doch wenigstens verh lt nism ssige auswirkungen haben So wird z b ein stab auf den man nach und nach gr ssere biegekr fte aus bt innerhalb eines gewissen bereichs seine form in genauer entsprechung zu der ausge bten kraft ver ndern Nat rlich gibt es unstetigkeitsstellen wenn z b die ausge bte kraft dazu f hrt dass der stab bricht aber es geh rt zum handwerk des ingenieurs die zahlenm ssig wenigen unstetigkeitsstellen zu erkennen und im nor malen betrieb seiner konstruktion zu vermeiden In der regel hat man es mit stetigen funktionen zu tun In der softwaretechnik haben wir es demgegen ber von hause aus mit ei ner digitalen welt zu tun W hrend in einem analogen modell die modellie rende gr sse ein
226. kann wenn das objekt vernichtet wird aber die objektorien tierte programmierung sollte auf einer h heren ebene denken und sich um solche implementierungsdetails nicht k mmern m ssen Bezeichnend ist es ja bereits dass die konstruktoren in C und Java nicht wirklich ob jekte konstruieren sondern sich lediglich um die initialisierung bereits allozierter objekte k mmern Dementsprechend m ssen die destruktoren alle komponenten des objekts rekursiv freigeben Hier liegt ein wesent licher entwurfsfehler von C wo der programmierer die destruktoren selbst programmieren muss und dabei selbstverst ndlich fehler machen kann Dann entstehen sogenannte memory leaks d h also stellen wo nicht mehr ber zeiger erreichbarer speicher belegt bleibt Richtig w re es ge wesen die sprache so zu entwerfen dass automatische speicherbereinigung garbage collection m glich gewesen w re Hierf r ist C nicht geeig net da wir daf r an jeder stelle von datenstrukturen in der lage sein m s sten zeiger von anderen daten zu unterscheiden und dies ist bei C wegen des schwachen typsystems nicht m glich Eine m glichkeit dies swoo tex 4 OBJEKTKONZEPT OOD UND OOA 63 richtig zu machen zeigt etwa Java e Bei der objektorientierten modellierung kommen ganz selbstverstandlich objektreferenzen vor d h also verweise von einem objekt auf ein anderes H ufig werden diese referenzen mit zeigern gleichgesetzt was ebenfa
227. kann wurde damals nicht gesehen da kein mensch damit gerechnet hatte dass diese software auch nach einem Copyright Herbert Klaeren 29 Juni 2015 10 1 3 Software ist anders zeitraum von 40 jahren immer noch eingesetzt w rde Den unterschied zwischen der analogen welt der klassischen ingenieure und der digitalen der softwareingenieure erw hnten wir schon Diese be merkungen w rden im grunde auch auf die ebenfalls digitale compu ter hardware zutreffen die jedoch im gegensatz zur software als ausge sprochen zuverl ssig gilt Wie Parnas 1985 aber richtig bemerkt ist die computer hardware hochgradig repetitiv ausgelegt d h sie besteht aus vielen kopien sehr kleiner digitaler subsysteme Jedes dieser subsysteme kann analysiert und ersch pfend getestet werden sodass ein ersch p fender test der gesamten hardware nicht n tig ist Dieser redundanzef fekt der im raum abgewickelten repetitiven hardwarestruktur muss in der software u u anders bewerkstelligt werden Die klassischen metho den der ingenieure systeme so lange in teilsysteme zu zerlegen bis man auf einem niveau angelangt ist wo die korrektheit sozusagen ins auge springt funktioniert bei software nicht man sieht nicht wie die zahn r der ineinandergreifen und ganz entfernt liegende st cke der software k nnen zu ungeahnten interaktionen f hren F r die praktische arbeit des softwareingenieurs kommt ausserdem er schwerend hinzu was sich in
228. ktionsweise des programms make 2 Welche eigenschaften mu eine programmiersprache haben damit sich makefiles automatisch aus den programmquellen generieren lassen Was versteht man unter der konfiguration von software Was leisten configure skripte Was leisten versionshaltungssysteme Wie funktionieren sie im prinzip N OF A Q Was ist der grundlegende unterschied zwischen SCCS und seinen nach folgern 7 Wodurch unterscheidet sich CVS von seinen vorg ngern swtool tex 10 FREE LIBRE OPEN SOURCE SOFTWARE 197 10 Free Libre Open Source Software In diesem kapitel soll es haupts chlich um software lizenzmodelle f r offene software gehen wobei dieser begriff erstaunlich schwer zu fassen ist Es kann dazu hilfreich sein einen kurzen blick in die computergeschichte zu werfen Details dazu finden sich bei Klaeren 2006 Sieht man von den fr hen experimenten von Konrad Zuse ab so wurden die ersten rechner w hrend des 2 weltkrieges f r milit rische zwecke gebaut und eingesetzt Auch einer der ersten technisch wissenschaftlichen rechner nach dem krieg die am 29 April 1952 vorgestellte IBM 701 war allgemein als der defense calculator bekannt weil sie im verlauf des koreakriegs aufgrund eines pers nlichen gespr chs von T J Watson mit dem amerikanischen pr sidenten Harry Truman f r das verteidigungsministerium hergestellt worden war Zur damaligen zeit wurden computer als eine art von rechen
229. lagte staatsverdrossenheit hat sicherlich ihre ursachen auch darin dass der einzelne sich gegen ber dem system zunehmend als hilf los empfindet und grosse firmen mit einer starken organisations hierarchie verzeichnen h ufig hnliche symptome innere k ndigung bei ihren mitar beitern Dem wirkt die Microsoft organisation eher entgegen in einer feature group kann sich der einzelne wesentlich besser artikulieren als in einer kom plexen organisation Grosses gewicht legt Microsoft nach Cusumano und Selby darauf nur die besten leute einzustellen wobei sie mit einem schmunzeln zwischen den zei len bemerken dass es unter umst nden schon gen gt wenn alle glauben sie seien eingestellt worden weil sie die besten seien und dass jedenfalls alle an deren im team die besten sind Als vorsichtige wissenschaftler betonen Cusumano und Selby dass es nicht behauptet wird dass die im weiteren geschilderten methoden von Microsoft erfunden wurden noch dass es diese methoden sind die man als ursache f r den erfolg von Microsoft bezeichnen w rde Als kerngedanken stellen Cusumano und Selby eine methode heraus die sie selbst die sync and stabilise methode nennen und die sich in noch extreme rer form beim XP prozess findet T glich wird das gesamte softwareprodukt aus den m glicherweise modifizierten quelltexten erneut hergestellt und ge Copyright Herbert Klaeren 29 Juni 2015 158 gen eine regressionsdat
230. langer zeit unternahmen programmierer grosse anstrengungen ihre programme effizient zu machen weil computer langsam und teuer waren Heute sind die maschinen viel billiger und schneller also ist die notwendigkeit f r absolute effizienz viel geringer Ist es immer noch lohnenswert sich ber leistung gedanken zu machen Ja aber nur wenn das problem wichtig ist das programm wirklich zu langsam ist und wenn man erwarten kann dass es in einer weise beschleunigt werden kann dass korrektheit robustheit und klarheit erhalten bleiben Ein schnelles programm das die falsche antwort liefert spart keine zeit Die erste regel der optimierung heisst deshalb tu s nicht Sie beschreiben anschliessend die beste strategie zur leistungssteigerung von programmen wenn sie denn sinnvoll und n tig ist wie folgt 1 Benutze die einfachsten saubersten algorithmen und datenstrukturen die f r die aufgabe geeignet sind 2 Miss die leistung um zu sehen ob nderungen n tig sind 3 Schalte compileroptionen ein um den schnellstm glichen code zu erzeu gen Dies gilt unter der einschr nkung des von Knuth untersuchten programm materials aus dem umfeld der numerischen verfahren Copyright Herbert Klaeren 29 Juni 2015 164 4 Stelle fest welche nderungen am programm die gr sste wirkung haben werden 5 F hre die nderungen jeweils einzeln durch und miss jeweils erneut 6 Hebe alle versionen auf um revisionen dagegen zu
231. lassen und entwurfsmustern wird an dieser stelle h ufig einbezogen 15 Als beispiel dient der satz Alle lampen in den r umen haben einen einzigen schalter Was soll das heissen Gibt es einen einzigen schalter der alle lampen in allen r umen bedient gibt es f r jeden raum einen einzigen schalter der alle lampen in diesem raum bedient oder gibt es f r jede lampe in jedem raum genau einen schalter Copyright Herbert Klaeren 29 Juni 2015 80 4 5 Prozess einer objektorientierten modellierung Im idealfall enth lt der objektorientierte entwurf alle details die f r die er stellung eines programms notwendig sind Wenn dann auch die programmier sprache alle konzepte der verwendeten notationen unterst tzt so reduziert sich die bersetzung vom entwurf zum code fast auf eine 1 1 abbildung Vie le objektorientierte CASE tools verf gen daher ber einen codegenerator f r C oder Smalltalk Nat rlich sind in der praxis h ufig optimierungen erfor derlich oder komplexe algorithmen zu implementieren die sich mit einer gra phischen notation nicht ausdr cken lassen Von einem guten CASE tool darf man erwarten dass manuelle nderungen am erzeugten code automatisch in das klassenmodell zur ck bersetzt werden k nnen Genauere handlungsanleitungen liefert das buch von Coad und Yourdon 1991 Typisches vorgehen ist es dabei zun chst eine sichtung durchzuf h ren in der potentielle kandidaten vor dem hintergrund ihrer a
232. le von Copyright Herbert Klaeren 29 Juni 2015 218 Ludewig abb 63 McCall abb 64 der ISO British Standards Institute 2011 und zahlreiche andere Wiederverwendung Entwicklungsleistung Entwicklungseffizienz lt Entwicklungsgeschwindigkeit Proze transparenz _ Aufwandseinhaltung Termineinhaltung wader u ere ProzeRqualitat ei N Planungssicherheit Proze qualit t m Know How Gewinn innere ProzeRqualitat Projektklima Bausteingewinn j Spezifikationsvollstandigkeit Qualit t der 2 Eu 2 Lokalit t Software Entwicklung Pr fbarkeit Testbarkeit we a Strukturiertheit Wartbarkeit nderbarkeit Simpl ea Lesbarkeit Knappheit Pa Portabilit t Ger teunabh ngigkeit Produktqualit t Be el Korrektheit Wederverwendbarkeit Zuverl ssigkeit Ausfallsicherheit Genauigkeit f i _ Effizienz Brauchbarkeit N tzlichkeit Sparsamkeit Leistungsvollstandigkeit ae Konsistenz Handbuchvollstandigkeit a ne _ Einfachheit Bedienbarkeit Abbildung 63 Qualit tsbaum nach Ludewig Das besondere an den diagrammen von McCall ist dass sie nicht wie die an deren ans tze taxonomien beschreiben bei denen sich gewisse eigenschaften als bestandteile anderer eigenschaften darstellen sondern statt dessen darstel len welche eigenschaften eine auswirkung auf andere eigenschaften haben Be
233. len Oslo Norske Regnecentralen 1977 4 Forschungsbericht Holzmann 2003 HOLZMANN G The Spin Model Checker Primer and Refe rence Manual Addison Wesley 2003 Humphrey 2000 HUMPHREY Watt S The Personal Software Process Status and Trends In IEEE Software 17 2000 Nr 6 S 71 75 H hn und H ppner 2008 HOHN Reinhard H PPNER Stephan Das V Modell XT Anwendungen Werkzeuge Standards Springer 2008 IEEE 1990 IEEE Standard Glossary of Software Engineering Terminology IEEE Standard 610 12 1990 1990 IEEE Computer Society TCSE 1996 IEEE COMPUTER SOCIETY TCSE Rough Draft of a Code of Ethics for Software Engineers In Software En gineering Technical Council Newsletter 14 1996 Nr 4 S 4 49 Jones 1996 JONES Capers Software Defect Removal Efficiency In IEEE Computer 29 1996 Nr 4 S 94 95 Jones 1997 JONES Capers Software Quality Analysis and Guidelines for Suc cess International Thomson Computer Press 1997 ISBN 1 85032 867 6 Jones 1990 JONES Cliff B Systematic Software Development using VDM 2 Aufl Prentice Hall 1990 J z quel und Meyer 1997 J Z QUEL Jean Marc MEYER Bertrand Design by Contract The Lessons of Ariane In IEEE Computer 30 1997 Nr 1 S 129 130 Kernighan und Pike 1999 KERNIGHAN Brian PIKE Rob Finding Perfor mance Improvements In IEEE Software 16 1999 Nr 2 S 61 68 swquote tex LITERATUR 253 Klaeren 1983 KLAEREN Herbert Algebraisc
234. len umst nden hierarchisch sein DAG s abb 15 nicht zyklisch wie in abb 16 Zyklische aufrufe sind nur innerhalb eines moduls zul ssig Abbildung 15 Zul ssige modulstruktur 11 Perlis 1982 Nr 11 Wenn du eine prozedur mit 10 parametern hast dann hast du wahr scheinlich welche vergessen swentw tex 3 SYSTEMENTWURF 53 Abbildung 16 Zyklische modulstruktur Das verbot zyklischer importe ist nat rlich eine relativ strenge massnah me welche die absicht verfolgt alle eventuellen probleme zu vermeiden Die in abb 16 vorgef hrte situation kann in der tat auch eine harmlose in terpretation haben Wenn die funktion B f eine funktion C g ben tigt aber C g keine anderen funktionen aus B braucht und umgekehrt eine andere funktion C h eine funktion B i aufruft aber B i keine anderen funktionen aus C ben tigt so muss man zwar zu wartungszwecken unter umst nden beide modultexte parallel bearbeiten es treten jedoch keine grunds tzli chen verst ndnisprobleme auf Haben wir dagegen eine situation in der eine funktion B f eine funktion C g braucht welche ihrerseits eine funk tion aus B aufruft welche m glicherweise wiederum eine funktion aus C aufruft so k nnen die module nicht mehr separat voneinander verstan den werden 3 5 Qualit t eines entwurfs Zur beurteilung der qualit t einer modulstruktur bieten sich folgende massst be an 1 Minimalit t der schnittstellen Wird alles was irgendw
235. ll ist Kontrollfragen 1 Was ist bei Microsoft eine feature group Was ist ihre zust ndigkeit wievie le personen umfasst sie und wie ist sie zusammengesetzt 2 Welche vorteile bieten die feature groups f r die organisation der firma 3 Beschreiben sie die sync and stabilise methode swmicro tex 8 LEISTUNGSVERBESSERUNG VON SOFTWARE 163 8 Leistungsverbesserung von software The most effective way to make a program faster is to use a better algorithm Kernighan und Pike 1999 Dataless suppositions are like suppositories they provide only temporary relief and they should be shoved in the same place G V Neville Neil kode vicious ACM Queue Vol 7 No 5 Nov Dec 2007 Many companies run their servers with the fastest processors and the maximum amount of memory Usually companies do this because they have hired the wrong people to write their software Neville Neil 2008b Leistungsverbesserung setzt zun chst einmal leistungsmessung voraus Schon Knuth 1971 wies nach dass weniger als 4 prozent eines programms mehr als 50 der laufzeit verbrauchen Bentley 1988 sagt Ich habe dieses klassische papier in den letzten zehn jahren mindestens einmal im jahr gele sen und es wird jedesmal besser Ich empfehle es dringend Die zahlen von Knuth legen den schluss nahe dass ein optimieren am falschen platz eine grosse verschwendung von ressourcen sein kann Kernighan und Pike 1999 sagen dazu Vor
236. llionen Dollar zu ma chen aber man erinnert sich stark daran Ich erinnere mich lebhaft an den abend als wir ber die organisation der niederschrift der externen spezifikationen f r OS 360 entschie den Der leiter der architektur der leiter der steuerprogramm implementierung und ich verabschiedeten den plan die termine und die verteilung der verantwortung Der architekturleiter hatte 10 gute leute Er versicherte sie k nnten die spezifikation schreiben und es richtig machen Es w rde zehn monate dauern drei mehr als im ter minplan vorgesehen Copyright Herbert Klaeren 29 Juni 2015 240 Der steuerprogrammleiter hatte 150 gute leute Er versicherte sie konnten die spezifika tionen mit der koordination der architekturabteilung herstellen sie wiirden von guter qualit t sein und praktikabel und er k nnte es rechtzeitig erledigen Au erdem w rden seine 150 leute wenn die architekturabteilung den auftrag bek me zehn monate dasit zen und d umchen drehen Darauf antwortete der architekturleiter da das resultat wenn ich der steuerprogramm abteilung die verantwortung berlie e eben nicht rechtzeitig fertig w rde sondern auch drei monate zu sp t und mit viel schlechterer qualit t Ich tat es so und genau das pas sierte Er hatte in beiden beziehungen recht Au erdem machte das fehlen eines einheit lichen konzepts das system teurer zu erstellen und zu ndern und ich w rde sch tzen da es die fehlerbesei
237. lls zu kurz gedacht ist Einerseits gibt es h ufig persistente objekte deren le bensdauer die programmausf hrung berschreitet und die deshalb auf externen speichermedien abgelegt werden m ssen wo sie nicht durch zei ger ansprechbar sind Andererseits hat gerade objektorientierte program mierung auch den gedanken des verteilten programmierens sehr stark propagiert dann ist aber eine objektreferenz kein zeiger sondern eher so etwas wie ein URI Uniform Resource Identifier e Datentypen und klassen werden miteinander vermischt Klassen k nnen an ziemlich vielen stellen legal vorkommen wo im grunde typen erwar tet w rden z b bei variablendeklarationen und innerhalb von prozedur k pfen trotzdem sind sie jedoch konzeptuell von diesen unterschieden Sauber in dieser hinsicht ist nur Smalltalk wo es typen im blichen sinne gar nicht gibt sondern nur klassen Dass sich das ltere Smalltalk nicht gegen ber den sp teren schlechteren OO sprachen durchsetzen konnte hat mehrere gr nde e Smalltalk brauchte von anfang an grafische displays und war nicht auf ef fizienz getrimmt deshalb lief es zun chst nur auf leistungsf higen work stations die entsprechend teuer und wenig verbreitet waren e Smalltalk kennt kein konzept einer datei bzw eines dateisystems und wirkt deshalb fremdartig auf programmierer die es gewohnt sind mit da teien zu arbeiten Alles in Smalltalk ist ein objekt und die lebendigen ob jekte w
238. llt als zusammenge setzt aus mehreren anderen objekten wobei deren schnittstellen und das mit ihnen verbundene geheimnis erhalten bleiben Es ist also niemals notwendig in die objekte hineinzuschauen die implementierung jedes teilobjektes kann Copyright Herbert Klaeren 29 Juni 2015 72 4 2 Statische modellierung jederzeit ge ndert werden ohne dass sich am zusammengesetzten objekt et was ndern muss Vererbung bricht im gegensatz dazu das geheimnisprin zip stellenweise auf Jede subklasse sieht naturgem ss den kompletten code ihrer oberklasse und kann auf jedes attribut und jede auch interne methode direkt zugreifen Es kann dabei sehr wohl geschehen dass nderungen in der implementierung der oberklasse zwangl ufig nderungen in den unterklassen nach sich ziehen Vererbung ist also obwohl in gewissem masse das herausstechendste merk mal der OO techniken ein eher problematisches konzept das nur nach sorg f ltiger abw gung eingesetzt werden sollte Zu beginn der modellierung ist es von geringem wert und sollte da noch nicht eingesetzt werden Vererbung wird im wesentlichen mit zwei zielen eingesetzt 1 Zur formalisierung einer can be used as beziehung 2 Zur wiederverwertung von implementationsteilen Das erste ziel bezieht sich deutlich auf die rollen die objekte spielen bzw in der sie von algorithmen behandelt werden Diese art der generalisierung kann erst nach einer verh ltnism ssig weit fort
239. m ber das konzept der vererbung das in gewissem sinne dem geheimnisprinzip widerspricht s abschnitt 4 7Schon 500 v Chr formulierte der griechische philosoph Heraklit die erkenntnis dass das einzig best ndige der wandel sei Copyright Herbert Klaeren 29 Juni 2015 22 2 1 Geheimnisprinzip bei einer vern nftig eingef hrten und rigoros eingehaltenen abstraktion viel leichter durchf hren Bei einer aufteilung eines modularen systems auf mehrere programmierer bedeutet das geheimnisprinzip dass jeder programmierer von den fremden modulen nur deren schnittstelle kennt w hrend die innereien vor ihm ver borgen sind Das gegenteil des geheimnisprinzips m chte ich Gorba ev zu eh ren das glasnost prinzip taufen Es war seinerzeit von dem bereits zitierten F Brooks f r die entwicklung von OS 360 vorgeschrieben worden und findet heute noch anwendung bei Microsoft Allerdings sagt Brooks 1995 nach 20 jahren Parnas was right and I was wrong und betont so die wichtigkeit des geheimnisprinzips Hauptmodul m A Exportschnittstelle A C mportschnittstelle Abbildung 5 Ein modulares System Eine typische situation im zusammenhang mit modularen systemen ist in abb 5 dargestellt In diesem bild haben wir die module durch k sten darge stellt wie man es h ufig tut und dabei die exportschnittstelle durch einen schmalen streifen an der oberseite und die importschnittstelle an der untersei te markiert
240. m umfang m glich 6 6 Agile methoden Fussend auf der vielfach gemachten erfahrung dass es praktisch unm glich ist ein gr sseres softwareprojekt in einem wurf richtig durchzuf hren ha ben sich seit den sp ten 1990er jahren eine reihe von objektorientierten soft wareprozessen durchgesetzt die einerseits sehr stark auf interaktion mit den zuk nftigen benutzern ausgerichtet sind und andererseits den stetigen wan del der eigentlichen projektziele in den vordergrund r cken Zusammenfas send werden diese entwicklungsmethoden als agile methoden bezeichnet Die zugrundeliegende erkenntnis ist nicht neu in der tat gibt das zitat von Mc Cracken und Jackson am anfang von abschnitt 6 2 diesen gedanken wieder In einer wesentlich lteren fassung wurde er aber schon von dem architekten C Alexander 1975 postuliert der hier bereits bei der diskussion der objektorien tierten muster angesprochen wurde und der geschrieben hat Es ist schlicht unm glich heute schon festzulegen wie die umwelt in der zukunft aus sehen soll und dann den schrittweisen entwicklungsprozess so zu steuern dass er dieses feste imagin re ziel erreicht Ein fr her vertreter dieser ansicht ist auch das von Christiane Floyd u a 1989 propagierte STEPS Softwaretechnik f r evolution re partizipative Softwareent wicklung damals allerdings noch nicht als agile methode bezeichnet Copyright Herbert Klaeren 29 Juni 2015 144 6 6 Agile metho
241. m wochenende aus an dem normalerweise der reiseverkehr am st rksten ist Bei starker belastung hoher f llungsgrad von puffern h ufiges r cksetzen aufgrund von fehlertoleranz massnahmen geraten systeme in ungetestete betriebszust nde Irgendwann geht dann gar nichts mehr Damit wir ber qualit t diszipliniert reden k nnen muss sie messbar ge macht werden und ausserdem bestimmte qualit tssicherungsverfahren als kon trolle eingef hrt werden siehe hierzu abschnitt 5 In diesem zusammenhang ist auch lesenswert das papier von Boehm und In 1996 ber die quality requirement conflicts Es folgen alphabetisch sortiert definitionen f r die von der ISO verwende ten begriffe Analysierbarkeit analysability Grad der effektivit t und effizienz zu dem es m glich ist die wirkung einer beabsichtigten nderung eines oder meh rerer teile eines produkts oder systems zu beurteilen oder ein produkt auf fehler oder fehlerursachen zu untersuchen oder die zu modifizierenden teile zu bestimmen sthetik der benutzungsschnittstelle user interface aesthetics Grad zu dem eine benutzungsschnittstelle angenehme und befriedigende interaktion f r den benutzer erm glicht Anpassbarkeit adaptability Grad zu dem ein produkt oder system effek tiv und effizient an unterschiedliche oder fortentwickelte hardware software oder andere betriebs oder einsatzumgebungen angepasst wer den kann Befriedigung satisfaction Der grad zu dem
242. macht wird hat Micro soft noch nicht f r sich entdeckt MSN Windows Live und Office Live kopie ren immerhin das von Google Yahoo und AOL vorgemachte gesch ftsmodell kostenlose leistungen mit indirekten eink nften z b durch werbung zu kombinieren Sparte Umsatz Gewinn proz gewinn Windows 13 2 Mrd 10 2 Mrd 77 Office 11 8 Mrd 8 2 Mrd 69 Server und werkzeuge 11 5 Mrd 4 3 Mrd 37 Unternehmensl sungen 919 Mrd 24 Mio 2 6 tausendstel MSN 2 3 Mrd 77 Mio 3 3 Handy PDA etc 377 Mio 2 Mio 0 5 XBOX Spiele 4 3 Mrd 1 3 Mrd 30 Tabelle 11 Microsoft gewinnanalyse USD Interessant sind auch die zusammenstellungen von zahlen aus dem ge sch ftsbericht von 2006 den Cusumano analysiert hat Wie nicht anders zu er warten macht Microsoft sein bestes Geld mit Windows und Office s tab 11 Copyright Herbert Klaeren 29 Juni 2015 160 7 1 Vergleich mit XP Bereich Umsatz in prozent OEM 34 Unternehmen 41 Privatkunden 27 Tabelle 12 Microsoft kundenkreise Auf der Kundenseite ist es tab 12 fiir Microsoft wichtig die OEM kunden und gesch ftskunden besonders gut zu behandeln diese machen zusammen reichlich zwei drittel des umsatzes Ein kleiner sch nheitsfehler in dieser ta belle ist es dass sich die zahlen zu 102 addieren nach Auskunft von Prof Cusumano eine Auswirkung von Rundungen 7 1 Vergleich mit XP Da sowohl die Microsoft methode als auch der
243. man solche situationen Copyright Herbert Klaeren 29 Juni 2015 88 4 7 Das beobachter muster e Struktur Die struktur der an dem muster beteiligten klassen wird wie gesagt nicht in UML grafisch dargestellt e Teilnehmer Dieser abschnitt enth lt die klassen und oder objekte die an dem muster beteiligt sind und deren zust ndigkeiten e Zusammenwirkungen collaborations beschreiben die art wie die teilnehmer des musters zusammenarbeiten e Konsequenzen Zum einen werden die vorteile die sich aus der verwendung des mu sters ergeben aufgef hrt Zum anderen m ssen auch die auswirkungen auf das system architektur details des entwurfs und der implementie rung beschrieben werden welche nachteile m ssen ggf in kauf genom men werden welcher teil der systemstruktur kann unabh ngig von dem muster modifiziert werden e Implementierung Hier werden hilfestellungen warnungen und besondere implementie rungstechniken diskutiert ggf auch sprachspezifische aspekte e Beispielcode Codefragmente in C oder Smalltalk illustrieren wie das muster im plementiert werden k nnte e Bekannte anwendungen In diesem abschnitt wird an mindestens zwei beispielen aus unterschied lichen anwendungsbereichen vorgef hrt wo dieses muster erwiesener massen schon erfolgreich verwendet wurde e Verwandte muster Welche entwurfsmuster sind hnlich zu dem hier vorgestellten Worin be stehen die wesentlichen unterschieden Mit
244. maschinen be trachtet und logischerweise ohne jegliche software ausgeliefert Die verwen der der maschinen in der regel mathematiker standen daher allesamt vor ganz hnlichen problemen Das wichtigste problem war es dass das program mieren in der maschinensprache durch das eintippen von oktalzahlen so be schwerlich ist dass doch zumindest ein symbolischer assembler ben tigt wird um halbwegs vern nftig arbeiten zu k nnen So ein assembler bietet mnemo nics zur bezeichnung von instruktionen und symbolische adressen f r das pro grammieren von spr ngen an Schon 1955 wurde deshalb eine benutzerorganisation SHARE Society for Help to Avoid Redundant Efforts gegr ndet deren mitglieder anf nglich 17 institutionen mit einer IBM 704 dem nachfolgemodell der 701 sich gegensei tig die von ihnen geschriebene notwendige software zur verf gung stellten Dies geschah wie es allgemein der tradition wissenschaftlicher publikationen entspricht unter wahrung des urheberrechts und unter ausschluss s mtlicher haftung IBM unterst tzte SHARE nicht nur ideell sondern auch in beschei denem umfang materiell und sah die lteste computerbenutzerorganisation durchaus auch als ein instrument zur verkaufsf rderung Programme aus der SHARE bibliothek erhielt man nicht nur als lauff hige bin rprogramme son dern auch im quelltext damit sich jedes mitglied einerseits ber die arbeits weise der programme informieren konnte und wenn gew nscht
245. me thoden attributen klassen etc in unter oberklassen oder in v llig andere klassen das verschieben von entit ten in andere klassen das ndern einer methoden signatur das falten von konstanten etc Viele werkzeuge unterst t zen refactoring prozesse 6 6 3 Scrum Eine weit verbreitete alternative zum XP prozess ist der von Jeff Sutherland scrum jeffsutherland com propagierte Scrum prozess engl scrum Ge swll tex 6 VORGEHENSMODELLE FUR DIE SOFTWAREENTWICKLUNG 151 Scrum Cheat Sheet d Product Owner Owns the Product Backlog The Product Owner represents the interests of everyone with a stake in the project Stakeholder and he is responsible for the final product elicit product requirements manage the Product Backlog manage the release plan manage the Return on Investment Scrum Master Owns the Scrum process The Scrum Master is responsible for the Scrum process He ensures everybody plays by the rules He also removes impediments for the Team The Scrum Master is not part of the Team manage the Scrum process remove impediments facilitate communication Team Member Owns the software The team figures out how to turn the Product Backlog into an increment of functionality within a Sprint Each team member is jointly responsible for the success of each iteration and of the project as a whole software quality technical implementation of User Stories delivery of func
246. mechanismen nicht klar sind 9 1 awk grep sed Drei werkzeuge die zusammen mit dem programmierbaren kommandointer preter shell unglaubliches leisten k nnen sind awk grep und sed Von die sen ist den studierenden meist nur grep wirklich bekannt sed ist der stream editor er operiert im gegensatz zu den normalen editoren auf einem zeichenstrom das heisst er liest eine eingabedatei zeichen f r zeichen und schreibt dabei gleichzeitig eine ausgabedatei Deswegen gibt es bei ihm keinerlei beschr nkung bez glich der gr sse von dateien oder der l nge von zeilen grep eine abk rzung von global regular expression print sucht in einer text datei nach zeilen die ein bestimmtes pattern beinhalten das durch einen regul ren ausdruck definiert ist Copyright Herbert Klaeren 29 Juni 2015 178 9 1 awk grep sed awk benannt nach seinen autoren Aho Weinberger und Kernighan kann komplexe manipulationen auf textdateien vornehmen e Es zerlegt zeilen in felder die sofern nichts anderes spezifiziert wurde durch white space voneinander getrennt sind e f hrt sodann aktionen auf zeilen aus in denen hnlich wie bei grep ein bestimmtes pattern vorkommt Dabei gilt Wenn kein pattern angegeben wurde wird die aktion f r jede zei le ausgef hrt und wenn keine aktion angegeben wurde wird jede zeile die auf das pattern passt unmodifiziert ausgedruckt e Ausserdem besitzt
247. mmierer keineswegs weniger fehler machen als neulinge die situation ist sogar noch schlimmer weil die fehler die erfahrene programmierer machen sehr komplex und subtil sind ihre ent deckung ist sehr schwierig und erfordert viel denkarbeit An dieser stelle mag man sich fragen wie denn die verbleibenden fehler in einem softwareprodukt ermittelt werden Letzten endes k nnen wir im grun de doch nur die aus einem softwareprodukt entfernten fehler messen Die ant wort auf diese frage ist einfach 1 Einerseits kann man als professioneller softwareentwickler seine erfah rung ins spiel bringen und die in einem bestimmten softwareprodukt im laufe seines lebens gefundene fehlerdichte in relation setzen zu einem hnlichen und unter hnlichen bedingungen zu entwickelnden software produkt Die im alten produkt aufgefundene tats chliche fehlerdichte kann als erwartungswert der fehlerdichte im neuen produkt angesehen werden 2 Wie bei allen solchen statistischen verfahren geht es nicht um die beur teilung einzelner softwarekomponenten sondern ganzer herstellungspro zesse von software Zur ermittlung der fehlerdichte bei einem bestimmten 27Dabei werden zwischen 20 und 185 stunden f r das auffinden eines einzelnen fehlers investiert die testzeit f r 1kLOC betr gt zwischen 25 und 185 stunden das bedeutet reine testkosten zwischen 1 660 und 12 300 EUR pro kLOC Vor jedem software release wird ein regressionstest gegen eine dat
248. ms erfolgt auf einen schlag big bang Durch die vielzahl notwendiger nderungen im betriebsablauf kann eine organisati on leicht berfordert werden Es tauchen dann probleme mit der software auf die im grunde genommen keine eigentlichen software probleme son dern vielmehr probleme der handhabung sind THE ACTUAL SYSTEM x CAPABILITIES gt Z lt lt G SHADED AREA USER NEEDS SHORTFALL SHOWS oO INAPPROPRIATENESS Z gt EL ADAPTABILITY IS SLOPE OF LINE LONGEVITY gt TIME Abbildung 41 Produktivit tsmetriken f r software lebensl ufe Will man etwas eingehendere kritik an vorgehensmodellen wie dem wasser fallmodell ben so sollte man die entwicklung der gew nschten und tats ch lich implementierten funktionalit t eines systems in abh ngigkeit von der zeit darstellen wie dies in abbildung 41 geschehen ist Diese darstellung stammt von Davis u a 1988 Auf der linken seite des schattierten bereichs finden wir die linie der benutzeranforderungen Hier wurde angenommen dass sich die anforderungen der benutzer an die funktionalit t des systems ber die zeit hinweg linear steigern Wie weit diese annahme realistisch ist mag dahin gestellt sein Man k nnte ebenso gut mit einem exponentiellen wachstum der benutzeranforderungen rechnen was die im folgenden darzustellende proble matik noch versch rfen w rde Auf der rechten seite des schattierten bereichs finden wir die tats chliche
249. mte dienste angefordert werden k nnen und eine anzahl von kunden welche diese schalter besuchen wollen und sich dabei unter umst nden in eine warteschlange einreihen m ssen Alle schalter haben gewisse merkmale attribute gemeinsam zum beispiel dass sie ge ffnet oder geschlossen sein k nnen oder eben dass sich vor ihnen warteschlangen bilden k nnen In anderen merkmalen unterscheiden sich die schalter zum beispiel gibt es schalter an denen briefmarken verkauft werden es gibt postbankschal ter paketschalter telefonschalter etc Auch die kunden haben gewisse merk male gemeinsam in anderen unterscheiden sie sich So gibt es etwa paketkun den briefkunden postbankkunden etc Es ist auch nicht auszuschliessen dass ein kunde mehrere gesch fte zu erledigen hat und so etwa von einem post bankkunden zu einem paketkunden wird oder umgekehrt Implizit angespro chen wurde in dieser darstellung bereits dass kunden und schalter beamte in der lage sind bestimmte operationen auszuf hren Eine simulation des postamts w rde nun nach vorgegebenen wahrschein lichkeitsverteilungen schalter ffnen und schliessen und kunden das postamt betreten lassen um dort bestimmte gesch fte zu erledigen und es dann wieder zu verlassen Zweck der bung w re es vermutlich bestimmte statistische da ten zu sammeln wie etwa durchschnittliche und maximale verweildauer der kunden im postamt l nge der warteschlange auslastungsgrad der schalter usw Die mach
250. mular handlungen beschreiben welche benutzer mit dem system durchf hren wollen Dabei wird nat rliche sprache verwendet die aber meist zahlreiche m glichkeiten zu missverst ndnissen bietet Berry und Kamsties 2005 weisen darauf hin dass viele dieser missverst ndnisse vermieden werden k nnen indem man eine gr ssere sprachliche sorgfalt walten l sst W hrend des objektorientierten systementwurfs nehmen wir dann einen pa radigmenwechsel vor jetzt wird das zu gestaltende system von innen her be trachtet Die darstellung wird erweitert um weitere klassen die f r die im plementierung hilfreich oder gar notwendig sind Hier erh lt der begriff der systemarchitektur gr sste bedeutung Systemarchitektur in OO systemen be steht aus der klassenstruktur die ausgehend vom modell der analyse um zu s tzliche elemente erweitert wird Zu den klassen des anwendungsbereichs kommen technische klassen hinzu die das in der anforderungsspezifikation definierte verhalten des systems implementieren auf diese weise entstehen immer weitere klassen bis wir schliesslich bei einem ausf hrbaren system an gelangt sind Da die klassen zun chst aus der analysephase stammen sehen praktisch alle entwurfsmethoden massnahmen zur verbesserung der klassenhierarchie vor wie etwa die einf hrung von abstrakten klassen an geeigneten stellen die berpr fung von wohlgeformtheitsbedingungen oder eine robustheitsanaly se Auch die wiederverwendung von k
251. n In der tat fehlte und fehlt immer noch vielen privaten computerbenutzern das unrechtsbewusstsein beim kopieren von software Schliesslich erleidet der hersteller der software im gegensatz zu einem ladenbesitzer der durch laden diebstahl gesch digt wird keinen direkten schaden durch das kopieren der schaden ist nur indirekt als entgangener gewinn zu erkennen Anderen scheinen die lizenzbedingungen bei der kommerziellen software eine zu starke einschr nkung der rechte des erwerbers zu sein In der durch aufreissen der verpackung automatisch zu akzeptierenden lizenz zu Micro soft Frontpage 2002 hiess es beispielsweise swfloss tex 10 FREE LIBRE OPEN SOURCE SOFTWARE 201 Sie d rfen diese Software nicht in Verbindung mit irgendeiner Stelle verwenden die Microsoft MSN MSNBC Expedia oder eins ih rer Produkte oder Dienste herabsetzt oder das geistige Eigentum oder andere Rechte dieser Parteien verletzt oder irgendein Staats Bundes oder internationales Gesetz verletzt oder Rassismus Ha oder Porno graphie verbreitet Versteckt zwischen sowieso selbstverst ndlichen gesetzlichen verboten die sicher nur mit dem zweck aufgef hrt wurden die eigentliche absicht des pa ragraphen zu verschleiern findet sich hier ein passus der letztlich verhindert dass ein kunde kritik an der lieferfirma u ert Kein hersteller einer schreib maschine hat jemals versucht seine kunden dazu zu verpflichten auf dieser maschine
252. n kung auf endliche mengen endliche abbildungen Ein relativ moderner ansatz unter verwendung der programmiersprache Ja va ist JML Java Modeling Language Leavens und Cheon 2006 Leavens 2007 du Bousquet u a 2004 JML ist inspiriert vom Larch projekt Guttag u a 1993 und ist in seinem anspruch noch etwas reduzierter als VDM SL die spezifikationen werden hier einfach innerhalb der programmiersprache Ja va formuliert die nur durch wenige zus tzliche konstrukte erweitert wurde Sie werden auch direkt innerhalb der zugeh rigen Java programme notiert das sogenannte single source prinzip und dabei in eine spezielle form von kommentaren f r einen einzeiligen und f r einen mehrzeiligen swmodu tex 2 MODULKONZEPT 29 kommentar eingepackt damit sie den normalen bersetzungsprozess nicht st ren Diese eigenschaft teilt JML mit dem noch zu besprechenden Javadoc Achtung das zeichen darf von den vorausgehenden zeichen nicht durch ei ne leerstelle o 4 abgetrennt werden Die verwendung von JML wird dadurch nahegelegt dass Java ab der version 1 4 sog assertions unterstiitzt Dieses vorgehen hat folgende vorteile Durch die beschr nkung auf die m glichkeiten der programmiersprache braucht der programmierer nicht noch einen zus tzlichen formalismus zu erlernen Das single source prinzip sorgt daf r dass die spezifikation immer an der stelle vorhanden ist wo sie ben tigt wird Ausserdem kann
253. n Allerdings kann diese methode auch in die irre f h ren Nicht jedes substantiv eignet sich als klasse und nicht jedes substantiv ist 16 Auch dieses skriptum ist nicht frei davon Hinweise werden stets dankend entgegenge nommen swoo tex 4 OBJEKTKONZEPT OOD UND OOA 81 fiir den zu modellierenden ausschnitt des systems wirklich relevant Hier ist sorgf ltige abw gung gefragt Ausserdem sollte man der suggestion der klassennamen nicht erliegen und ontologisch modellieren Wir reden im kontext des entwurfs von software in der regel nur ber konstrukte innerhalb des computers d h nicht ber die reale welt Ein objekt a der klasse auto ist nicht mein auto sondern es beschreibt in diesem fall mein auto Klassen welche namen physikalischer gegenst nde tragen stehen im kern meist nur f r datens tze die diese gegenst nde beschreiben Modelliert wer den nur die beziehungen zwischen datens tzen Es lohnt sich diesen sach verhalt zuweilen vor augen zu f hren gerade weil es soviel schlechte OO literatur gibt die diesen unterschied nicht macht Aufgefundene klassen werden mit ihren attributen und methoden textlich und graphisch erfasst Auf der suche nach relevanten klassen konzentriert man sich am besten auf e Strukturen organisatorische einheiten e Rollen die personen bernehmen k nnen e Andere systeme mit denen das zu entwickelnde system zusammenarbei tet e Externe ger te e Ereignisse
254. n entry criteria Wenn nicht ganz bestimmte je nach art des zu pr fenden dokuments unterschiedliche vorbedingungen erf llt sind kann der inspektionsprozess nicht beginnen swkorr tex 5 SOFTWAREQUALIT T 121 Sitzung Wenn die vorbedingungen erf llt sind kann eine inspektionssitzung als eine art rollenspiel anberaumt werden Zu dieser sitzung erscheinen 4 personengruppen e Softwareentwickler e Softwaretester e Moderator e Protokollant W hrend der inspektionssitzung wird das zu inspizierende dokument im wesentlichen zeile f r zeile durchgesprochen Ausgangskriterien exit criteria Diese kriterien legen fest wann ein einzelner inspektionsprozess als beendet gelten kann Entwicklungsschritt Min Med Max Funkt Spez Inspektion 2 3 5 Grobentwurf Inspektion 10 12 16 Feinentwurf Inspektion 17 20 22 Code Inspektion 20 28 32 Modul Test 12 16 17 Funktionen Test 10 12 14 Komponenten Test 8 7 14 System Test 0 5 2 7 Tabelle 7 Prozent der aufgefundenen fehler Die bei der inspektion anfallenden daten werden in einer projekt datenbank gespeichert und analysiert Hiermit werden einerseits hinweise auf schwach stellen im entwicklungsprozess deutlich andererseits unterwirft sich damit aber selbstverst ndlich auch der inspektionsprozess selbst einer bewertung In tab 7 finden wir daten wieviel prozent der insgesamt bei IBM vor auslie ferung eines programms gefundenen fehler auf einzelne qualit tssicherungs massnahmen z
255. n 1999 ROTHMAN Johanna Retrain Your Code Czar In IEEE Soft ware 16 1999 Nr 2 S 86 88 Royce 1970 Royce W W Managing the Development of Large Software Systems In Proceedings of IEEE Wescon IEEE Veranst Aug 1970 R diger und Wilhelm 1996 R DIGER Karl Heinz WILHELM Rudolf Zu den Ethischen Leitlinien der Gesellschaft f r Informatik In Informatik Spektrum 19 1996 S 79 86 Schnurer 1988 SCHNURER K E Programminspektionen Erfahrungen und Probleme In Informatik Spektrum 11 1988 S 312 322 Serrano und Ciordia 2004 SERRANO Nicol s CIORDIA Ismael Ant Au tomating the Process of Building Applications In IEEE Software 21 2004 Nr 6 S 89 91 Sneed 1988 SNEED Harry M Software Testen Stand der Technik In Informatik Spektrum 11 1988 S 303 311 Sneed und Jungmayr 2011 SNEED Harry M JUNGMAYR Stefan Mehr Wirtschaftlichkeit durch Value Driven Testing In Informatik Spektrum 34 2011 Nr 2 S 192 209 Sodan 1998 SODAN A C Yin and Yang in Computer Science In Commu nications of the ACM 41 1998 Nr 4 S 103 111 Spolski 2010 SPOLSKI Joel Hg Init a Mercurial tutorial http hginit com 2010 St rrle 2005 ST RRLE Harald UML 2 f r Studenten Pearson Studium 2005 Swartz 1996 SWARTZ A J Airport 95 Automated Baggage System In Software Engineering Notes 21 1996 Nr 2 S 79 83 S ddeutsche Zeitung 2010 S DDEUTSCHE ZEITUNG Der Bordcomputer ist schuld
256. n alle ber 96 F hrende firmen hier nennt er AT amp T IBM Motorola Raytheon und Hewlett Packard erreichen jedoch in ihren besten projekten mehr als 99 fehlerbeseitigungsef fizienz In diesem zusammenhang ist es dann interessant die kombination bestimm ter verfahren zu untersuchen Die ergebnisse dieser untersuchung sind in tab 10 zusammengetragen In dieser tabelle ist die effizienz jeder denkbaren kom bination von vier techniken zusammengetragen n mlich DI Design Inspection Formelle inspektion des entwurfs CI Code Inspection Formelle inspektion des programm codes OA Quality Assurance Formelle qualit tssicherungsverfahren FT Formal Testing Formelles testen der software F r jede solche kombination sind die besten und schlechtesten angetroffe nen werte aufgelistet sowie der median der werte die zeilen sind dann nach median aufsteigend sortiert Wie nicht anders zu erwarten nimmt die effizi enz zu je mehr dieser techniken gleichzeitig verwendet werden Es f lltjedoch Copyright Herbert Klaeren 29 Juni 2015 126 5 7 Value driven testing 2 DI CI QA FT Min Med Max 30 40 50 X 32 45 55 X 37 53 60 X 43 57 66 X 45 60 68 X X 50 65 75 xX X 53 68 78 X X 55 70 80 X X 60 75 85 X X 65 80 87 xX X 70 85 90 X X X 75 87 93 X X 77 90 95 xX
257. n auch unsymmetrisch bezeichnet wer den kann je nachdem in welcher richtung die beziehung gelesen wird Mit assoziationen sind h ufig aussagen ber die kardinalit ten der entsprechenden relationen verbunden diese werden durch zahlen bzw zahlenpaare an der verbindungslinie in der n he der klasse notiert In abb 21 Fowler und Scott 1998 sehen wir beispielsweise eine beziehung zwischen personen und firmen Eine firma kann zwischen 0 und beliebig vie len personen diese beziehung haben Person in der rolle employee umge kehrt kann eine person diese beziehung zu 0 bis beliebig vielen firmen haben Company in der rolle employer In dieser assoziation von klassen liegt ein sachverhalt der f r die modellierung eine besondere rolle spielt weil hierzu weitere daten im system gespeichert werden m ssen Solche sachverhalte wer den als separate klassen modelliert die dann assoziationsklassen heissen und durch eine gestrichelte linie an die assoziationslinie angebunden werden Im beispiel finden sich zwei solche assoziationsklassen mit ihren zugeordneten attributen Job informiert zus tzlich zum sachverhalt einer assoziation zwi schen einer Person und einer Company ausserdem noch ber die beschreibung des jobs das anfangsdatum und das gehalt Die klasse Marriage stellt eine as soziation der klasse Person mit sich selbst dar wobei eine der personen die rolle husband und die andere die rolle wife spielt Zu einer ehe ist es interes sant da
258. n die intensit t und effektivit t der stetigen integration bei Microsoft vielleicht nicht so hoch ist wie im XP prozess Minimierung von berstunden Zitat Das XP ideal nach Beck ist gegensei tiger respekt und zusammenarbeit zwischen programmierern Im gegen satz dazu sehen wir es bei Microsoft und den meisten anderen software unternehmen h ufig dass marketing ziele in projekten vorrang vor pro fessionellen zielen bekommen was firmen dazu zwingt berstunden als kompensation f r unrealistische pl ne oder schlechtes projektmanage ment und teamwork einzusetzen Ein anderer ansatz der bei Windows und anderen Microsoft gruppen blich ist anstatt sich einfach auf ber stunden zu verlassen ist es produkte versp tet herauszugeben manch mal um jahre Kunde vor ort Da es f r Microsoft produkte einen auftraggeber im herk mm lichen sinne nicht gibt entf llt dieser punkt Produkt und programm manager versuchen sich aber in die lage potentieller kunden zu versetzen Programmiernormen Im ziel die gleichen entwurfs notationen oder normen zu verwenden gibt es kaum unterschiede zwischen der XP methode und Microsoft Copyright Herbert Klaeren 29 Juni 2015 162 7 1 Vergleich mit XP In summa schreibt Cusumano ber beide ans tze Ich glaube dass interative entwurfspraktiken f r jedes softwareprojekt n tzlich sind bei dem die vor gegebenen spezifikationen unvollst ndig sind was praktisch immer der fa
259. n f higkeiten des systems zu einem gewissen zeit punkt Durch vergleich von gew nschter und vorhandener funktionalit t in der horizontalen achse ergibt sich der versp tungsfaktor lateness des imple mentierten systems Durch vergleich in der vertikalen achse ergibt sich das defizit shortfall Insgesamt zeigt der schattierte bereich das ausmass an zu welchem das system unzufriedenstellend ist Copyright Herbert Klaeren 29 Juni 2015 136 6 2 Kritik am wasserfallmodell THE ACTUAL SYSTEM CAPABILITIES USER NEEDS FUNCTIONALITY Abbildung 42 Produktivitat des wasserfallmodells Der bersichtlichkeit halber wollen wir die in dieser produktivit tsmetrik verwendeten begriffe nochmals zusammenstellen Defizit Ein defizit ist ein mass daf r wie weit die funktionalit t eines systems zu einem zeitpunkt t hinter den anforderungen zur ckbleibt Versp tung Die versp tung ist ein mass f r die zeit zwischen dem erkennen einer neuen anforderung und ihrer implementierung im system nderbarkeit nderbarkeit ist ein mass f r die geschwindigkeit mit der ein system an neue anforderungen angepasst werden kann sie entspricht der steigung der funktionalit tslinie Langlebigkeit Die langlebigkeit gibt die zeit wieder in der das system anpas sungsf hig ist das heisst also den zeitraum von der ersten entwicklung ber die wartung bis zur abl sung durch ein neu entwickeltes system Unangemessenheit Die unangemes
260. n und ihr umgang mit versionen des systems systematisch studiert wird Sehr wichtig in diesem zusammenhang ist es nat rlich normen und kon ventionen einzuhalten z B die vorschriften des CUA Common User Access der seit 1987 von IBM im Rahmen der SAA Systems Application Architecture festgeschrieben wurde und weithin akzeptiert ist Laut CUA kann mit einem druck auf die taste F1 eine kontextsensitive hilfe angefordert werden Das hin derte einen professional editor den ich selbst einmal auf dem IMB PC im grunde gerne verwendet habe aber nicht daran an F1 die funktion quit immediately dont ask questions zu binden Solche fehler in der benutzung werden aber nicht nur im softwarebereich sondern auch sonst in der technik gemacht Der VW Porsche abb 60 beispielsweise hatte eine 5 gang schaltung bei der der r ckw rtsgang an der stelle untergebracht war wo man normalerweise den ersten gang erwartet h tte Eine lesenswerte quelle zum thema stellt das ausgezeichnete Buch von Nor man 1988 dar Hier gibt es viele beispiele daf r dass gegenst nde aller art m glichst intuitiv bedienbar sein sollten die bedienung sollte selbsterkl rend sein wenn das irgendwie m glich ist Als besonders r hmliches beispiel wird die elektrische sitzverstellung in den Mercedes fahrzeugen hervorgehoben s abb 59 Was immer man mit dem sitz und der kopfst tze anstellen m ch te braucht man einfach nur mit den als modell des sitzes angelegt
261. nd Livelocks In ACM queue 6 2008 Nr 2 S 8 10 Neville Neil 2009 NEVILLE NEIL George V Kode Reviews 101 A review of code review do s and don ts In Communications of the ACM 52 2009 Nr 10 S 28 29 Norman 1988 NORMAN Donald A The design of everyday things New York Doubleday 1988 Copyright Herbert Klaeren 29 Juni 2015 256 LITERATUR Ostrand und Weyuker 2002 OSTRAND Thomas J WEYUKER Elaine J The Distribution of Faults in a Large Industrial Software System In FRANKL Phyllis G Hrsg Proc ACM SIGSOFT 2002 International Symposium on Soft ware Testing and Analysis Bd 27 4 ACM 2002 S 55 64 Ostrand u a 2004 OSTRAND Thomas J WEYUKER Elaine J BELL Ro bert M Where the Bugs Are In ROTHERMEL Gregg Hrsg Proceedings of the ACM SIGSOFT International Symposium on Software Testing and Analysis Bd 29 2004 S 86 96 O Sullivan 2009 O SULLIVAN Bryan Making sense of revision control sy stems In Commun ACM 52 2009 Nr 9 S 56 62 ISSN 0001 0782 Oz 1994 Oz Effy When Professional Standards are Lax The CONFIRM failure and its Lessons In Communications of the ACM 37 1994 Oct Nr 10 S 29 36 Parnas 1972 PARNAS David L On the Criteria to be Used in Decomposing Systems into Modules In Communications of the ACM 15 1972 S 1053 1058 Parnas 1985 PARNAS David L Software Aspects of Strategic Defense Sy stems In Communications of the ACM 28 1985
262. nders dagegen ist die situation in Modula 2 In abb 10 haben wir ganz klar gemacht dass der typ job aus dem modul Jobs kommen soll Alle exportierten objekte eines moduls haben eine pr zise typinformation die vom compiler ber die grenzen einer bersetzungseinheit hinweg wahrgenommen und gepr ft wird Exportiert ein modul in seiner schnittstellenbeschreibung ein objekt das in der implementierung nicht vorkommt vergessen wurde so gibt es beim bersetzen der implementierung eine fehlermeldung Modula 2 hat berdies einen strukturierten namensraum Jedes objekt wird beim export mit dem namen des moduls qualifiziert aus dem es stammt Diese situation ist in abb 12 dargestellt In Modula 2 existieren zwei methoden ein konstrukt in einem anderen mo dul verf gbar zu machen In abb 12 wurde f r das symbol g der sogenannte qualifizierende import gew hlt d h ein vorkommen des bezeichners g im mo dultext wird automatisch mit dem bezeichner Bar g identifiziert Dieses verfahren kommt der situation mit den header files von C am n ch sten Die hinter FROM IMPORT aufgef hrten namen werden unmittelbar in den namensraum des vorliegenden moduls eingef hrt was eine bequeme kurze notation erm glicht aber andererseits nat rlich auch zu namenskonflik ten f hren kann In C h tten wir durch include Bar halle dort aufgef hrten swmodu tex 2 MODULKONZEPT 41 namen bekannt gemacht w hrend wir bei Modula 2 noch eine teil
263. ne beliebige menge von tasks beinhalten Eine ganze menge von solchen tasks ist bereits vordefiniert darunter die zu erwartenden vorrich tungen zum kopieren und l schen von dateien zum compilieren anlegen von verzeichnissen etc weitere tasks kann der programmierer selbst in form von Java klassen hinzuf gen Der preis f r die erh hte flexibilit t von Ant ist naturgem ss eine gr sse re komplexit t des werkzeugs das einen ungleich h heren einarbeitungsauf wand erfordert als make 9 4 Konfiguration von software Leider ist die situation in wirklichkeit noch viel komplizierter als dass sie mit make allein gel st werden k nnte da praktisch jede software eingebettet ist in ein komplexes system aus anderen softwareprodukten Unter einer plattform verstehen wir eine kombination von maschine und betriebssystem der allge meinere begriff substrat bezieht auch noch weitere gegebenheiten wie etwa ei ne graphische oberfl che ein fenstersystem und anderes ein Je nach substrat gibt es wom glich andere optionen f r compiler und linker andere pfade zu programmbibliotheken ja sogar andere namen f r compiler programmbiblio theken etc Solche gegebenheiten beeinflussen nat rlich das makefile es ist deshalb durchaus nicht ungew hnlich den prozess der erzeugung eines lauf f higen programms mit einem make makefile zu beginnen um auch abh ngigkeiten ausserhalb des gerade betrachteten softwarepakets erfassen zu k nnen Leide
264. nen softwarepakete wieder in der berw ltigenden mehrzahl Dies tr gt eine gewisse analogie zu der art und weise wie normalerwei se h user gebaut werden oder auch zur massschneiderei von kleidung Auf die analogie der softwaretechnik zur architektur werden wir noch zu sprechen kommen an dieser stelle m chten wir zun chst die analogie zur textilindustrie betrachten Sie ist besonders interessant da heute prak tisch gar keine kleider mehr massgeschneidert werden Statt dessen sind wir es gewohnt konfektionsware einzukaufen Wenn man sich gedanken dar ber macht wie das system der konfektionskleidung funktioniert so stellt man fest dass diese tats chlich eine bahnbrechende und ganz er staunliche entwicklung darstellt Hier fliesst eine ber jahrhunderte ge wachsene und ber jahrzehnte erprobte kenntnis ber gewisse proportio nen des menschlichen k rpers ein sodass ber 90 der menschheit mit konfektionskleidung ohne irgendwelche modifikationen auskommt Der vorteil f r die textilindustrie liegt dabei darin dass eine stark arbeitsteili ge produktion von kleidungsst cken mit maschineller unterst tzung und teilweise weniger qualifiziertem personal erm glicht wird wobei die ma schinen bzw arbeitsabl ufe nur relativ selten umgestellt werden m ssen In der softwarebranche gibt es kaum nennenswerte produktionskosten ein hnlicher trend ist trotzdem auch hier erkennbar Die firmen wel Copyright Herbert Klaeren 29 Jun
265. ner objektorientierten modellierung grossbuchstaben beginnen zu lassen Von Smalltalk stammt die weitere kon vention einzelne objekte einer klasse durch den klassennamen mit einem vor angestellten a an zu bezeichnen also aStudent anExercise etc Die solcherart aufgefundenen kandidaten werden anhand der folgenden kriterienliste bewertet e Muss das system ber objekte dieser klasse informationen speichern oder methoden f r sie bereitstellen Falls keiner dieser beiden f lle vorliegt ist die klasse nicht relevant und kann wegfallen Falls ja welche informatio nen attribute der klasse und methoden sind dies e Hat die klasse mehr als nur ein einziges attribut Falls nein handelt es sich m glicherweise nicht um eine selbst ndige klasse sondern bloss um ein attribut einer anderen klasse e Lassen sich die attribute der klasse aus denen anderer klassen berechnen Falls ja sollte diese klasse in der analysephase nicht ber cksichtigt wer den da sie in der entwurfsphase einfach hinzugef gt werden kann e Entwurfsspezifische klassen men s fenster laufwerke etc sollten ge trennt notiert bzw markiert werden und erst in der entwurfsphase be r cksichtigt werden Zur bezeichnung einer klasse wird als name grunds tzlich ein substantiv oder aber eine kombination von adjektiv und substantiv verwendet 4 5 2 Einf hrung der struktur Zu diesem zeitpunkt konzentrieren wir uns auf die beiden wichtigsten struk turie
266. nforderungen gering halten Irgendwann wird wiederum eine neuentwick lung notwendig die dann wiederum einen explorativen prototypen verwen det Abb 44 ist insofern idealisiert als nur jeweils ein prototyp erstellt wur de in der praxis werden sicher h ufig auch folgen von prototypen notwendig werden Bei der erstellung von prototypen m ssen nicht unbedingt immer sehr teue re und aufwendige mittel verlangt werden Eine interessante m glichkeit vor allem f r die modellierung von benutzerschnittstellen aber auch damit zu sammenh ngend f r die erkundung der gew nschten systemfunktionalit t stellen die von Rettig 1994 vorgeschlagenen lo fi prototypes dar Die be Copyright Herbert Klaeren 29 Juni 2015 140 6 4 Fr he prototypen zeichnung lo fi ist hier allerdings ausgesprochen ung nstig gew hlt Ge meint ist sie als gegensatz zu Hi Fi welches in der unterhaltungsindustrie h chste wiedergabetreue bezeichnet und dementsprechend in der regel mit hohen preisen verbunden ist Die lo fi prototypes sind jedoch eher als low cost prototypen gemeint weil ihre herstellung nicht berm ssig grossen auf wand verlangt Abbildung 45 Material f r die lo fi prototypes Als vorbereitung werden im fachgesch ft f r zeichenbedarf allerlei farbi ge papiere stifte korrekturb nder tesafilm etc eingekauft abb 45 Rettig gibt eine recht detaillierte einkaufsliste Hiermit kann man
267. ngsschritt ist ein wichtiger schritt im ob jektorientierten lebenslauf Solche anstrengungen werden oft code entfernen und damit den z hler code des produktivit tsma es verringern und den nenner aufwand vergr ern Die manager m ssen gewarnt werden da die alten ma e nicht die ganze geschichte erz hlen und da der zus tzliche aufwand in der tat das softwareguthaben der gesellschaft vergr ert B Meyer 1996 As an example of what managers must understand consider a common industry measure of productivity the ratio of produced code to production effort A reuse conscious process may spend some time improving software elements that already work well to increase their potential for reuse in future projects This generalization task is an important step in the OO life cycle Such efforts will often remove code decreasing the productivity ratio s numerator code and thus increasing the denominator effort Managers must be warned that old measures do not tell the whole story and that the extra effort actually improves the software assets of the company A scientific theory is formalised as a mathematical model of reality from which can be deduced or calculated the observable properties and behaviour of a well defined class of processes in the physical world It is the task of theoretical scientists to develop a wide range of plausible but competing theories experimental scientists will then refute or confirm the theories by ob
268. nichts negatives ber den hersteller zu tippen Einschr nkungen der benutzerrechte von lizensierter software veranlassten auch Richard Stallman im jahr 1984 seinen sicheren arbeitsplatz am MIT auf zugeben um ein jahr sp ter die Free Software Foundation zu gr nden Die wahl dieses namens war allerdings h chst problematisch weil das englische wort free nicht nur frei sondern auch kostenlos bedeutet Stallman bem ht sich deshalb stets zu betonen free as in free speech not as in free beer Das franz sische wort libre hat nicht die gleiche doppelbedeutung wie das eng lische free deshalb verwenden viele der deutlichkeit halber statt free software den begriff FLOSS Free Libre Open Source Software Stallman gibt im GNU Manifesto 40 die folgende motivation fiir sein GNU projekt GNU s Not Unix an Ich glaube da es das Gebot der N chstenliebe verlangt da ich ein Programm das mir gef llt mit anderen teile denen es ebenfalls gef llt Software Anbieter hingegen wollen die Anwender isolieren und beherrschen wobei sie jeden Anwender dazu verpflichten nicht mit anderen zu teilen Ich weigere mich die Solidarit t mit ande ren Anwendern in dieser Weise zu brechen Ich kann nicht mit gu tem Gewissen einen Nichtoffenbarungsvertrag oder einen Software Lizenzvertrag unterzeichnen Damit ich ehrlich bleiben und trotzdem weiterhin Computer benutzen kann habe ich mich entschlossen eine
269. nning unter anderem die folgenden hinweise f r die ent wicklung von APls e Ein API sollte m glichst klein sein Je weniger typen funktionen und pa rameter vorkommen desto leichter ist das erlernen erinnern und kor rekte benutzen Als gegenbeispiel f hrt er die string klasse von C an die mehr als hundert funktionen beinhaltet und ohne handbuch praktisch nicht zu benutzen ist Ein anderes beispiel gibt es im Unix kernel von den funktionen wait waitpid wait3 und wait4 w re im grunde nur wait4 notwendig weil sich die anderen drei damit realisieren lassen Der programmierer muss nun aber die dokumentation zu allen vier funk tionen lesen bis er weiss welche davon er verwenden soll e APIs k nnen nur entworfen werden wenn ihr einsatzkontext verstanden ist Als beispiel f hrt er f r die berall vorkommenden name value pairs die funktion lookup an was soll diese funktion tun wenn zu dem nach gefragten namen gar kein wert gespeichert ist Hier bieten sich drei m g lichkeiten an eine exception werfen einen null zeiger zur ckgeben oder einen leeren string zur ckgeben Die entscheidung zwischen diesen alternativen h ngt davon ab in wel chem kontext die tabelle verwendet werden soll Wenn es als fehler be trachtet wird einen nicht existenten eintrag abzufragen ist die exception Copyright Herbert Klaeren 29 Juni 2015 58 3 6 API Entwurf sicher die richtige l sung Wenn dies nic
270. nstallierbarkeit installability Grad der effektivit t und effizienz zu dem ein produkt oder system erfolgreich in einer spezifizierten umgebung instal liert oder deinstalliert werden kann Interoperabilit t interoperability Grad zu dem zwei oder mehr systeme produkte oder komponenten informationen austauschen und die ausge tauschte information benutzen k nnen Kapazit t capacity Grad zu dem die obergrenzen eines produkt oder sy stemparameters den anforderungen entsprechen Koexistenz coexistence Grad zu dem ein produkt oder system seine gefor derten funktionen effizient ausf hren kann w hrend es eine gemeinsame umgebung und ressourcen mit anderen produkten teilt ohne sch dliche auswirkungen auf irgendein anderes produkt Komfort comfort Zufriedenheitsgrad der benutzer mit dem physischen Komfort Kompatibilit t compatibility Grad zu dem ein produkt system oder eine komponente informationen mit anderen produkten systemen oder kom ponenten austauschen kann und oder seine geforderten funktionen aus f hren kann indem es sich die gleiche hardware oder softwareumge bung teilt Kontextabdeckung context coverage Grad zu dem ein produkt oder system mit effektivit t effizienz risikofreiheit und befriedigung benutzt werden kann sowohl in spezifizierten einsatzkontexten als auch in kontexten ber die anf nglich ausdr cklich identifizierten hinaus Kontextvollst ndigkeit context completeness Grad zu d
271. ntQueue beispiel Hier werden aller dings konstrukte des GNU make verwendet die ber das urspr ngliche make von Stuart Feldman hinausgehen In den ersten zeilen wird nur eine variable MODULES definiert welche als abk rzung f r die hier beteiligten module dient und es werden allgemeine regeln f r symboldateien und objektmodule von implementierungsmodulen beschrieben Hundertprozentig hilfreich ist die regel f r die objektmodule allerdings noch nicht da sie nicht auf die importe in den definitionsmodulen eingeht Die automatische variable lt steht dabei f r die erste und in die sem fall einzige abh ngigkeit Die erste echte strophe ist die f r das ausf hrbare programm TestSchedule Sie beschreibt dass dieses von TestSchedule o und den objektmodulen aller module aus der variablen MODULES abh ngt Die komplizierte wendung mit 37F r einige typen von dateien z B C programme sind solche regeln nicht n tig da make f r diese bereits ber eingebaute regeln verf gt Copyright Herbert Klaeren 29 Juni 2015 184 9 2 Das werkzeug make den prozentzeichen innerhalb der klammer ist ein sog modifikator der hier an gibt dass die einzelnen namen innerhalb von MODULES am ende jeweils durch o erg nzt werden sollen Deshalb wirkt diese zeile gerade so als ob wir hier TestSchedule TestSchedule o Jobs o PrintQueue o geschrieben h tten Die in abb 53 gew hlte version ist aber unter der vor
272. ntal risk mitigation Figure 3 Quality in use model Context completeness Flexibility Abbildung 65 Qualit t im gebrauch nach ISO System Software Product Quality Functonal Time behaviour Co existence Maturity Confidentiality Completeness Resource utilisation interoperability Availability Integrity Functonal Capacity Fault tolerance Non repudiation en Recoverability Accountability Functonal appropnateness Authenticity Figure 4 Product quality model Maintain ability Compatibility Portability Adaptability Installabilty Replaceability Abbildung 66 Produktqualit t nach ISO swprop tex B NICHTFUNKTIONALE EIGENSCHAFTEN VON SOFTWARE 221 on f hrt etwa das Quality Capacity Syndrome als eine der beiden haupt ursachen f r das scheitern an sich guter projekte an Hier wird w hrend der entwicklung zwar grosser wert auf die qualit t der software im sinne der korrektheit wartbarkeit etc gelegt aber die notwendigen leistungsmerkmale nicht gen gend ber cksichtigt Beim einsatz unter realistischen bedingungen stellt sich dann heraus dass grundlegende nderungen am entwurf n tig sind s das zitat von Mackey im anhang Komplexe systeme fallen h ufig gerade dann aus wenn sie am dringendsten ben tigt werden Beispielshalber fiel das fahrkartenverkaufs und reservierungssystem der amerikanischen eisenbah nen Amtrak ende November 1996 gerade an de
273. nzwischen veralteten schnitt stelle von B ausging ist mit grosser wahrscheinlichkeit durch die nderung der schnittstelle ung ltig geworden Der versionskonflikt kann nur behoben werden indem A erneut compiliert wird wobei m glicherweise durch die ver nderung der schnittstelle von B nunmehr fehler vom compiler angemerkt werden Ein beispiel soll dies verdeutlichen Angenommen in dem PrintQueue beispiel wird nachdem das system fertig programmiert ist nachtr glich der deskriptor der jobs von 40 auf 20 zeichen verk rzt W rde man nun einfach das system erneut zusammenlinken g be es den klassischen buffer overflow Ein deskriptor der l nge 20 w rde vom modul PrintQueue mit 40 zeichen berf llt Im falle von Modula 2 kann dies nicht passieren denn der linker w rde ohne irgendetwas von der gr sse von datenstrukturen wissen zu m ssen in jedem fall einen versionskonflikt anmerken der sich nur dadurch aufl sen liesse dass das modul PrintQueue erneut bersetzt wird Dann sind aber die deskriptoren auch auf 20 zeichen begrenzt der buffer overflow kann sich nicht ereignen Auf den ersten blick erinnern die definitionsmodule an die aus der program miersprache C bekannten header files bzw umgekehrt in wirklichkeit wird von dem modulkonzept in Modula 2 jedoch wesentlich mehr geleistet W h rend ein header file in C nur deklarationen von namen enth lt die dem com piler helfen k nnen ein vorliegendes programmst ck zu
274. o Build just enough to meet A B A B today s requirements Refactoring Keep design as simple as possible but no simpler Implement f0 Lo Lo f eHigh quality is both a side effect and an Refactor j Hi Example Move Method enabling factor eThe code says everything once and only once N Copyright 2002 William C Wake All rights reserved Cycle takes 5 15 minutes ER WliamWake acmorg http Awwwxp123 com Abbildung 48 XP on one page Eine weitere eigenart von XP ist das pair programming Programmierer d r fen niemals alleine arbeiten sondern sitzen immer zu zweit vor einem rech ner Auf diese art und weise soll jede einzelne codezeile bereits das resultat einer kritischen bewertung sein Die grundregel bei XP heisst Do the simp lest thing that could possibly work Es findet deshalb immer und immer wieder eine berarbeitung des schon geschriebenen codes statt mit dem ziel diesen zu vereinfachen Im brigen m ssen die programmierer bevor sie neuen code zum system hinzuf gen zuerst einen testfall schreiben der mit dem alten system nat rlich fehlschl gt der neue code muss diesen test bestehen Einen berblick ber XP auf einer seite von Bill Wake www xp123 com bie tet abb 48 In der ersten publizierten version von XP spricht Beck von 12 Xtuden in anlehnung an die etiiden die er im gitarrenunterricht spielen musste Copyright Herbert
275. o exportiert wird auch woanders importiert Werden alle parameter von funktionen auch verwendet Dieses kriterium l sst sich z t syntaktisch durch werkzeuge berpr fen 2 Ausgewogenheit gewisser masse e Modulgr sse Modulzahl Modulgr sse und modulzahl sind offensicht lich umgekehrt proportional zueinander mit der anzahl der module steigen auch die kosten f r die schnittstellenbeschreibung linear an Auf der anderen seite wird jedes einzelne modul bersichtlicher je kleiner es ist In abh ngigkeit von dem zugrundeliegenden problem gibt es immer einen optimalen bereich f r das verh ltnis von modul gr sse zu modulzahl Copyright Herbert Klaeren 29 Juni 2015 54 3 5 Qualit t eines entwurfs e Importzahl fan out e Verwendungszahl fan in e Tiefe Breite der modulstruktur Tiefe und breite der modulstruktu ren sollen in verniinftiger relation zueinander stehen s abb 17 Ex tremf lle einer sehr breiten und flachen wie auch einer sehr engen und tiefen modulstruktur bed rften einer besonderen legitimation Importzahl ee Tiefe Breite Verwendungszahl Abbildung 17 Tiefe und breite einer modulstruktur 3 Modulbindung cohesion Modulbindung ist ein mass daf r wie stark der zusammenhang zwischen den einzelnen prozeduren und daten ei nes moduls wirklich ist d h daf r ob das modul eine in sich abgeschlos sene aufgabe realisiert Modulbindung ist eine eigenschaft j
276. o zu definieren dass h chstens 7 klassen oder sub systeme in einem subsystem zusammengefasst werden 4 5 4 Definition der attribute Bereits im ersten schritt hatten wir klassen zusammen mit ihren attributen er fasst Hier geht es nun darum diese attribute zu konsolidieren und vor allem Copyright Herbert Klaeren 29 Juni 2015 84 4 6 Muster beztiglich ihres datentyps festzulegen Dabei muss auch bedacht werden dass nicht alle m glichen attribute einer betrachteten klasse tats chlich relevant sind Innerhalb der klassifikationsstruktur sind attribute so hoch wie m glich anzusiedeln 4 5 5 Definition der methoden Auch methoden werden in der klassifikationsstruktur so hoch wie m glich angesiedelt Tendenziell sollten methoden erst nach der statischen modellierung gesucht und charakterisiert werden Einige methoden dr ngen sich aber bereits w h rend der statischen modellierung geradezu auf und k nnen bereits dann fest gehalten und charakterisiert werden Da die meisten OO prozesse iterativ sind ist es sowieso schwierig statische und dynamische entwurfst tigkeiten zeitlich voneinander zu trennen Trotzdem bleibt auch hier die faustregel die daten zuerst g ltig H ufig l sst sich die leistung einzelner methoden einfach in nat rlicher sprache charakterisieren indem man vor und nachbedingungen und ver n derte zust nde beschreibt Nat rlichsprachige oder informell mathematische beschreibungen k nnen wi
277. obachtung Wir diskutieren aber im brigen nur ber software Vorgehensmodelle sind etwas allgemeines sie beschreiben einen plan wie man die softwareentwicklung organisieren m chte Daraus entwickeln sich dann individuelle software lebensl ufe je nachdem wie einzelne projekte dann tats chlich verlaufen H ufig findet jedoch in der literatur und auch in dieser vorlesung eine leichte begriffsverwirrung statt indem n mlich auch das vor gehensmodell selbst als software lebenslauf software life cycle bezeichnet wird Vorgehensmodelle f r die softwareentwicklung gibt es in grosser zahl Viel fach sind sie an die speziellen gepflogenheiten eines bestimmten teams oder Copyright Herbert Klaeren 29 Juni 2015 132 6 1 Software lebensl ufe einer firma angepasst oder nehmen r cksicht auf die gegebenheiten bestimm ter software systeme zur unterst tzung der software entwicklung sogenann te Software Engineering Environments Ausserdem bestehen unterschiede darin wie fein einzelne t tigkeiten dabei untergliedert sind und wieweit r ck griffe im entwicklungsprozess dargestellt werden Das einfachste modell das sich aber so nirgendwo findet ist in abb 39 enthalten Es passt nicht nur auf Ausf hrung Abbildung 39 Trivialer software lebenslauf die software entwicklung sondern auf fast alle t tigkeiten bei denen irgen detwas hergestellt wird beispielsweise auch auf den bau eines wohnhauses Man erkennt aber au
278. ock check Condition Iteration hasStock remove gs needsReorder needsToReorder 4 Se f Delegation e Return needsReorder new gt a Reorder Item ae Sa EE hasStock new a Delivery t gt Item l Creation 1 1 Abbildung 25 Sequenzdiagramm Copyright Herbert Klaeren 29 Juni 2015 76 4 4 Model driven architecture die Model Driven Architecture MDA vorgeschlagen Der gedanke dabei ist es ein systemmodell in vier getrennten schichten darzustellen Kleppe u a 2003 Computation Independent Model CIM Hier werden die gesch ftsprozesse auf hohem abstraktionsniveau beschrieben ohne dabei r cksicht darauf zu nehmen an welchen stellen hier computer bzw programme zum ein satz kommen Platform Independent Model PIM In diesem modell werden die gesch fts modell anteile die von computern bernommen werden gesondert dar gestellt ohne dabei jedoch auf details einzugehen welche kombination von hardware und software hier verwendet werden soll Diese beiden schichten sind rein problemorientiert sie nehmen keine details irgendeiner l sung vorweg Platform Specific Model PSM Von dieser schicht an geht es nicht mehr so sehr um das problem als vielmehr um seine l sung Es liegt deshalb ein kreativer schritt im bergang vom PIM zum PSM low level design hier werden eine menge entwurfsentscheidungen getrofffen Code model Dieses modell entspric
279. olle der klasse ver ndern k nnen set methoden Beachte wie sich ausserdem in der notation der methoden die angleichung an die programmiersprache niedergeschlagen hat title String BE der _ name String customer number Integer date Date dateOfBirth Date orders items number String name String price Amount Abbildung 28 Bestellung im PIM Der unterschied zwischen PIM und PSM wird noch deutlicher wenn man ein komplizierteres klassendiagramm wie in abb 28 betrachtet Hier wurde die kundenklasse noch um eine bestellungsklasse Order mit einzelnen arti keln Klasse Item und die dazwischen bestehenden beziehungen mit ihren Copyright Herbert Klaeren 29 Juni 2015 78 4 4 Model driven architecture Customer title String number Integer number String name String date Date name String dateOfBirth Date customer Customer price Amount orders Set items Set getNumber String getTitle String getNumber Integer setNumber n String setTitle title String setNumber n Integer getName String getName String getDate Date setName s String setName name String setDate d Date getPrice Amount getDateOfBirth Date getCustomer Customer setPrice p Amount setDateOfBirth d Date setCustomer c Customer getOrders Set getltems Set setOrders o Set setltems s Set Abbildung 29 Bestellung im Java P
280. on denen es drei unterschiedliche typen gibt Vorbedingung precondition Die vorbedingung einer methode dr ckt anfor derungen aus die jeder korrekte aufruf erf llen muss Wird eine methode mit werten aufgerufen die nicht die vorbedingung erf llen so hat der kunde den kontrakt verletzt die methode braucht nichts sinnvolles zu tun Nachbedingung postcondition Die nachbedingung dr ckt eigenschaften aus welche im gegenzug durch eine ausf hrung der methode garantiert wer den Die garantie betrifft jedoch ausdr cklich nur den fall wo die argu mente die vorbedingung erf llen swmodu tex 2 MODULKONZEPT 25 Invarianten In der regel gibt es zwischen den einzelnen variablen eines mo duls einer klasse bei Meyer konsistenzbedingungen und nach der rei nen lehre des geheimnisprinzips ist dieser zustand eines moduls nach aussen hin verborgen Er kann nur vom modul selbst ver ndert werden ausk nfte ber den zustand sind nur insofern m glich als das modul selbst hierzu funktionen bereitstellt Da die genannten konsistenzbedin gungen ber die zeit hinweg unver ndert garantiert sein sollen nennt man sie invarianten des moduls Zu beachten ist dass solche invarianten solange das modul noch am rechnen ist d h also solange code aus diesem modul ausgef hrt wird selbstverst ndlich verletzt sein k nnen dies gilt auf einer anderen konzeptuellen ebene auch f r schleifeninvari anten die immer nur am
281. onen abfragen und sie dazu ver wenden seinen zustand dem des gegenstands anzupassen Das folgende interaktionsdiagramm zeigt das zusammenwirken zwischen ei nem gegenstand und zwei beobachtern Copyright Herbert Klaeren 29 Juni 2015 92 4 7 Das beobachter muster aConcreteSubject aConcreteObserver anotherConcreteObserver SetState Notify Update if GetState Update gt f GetState le In diesem bild wartet der beobachter der die nderung im gegenstand her vorgerufen hat mit der anpassung seines eigenen zustands bis er vom ge genstand dazu aufgefordert wird und der gegenstand sendet sich selbst eine Notify nachricht Das muss nicht unbedingt so gemacht werden es ist auch m glich dass beobachter die Notify nachricht senden 4 7 9 Konsequenzen Dieses muster erlaubt es gegenst nde und ihre beobachter separat zu ndern beobachter k nnen hinzugef gt und entfernt werden ohne dass der gegen stand oder andere beobachter ge ndert werden m ssen Weitere konsequen zen sind 1 Es gibt nur eine lose kopplung zwischen gegenstand und beobachter Al les was ein gegenstand wissen muss ist eine liste seiner beobachter die alle auf eine einheitliche schnittstelle passen 2 Das muster ist vorger stet f r eine kommunikation nach dem broadcast prinzip Die benachrichtigungen die von einem gegenstand ausgehen m ssen nicht zwangsweise an best
282. onshaltung menschen als elegant empfunden werden sind vermutlich auch die technisch erfolgreichen und damit richtigen l sungen Ein ganz anderer vergleich wird von Valk 1997 gezogen der hnlichkeiten zwischen informatikern und juristen erkennt wie der jurist arbeitet auch der informatiker in einem wohldefinierten formalen system von regeln die seinem auftraggeber nicht ohne weiteres verst ndlich sind Formales vorgehen und soziale wirklichkeit stehen zun chst beziehungslos nebeneinander oder gar im widerspruch zueinander Die beratungs und vermittlungskompetenz beider berufsgruppen ist daher in besonderem mass gefordert Programmierung ist wie gesetzgebung ein prozess bei dem ein gew nschtes verhalten auf eine art und weise spezifiziert wird die nicht unmittelbar einsichtig erkennen l sst ob der gew nschte effekt erzielt wird C 3 Geschichte der versionshaltung Bereits 1975 entstand das werkzeug SCCS Source Code Control System von Marc J Rochkind das heute nicht mehr weiterentwickelt und auch nicht ver wendet wird obwohl es in den Unix distributionen immer noch enthalten ist Ein bleibendes detail von SCCS sind aber die identification keywords In den verwalteten dateien schaute SCCS beim einchecken auf zeichenketten die mit dollarzeichen beginnen und enden und falls es dazwischen die bezeichnung einer seiner variablen findet z B Id f r die identifikation der datei Author f r den letzten autor Revision f r d
283. ontract Wieso ist es sinn voll die einhaltung der vorbedingungen an der aufrufstelle zu berpr fen Nennen sie drei aspekte unter denen bei einer softwaretechniksprache die korrekte verwendung einer schnittstelle berpr ft wird Auf welche weise garantiert Modula 2 die konsistenz zwischen schnitt stellenbeschreibung und implementierung von modulen Erl utern sie den unterschied zwischen qualifizierendem import und mo dulimport Vergleichen sie die sichtbarkeitsregeln blockstrukturierter sprachen mit denen des modulkonzepts swmodu tex 3 SYSTEMENTWURF 45 3 Systementwurf Das kapitel ber das modulkonzept hat nat rlich die frage aufgeworfen wie man denn zu einer modulstruktur kommen soll bzw kann und wie man es anstellen kann dass diese struktur m glichst gut ist Einen ersten ansatz da zu haben wir bereits pr sentiert die definition geeigneter datenabstraktionen Mehr soll in diesem kapitel vorgestellt werden Eine gewisse schwierigkeit besteht darin dass aus gr nden der bungsorga nisation wichtige phasen im prozess der softwarekonstruktion noch gar nicht vorgestellt worden sind und auch jetzt noch nicht dargestellt werden k nnen 3 1 Der systembegriff Es geht in der softwaretechnik immer darum ein system zu entwickeln wel ches ein bestimmtes problem der praxis l st bzw ein in der praxis schon existie rendes system mit dem computer unterst tzen soll Auch das problem bzw da
284. opyright Herbert Klaeren 29 Juni 2015 20 oder gar unm glich gemacht werden Im vorgriff auf sp tere teile der vorlesung soll erw hnt werden dass soft wareprojekte mit einer analysephase beginnen in welcher die funktionalen an forderungen des zu erstellenden systems ermittelt werden aber auch nicht funktionale anforderungen wie die im anhang B aufgelisteten Eine phase des systementwurfs abschnitt 3 entwickelt eine systemarchitektur die das in der problemspezifikation festgelegte system implementiert Hauptproblem dabei ist die bew ltigung der zugrundeliegenden komplexit t Es erscheint deshalb nat rlich das system in teilsysteme zu zerlegen die leichter berschaubar und implementierbar sind Eine vern nftige modularisierung wird etwa unter dem gesichtspunkt der anpassbarkeit alle die daten und funktionen die von einer wahrscheinli chen nderung betroffen sein k nnten nach m glichkeit in einer abgeschlosse nen systemkomponente in einer art und weise zusammenfassen dass die rest lichen strukturkomponenten davon unabh ngig sind Sie minimiert dadurch auch den kommunikationsaufwand zwischen den entwicklern verschiedener teile indem sie funktionen und daten nach inhaltlichen kriterien zu modulen zusammenpackt Modularisierung dient also e der bew ltigung von problem und programmkomplexit t da probleme und aufgaben in teilprobleme und aufgaben zerlegt werden e der verbesserung der wartbarkeit in
285. parameter Wird ein parameter nur gelesen oder auch geschrie ben Seiteneffekte eigentlich nebenwirkungen das wort seiteneffekte ist eine ungl ckliche bersetzung von side effects Welche globalen variablen werden von der funktion modifiziert Vorbedingungen nachbedingungen entsprechend dem design by con tract Exceptions die ausnahmesignalisierungen die von der methode gewor fen werden k nnen Invarianten Die invarianten des DBC k nnen nicht zur exportschnittstelle ge h ren da sie aussagen ber den inneren zustand des moduls machen der aber nach aussen nicht sichtbar ist Rumpf bestehend aus den exportierten funktionen weiteren funktionen die nur innerhalb des moduls zu verwenden sind und ggf einem initialisie rungscode der zu beginn des programmlaufs die invarianten etabliert Oft wird vorgeschlagen nur funktionale schnittstellen zu verwenden d h nur funktionen zu exportieren In der praxis ist es n mlich vielfach blich z b auch variablen zu exportieren in einer funktionalen schnittstelle w re dies nicht m glich sondern es m sste ein paar von funktionen zum auslesen und ver ndern dieser variablen bereitgestellt werden Der funktionale stil hat den vorteil dass das modul selbst daf r sorgen kann dass die invarianten erhal ten bleiben Ausserdem ist der funktionsaufruf ein relativ gut sichtbares ereig nis an dem protokollierungs und testmassnahmen angeh ngt werden k n nen w hrend die
286. pas sagen erschliessen sich in ihrer bedeutung unmittelbar Die momentan aktu elle version 3 der GPL ist am 29 Juni 2007 verabschiedet worden Wirklich verbindlich ist nur der englische text zu finden unter http www gnu org licenses gpl html aber es gibt aber zur erleichterung f r deutsche leser eine inoffizielle bersetzung unter http www gnu de documents gpl 3 0 de html Hieraus sollen einige wesentliche passagen zitiert werden 4 Unver nderte Kopien Sie d rfen auf beliebigen Medien unver nderte Kopien des Quelltextes des Programms wie sie ihn erhalten bertragen sofern Sie auf deutliche und angemessene Weise auf jeder Kopie einen angemessenen Urheberrechts Vermerk ver ffentlichen alle Hinweise in takt lassen da diese Lizenz und s mtliche gem 87 hinzugef gten Ein schr nkungen auf den Quelltext anwendbar sind alle Hinweise auf das Nichtvorhandensein einer Garantie intakt lassen und allen Empf ngern gemeinsam mit dem Programm ein Exemplar dieser Lizenz zukommen lassen Sie d rfen f r jede bertragene Kopie ein Entgelt oder auch kein Ent gelt verlangen und Sie d rfen Kundendienst oder Garantieleistungen gegen Entgelt anbieten 5 bertragung modifizierter Quelltextversionen Sie d rfen ein auf dem Programm basierendes Werk oder die n tigen Modifikationen um es aus dem Programm zu generieren kopieren und bertragen in Form von Quelltext unter den Bestimmungen von 84 vorausgesetzt da Si
287. pt the new date or remove enough lower priority stories to make the date It is not a disaster for the customer to make changes it is an inevitability Have clear and continuing communications with the client both the end user and the re sponsible authority Produce quality work at all times and have support for doing a quality job even if it takes a little longer and requires buying tools Ask for and receive help from peers superiors and customers and have time and opportu nities built into the schedule for communicating with other project members Make and update your own estimates including having an input into your long range schedule and goals Have responsibility for your own day to day scheduling and goals Have management client support for continuing education including but not limited to books subscriptions time and money to try new programming tools meetings training etc SustainablePace Forty HourWeeks Use your own development tools where appropriate as long as the end result is compatible with your CustomersExpectations http c2 com cgi wiki DeveloperBill0fRights Oct 2008 One of the things that makes engineering to interesting besides the fact that they ll pay you to do it is the interplay between so many contravening influences features performance technology risk schedule design team capability and economics You can find a perfect balance among all of these and still fail bec
288. quickly as possible e accept the consequences of your actions http c2 com cgi wiki DeveloperBill0fResponsibilities Aug 2006 Customer Bill of Rights You have the right to swquote tex E ZITATE ZUR SOFTWARETECHNIK 245 a b c d Du e f eS g Declare the business priority of every UserStory Have an overall plan to know what can be accomplished when and at what cost Get the most possible value out of every programming week See progress in a running system proven to work by passing repeatable tests that you specify Advise developers of changes in the requirements Be informed of schedule changes in time to choose how to reduce scope to restore the original date Cancel project at any time and be left with a useful working system reflecting investment to date http c2 com cgi wiki CustomeBill0fRights Mar 2010 25 Developer Bill of Rights You have the right to 26 Know what is needed with clear declarations of priority in the form of detailed requirements and specifications In ExtremeProgramming the customer can change the requirements and specifications by adding or removing stories or change the priority of stories The programmer gets to see the new stories estimate them and inform that customer of the impact on the schedule If the schedule no longer meets the customer s desired ship date then the developer informs the customer and the customer can either acce
289. r ffentlichen Wieder gabe Das Recht der ffentlichen Wiedergabe umfasst insbesondere 1 das Vortrags Auff hrungs und Vorf hrungsrecht 19 2 das Recht der ffentlichen Zug nglichmachung 19a 3 das Senderecht 20 4 das Recht der Wiedergabe durch Bild oder Tontr ger 21 5 das Recht der Wiedergabe von Funksendungen und von ffentlicher Zug nglichmachung 8 22 3 Die Wiedergabe ist ffentlich wenn sie f r eine Mehrzahl von Mit gliedern der ffentlichkeit bestimmt ist Zur ffentlichkeit geh rt jeder der nicht mit demjenigen der das Werk verwertet oder mit den anderen Perso nen denen das Werk in unk rperlicher Form wahrnehmbar oder zug nglich gemacht wird durch pers nliche Beziehungen verbunden ist Damit stehen dem urheber sehr weitgehende rechte in bezug auf sein werk zu ein programmierer beispielsweise k nnte unter berufung auf sein urheber recht genau bestimmen wer sein programm wann zu welchen zwecken und wie lange benutzen darf er k nnte auch sein programm zur ckverlangen und dabei darauf bestehen dass auch alle sicherungskopien gel scht werden Eine v llig andere wenn auch benachbarte thematik sind die patente 1 des deutschen patentgesetzes sagt Copyright Herbert Klaeren 29 Juni 2015 200 1 Patente werden fiir Erfindungen auf allen Gebieten der Technik er teilt sofern sie neu sind auf einer erfinderischen T tigkeit beruhen und ge werblich anw
290. r Personal Software Process von Humphrey 2000 Solche verteilungen nennt man Pareto verteilungen nach dem italienischen volkswirtschaft ler und soziologen Vilfredo Pareto 1848 1923 sie finden sich sehr h ufig in allen m glichen bereichen Siehe dazu unbedingt das interessante buch von Koch 1998 Ausfallzeiten k nnen richtig teuer werden Von Reinhard B ndgen IBM h rte ich dass eine stunde ausfall bei einem geldautomatendienst 14 500 USD kostet bei einem flugreservie rungsdienst 89 500 USD bei einer kreditkarten authentisierung 2 600 000 USD Copyright Herbert Klaeren 29 Juni 2015 102 9 Wenn alle anderen parameter bereinstimmen dann kostet es 50 prozent mehr pro quellinstruktion hochzuverl ssige softwareprodukte zu entwickeln als soft wareprodukte mit niedriger zuverl ssigkeit Andererseits ist diese investition mehr als gerechtfertigt wenn das projekt sp rbare betriebs und wartungskosten beinhaltet 10 Ungef hr 40 bis 50 prozent der benutzerprogramme enthalten nicht triviale feh ler Hier geht es um programme die der benutzer eines softwarepro dukts z b eines tabellenkalkulationsprogramms selbst schreibt Die leh re aus dieser beobachtung ist dass entwickler von programmierbaren an wendungen gen gend viele sicherheitsgurte und airbags in ihr produkt einbauen m ssen Eine bliche methode sich von der korrektheit von software zu berzeugen ist das testen Von E W Dijkstra s
291. r Verpackung im Schrumpfschlauch durch dessen Aufschneiden man automatisch die Lizenzbedingungen akzep tiert hat ihre eigenen Gesetze Mag der Kunde bei individu ell f r ihn angefertigter Software hnlich wie bei jedem Werk vertrag noch ein Recht darauf haben da das Produkt genau das von ihm beschriebene Problem l st oder aber nachgebes sert zur ckgenommen oder doch mit einem deutlichen Preis abschlag versehen werden mu so existiert bei shrink wrap soft ware etwas professioneller als COTS Software Commercial off the shelf bezeichnet kein wirklicher Vertrag zwischen Program mierer und K ufer Die Leistungen des in bunter ansprechen der Verpackung angebotenen Programms werden eher in gro en Z gen und jedenfalls mit deutlichen Z gen von in der Wer bung allgemein blicher bertreibung beschrieben Dement sprechend bewerten die Kunden dann auch das Resultat ihres Kaufs Au erdem haben sie ja bereits durch das ffnen der Ver packung die Garantie Bedingungen akzeptiert die in aller Re gel nur versprechen da die CDs rund silberfarbig und mit ma schinenlesbaren Aufzeichnungen versehen sind Dar ber hinaus wird jede Verantwortung abgelehnt 2 PC software is a way of life F r die PC Kunden ist Software nicht einfach Software sondern Bestandteil ihres Lebensstils ihrer Weltanschauung So wie es in den f nfziger Jahren wichtig war immer das neueste Auto vor dem Haus stehen zu haben sams tag
292. r angeblichen flexibilit t ger hmt es hat sich jedoch herausgestellt dass nichts so starr ist wie eine einmal eingef hrte klassenhierarchie Hieran l sst sich nur noch sehr schwer sp ter r tteln Es ist deshalb weise zun chst einmal auf klassifikationen keinerlei r cksicht zu nehmen wenn sie sp ter ein gef hrt werden sind die folgenden punkte unbedingt zu beachten e Die bildung von oberklassen hat nur dann eine berechtigung wenn es situationen gibt in denen objekte mehrerer unterklassen gleichartig be handelt werden e Jede unterklasse muss den kontrakt design by contract der oberklasse einhalten Insbesondere muss sie alle attribute und methoden der ober klasse besitzen In der nachfolgenden pr fung und bewertung werden aus den m glichen generalisierungen und spezialisierungen die nicht als relevant betrachteten wiederum ausgeschieden Durch analoge fragen findet man auch aggregati onsstrukturen heraus 4 5 3 Aufteilung des modells in subsysteme Unabh ngig von der strukturierung des problemfelds durch klassifikation an hand gemeinsamer attribute und methoden kann die schrittweise erfassung der beschreibung des problemfelds f r den leser durch eine einteilung in subsysteme sachgebiete subjects bei Coad Yourdon erleichtert werden Psychologische forschungen haben ergeben dass das menschliche kurzzeit ged chtnis maximal 5 7 dinge gleichzeitig erfassen kann Dementsprechend versucht man subsysteme s
293. r die Softwarehersteller kein Thema Die folgenden beispiele sind nur eine kleine auswahl diese liste l sst sich praktisch endlos fortsetzen e In Warschau rollt ein Airbus ber die landebahn hinaus und geht in flam men auf weil die bordcomputer die ausl sung der schubumkehr verwei gern Neumann 1995a p 46 das flugzeug gilt erst als gelandet wenn alle drei fahrwerke belastet sind und die r der sich drehen Eine kor rektur dieses verhaltens f hrt sp ter zu einem beinahe unfall in Ham burg Nachdem ein fahrwerk auf dem boden aufgesetzt hat schaltet das flugzeug in den bodenmodus wodurch unter anderem der querruderein schlag begrenzt wird Ein pl tzlicher seitenwind schleudert das flugzeug auf die andere seite die tragfl che ber hrt den boden ohne dass die pi loten etwas dagegen tun k nnen S ddeutsche Zeitung 2010 Traufetter 2010 Reu 2010 Eine grosse zusammenstellung von computerfehlern nicht nur im zusammenhang mit software wird von P G Neumann 1995a gef hrt sweinf tex 1 EINF HRUNG WAS IST SOFTWARETECHNIK 3 e Im neuen flughafen Denver versagt die softwaresteuerung der gep ck transportb nder derart dass koffer zerrissen werden Swartz 1996 Der flughafen wird mit 16 monatiger versp tung er ffnet bei einem verdienst ausfall von rund einer million Dollar pro tag e Durch eine falsche software ger t die f r 11 milliarden Mark entwickel te Ariane 5 ausser kontrolle und muss gespren
294. r grenzen der belastbarkeit des materials Es geh rt zum guten ton dass bis zu einem gewis sen grad auch der nicht bestimmungsgem sse gebrauch eines apparats oder bedienungsfehler entweder konstruktiv verhindert oder auch so sicher wie m glich gemacht werden In jedem fall versucht der ingenieur durch gewisse sicherungen berdruckventile sollbruchstellen elektr schmelzsicherungen einen denkbaren schaden m glichst gering zu halten Sehr sch n wird dies von Alexander Spoerl anh E s 239 beschrieben Typisch f r die arbeit eines ingenieurs ist es also dass er widerspr chliche anforderungen in einklang bringen soll Wir zitieren aus dem auch f r zuk nf tige software ingenieure h chst lesenswerten buch D rner 1989 p 97 In einer komplexen Situation ist es fast immer notwendig sich nicht nur um ein Merkmal der Situation zu k mmern also ein Ziel anzustreben sondern man mu viele Ziele gleichzeitig verfolgen Wenn man aber mit einem komplizierten vernetzten System umgeht so sind die Teilziele kaum je ganz unabh ngig voneinander Es ist vielmehr oft der Fall dass Teilziele in einem kontradiktorischen Verh ltnis zueinander stehen Auch die Encyclopeedia Britannica sieht diese Problematik Anders als der wissenschaftler ist der ingenieur nicht frei in der auswahl der probleme die ihn interessieren er muss die probleme so l sen wie sie sich stellen seine l sung muss widerspr chliche anforderungen erf llen
295. r haben die meisten compiler bibliotheken und betriebssysteme auch bekannte fehler die dazu f hren dass bestimmte teile von programmen je nach plattform unterschiedlich abgefasst werden m ssen Die meisten pro swtool tex 9 SOFTWAREWERKZEUGE 187 Files used in preparing a software package for distribution your source files gt autoscan gt configure scan gt configure ac configure ac gt autoconf gt configure aclocal m4 6 gt autoheader gt config h in acsite m4 Makefile in gt Makefile in Files used in configuring a software package i dete ese EEE gt config cache configure gt config log config h in v gt config h gt config status gt make Makefile in gt Makefile Abbildung 54 GNU distribution grammiersprachen verf gen ber mechanismen zur bedingten compilation in der Sprache C sind diese durch den pr prozessor und seine handhabung von variablen durch define und ifdef dargestellt Der gleiche mechanismus kann auch dazu verwendet werden verschieden leistungsf hige versionen des gleichen programms z b evaluationsversion vollversion herzustellen Damit dieser mechanismus funktioniert m ssen nat rlich vor dem compilati onsprozess alle diese pr prozessorvariablen richtig gesetzt werden Ein weiteres problem das blicherwei
296. res mittel f r die projektplanung und projektf h rung Das erste in der SE literatur dokumentierte vorgehensmodell stammt von Royce 1970 auf dieser basis wurde 1976 ein etwas detaillierteres sche ma von Barry W Boehm vorgeschlagen s abb 40 dieses bild ist auch als Waterfall chart bekannt SYSTEM REQUIREMENTS VALIDATION SOFTWARE REQUIREMENTS L3 PRELIMINARY DESIGN _ gt VALIDATION DETAILED DESIGN VALIDATION j CODE AND a DEBUG DEVELOPMENT TEST TEST AND PREOPERATION VALIDATION TEST OPERATION AND PP MAINTENANCE REVALIDATION VALIDATION Abbildung 40 Wasserfallmodell nach Boehm Hier wird der systementwicklungsprozess in sieben voneinander getrenn te phasen zerlegt die logisch aufeinander aufbauen wobei in der tat entspre chend den zuvor gemachten bemerkungen unterschieden wird zwischen sy stem requirements und software requirements Als endergebnis jeder einzelnen phase k nnen wir uns vorstellen dass gewisse dokumente spezifikationen programme testpl ne etc abgeliefert werden Das management spricht im zusammenhang mit den phasen berg ngen sehr gerne von sog meilensteinen milestones Diese meilensteine dienen zur strukturierung des gesamten ent wicklungsprozesses haben aber andererseits auch die aufgabe die zuteilung der ressourcen festzulegen und den projektfortschritt zu ermitteln Man nennt ein
297. rgehensmodelle und was sind die relevanten gr en 4 Vergleichen sie die produktivit tsmetriken des wasserfallmodells mit de nen der fr hen prototypen und des inkrementellen baus swll tex 6 VORGEHENSMODELLE FUR DIE SOFTWAREENTWICKLUNG 153 5 Beschreiben sie die 12 kernpraktiken des Extreme Programming 6 Was sind bad code smells Was versteht man unter refactoring Copyright Herbert Klaeren 29 Juni 2015 154 6 6 Agile methoden swll tex 7 DIE MICROSOFT METHODE 155 7 Die Microsoft methode Als kontrastprogramm zu den lebenslaufmodellen die aus der klassischen softwaretechnik stammen mag es interessant sein die methoden des markt f hrers von PC software zu studieren Hier muss man allerdings zun chst grundlegend bemerken dass diese software eine ganz andere natur hat als das was wir im vorigen kapitel diskutiert haben Einen auftraggeber mit dem der inhalt des projekts zun chst erarbeitet und spezifiziert werden muss gibt es hier nicht wir haben es mit konfektionsware zu tun shrink wrap software die aufgrund eines antizipierten interesses grosser kundenkreise in standardi sierter form vorfabriziert wird Einige zitate von einer software engineering tagung die ich aufgeschnappt habe m gen die denkweise dieses industrie zweigs beleuchten 1 Shrink wrap software has its own laws All die fertig konfektio nierte Software die in Gro m rkten im Regal steht so genannt wegen ihre
298. right Herbert Klaeren 29 Juni 2015 100 1997 bringt vor allem in dem sehr lesenswerten kapitel Habitability and Piecemeal Growth den gedanken ins spiel gute software m sse bewohn bar sein und erklart dies mit einem vergleich wie kommt es dass tiber lange zeitr ume nach und nach gewachsene geb ude wie z b mittelalterliche bur gen und kl ster so gem tlich wirken und moderne wolkenkratzer so kalt und abweisend Er zitiert hier wieder Christopher Alexander der den begriff der organischen ordnung eingef hrt hat die er folgendermassen definiert die art von ordnung die erreicht wird wenn es einen perfekten ausgleich zwischen den bed rfnissen der teile und den bed rfnissen des ganzen gibt Alexander spricht in diesem zusammenhang von der qualit t ohne na men die sich einstellt wenn eine solche organische ordnung vorliegt Gabriel 1997 listet unter anderem die folgenden eigenschaften von software auf wel che die qualit t ohne namen besitzt e Wenn ich irgendeinen kleinen teil davon anschaue kann ich sehen was vor sich geht ich brauche mich nicht auf andere teile zu beziehen um zu verstehen was irgendetwas tut Dies sagt mir dass die abstraktionen f r sich allein sinn ergeben sie sind ganzheitlich e Wenn ich irgendeinen grossen teil im berblick anschaue kann ich sehen was vor sich geht ich brauche nicht alle details zu wissen um das zu begreifen e Sie ist wie ein
299. rioritized list of requirements ordered by Business Value Requirements are broken down into User Stories by the PO Prioritize the requirements by playing the Business Value ame Wy Buy these at www agile42 com Burndown Chart Estimated remaining time of the Sprint The Burndown chart shows the amount of work remaining per Sprint It is a very useful way of visualizing the correlation between work remaining at any point in time and the progress of the Team s Use a tool such as Agilo to automatically create the Burndown Chart Learn more at www agile42 com Sprint Backlog List of committed User Stories The Sprint Backlog contains all the committed User Stories for the current Sprint broken down into Tasks by the Team All items on the Sprint Backlog should be developed tested documented and integrated to fullfil the commitment Estimate Story complexity by playing Planning Poker Buy these at www agile42 com EEr Potential Shippable Product Scrum requires at the end of each Sprint that the product is potential shippable to the customer That means the increment is thoroughly tested well structured well written code user operation of the functionality is documented Abbildung 50 Scrum cheat sheet Copyright Herbert Klaeren 29 Juni 2015 152 6 6 Agile methoden drange der in abb 50 zusammengefasst ist Mit dem XP prozess hat er die kleinteilige planung und die h ufigen releas
300. rmalismen sprachen e Schnittstellendefinition gruppenorganisation kommunikationsregeln e Projektmanagement ermittlung des projektfortschritts plane meilen steine e Dokumentationstechniken auf unterschiedlichen Ebenen benutzerhand b cher technische dokumentation e Versionskontrolle release management e Schulungsprogramme e Software support problem management hotline Ein ph nomen das sich im softwarebereich besonders unangenehm dar stellt ist das stetige wachstum von softwarepaketen Tab 3 Neville Neil 2008a liefert dazu vergleichsdaten Hier ist es sicherlich auch interessant die LOC daten der betriebssysteme mit denen in tab 1 zu vergleichen wobei aber zu bedenken ist dass ein kernel kein ganzes betriebssystem ist Copyright Herbert Klaeren 29 Juni 2015 16 1 5 Das Brookssche Gesetz Programm Version Jahr Dateien LOC ge ndert Emacs 21 2003 2 586 1 317 915 22 2008 2 598 1 771 282 34 FreeBSD kernel 5 1 2003 4 758 2 140 517 7 0 2008 6 723 3 556 087 66 Linux kernel 2 4 20 8 2003 12 417 5 223 290 2 6 25 3 2008 19 483 8 098 992 55 Tabelle 3 Wachstum von softwarepaketen 1 5 Das Brookssche Gesetz fit takes 10 men so many days to build a wall how long would it take 300 000 The wall would go up like a flash of lightning and most of the men could not have got within a mile of it Ifa cat can kill a rat in a minute how long would it be killing 60 000 rats
301. rnung aller objektdateien dann werden jedoch zu s tzlich auch noch die symboldateien entfernt Ein aufruf von make test sorgt daf r dass alle f r den programmtest n tigen dateien hergestellt bzw aktua lisiert werden und das testprogramm anschliessend im g nstigen fall auch gleich gestartet wird Der arbeitszyklus des typischen Unix programmierers l sst sich in der tat durch die schleife think edit make debug zutreffend beschreiben make tar sorgt daf r dass die jeweils aktuelle version der quelldateien in ei nem archiv namens PrintQueue tgz abgelegt werden Ein wiederholter aufruf von make tar ohne dass zwischendurch eine der quelldateien ber hrt wurde f hrt nur zu der meldung Target tar is up to date ohne irgendwel che aktionen Kernpunkt der ganzen anwendung von make ist selbstverst ndlich dass der makefile korrekt erstellt wurde Werden nicht alle abh ngigkeiten durch den makefile wirklich wiedergegeben so wird auch der aufruf von make nicht in allen f llen das gew nschte resultat zeigen Im fall einer softwaretechnik programmiersprache wie z B Modula 2 lassen sich jedoch alle informatio nen ber die dateiabh ngigkeiten aus den modultexten selbst ablesen Es gibt deshalb softwarewerkzeuge welche aus einem programmodul ein geeignetes makefile konstruieren Das geht bei Modula 2 recht gut Bei sprachen wie C wo man nicht ausdr cklich sagen muss was man importiert geschweige denn von woher wird die
302. rungsprinzipien der OOA n mlich assoziationsstruktur und klassifizie rungsstruktur Sinnvoll ist es zuerst nach assoziationsstrukturen zu suchen da diese weniger festlegungen f r das softwaresystem im ganzen implizieren und dann erst klassifikationsstrukturen Diese letzteren findet man durch die beantwortung der folgenden fragen f r jede klasse e Welche spezialisierungen der klasse kommen innerhalb des problemfelds vor Haben die spezialisierungen besondere attribute oder methoden Spiegelt die spezialisierung einen sachverhalt der realen welt wieder Auf der suche nach spezialisierungen hilft die folgende frage weiter Ist die aufgefundene menge von attributen methoden f r jedes vorkommen der klasse relevant Falls einige attribute methoden nicht in allen verwen dungen der klasse sinnvoll sind kann es richtig sein diejenigen die ber all sinnvoll sind in einer oberklasse zusammenzufassen swoo tex 4 OBJEKTKONZEPT OOD UND OOA 83 e Welche verallgemeinerungen generalisierungen einer klasse kommen innerhalb des problemfelds vor Ist die betrachtete klasse spezialfall ei ner anderen Auf der suche nach generalisierungen hilft die folgende fra ge weiter haben klassen gemeinsame attribute methoden Dann kann es richtig sein diese in einer oberklasse zusammenzufassen Besonders mit der fr hzeitigen einf hrung einer vererbungsstruktur kann man sich viel rger einhandeln Zwar werden die OO ans tze allgemein we gen ihre
303. rzeugen 3 Welche datenstrukturen werden als grundlage eines algorithmus ben tigt um eingabe und resultate im programm abzulegen 4 Welche operationen lassen sich auf diesen strukturen durchf hren 5 Welche davon sind weitgehend unabh ngig voneinander d h f r wel che m ssen keine gemeinsamen invarianten unterhalten werden Voneinander abh ngige datenstrukturen typen und deren operationen kommen dann jeweils zusammen in je ein modul Damit hat man dann schon meistens 50 80 der module gefunden und einen eleganten entwurf dazu Modulentwurf muss datenorientiert vorgehen 0Ubrigens eins der beliebten einfallstore f r viren und andere schadsoftware swentw tex 3 SYSTEMENTWURF 51 public abstract class Stack public model Item stack public int index capacity ensures index 1 x public abstract void clear requires IsFull ensures index old index 1 amp amp stacklindex i amp amp forall int j 0 lt j amp amp j lt old index stack j old stack j x public abstract void push Item i requires IsEmpty ensures result stacklindex l x public abstract Item top requires IsEmpty ensures index old index 1 amp amp forall int j 0 lt j G amp j lt index stack j old stack j1 x public abstract void pop ensures result gt
304. s tzliche regel gilt dass kleinere teams arbeitsf higer sind als gr ssere So wird etwa f r code inspektionen ein kreis von ca 4 personen vorgeschlagen f r entwurfsspezifikationen k nnen es auch 5 6 sein Eine inspektion mit mehr als 8 teilnehmern ist erfahrungsgem ss sehr schwer zu moderieren Auch gibt es pr zise vorgaben dar ber wie schnell ein produkt in vorbereitungsphase und inspektionssitzung bearbeitet werden kann Diese sind in tab 8 enthalten Ein studentisches projekt an der uni Ulm Ernst u a 1997 hat die erfahrung best tigt dass inspektionen mehr fehler finden als tests Inspektionen lieferten Copyright Herbert Klaeren 29 Juni 2015 124 5 6 Effizienz der fehlerbeseitigung ausserdem mehr vorschl ge zur codeverbesserung An vier beispielen einge betteter systeme jeweils weniger als ein halbes kLOC zeigte sich dass beim testen durchschnittlich 0 22 meldungen pro mannstunde erzeugt wurden bei der inspektion dagegen 0 59 meldungen pro mannstunde d h man kam hier auch ungef hr auf den von Schnurer f r DOS VSE berichteten produktivit ts vorteil von 3 1 Untersucht wurde dabei auch die wichtigkeit der inspektions sitzung die studenten hatten hier den eindruck dass diese im prinzip entbehr lich sei die eigentliche arbeit l ge in der vorbereitung der inspektoren und der rest k nne dann auch schriftlich erledigt werden Das experiment zeigte dann aber dass die vorbereitung auf die inspektion nur ein
305. s existierende system wird eine bestimmte struktur haben und es gibt grund zu der annahme dass die struktur des zu bauenden systems dann besonders gut ist wenn sie problemorientiert ist d h der struktur des problems m glichst nahekommt Dies erleichtert das finden einer systemstruktur und sorgt daf r dass nderungen im problem zu leichter lokalisierbaren nderungen in der implementierung f hren Mit m glichst nahe ist dabei gemeint dass kei ne willk rlichen unmotivierten abweichungen von der problemstruktur vor kommen sollen Es wird ohnehin gen gend gr nde geben in der implemen tierung von der problemstruktur abweichen zu m ssen Da der systemgedanke eine wesentliche grundlage f r den systementwurf darstellt beginnen wir diesen abschnitt mit einer definition des begriffs System aus der skandinavischen informatiktradition Holbzek Hanssen u a 1977 aus der auch die objektorientierte programmierung kap 4 hervorgegangen ist Definition Ein system ist ein teil der welt der von einer person oder einer gruppe von personen w hrend eines bestimmten zeitraums und zu einem bestimmten zweck als eine aus komponenten gebildete einheit betrachtet wird Dabei wird jede komponente durch merkmale beschrieben die als relevant ausgew hlt werden und durch aktionen die in beziehung zu die sen merkmalen und zu den merkmalen anderer komponenten stehen Eine dekomposition eines komplexen systems in komponenten findet nor malerweise
306. s heift also nicht lange herumbasteln verbessern und berle gen ohne da auch wieder Eink nfte generiert werden Wir pro grammieren um zu verkaufen und f r keinen anderen Zweck 4 Time to market is more important than product quality Wiederum frei bersetzt Eine fr he Markteinf hrung ist wichtiger als ein perfektes Produkt Das bessere Produkt kann nachgeschoben werden Hauptsache der Markt ist erst einmal besetzt Hier stellt es sich als vorteilhaft heraus da Programme im Gegensatz et wa zu Autos Fahrr dern Waschmaschinen etc einen signifikan ten Lernproze bei ihrem Verwender verlangen Es ist nicht ganz einfach von einem System auf ein anderes umzusteigen Einer seits riskiert man alle seine vorherigen Arbeiten Texte Bilder Filme zu verlieren aber vor allem muf man sich selbst wie der auf ein v llig neues System umschulen was man wirklich nur dann tut wenn es ganz wesentliche Vorteile bringt Die methoden des marktf hrers Microsoft wurden von Cusumano und Sel by 1995 1996 eingehend studiert und publiziert aber auch in einem zeit schriftenartikel 1997 zusammengefasst Allgemein wird festgehalten dass die firma Microsoft hochgradig flexibel und auf unternehmerisches risiko ausgerichtet ist Die Halbwertszeit von pro swmicro tex 7 DIE MICROSOFT METHODE 157 grammcode im haus Microsoft betr gt nur 18 monate Cusumano und Sel by 1995 p 215 Microsoft unterscheidet sich damit
307. s kaum noch eine bewegung m glich ist Alan Perlis 1982 sagt deshalb in seiner sammlung von sinnspr chen ber die pro grammierung schon an zweiter stelle von 130 Functions delay binding data structures induce binding Moral Structure data late in the programming process Die erste programmiersprache welche eine datenabstraktion in recht vern nf tigem masse erlaubte war Simula 67 dort hiessen die abstrakten datentypen klassen Simula 67 hat damit auch die objektorientierte programmierung be gr ndet und vieles von dem was heute als ganz modern und neu gilt in der OO programmierung ist nur eine wiederentdeckung der abstrakten datenty pen Als reaktion auf die datenabstraktionsm glichkeiten in Simula 67 hat sich in den siebziger jahren eine recht ausgefeilte theorie der abstrakten datentypen swentw tex 3 SYSTEMENTWURF 49 entwickelt die unter anderem auch algebraisch spezifizierte datentypen Klae ren 1983 Ehrich u a 1989 betrachtet hat Bei diesem ansatz werden die re levanten eigenschaften der operationen eines abstrakten datentyps nur durch eine menge von gleichungen beschrieben ohne irgendeine darstellung dieser operationen geschweige denn der zugrundeliegenden datenstruktur anzuge ben datatype Stack iten sorts stack item constructors Clear stack Push stack x item stack operations Top stack item Pop stack stack IsEmpty stack Boolean IsFull stack
308. s stolz zu putzen und sonntags auszufahren alles nur um Die folgenden abschnitte sind ein ausschnitt aus Klaeren 2006 Copyright Herbert Klaeren 29 Juni 2015 156 die Nachbarn zu beeindrucken so ist es bei PC Software ein fach schick immer als erster die allerneueste Version aller m g lichen Programme zu besitzen und abends in der Kneipe all die armen Leute zu bedauern welche diese entweder noch nicht haben oder noch nicht beherrschen oder man stelle sich das vor noch gar nicht gewu t haben da es schon wieder eine neue Version gibt Das pa t nat rlich vorz glich zu dem um satzfordernden Prinzip dauernd neue releases zu Softwarepro dukten herauszugeben Ubrigens ist die Industrie seit der prak tisch ubiquit ren Verbreitung von Internet Anschliissen den ar men Ahnungslosen bereits weitgehend entgegengekommen sie brauchen sich jetzt nicht mehr bei ihren Freunden zu blamieren Praktisch jedes Programm macht bei seinem Start eine Verbin dung zu seinem Produzenten auf und fragt dort nach neuen Versionen Der Benutzer wird sogleich informiert und kann in aller Regel durch einen einfachen Mausklick die neue Version kaufen vorausgesetzt er hat seine Kreditkartendaten bzw sei ne Bankverbindung damals bei der Registrierung der Software gleich hinterlegt 3 Get your team into ship mode Etwas frei bersetzt Mach deinen Leuten klar da die n chste Version jetzt verkauft werden mu Da
309. samen Code of Ethics Gotterbarn u a 1999a und der GI Ethische Leitlinien Coy u a 1993 R diger und Wilhelm 1996 kurz ansprechen Lesenswert auch der artikel von Berenbach und Broy 2009 Baustelle swethik tex E ZITATE ZUR SOFTWARETECHNIK 239 E Zitate zur Softwaretechnik Diese zitate sind chronologisch geordnet Die deutschen bersetzungen sind von mir selbst zur sicherheit ist in der regel auch der originaltext in kursiv schrift wiedergegeben da jede bersetzung immer auch interpretation ist In einzelf llen wo die deutsche bersetzung im text steht ist hier nur das origi nalzitat aufgef hrt Informatikstudierende sind nicht immer als flei ige leser bekannt aber ich m chte trotzdem die empfehlung aussprechen diese zitate die hier v llig aus dem zusammenhang gerissen sind m glichst an der originalstelle nachzule sen 1 Architecti est scientia pluribus disciplinis et variis eruditionibus ornata Itaque eum eti am ingeniosum oportet esse et ad disciplinam docilem Neque enim ingenium sine disciplina aut disciplina sine ingenio perfectum artificem potest efficere Et ut litteratus sit peritus graphidos eruditus geometria historias complures noverit philosophos diligenter audierit musicam scie rit medicinae non sit ignarus responsa iurisconsultorum noverit astrologiam caelique rationes cognitas habeat L Vitruvius Pollio De architectura liber primus 2 Vor eine frage
310. sbuf 0 4 0 01 2 31 9592 0 001 memcpy 0 4 0 01 2 32 printf 0 4 0 01 2 33 9592 0 001 exit 0 0 0 00 2 33 1 0 Die wurzelfunktion auf der VAX ist so langsam dass es sich immer noch lohnt sie ganz zu vermeiden ror i wre En 2 ie mai o return 0 return F r die RS 6000 ergibt sich mit dieser nderung Copyright Herbert Klaeren 29 Juni 2015 170 Name Time Seconds Cumsecs Calls msec call prime 84 8 2 46 2 46 99999 0 0246 _doprnt 5 2 0 15 2 61 9592 0 016 __Mmcount 4 8 0 14 2 75 main 2 8 0 08 2 83 1 80 printf 1 7 0 05 2 88 9592 0 005 __Mmcount 0 7 0 02 2 90 exit 0 0 0 00 2 90 1 0 d h wir haben hier beroptimiert Die laufzeit ist wieder l nger geworden Auf anderen rechnern kann das ergebnis dieser optimierung smassnahme ganz anders aussehen Zum vergleich habe ich ein MacBook Air mit MacOSX Snow Leopard herangezogen Damit kommen wir insgesamt zu folgendem berblick Programm n 10 000 n 100 000 n 100 000 n 100 000 VAX VAX RS 6000 MacBook Air P1 Einfache version 169 401 66 2 172 P2 Grenze bei y n 124 2850 11 94 0 020 P3 Wurzel ausserhalb schleife 15 192 3 68 0 018 P4 Spezialf lle 2 3 5 5 7 78 2 33 0 014 P5 Multiplikation statt wurzel 3 5 64 2 9 0 016 Auch bei der verwendung eines profiler k nnen einem immer noch irrt mer unterlaufen Bentley 1988 berichtet in Profiling zeigte dass die h lfte der laufzeit eines betriebssys
311. schaftliches problem das Henning in diesem zusammenhang an spricht ist die tradition dass programmierer die eine gewisse erfahrung er worben haben normalerweise in h herwertige positionen bef rdert werden z B projektmanager Dann steht ihre erfahrung aber nur noch eingeschr nkt zur verf gung und der meiste code wird von unerfahrenen neulingen ge schrieben Kontrollfragen 1 Wiederholen und kommentieren sie die systemdefinition nach Holbeek Hanssen u a 1977 swentw tex 3 SYSTEMENTWURF 59 Hn OF A Q Welche details geh ren zur schnittstellenbeschreibung einer funktion Welche rolle spielen globale variablen dabei Nennen sie ma st be zur beurteilung der qualit t einer modulstruktur Warum sind zyklische importe zwischen modulen problematisch Was versteht man unter prozeduraler bindung Nennen sie ein beispiel Nennen sie gemeinsamkeiten und unterschiede zwischen abstrakten da tentypen und modulen Copyright Herbert Klaeren 29 Juni 2015 60 3 6 API Entwurf swentw tex 4 OBJEKTKONZEPT OOD UND OOA 61 4 Objektkonzept OOD und OOA Wie bereits erw hnt wurde die objektorientierte programmierung erfunden im zusammenhang mit der programmiersprache Simula 67 Ziel dieser sprach entwicklung war es simulationen von systemen der realen welt zu beschrei ben Ein vielzitiertes beispiel hierzu ist etwa das postamt Hier gibt es eine men ge von schaltern an denen bestim
312. schleifenkopf g ltig sein m ssen Ist das modul aber inaktiv so muss die invariante gelten Implizit geh rt also die einhaltung der invarianten f r jede einzelne me thode zu den vor und nachbedingungen Die konjunktion von vorbedin gungen und invarianten muss die konjunktion von nachbedingungen und invarianten implizieren Meyer wendet sich gegen die sogenannte defensive programmierung bei der jeder kritische schritt durch geeignete abfragen abgeschottet ist die daf r sorgen dass nichts schlimmes geschehen wird Er bemerkt dazu In vielen existierenden Programmen kann man die Inseln der n tzlichen Verarbeitung kaum in den Ozeanen des Fehlerpr fcodes finden Im zusammenhang mit dem design by contract ist jedenfalls klar dass der kunde daf r verantwort lich ist die einhaltung der vorbedingung zu garantieren Dies l sst sich unter anderem dadurch motivieren dass an der aufrufstelle viel detailliertere kennt nisse ber die funktionsparameter vorliegen und diese aufgabe deshalb dort viel leichter zu erledigen ist Es gibt auch situationen in denen eine berpr fung der vorbedingungen in der aufgerufenen methode den ganzen sinn der methode vernichtet Beispielsweise ist eine vorbedingung f r die bin re suche dass das eingabe array sortiert ist Will man dies innerhalb der suche ber pr fen er brigt sich das nachfolgende bin re suchverfahren Welchen teil ei ner internen konsistenzbedingung man wirklich in
313. se zu l sen ist ist der umgang mit in stallationsprozeduren und hilfen die ebenfalls von plattform zu plattform stark unterschiedlich sind Software die f r viele plattformen im source code verteilt wird verf gt des halb in der regel ber recht elaborierte configure skripte Komplexe beispiele hierzu finden sich in praktisch jedem paket der GNU software Abb 54 zeigt den workflow bei der distribution von GNU software Jede r informatiker in sollte sich am besten gleich im zusammenhang mit dieser vorlesung diesen elaborierten mechanismus einmal detaillierter angeschaut haben man braucht es im richtigen leben schneller als man denkt und es l sst sich unver n nftig viel zeit damit zubringen wenn man in den falschen dateien herumeditiert Als informatiker sollten wir uns nicht wundern dass jedes problem gleich Copyright Herbert Klaeren 29 Juni 2015 188 9 5 Versionshaltung mit SVN auf einer h heren hierarchieebene erneut auftaucht So werden also nicht nur wie bereits angedeutet die makefiles h ufig automatisch mit hilfe von make selbst erzeugt sondern schon die erste vorlage eines makefile wird von ei nem configure skript aus einem rahmen makefile in erzeugt der seiner seits vermutlich durch ein programm automake aus makefile am erzeugt wur de Aber auch das configure skript seinerseits wird aus einem mitgelieferten rahmen configure in welcher die eigenheiten des gegenw rtig betrachte
314. selbst die oberhand und der klient kann lediglich bestimmte eigene funktionen anmelden die vom framework unter bestimmten voraussetzun gen aufgerufen werden Abb 33 Kontrollfragen 1 Was versteht man unter einem objekt Den filmbossen in Hollywood wird nachgesagt dass sie unerw nschte m chtegern stars damit abwimmeln dass sie sich eine visitenkarte geben lassen und dazu bemerken Don t call us we ll call you swoo tex 4 OBJEKTKONZEPT OOD UND OOA 97 Modulbibliothek Abbildung 32 Modulares system Framework Abbildung 33 Framework Copyright Herbert Klaeren 29 Juni 2015 98 4 9 Komponenten und frameworks Was bedeutet objektidentitat Was ist eine objektreferenz Wieso ist eine objektreferenz etwas anderes als ein zeiger Erkl ren sie gemeinsamkeiten und unterschiede zwischen den begriffen modul abstrakter datentyp und klasse Was versteht man unter dynamischer bindung Welche ans tze bietet die UML zur statischen modellierung von syste men Was versteht man unter einem muster Welches sind die wesentlichen komponenten seiner beschreibung Beschreiben sie das beobachtermuster Beschreiben sie den unterschied zwischen modulbibliotheken und frame works swoo tex 5 SOFTWAREQUALIT T 99 5 Softwarequalit t Testing probably more t
315. senheit wird durch die schattierte fl che zwischen den benutzeranforderungen und der systemfunktionalit t dar gestellt Sie beschreibt somit den zeitlichen verlauf des defizits Ein wirklich ideales system h tte eine leere unangemessenheitsfl che d h neue anforderungen w ren unmittelbar erf llbar swll tex 6 VORGEHENSMODELLE FUR DIE SOFTWAREENTWICKLUNG 137 Entsprechend dieser darstellung finden wir in abb 42 die beurteilung der softwareentwicklung nach dem vorgehensmodell des wasserfalls Zu einem zeitpunkt t0 sei hier die notwendigkeit einer softwarel sung erkannt worden und ein produktionsprozess nach dem wasserfallmodell begonnen Zu einem zeitpunkt tl wird das fertige system dann ausgeliefert aufgrund der inh renten missverst ndnisse bei der systemanalyse erf llt es jedoch nicht einmal die urspr nglichen anforderungen zum zeitpunkt t0 geschweige denn die in zwischen gewachsenen anforderungen des benutzers Vom zeitpunkt t1 bis t3 wird das produkt deshalb einer reihe von anpassungsarbeiten unterzogen die man im landl ufigen sprachgebrauch als wartung bezeichnet Dabei wird zu einem zeitpunkt t2 tats chlich die urspr nglich zum zeitpunkt t0 spezifizierte funktionalit t erreicht Zu einem zeitpunkt t3 stellt sich heraus dass weitere wartungsarbeiten an diesem softwareprodukt nicht sinnvoll oder nicht m g lich sind es wird daher ein neues projekt begonnen Wird dieses wiederum nach dem wasserfallmodell durchgef hrt
316. servation and experiment The engineer then applies a confirmed theory in the reverse direction the starting point is a specification of the observable properties and behaviour of some system that does not yet exist in the physical world and the goal is to design and implement a product which can be predicted by the theory to exhibit the specified properties Mathematical methods of calculation and proof are used throughout the design task Hoare 1993 Frequently capacity and performance goals get shelved during development After the system is built we push it off a cliff and see if it flies It would be better to keep capacity goals in mind during design development and to get performance feedback all along Mackey 1996 Some people assume that the curriculum should start with object oriented analysis This is a grave mistake A beginner cannot understand OO analysis To master OO analysis you must first master fundamental concepts like class contracts information hiding inheritance polymorphism dynamic binding and the like at the level of implementation where they are swquote tex E ZITATE ZUR SOFTWARETECHNIK 243 19 20 immediately You must also have used these concepts to build a few OO systems first small and then larger all the way to completion Only after such a hands on encounter with the operational use of the method will you be equipped to understand the concepts of OO analysis and their role in the seaml
317. skutieren wie Adams anhand der aufzeichnungen tiber APARs und PTFs zu den genannten zahlen gelangt ist Hier finden kompli zierte normierungen bez glich der anzahl der benutzer auf einer maschine der geschwindigkeit der maschine und anderen faktoren statt um letzten en des die MTTF f r neun weithin genutzte software komponenten von IBM zu ermitteln Aus tab 4 ergibt sich f r den durchschnitt der neun ausgew hlten software produkte die sich im brigen bemerkenswert gleichartig verhalten dass die berwiegende anzahl der fehler eine MTTF von mindestens 1583 jah ren haben das heisst bezogen auf einen einzelnen benutzer tritt dieser fehler in 1583 jahren h chstens einmal auf Nur 2 2 der fehler liegen in der niedrig sten fehlerklasse wo sie eine MTTF von bis zu 5 jahren haben Anders formu liert tritt ein solcher fehler t glich einmal auf wenn 10 000 benutzer das ent sprechende programm vier stunden am tag einsetzen Dies sind die wirklich wichtigen fehler deren beseitigung einen sp rbaren positiven effekt auf die softwarequalit t hat Fast zwei drittel der fehler dagegen sind so selten dass sie in der regel kaum als solche wahrgenommen werden Bei den oben ange nommenen 10 000 benutzern mit jeweils vierst ndigem programmeinsatz an 26MTTF Mean time to failure Copyright Herbert Klaeren 29 Juni 2015 106 ber 1583 Jahre bis500 Jahre bis 158 Jahre bis 50 Jahre bis 15 Jahre bis 5 Jahre Abbild
318. sprechenen Informationen einblenden sobald sich die Maus ber einen solchen Bezeichner bewegt 3 Durch pauschalen import import vendor util foopack x Barx oan 8 Dies ist die problematischste form der verwendung Hier ist zun chst ein mal v llig unklar welche symbole durch diesen import in den namens raum des gegenw rtigen programms gelangen das kann nur durch ei ne inspektion der schnittstelle von vendor util foopack gekl rt werden Importiert dieses paket allerdings was leider h ufig zu bef rchten ist andere pakete auf die gleiche weise so tritt diese frage rekursiv erneut auf Andererseits ist an der verwendungsstelle des solchermassen heimlich importierten symbols Bar v llig unklar dass dieses genau aus diesem pa ket stammt Es k nnte ebensogut im laufenden programm deklariert oder aus einem anderen paket importiert sein Kontrollfragen 1 Was versteht man unter einem modul 2 Nennen sie die drei aspekte unter denen eine vern nftige modularisie rung hilfreich ist Copyright Herbert Klaeren 29 Juni 2015 44 2 7 Was ist mit Java 10 11 Worin besteht das geheimnisprinzip Nennen sie die drei grundeigenschaften der Parnas schen idee des ge heimnisprinzips Wieso kann es sinnvoll sein sich auf funktionale schnittstellen zu be schr nken Was versteht man unter einer softwaretechniksprache Beschreiben sie die strategie des design by c
319. stems enth lt die separat weiterentwickelt werden und sp ter wieder in den Stamm trunk zusammengef hrt gemischt werden Die bran ches sind f r alle sichtbar Verteilte repositorien Bei Mercurial und Git dagegen hat jeder entwickler ein 38H ist das in der chemie bliche symbol f r quecksilber mercurial Copyright Herbert Klaeren 29 Juni 2015 190 9 6 Werkzeuge zur dokumentation komplettes repositorium auf seinem rechner dieses erh lt er indem er sich von einer anerkannten quelle einen ableger clone besorgt In sei nem eigenen repositorium kann er dann unabh ngig von allen anderen arbeiten kann revisionen abspeichern commit und wieder r ckg ngig machen ohne dass dies die anderen entwickler bemerken Die notwen digkeit f r branches entf llt damit Wenn er sp ter denkt auch die anderen entwickler sollten von seinen nderungen profitieren k nnen kann er sei nen zustand auf den rechner hochladen push von wo er den ableger gezogen hat vorzugsweise nachdem er zun chst mit pull von dort den letzten allgemein verf gbaren zustand abgeholt und mit merge mit seinem lokalen zustand abgeglichen hat SVN vergibt f r jedes commit eine neue revisionsnummer die dann f r das ganze projekt gilt O Sullivan 2009 beschreibt die t cken die dabei auftreten k nnen Angenommen Alice und Bob besorgen sich beide die revision 105 aus dem repositorium und entwi
320. sten nur den na men einer klasse in der ausf hrlichsten version steht im obersten teil der name der klasse in der mitte die attribute im untersten teil die methoden s abb 20 Auch die zweigeteilte form nur namen und attribute kommt vor Kommt es nur auf die beziehungen zwischen klassen an oder ist das bild recht komplex so reduziert man die beschriftung eines solchen kastens auf den reinen namen der klasse W hrend der modellierung liegen viele attribute und assoziationen nur im auge des betrachters d h ber deren sp tere entsprechungen in der imple swoo tex 4 OBJEKTKONZEPT OOD UND OOA 67 mentation wird noch nichts impliziert Es ist durchaus normal zun chst nur namen von klassen zu erfassen und beziehungen zwischen ihnen nach und nach kommen dann auch attribute und methoden hinzu Zwischen klassen k nnen verschiedenartige beziehungen bestehen Bei dem wort beziehung ist es dabei durchaus richtig an eine relation im sinne der mathematik zu denken 4 2 1 Assoziation Der allgemeinste typ von beziehungen relationen zwischen klassen heisst in der UML assoziation die entstehende struktur heisst dementsprechend assozia tionsstruktur Assoziationen werden durch einfache linien zwischen den klas sen notiert wobei der name der beziehung z b ist vorgesetzter von h rt vorlesung pr ft etc an der linie steht Dieser name der beziehung heisst in der UML welt auch eine rolle die dan
321. systematic approach to the develop ment operation maintenance and retirement of software der systematische ansatz zu entwicklung betrieb wartung und ausser sweinf tex 1 EINF HRUNG WAS IST SOFTWARETECHNIK 5 00 00 Abbildung 2 Analog und digital Copyright Herbert Klaeren 29 Juni 2015 6 1 2 Ingenieurwissenschaft betriebnahme von software Software nach IEEE 1990 programs procedures rules and any associated docu mentation pertaining to the operation of a computer system Programme verfahren und regeln sowie jegliche zugeh rige dokumen tation zum betrieb eines computersystems Sehr viel geben diese definitionen zugegebenermassen nicht her Etwas mehr einsicht in die hinter dem begriff software engineering stehende gedan kenwelt bekommen wir wenn wir das wort engineering in einem guten eng lischen lexikon z B der Encyclop dia Britannica 1999 nachschlagen Dort wird zun chst eine Definition des Engineers Council for Professional Development aus den USA zitiert derzufolge ist engineering die sch pferische anwendung wissenschaftlicher prinzipien auf entwurf und entwick lung von strukturen maschinen apparaten oder herstellungsprozessen oder arbeiten wobei diese einzeln oder in kombination verwendet werden oder dies alles zu konstruieren und zu betreiben in voller kenntnis seines entwurfs oder dessen verhalten unter bestimmten betriebsbedingungen vorherzusagen alles dies im
322. t zungen der programmierer diejenigen szenarien aus die f r ihn eine so hohe priorit t haben dass er sie in der n chsten iteration verwirklicht sehen m chte Programmierer d rfen nichts implementieren das nicht ausdr cklich verlangt worden ist Nach ablauf der maximal drei wochen wird gemeinsam evaluiert ob das geplante erreicht worden ist und es wird die n chste iteration des sy stems geplant Im takt von 1 bis 3 monaten werden releases an den kunden ausgeliefert die programmierer selbst konsolidieren ihre nderungen an der codebasis jedoch mehrmals pro stunde empfohlen wird ein viertelstunden takt Jeder im projekt hat das recht jedes st ck code zu ver ndern dieses merk mal des prozesses zusammen mit dem h ufigen abhaken des bereits erreich ten und dem weitgehenden verzicht auf spezifikationen und dokumentatio nen kommen ganz klar aus der hackerkultur Dieser begriff wird heute haupt s chlich mit illegalen manipulationen an computern in verbindung gebracht Cusumano und Selby 1995 weisen jedoch in anderem zusammenhang s ab schn 7 darauf hin dass der begriff hacker im urspr nglichen jargon der 60er jahre siehe auch das Hacker s Dictionary von Raymond 1991 ganz einfach personen bezeichnet die sich mit irgendwelchen ger ten systemen oder com putern bis in die letzten einzelheiten vertraut machen st ndig auf der suche nach verborgener funktionalit t und m glichkeiten des kreativen einsatzes wenig gen
323. t ndigkeiten und inkonsistenzen Andere program miersprachen wie z B C oder vor allem C sind wesentlich permissiver Hier erlaubt der compiler dem programmierer eine ganze reihe freiheiten die ausgesprochen fehlertr chtig sind Ein separates werkzeug namens lint f hrt auf wunsch erweiterte analysen am programmtext durch sehr h ufig wird von managern verlangt dass abgelieferte programme ohne warnmeldungen durch lint bearbeitet wurden Zur leistung von lint zitiere ich aus der online hilfe von AIX 4 1 Das lint Kommando pr ft Quellcode der Sprachen C und C auf Codier und Syn taxfehler und auf ineffizienten oder nicht portablen Code Sie k nnen dieses Programm ver wenden um Inkompatibilit ten zwischen Quellprogrammen und Bibliotheken aufzudecken Typ berpr fungsregeln strenger zu erzwingen als der Compiler m gliche Probleme mit Variablen und Funktionen aufzudecken Probleme mit der Ablaufsteuerung aufzudecken legale Konstruktionen aufzudecken die Fehler produzieren oder ineffizient sein k nnen unbenutzte Variablen und Funktionsdeklarationen aufzudecken und m glicherweise nicht portablen Code aufzudecken Die Verwendung von Funktionen wird ber Dateigrenzen hinweg gepr ft um Funktionen zu finden welche in einigen Situationen Resultate ablie fern aber in anderen nicht sowie Funktionen die mit variierenden Anzahlen oder Typen von Argumenten aufgerufen werden und Funktionen deren Werte nicht benutzt werden oder deren Wer
324. t t zur ckzuliefern muss er noch einhalten Die vor bedingung einer methode muss zur aufrufzeit gelten In diesem beispiel ist die swmodu tex 2 MODULKONZEPT 31 vorbedingung mit requires n gt 1 spezifiziert Die nachbedingung der methode muss nach der terminierung der methode gelten In diesem beispiel ist die nachbedingung cr ensures result product int i le new i lt n i x In JML k nnen auch schleifeninvarianten mit loop_invariant spezifiziert werden Die folgenden zeilen spezifizieren die schleifeninvariante der factorial methode loop_invariant i lt n amp amp f product int j 1 lt j Gj lt i jf x Es gibt noch weitere spezifikationsm glichkeiten u a f r fehlerf lle ex ceptions die aber in dieser vorlesung nicht angesprochen werden Die spe zifikation komplexer bedingungen wird erleichtert durch einige packages die unter org jmlspecs models verf gbar sind Der kontrakt im sinne des DBC besteht hierbei aus dem methodenkopf und den JML spezifikationen die ihm direkt vorangehen Als zus tzliches beispiel diene hier die spezifikation einer methode f r die bin re suche in einem array Voraussetzung f r einen sinnvollen einsatz dieser methode ist dass das array nicht leer ist und o b d a aufsteigend sortiert ist requires a null oe forall int i 0 lt i amp amp i lt a length ali 1 lt al
325. t n int f T int i 1 loop_invariant i lt n amp amp f product int j l e j Cej lt i j x while i lt n i i o ip 2 is Io 1 i f return f Abbildung 8 Vor und Nachbedingungen in JML result bezeichnet den r ckgabewert einer methode old E bezeichnet den wert des ausdrucks E vor dem methodenauf ruf exists ist der existenzquantor Die entsprechende syntax ist exists Tx P Q mit der Bedeutung 3x T P AQ forall ist der allquantor Die entsprechende syntax ist forall Tx P Q mit der Bedeutung Vx T P gt Q sum bezeichnet die summe Asum T x P e mit der Bedeutung _ etapi product bezeichnet das produkt product T x P e mit der Bedeutung erari Abb 8 zeigt ein beispiel einer JML spezifikation f r eine methode Solche spezifikationen werden typischerweise einfach vor den Kopf der Methode geschrieben Der kontrakt f r die methode factorial ist dass sie eine Zahl nimmt und ihre fakult t zur ckgibt JML benutzt die klausel requires um die obligation des clienten zu spezifi zieren und ensures f r die obligation des implementierers Die obligation des kunden ist es in diesem fall eine positive zahl zu liefern auf der anderen seite hat er das recht die fakult t der zahl zu bekommen In der gleichen weise darf der implementierer annehmen dass das argument eine positive zahl ist aber die obligation die fakul
326. t sich im urspr nglichen system wie in abb 7 gezeigt ohne weiteres das alte modul M gegen das neue modul M austauschen 2 2 Design by contract Nimmt man das geheimnisprinzip ernst so ergibt sich ziemlich zwangslaufig dass die abmachungen im rahmen dieses geheimnisprinzips auch als elemente eines kontrakts vertrags zwischen einem anbieter supplier und einem kunden client angesehen werden k nnen Bertrand Meyer 1990 1992 macht daraus eine generelle maxime f r den softwareprozess die er design by contract nennt Ein kontrakt im blichen sprachgebrauch hat zwei haupteigenschaften 1 Jede partei erwartet vorteile aus dem kontrakt und ist bereit verpflichtun gen einzugehen um diese zu erhalten 2 Die vorteile und verpflichtungen sind in einem kontraktsdokument fest gehalten Diesen gedanken bertr gt Meyer auf die softwarekonstruktion hier spe ziell auf die beschreibung von modulschnittstellen Damit kein irrtum auf kommt kunde und anbieter sind in diesem zusammenhang immer irgendwelche programmst cke funktionen methoden prozeduren keine menschlichen rollen Bertrand Meyer hat eine programmiersprache Eiffel entworfen die es er laubt solche kontrakte zum bestandteil von programmen zu machen Eiffel ist eine objektorientierte programmiersprache s kap 4 deshalb heissen die funktionen bzw prozeduren dort methoden Technisch werden die kontrak te durch logische formeln beschrieben v
327. t zu beginn einen kommentar der folgenden form beinhaltet lt one line to give the program s name and a brief idea of what it does gt Copyright C lt year gt lt name of author gt This program is free software you can redistribute it and or modify it under the terms of the GNU General Public License as published by the Free Software Foundation either version 3 of the License or at your option any later version This program is distributed in the hope that it will be useful but WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE See the GNU General Public License for more details You should have received a copy of the GNU General Public License along with this program If not see lt http www gnu org licenses gt Free Libre Open Source Software gewinnt weltweit immer mehr freunde auch und sogar in der industrie die lange zeit diesem sektor kritisch gegen berstand weil jede form von haftung f r sch den von allen lizenzmodellen ausgeschlossen wird und deshalb der produzent eines produkts das FLOSS software enth lt m glicherweise selber in die haftung ger t Inzwischen sind jedoch zahlreiche sogar sicherheitsrelevante softwarepakete unter verwen dung von FLOSS software mit unterschiedlichen lizenzmodellen entstanden Als beispiel kann man etwa die seite www mercedes benz com opensource aufsuchen welche die in Mercedes fahrzeugen verwendete FLOSS softwar
328. tammt die bemerkung dass wir durch testen stets nur die anwesenheit von fehlern nachweisen k nnen aber nicht deren ab wesenheit Vom standpunkt eines theoretikers ist dies vollkommen richtig in der praxis gibt es jedoch verfahren die recht pr zise statistische aussagen er m glichen wie viele fehler in einem programm noch zu erwarten sind Graham 2002 listet irrmeinungen zum testen auf die beachtung verdie nen Auch wenn sich diese irrmeinungen zum teil gegenseitig widersprechen finden sie sich doch alle irgendwo in der literatur wieder 1 Falsch Anforderungen stehen am anfang tests am ende In wirk lichkeit k nnen auftraggeber die bereits w hrend der anforderungsana lyse aufgefordert werden testf lle inklusive der erwarteten ergebnis se f r das zu erstellende softwareprodukt zu liefern dadurch fr hzei tig missverst ndnisse ausr umen Die moderne XP methode der softwa reentwicklung erhebt dies mit ihrem test driven development sogar zum prinzip Umgekehrt k nnen auch anforderungsdokumente bereits gete stet werden 2 Falsch Testen kann man erst wenn das system fertig ist In ab schnitt 5 5 werden wir darlegen dass die weitaus gr sste zahl der fehler bereits in fr hen anforderungs und entwurfsdokumenten gefunden wer den kann 3 Falsch Anforderungen braucht man zum testen aber nicht umge kehrt Nat rlich wird ein system in der regel gegen beachte die ter minologie ein anforder
329. tate Update Die schr gschrift bei den oberen beiden klassen bedeutet dass es sich hier um abstrakte klassen handelt Beachte dass gegen ber der UML hier die fel der f r attribute und methoden vertauscht sind swoo tex 4 OBJEKTKONZEPT OOD UND OOA 91 4 7 7 Teilnehmer Subject Gegenstand e kennt seine beobachter Observer Jede beliebige zahl von beobach tern kann einen gegenstand beobachten e hat eine schnittstelle um beobachter objekte anzumelden und abzu melden Observer Beobachter e definiert eine Update schnittstelle f r objekte die ber eine nderung im gegenstand benachrichtigt werden sollten ConcreteSubject e speichert einen zustand der f r Concrete bserver objekte von in teresse ist e schickt seinen beobachtern eine nachricht wenn sein zustand sich ndert ConcreteObserver e h lt eine referenz auf ein ConcreteSubject objekt e speichert einen zustand der mit dem zustand des gegenstands kon sistent bleiben sollte e implementiert die Update schnittstelle des beobachters um seinen zustand mit dem des gegenstands konsistent zu halten 4 7 8 Zusammenwirkungen e ConcreteSubject benachrichtigt seine beobachter sobald eine nderung eintritt die den internen zustand der beobachter inkonsistent mit seinem eigenen machen k nnte e Nachdem ein Concrete bserver von einer nderung benachrichtigt wur de kann er beim gegenstand informati
330. te davon die mit phototypesettern arbeiten kann Copyright Herbert Klaeren 29 Juni 2015 192 9 6 Werkzeuge zur dokumentation ein zwischending zwischen technischer dokumentation und der hier ausge klammerten benutzerdokumentation Sie verraten nicht wirklich viel ber die arbeitsweise der dokumentierten programme aber sie geben in kondensierter und von der form her weitgehend normierter fassung auskunft ber die ein satzm glichkeiten einschr nkungen und parameter ja sogar bekannte feh ler von Unix programmen auskunft Getreu der Unix ideologie sind die nroff quelltexte ganz normale textdatei en die mit kommandos durchsetzt sind welche der nroff prozessor interpre tiert Dieses vorgehen hat den vorteil dass sich auch die texterzeugung in eine werkzeugkette einbetten l sst welche spezielle vorrichtungen anbietet die in einem bestimmten einsatzkontext ben tigt werden von einer allgemeineren sichtweise her aber entbehrlich sind So gibt es also z b eigene programme eqn zum satz von gleichungen tbl zum satz von tabellen pic zum erzeugen von abbildungen die sich mit nroff in eine werkzeugkette kombinieren lassen Jedes dieser werkzeuge liest die an es selbst gerichteten kommandos in einer eingabedatei und reagiert darauf dadurch dass es den entsprechenden teil der datei ver ndert alles andere wird unver ndert weitergegeben Die nroff kommandos erkennt man daran dass sie am anfang einer zeile stehen und mit ein
331. te zwar benutzt aber nicht zur ckgegeben werden Auch programmiersprachen der zuvor angesprochenen klasse sicherer pro grammiersprachen erlauben es jedoch dem programmierer eine reihe von feh lern zu machen selbstverst ndlich werden ungenutzte variablen und proze durdeklarationen vom compiler ebenso akzeptiert wie nicht erreichbarer code Zahlreiche m glichkeiten f r missverst ndnisse des programmierers liegen auch in dem von Algol 60 bernommenen blockkonzept Hier ist es m glich eine variable mit gleichem namen auf unterschiedlichen schachtelungsstufen zu definieren Damit sind automatisch die folgenden beiden fehlerm glichkei ten vorgezeichnet die sich nur aufgrund intimer semantischer kenntnis des programms untersuchen lassen und jeder vollst ndigen behandlung durch programmierwerkzeuge entzogen sind 1 Eine funktion ver ndert eine variable die in einem usseren sichtbarkeits bereich deklariert wurde nicht lokale variable Selbstverst ndlich kann dies genau der gew nschte effekt sein es ist jedoch auch m glich dass der programmierer schlicht vergessen hat diese variable in dem einge schachtelten sichtbarkeitsbereich neu zu deklarieren 2 Ein eingeschachtelter sichtbarkeitsbereich deklariert eine variable eines usseren sichtbarkeitsbereichs neu Dann kann der programmierer jedoch swkorr tex 5 SOFTWAREQUALIT T 117 an jeder verwendungsstelle vor allem bei gr sseren programmen die bei den deklaration
332. team manager sich statt der vorgabe von pro grammierentscheidungen auf das schreiben von testf llen verlegt haben swmicro tex 7 DIE MICROSOFT METHODE 161 Refactoring findet bei Microsoft selbstverst ndlich ebenfalls statt auch wenn es nicht explizite vorschrift im prozess ist Pair programming Auf den ersten blick reduziert pair programming die pro grammierleistung eines teams auf die h lfte deshalb muss man sich nicht wundern dass es bei einer firma die auf kommerziellen erfolg ausge richtet ist in dieser form nicht vorgesehen ist Allerdings gibt es bei Microsoft in der regel f r jeden programmierer einen tester Cusumano glaubt dass sich mit dem XP ansatz des pair programming gegen ber der Microsoft methode letztlich geld sparen liesse In der Tat berichtet der Spiegel Dworschak 2009 dass Steven Sinofsky als leiter der entwicklung von Windows 7 das pair programming bei Microsoft eingef hrt habe Collective code ownership Microsoft sch tzt es wie viele industrieunter nehmen f r jede komponente einen haupt verantwortlichen zu ha ben und widersetzt sich daher der XP idee dass jeder jedes st ck code ndern darf Da in langlebigen software produkten aber das eigentum an code elementen ber die zeit wechselt kommt es zuletzt doch zu einer abgemilderten form der collective code ownership Stetige integration Eine gewisse analogie zur XP methodik findet sich in dem synch and stabilize ansatz wieder auch wen
333. tem mit ganz wenigen funktionen aufzubauen damit sich der auftraggeber bzw sp tere benutzer an die handhabung des systems gew hnen kann und recht zeitig nderungsw nsche anbringen kann Nach und nach werden dann funk tionen hinzugef gt Wichtig beim inkrementellen bau ist dass von anfang an ein gewisses mini malsystem basissystem spezifiziert wird und dann eine folge sog inkremente die sich zum basissystem hinzuf gen lassen Als meilensteine wird man in Copyright Herbert Klaeren 29 Juni 2015 142 6 5 Inkrementeller bau INCREMENTAL DEVELOPMENT APPROACH gt E z USER NEEDS 5 CONVENTIONAL APPROACH zZ re Abbildung 47 Produktivit t des inkrementellen baus einem solchen fall vermutlich die ablieferungszeitpunkte der inkremente defi nieren Inkrementeller bau hat die folgenden vorteile e Die r ckmeldung der benutzer w hrend des betriebs der ersten system stufen f hrt zu einem genaueren verst ndnis der anforderungen Auf die se art und weise kann ein system erstellt werden das den benutzeranfor derungen besser gerecht wird s abb 47 Der punkt C beim inkrementel len bau liegt in der funktionalit tsdimension h her als der punkt D des konventionellen ansatzes und ist berdies in der zeitachse fr her angesie delt e Von der systemeinf hrung her ergibt sich der vorteil dass die stufenweise einf hrung den big bang effekt vermeidet e Der kapitalr ckfluss beginnt fr h
334. tems in einer schleife mit nur wenigen instruktionen verbracht wurde Umschreiben dieser schleife in mikrocode machte sie um eine gr ssenordnung schneller aber verbesserte die systemleistung berhaupt nicht Die optimierungsgruppe hatte die leerlaufschleife des systems optimiert Ein anderes sch nes beispiel zur leistungsverbesserung zeigen Kernighan und Pike 1999 hier geht es um einen spam filter der e mails zur ckweisen soll die bestimmte textmuster enthalten Ein erster ansatz f r eine funktion die eine nachricht mesg nach vorkommen von mustern pat i durchsuchen soll sieht deshalb wie folgt aus isspam test mesg for occurrence of any pat x int isspam char mesg int i for i 0 i lt npat i if strstr mesg pat i NULL printf spam match _ for s n pat i return return 0 swtune tex 8 LEISTUNGSVERBESSERUNG VON SOFTWARE 171 Diese l sung stellte sich im betrieb als viel zu langsam heraus obwohl man davon ausgehen kann dass funktionen der C library wie strstr hochopti miert sind Um zu verstehen wieso die obige l sung trotzdem langsam ist muss man in die C library hineinschauen Leicht vereinfacht stellt sich die implementierung von strstr wie folgt dar simple strstr use strchr to look for first character x char xstrstr const char sl const char s2 int n n strlen s2 for sl strchr sl s2 0 if sl NULL re
335. tierung sind assoziationen h ufig dadurch abgebildet dass ein objekt eine objektreferenz zeiger auf ein anderes objekt enth lt Es ist je doch falsch diesen gedanken bereits zu fr h w hrend der modellierung in den vordergrund zu r cken Die UML erlaubt es dies durch pfeilspitzen an den as soziationslinien anzudeuten beispiele hierf r finden sich in abb 23 Hierdurch wird impliziert dass sp ter im laufenden system ein objekt weiss mit wel chen anderen objekten es in dieser assoziation steht Im klartext gesprochen heisst dies dass dieses objekt die objektreferenzen derjenigen objekte besitzt die mit ihm assoziiert sind 4 2 2 Aggregation Komposition Eine klasse kann andere klassen enthalten bzw bestandteil anderer klassen sein je nachdem von welcher seite wir diese relation betrachten nennen wir sie auf englisch eine has a beziehung oder part of beziehung Wir sprechen hier auch von einer aggregation und nennen die m glicherweise komplexe aufbre chung einer klasse in eine hierarchie von teilklassen eine aggregationsstruk tur Aggregationen werden in der UML durch einen pfeil mit einer weissen raute an einem ende notiert s abb 22 Die UML macht hier noch einen fei nen unterschied der letztlich vermutlich wieder aus einer vermischung von modellierungs und speicherallokationskonzepten beruht Besonders star ke formen der aggregation bei denen die bestandteile eines exemplars zu existieren aufh r
336. tig berpr ft m glicherweise ge ndert und vor allem erweitert werden z b um details von datenstrukturen und algorithmen Jede entwurfsentschei dung geh rt sorgf ltig dokumentiert inklusive der angabe des verantwortli chen autors mit datum und uhrzeit Auf diese weise wird wenn gen gend disziplin entfaltet wird und mit jeder nderung erweiterung von program men gleich die entsprechende nderung erweiterung der dokumentation er folgt gew hrleistet dass die dokumentation wirklich zum programm passt und dass ihre erstellung nicht als unangenehme langweilige aufr umaufga be nach abschluss des programmierprozesses verstanden werden kann Im folgenden werden einige werkzeuge vorgestellt die zur erstellung tech nischer dokumentationen dienen k nnen 9 6 1 Nroff Technische dokumentationen sind zuerst und vor allem texte Um einen text lesbar zu gestalten sind textverarbeitungsprogramme unersetzlich Getreu der Unix ideologie gibt es hierzu ein werkzeug das je nach lokaler kultur nroff troff groff oder hnlich heisst Im grunde handelt es sich dabei um nicht viel mehr als einen allgemeinen makroprozessor zusammen mit diversen sammlungen vordefinierter makros Mit dem aufruf nroff man bindet man etwa ein makropaket ein das auf die produktion von Unix ma nual pages online handbticher spezialisiert ist Diese manual pages sind 3Nroff war eine abk rzung f r new runoff troff ist eine varian
337. tig kom plex werden s abb 51 und von ihren zahlreichen zwecken nur wenige wirk lich vollkommen erf llen aber haupts chlich deshalb weil solche komplexen werkzeuge h ufig nach der devise take it or leave it konstruiert sind d h kaum raum f r eigene anpassung oder gar auswechslung unvollkommener komponenten gegen fremde bessere lassen Eine ausnahme in dieser richtung bietet z B Eclipse www eclipse org das sich durch plugins in jeder richtung erweitern l sst Die komplexit t des werkzeugs steigt dadurch allerdings wei ter an bedienung und beratung hotline werden komplizierter weil jeweils auch darauf geachtet werden muss ob die richtigen plugins installiert wur den Abbildung 51 Das universalwerkzeug Eine radikal andere einstellung findet sich in dem betriebssystem Unix das in seinem diversen varianten nicht zuletzt deshalb bei programmentwicklern so beliebt ist weil es eine vielzahl n tzlicher kleiner werkzeuge anbietet die Copyright Herbert Klaeren 29 Juni 2015 176 sich einzeln oder in kombination wundersch6n verwenden lassen um im soft wareprozess sinnvolle aktionen automatisch ablaufen zu lassen Damit dies funktionieren kann sind zwei voraussetzungen massgeblich 1 Mit wenigen offensichtlichen ausnahmen operieren alle Unix werkzeu ge auf textdateien die unter anderem auch mit standard editoren bearbei tet werden k nnen 2 ber den mechanismus der pipe kann die ausgabe
338. tigt Ein level 1 support team pr ft anhand entsprechender datenbanken ob dieses problem schon einmal aufgetreten ist und teilt dem kunden ggf eine l sung daf r mit Anderenfalls wird der level 2 support eingeschaltet der unter umst nden auf das change team beim entwicklungsteam zur ckgreift Wenn es sich um ein neues soft wareproblem handelt wird dort ein APAR Authorized program analysis re port erstellt Je nach dringlichkeit des problems wird dann entweder spezi fisch f r diesen kunden ein code change hergestellt der sein problem behebt oder mit etwas gr sserem aufwand ein PTF program temporary fix herge stellt der allen benutzern des gleichen programms zugute kommt Nattirlich werden die PTFs auch der f r die entwicklung der n chsten software ausgabe zust ndigen stelle mitgeteilt Ungef hr im monatsabstand werden dann PTF b nder an alle kunden versandt damit diese entweder korrigierende war tung CS corrective service f r bereits bei ihnen aufgetretene fehler oder aber vorbeugende wartung PS preventive service f r noch nicht aufgetre tene fehler durchf hren k nnen Der urspr ngliche PMR wird erst dann zu den akten gelegt wenn der kunde best tigt hat dass sein problem gel st wur de und dass er mit dieser l sung zufrieden ist In der praxis f hrt dies h ufig dazu dass die supportstellen erst einmal nachfragen ob alle versandten PTFs auch installiert sind bevor sie sich mit
339. tigung ein ganzes jahr verl ngert hat Fred Brooks 1975 It is a very humbling experience to make a multimillion dollar mistake but it is also very memo rable I vividly recall the night we decided how to organize the actual writing of external specifica tions for OS 360 The manager of architecture the manager of control program implementation and I were threshing out the plan schedule and division of responsibilities The architecture manager had 10 good men He asserted that they could write the specifications and do it right It would take ten months three more than the schedule allowed The control program manager had 150 good men He asserted that they could prepare the specifi cations with the architecture team coordinating it would be well done and practical and he could do it on schedule Furthermore if the architecture team did it his 150 men would sit twiddling their thumbs for ten months To this the architecture manager responded that if I gave the control program team the responsi bility the result would not in fact be on time but would also be three months late and of much lower quality I did and it was He was right on both counts Moreover the lack of conceptual integrity made the system far more costly to build and change and I would estimate that it added a year to debugging time Fred Brooks 1975 It is simply not possible to fix today what the environment should be like in the future and then to
340. tional software increment to organize themselves Requirements Make SMART Requirements Simple Measurable Achievable Realistic Traceable User Stories INVEST in User Stores Independant Negotiable Valuable Estimatable Small Traceable Tasks Make sure a Task is TECH Time boxed Everybody can pick it up Complete and Human readable Sprint Planning Commit the deliverable s to the PO Two part meeting First the PO presents the User Stories Second when the Team thinks they have enough Stories to start the Sprint they begin breaking it down in Tasks to fill the Sprint Backlog Daily Scrum Inspect and Adapt the progress In this standup meeting the Team daily inspects their progress in relation to the Planning by using the Burndown Chart and makes adjustments as necessary Timebox 15 minutes Sprint Review Demonstrate the achievements The team shows the PO the result the potential shippable product of the Sprint The PO can accepts or rejects features depending on the agreed acceptance criteria Retrospective Maintain the good get rid of the bad At the end of a Sprint the Team evaluates the finished Sprint They capture positive ways as a best practice identify challenges and develop strategies for improvements Product Backlog Dynamic prioritized list of requirements The requirements for the product are listed in the Product Backlog It is an always changing dynamically p
341. titution kv total revisions 13 selected revisions 13 description revision 1 13 date 2001 11 28 13 45 08 author Release revision 1 12 date 2001 08 31 06 59 15 author Small stylistic improvement revision 1 11 date 2001 08 29 17 56 21 author Added tnx to Volker revision 1 10 date 2001 08 28 18 35 45 author One ambiguous sentence corrected revision 1 9 date 2001 08 28 15 37 20 author Danksagungen revision 1 8 date 2001 08 26 18 08 13 author Gr ndlich berarbeitet sperber state Exp lines 11 5 klaeren state Exp lines 2 2 klaeren state Exp lines 3 2 klaeren state Exp lines 6 6 Some typos corrected sperber state Exp lines 42 1 sperber state Exp lines 55 62 Abbildung 67 Versionsgeschichte einer datei Copyright Herbert Klaeren 29 Juni 2015 234 C 3 Geschichte der versionshaltung lepuy 21 ident bin rexx afs informatik uni tuebingen de home klaeren bin rexx Id memory c v 1 14 1993 05 10 06 14 04 anders Exp anders Header auto home flipper anders flipper prosj rexx src RCS signals c v 1 4 1993 05 10 06 04 52 anders Exp anders Id funcs c v 1 14 1993 05 10 06 10 22 anders Exp anders Header auto home flipper anders flipper prosj rexx src RCS library c v 1 2 1993 02 09 18 15 09 anders Exp anders Id Id Id Id Id Id Id Id Id Id Id Id Id I
342. tum und ort der eheschliessung zu speichern H ufig sind die assoziationen zwischen klassen noch durch besondere inva rianten gekennzeichnet die in der UML einschr nkungen constraints heissen Um einschr nkungen zu notieren k nnen diese freitextlich in geschweiften klammern an die verbindungslinie geschrieben werden zu bevorzugen ist je doch eine notation in der eigens hierzu entworfenen OCL object Constraint Language In abb 21 k nnte es z b interessant sein festzuhalten dass bei ei Copyright Herbert Klaeren 29 Juni 2015 68 4 2 Statische modellierung enumeration Sex male accountNumber Integer female 0 1 E customer Company managedCompanies Company isMarried Boolean name String isUnemployed Boolean numberOfEmployees Integer stockPrice Real age Integer firstName String lastName String sex Sex income Date Integer husband 0 1 title String startDate Date salary Integer place String date Date Abbildung 21 Assoziationsstruktur swoo tex 4 OBJEKTKONZEPT OOD UND OOA 69 ner ehe die ehefrau weiblich und der ehemann m nnlich und beide partner alt genug sind context Person inv self wife gt notEmpty implies self wife sex Sex female and self wife age gt 18 and self husband gt notEmpty implies self husband sex Sex male and self husband age gt 18 In der implemen
343. turn NULL if strnemp sl s2 n 0 return char s1 sl Aus effizienzgr nden sucht strstr dessen aufgabe es ist eine zeichenkette innerhalb einer anderen zeichenkette zu suchen zun chst nach dem ersten buchstaben der gesuchten Zeichenkette Damit k nnen grosse bereiche der zu durchsuchenden zeichenkette gleich bersprungen werden Erst wenn der erste buchstabe gefunden ist wird mit strncmp der rest verglichen F r den hier vorliegenden anwendungszweck stellt es sich als ung nstig heraus dass strncmp die l nge der gesuchten zeichenkette als argument braucht und dass srtstr keine andere m glichkeit hat als diese l nge ausdr cklich zu berech nen In wirklichkeit ist die l nge jedes einzelnen suchmusters aber im voraus bekannt Ausserdem stellen sich nun einige nachteile der C string library her aus Durch die entscheidung dass zeichenketten durch ein nullbyte beendet werden muss sowohl strchr jedes einzelne zeichen ausser mit dem suchzei chen auch noch mit dem nullbyte vergleichen strncmp muss sogar in beiden zeichenketten auf das nullbyte pr fen bevor zwei zeichen miteinander ver glichen werden Dazu kommt der verwaltungsaufwand f r das aufrufen der funktionen strlen strchr und strncmp Als ersten ansatz zur beschleunigung des spam filters wurde deshalb eine auf diesen anwendungsfall spezialisierte version von strstr geschrieben die keine anderen funktionen mehr aufrief Leider konnte dadurch das programm um
344. tweder den neuen plan akzeptieren oder gen gend viele stories niedrigerer priorit t entfernen um das datum einzuhalten Es ist keine katastrophe dass der kunde nderungen vornimmt sondern es ist unvermeidlich e klare und fortgesetzte kommunikation mit dem kunden zu haben und zwar sowohl dem endbenutzer als auch der verantwortlichen autorit t e jederzeit qualit tsarbeit zu leisten und unterst tzung daf r zu finden auch wenn das etwas l nger dauert und den einkauf von werkzeugen erfordert e hilfe von kollegen vorgesetzten und auftraggebern zu erbitten und zu bekommen und dass gelegenheiten f r die kommunikation mit anderen mitarbeitern des projekts im zeitplan vorgesehen sind e deine eigenen absch tzungen zu machen und anzupassen das schliesst die beschaffung von daten f r deine langfristigen pl ne und ziele ein e die verantwortlichkeit f r deine tagespl ne und ziele selbst zu haben e die unterst tzung deiner vorgesetzten und kunden zu haben f r eine fort laufende fortbildung einschliesslich aber nicht beschr nkt auf b cher abonnements zeit und geld zum ausprobieren neuer programmier werkzeuge besprechungen ausbildung etc e auf ein nachhaltiges arbeitstempo eine vierzig stunden woche e deine eigenen entwicklungswerkzeuge wo immer passend einzusetzen so lange das arbeitsergebnis vertr glich ist mit den erwartungen deines kunden http c2 com cgi wiki DeveloperBill0fRights Oktober 2008
345. uf jede eingabezeile kein pattern angewendet wird ware awk if 3 lt 1980 print 3 __ 5 96 7 8 3 coins tx mit der Ausgabe 1908 Franz Josef 100 Korona 1979 Krugerrand Wir haben aber im prinzip die volle sprache C zur verf gung f r die aktionen awk gold gold ounces 2 END print gold pieces of gold total weight ounces ounces coins txt Dass die variablen gold und ounces hier weder deklariert noch initialisiert wurden muss nicht st ren awk erledigt das f r uns automatisch Das pattern END ist vordefiniert es wird wirksam wenn die eingabedatei zu ende ist Na t rlich gibt es dazu passend auch BEGIN Die ausgabe dieser anweisung ist dann 9 pieces of gold total weight 6 1 ounces F r komplexere anwendungsfalle ist es ratsam das awk programm in eine se parate datei zu schreiben etwa die folgende coins awk gold num_gold wt_gold 2 Get weight of gold silver num_silver wt_silver 2 Get weight of silver END val_gold 485 wt_gold Compute value of gold val_silver 16 x wt_silver Compute value of silver total val_gold val_silver print Summary_data_for_coin_collection Print results printf n printf _ Gold_pieces sa 2d n num_gold Copyright Herbert Klaeren 29 Juni 2015 180 9 2 Das werkzeug make printf __ Weight_of_gold_pieces un
346. ufnahme in das modell gesammelt werden Die liste dieser kandidaten wird dann einer kriti schen bewertung unterzogen wobei unter umst nden elemente ausgesondert werden In diskussionen ber objektorientierte programmierung wird h ufig unge nau formuliert es wird von objekten geredet wenn in wirklichkeit klassen gemeint sind und umgekehrt Grund f r diese verwirrung ist dass hinter ei nem objekt das wir auffinden immer die klasse aller objekte steht die diesem hnlich sind und hinter einer klasse immer die menge aller objekte die man als exemplare instanzen davon generieren kann 4 5 1 Definition der klassen Der erste schritt bei der analyse besteht darin die relevanten klassen des systembereichs aufzufinden und zu beschreiben Hierzu werden zun chst in formelle dokumente zur problembeschreibung vor allem die anwendungs f lle sorgf ltig gelesen und ausgewertet und die hierin enthaltenen angaben im gespr ch mit experten vervollst ndigt Kunden und informatiker tendieren im allgemeinen dazu lieber vorg nge prozesse als situationen zu beschreiben Die kunst der statischen modellie rung besteht genau darin aus beschreibungen von abl ufen einen systemzu standsbegriff ein datenmodell herauszusch len Die verb substantiv methode bietet hier einen geeigneten ansatzpunkt Substantive in problembeschreibun gen deuten auf eher auf klassen und ihre attribute verben eher auf methoden und assoziationen hi
347. uge zur dokumentation In diesem zusammenhang muss es selbstverst ndlich auch um die werkzeug unterst tzung f r die dokumention gehen Dabei muss zuerst einmal gekl rt werden was dokumentation eigentlich bedeuten soll Weitgehend ausklam mern wollen wir hier den bereich der dokumentation f r den benutzer hand swtool tex 9 SOFTWAREWERKZEUGE 191 bticher etc da dies ein spezialbereich ist der neben technischen kenntnissen auch schriftstellerische f higkeiten erfordert In professionell gef hrten un ternehmen wird die benutzerdokumentation von eigenen abteilungen herge stellt oft parallel zum prozess der softwareentwicklung Das mag vielleicht ein grund daf r sein dass die benutzerhandb cher manchmal nicht hundert prozentig zur software passen In dieser vorlesung kann es uns nur um die technische dokumentation gehen die haupts chlich unter dem gesichtspunkt der weiterentwicklung und war tung von programmsystemen geschrieben wird Die frage wann der richtige zeitpunkt ist eine solche technische dokumentation zu schreiben ist schnell beantwortet In einem geordneten software entwicklungsprozess wird in je dem fall zuerst dokumentation geschrieben bevor berhaupt mit der program mierung begonnen wird Dazu k nnen graphische darstellungsmittel wie die in kapitel 4 vorgestellten dienen vor allem aber geh ren eine ganze menge von texten dazu W hrend des programmierprozesses muss diese dokumentation ste
348. umgebung auf eine andere bertragen wer den kann Reifegrad maturity Grad zu dem ein system produkt oder eine komponente die bed rfnisse nach zuverl ssigkeit unter normalem betrieb erf llt Risikofreiheit freedom of risk Grad zu dem ein produkt oder system das po tentielle risiko mindert in bezug auf wirtschaftlichen status menschenle ben gesundheit oder umwelt Ressourcenverbrauch resource utilization Grad zu dem mengen und typen von ressourcen eines produkts oder systems bei der ausf hrung seiner funktionen den anforderungen entspricht Schutz vor benutzerfehlern user error protection Grad zu dem ein system den benutzer davor sch tzt fehler zu machen Sicherheit security Grad zu dem ein produkt oder system informationen und daten sch tzt so dass personen oder andere produkte oder syste me den f r ihre typen und stufen von berechtigung angemessenen grad von zugang zu daten haben swprop tex B NICHTFUNKTIONALE EIGENSCHAFTEN VON SOFTWARE 225 Testbarkeit testability Grad der effektivit t und effizienz zu dem testkrite rien f r ein system produkt oder eine komponente aufgestellt und tests durchgef hrt werden k nnen um festzustellen ob diese kriterien erf llt sind Verf gbarkeit availability Grad zu dem ein system produkt oder eine kom ponente betriebsbereit und zug nglich ist wenn es f r den gebrauch er forderlich ist Vergn gen pleasure Grad des vergn gens das ein benutzer b
349. und im g nstigsten fall 60 50 40 EUR 300 10 40 EUR 240 000 EUR im Mittel also 840 000 240 000 2 Dazu kommen die kosten f r die fehlerbeseitigung Erfahrungsgem ss teilen sich die 600 fehler wie folgt auf EUR 540 000 EUR e 240 anforderungsfehler 40 beseitigung kostet 2 5 entwicklertage e 180 entwurfsfehler 30 beseitigung kostet 1 entwicklertag e 180 codierfehler 30 beseitigung kostet entwicklertag Bei der angenommenen test berdeckung von w rden die 600 fehler auf 200 reduziert es m ssten also 400 fehler 160 anforderungsfehler 120 entwurfs fehler 120 codierfehler nicht beseitigt werden Das ergibt ein einsparungspo tential von 160 2 5 120 120 0 5 580 entwicklertagen entsprechend einem betrag von 464 000 EUR Rechnet man dazu die kosten beim kunden 540 000 EUR so ergibt sich insgesamt ein vor teil von 1 004 000 EUR durch die testmassnahmen Dieser muss verglichen werden mit den kosten f r das testen die 700 personentage kosten 504 000 also ist der ROI f r das testen definiert als die differenz zwischen nutzen und kosten geteilt durch die kosten 1 004 000 504 000 504 000 Mit anderen Worten Jede 100 EUR die ins testen investiert werden sparen 99 EUR f r die sp ter nicht auftretenden fehler 0 99 5 8 Verifizieren Die idee programme formal zu verifizieren geht auf einen alten artikel von Tony Hoare 1969 zurtick der grossen einfluss au
350. ung 34 Fehlerh ufigkeit nach Adams swkorr tex 5 SOFTWAREQUALIT T 107 einem tag tritt ein fehler mit einer MTTF von 1 583 jahren nur ungef hr einmal im Jahr auf Die unterste zeile in tab 4 listet die wahrscheinlichkeit auf mit der ein von einem benutzer bemerkter fehler zu einer der dar berstehenden MTTF klassen geh rt Demnach geh ren 62 3 der beseitigten fehler zu einer fehlerklasse die der benutzer nur mit einer wahrscheinlichkeit von 2 9 ent deckt genauer 2 9 der vom benutzer beobachteten fehler geh ren zu dieser fehlerklasse Auf der anderen seite geh ren nur 2 2 der beseitigten fehler zu einer fehlerklasse die der benutzer mit mehr als 50 iger wahrscheinlichkeit beobachtet 5 1 Value driven testing Sneed und Jungmayr 2011 stellen ausf hrliche betriebswirtschaftliche rech nungen zur wirtschaftlichkeit von tests an und berechnen unter anderem den Test ROI Return on investment Die testkosten werden hier aufgeteilt in testres sourcenkosten und testpersonalkosten und h ngen direkt ab von e anzahl der testf lle e testbarkeitsfaktor und e testautomatisierungsfaktor Nicht alle softwaresysteme sind gleich gut testbar insbesondere wird die test barkeit stark durch die verwendung von GUIs behindert Auch die breite von export und importschnittstellen und die anzahl von attributen in einer daten bank beeinflussen die testbarkeit W nschenswert ist es m glichst viele tests zu automatisieren aber auch
351. ung kooperierender klassen soll minimiert werden Die schliisselobjekte in diesem muster sind gegenstand sub ject und beobachter observer Jeder gegenstand kann eine beliebige menge von ihm abh ngiger beobachter haben Das schema hier heisst auch publish subscribe Die beobachter registrieren sich bei einem gegenstand subscribe bei jeder nderung schickt der gegenstand dann benachrichtigungen pu blish an alle bei ihm registrierten beobachter ohne dabei wissen zu m ssen wer genau diese beobachter sind Auf eine solche benachrichtigung hin fragen die beobachter dann wiederum die f r sie relevanten details beim gegenstand ab 4 7 5 Anwendbarkeit Dieses muster sollte immer dann angewendet werden wenn e eine abstraktion zwei aspekte hat von denen einer von dem anderen ab h ngt e eine nderung in einem objekt nderungen in anderen objekten verlangt ohne dass von vorneherein klar ist wie viele objekte dies sein werden oder e wenn ein objekt in der lage sein sollte andere objekte zu benachrichtigen ohne wissen zu m ssen welches diese objekte genau sind 4 7 6 Struktur Subject observers el Observer Attach Observer Detach Ob KObssiver for all o in observers Notify o 0 gt Update ConcreteObserver j N ConcreteSubject subject Update o 4 observerState subject gt GetState GetState O F observerState SetState return subjectState subjectS
352. ungs grad zwischen seinen komponenten abh ngt Chiles 2001 weist schlie lich darauf hin da Murphy s gesetz in der o a form falsch ist Schlimm wird es jedoch wenn beinahe katastrophen nicht ernstgenommen werden dann kann das weiterverfolgen der fehlerhaften technik tats chlich sehenden auges in die katastrophe f hren wie an der explosion der raumf hre Challenger vor gef hrt wird Interessante gedanken hat auch Sodan 1998 anzubieten der vom Yin und Yang der softwaretechnik linkshirn und rechtshirn etc schreibt D 1 Die ethik des softwareingenieurs Es ist seit einiger zeit blich sich mit ethischen fragestellungen zu besch fti gen Gerade im zusammenhang mit gentechnologie cloning intensivmedizin etc werden in gro er zahl professuren f r ethik in der biologie ethik in der medizin ethik in den wissenschaften gegr ndet Wir k nnen in der informa tik nicht qualifiziert ber ethik sprechen Es gibt jedoch zahlreiche angebo te gerade auch in T bingen in anderen fakult ten welches man bei entspre chendem interesse nutzen sollte An dieser stelle m chte ich nur einige wenige grundtatsachen zur ethik aus dem Sch lerduden Philosophie referieren so wie standescodices der IEEE IEEE Computer Society TCSE 1996 ACM Code Copyright Herbert Klaeren 29 Juni 2015 238 D 1 Die ethik des softwareingenieurs of Ethics and Professional Conduct Gotterbarn u a 1999b neuerdings ver einigt zu einem gemein
353. ungsdokument getestet Bei unklaren oder nicht vorhandenen anforderungen kann man nicht testen Aber wie bereits aus gef hrt kann die qualit t von anforderungsdokumenten verbessert wer den wenn fr hzeitig der gedanke ans testen eingebracht wird swkorr tex 5 SOFTWAREQUALIT T 103 4 Falsch Wenn es schwierig ist testf lle zu finden dann ist das nur ein problem des testens Leider sind nicht wirklich alle anforderungen so formuliert dass sie auch testbar sind Es kann helfen bereits bei der an forderungsdefinition darauf zu achten dass nur testbare anforderungen festgeschrieben werden Testbar heisst in diesem zusammenhang in je dem fall auch messbar Anforderungen wie leicht zu benutzen be nutzerfreundlich sehr zuverl ssig oder akzeptabler durchsatz sind unbrauchbar Graham zitiert Gilb 1988 s a s 241 der gesagt hat Alles kann messbar gemacht werden in einem ausmass das dem nicht messen berlegen ist 5 Falsch Kleinere nderungen in den anforderungen haben wenig aus wirkungen auf das projekt Software ist digital und deshalb zu einem maximalen grad unstetig Es gibt keine kleineren nderungen Selbst scheinbar kleinste nderungen verdienen zumindest einen regressions test ob alle testf lle noch problemlos durchlaufen 6 Falsch Zum testen braucht man die anforderungsdefinition nicht wirklich Ein testfall beinhaltet eingaben vorbedingung
354. unk tioniert schiebt man die ursache auf ein paar fehlende megabyte haupt speicher oder ein paar fehlende megahertz prozessortaktfrequenz 2 Im softwarebereich haben wir es mit einer g nzlich immaterialen techno logie zu tun Software ist grunds tzlich verschleissfrei im gegensatz zu praktisch allen anderen ingenieursprodukten Ein produktionsprozess bzw eine serienfertigung im vergleich zum entwurf bzw der anfertigung von prototypen ist hier nicht erkennbar Entwurf und produktion fallen ex akt zusammen sieht man einmal von dem rein technischen vorgang der vervielf ltigung von datentr gern und handb chern ab Das fehlen von abnutzung an der software k nnte zun chst als vorteil gesehen werden ist jedoch auch als nachteil zu begreifen denn es impliziert dass software in weitaus gr sseren zeitr umen geplant werden muss um unter wech selnden bedingungen immer noch einsatzf hig zu sein Teilweise wird die abnutzung von software ersetzt durch die sich ndernden bedingungen im umfeld in welchem die software eingesetzt wird Anpassbarkeit ist hier ein ganz wesentliches kriterium Ein dokumentiertes beispiel hierzu ist das sogenannte Jahr 2000 problem das grosse aufregung erzeugt hat und grosse summen an geld verschlungen hat Alte software die zum teil noch aus den 50er und 60er jahren stammte hatte jahreszahlen in der re gel zweistellig codiert Dass dies in der datumsarithmetik zu problemen beim jahrhundertwechsel f hren
355. ur ckzuf hren sind Durch summation der werte erkennen wir dass 63 also fast zwei drittel der fehler durch inspektionen auf den verschie denen niveaus gefunden werden Schnurer berichtet dass in einem compiler projekt bei der inspektion jeweils ca 2 2 mannstunden zur aufdeckung eines fehlers notwendig waren w hrend Copyright Herbert Klaeren 29 Juni 2015 122 5 5 Statische analyse beim testen immerhin 24 4 stunden pro fehler investiert werden mussten Da mit kommen wir auf einen produktivit tsvorteil von 12 1 zugunsten der in spektionen Beim betriebssystem DOS VSE wurde dagegen ein verh ltnis von 3 1 gemessen Die konstruktion des prozesses als wettbewerb zwischen software entwicklern deren interesse es sein muss m glichst fehlerfreie software abzuliefern und software testern deren aufgabe es ist m glichst viele fehler aufzudecken sorgt f r eine atmosph re in der eine m glichst grosse software qualit t erreicht wird Aufgabe des moderators ist es hierbei einerseits aggressionen zu verhin dern die aus der wettbewerbssituation entstehen k nnten andererseits aber auch daf r zu sorgen dass die beteiligten sich ihre aufgabe nicht zu leicht ma chen Dazu geh rt die m glichkeit inspektionen bei vorliegen bestimmter kri terien abzubrechen und re inspektionen anzusetzen Dieser fall tritt beispiels halber ein wenn w hrend einer sitzung unerwartet viele aber auch wenn un erwartet wenige fehler gefund
356. ur imple mentierung haben muss Diese darstellung wird nur benutzt um die spezi fikation herzustellen Da das feld elements auch nur im JML teil deklariert wird und nicht innerhalb des Java codes kann sich auch kein verwender des ADT IntHeap darauf beziehen Die schwergewichtige spezifikation der me thode largest sagt dass diese methode nur aufgerufen werden darf wenn mindestens ein element im heap gespeichert ist dass die methode keine varia swmodu tex 2 MODULKONZEPT 33 package org jmlspecs samples jmlrefman public abstract class IntHeap public model non_null int elements public normal_behavior requires elements length gt 1 assignable nothing ensures result max int j 0 lt j amp amp j lt elements length elements j x public abstract pure x int largest ensures result elements length public abstract x pure x int size Abbildung 9 Heavyweight JML specification blen modifiziert d h also nebenwirkungsfrei ist und dass sie in jedem fall das gr sste element aus dem heap liefert Die methode size ist im gegensatz zu largest leichtgewichtig spezifiziert hier gibt es keine angaben zu ausnah mezust nden und vorbedingungen nur die fehlende wirkung auf globale variablen ist durch das schl sselwort pure angegeben Bei largest wurde dies redundanterweise auch noch spezifiziert obwohl sich diese eigenschaft schon aus dem
357. utzter vorrichtungen Sie haben insofern grosse hnlichkeit mit den swll tex 6 VORGEHENSMODELLE FUR DIE SOFTWAREENTWICKLUNG 145 amateurfunkern hobbyelektronikern autobastlern etc Extreme Programming Overview as team interaction overall schedule Team Practices An XP Room eWhole team sits together in one room Dynamic pairs write all production code eon eWork at a sustainable pace Osos RP It It It Release RP It It It Release elntegrate many times per day es Ey RP Release Planning 1 3 weeks Share a common vision and vocabulary E It Iteration fixed length 1 3 weeks eReflect regularly OP Release to users every 1 3 months eConverge on a coding standard Any pair can change any code release planning un iteration planning points for Release Plan gloy j Yesterday s Weather ee t 1 1 2 it 3 1 4 select EZ Select as many F points as were Y finished last iteration 5 customer split if too big F E EA 3SVv3134 Customer Tests Tied to stories e Automated eee n points Keinae velocit i j Y per iteration Customer selects stories tasks most important first an E E E programming Design Philosophy Incremental Test First Programming Stepwise design improvement Dan N via safe transformations esign is evolutionary and emergent 9 s 9 Write a test ePay as you g
358. von eher konservativen firmen die l ngere produktzyklen und kompliziertere verwaltungsstruktu ren besitzen Microsoft hat die weisheiten der softwaretechnik nur wenig zur kenntnis genommen und statt dessen viele elemente der hackerkultur be wahrt Das glasnost prinzip jeder darf jedes st ck code einsehen er w hnte ich bereits so extrem wie beim XP jedem geh rt jedes st ck code ist die hackerkultur dann doch wiederum bei Microsoft nicht etabliert Die softwareherstellung bei Microsoft ist in ungew hnlich flacher hierar chie angeordnet wir haben es im wesentlichen mit lose strukturierten kleinen teams von je 3 8 entwicklern zu tun die parallel arbeiten von einer gleich grossen gruppe von softwaretestern begleitet werden und einen chef haben Ein solches team ist jeweils f r eine bestimmte vorrichtung feature zust n dig und hat die gr sstm gliche autonomie f r diese vorrichtung sowie die gesamtverantwortung vom entwurf ber die programmierung bis zur war tung f r diese vorrichtung Cusumano und Selby bemerken dass diese kon struktion der feature groups es im prinzip erlaubt grosse teams von program mierern mit den gleichen methoden zu managen wie kleine teams Das kann man durchaus auch anthropologisch deuten denn entwicklungsgeschichtlich ist der mensch ein kleingruppenj ger und f hlt sich bis zum heutigen tag in kleineren gruppen wohler als in grossen anonymen organisationen Die heu te vielfach bek
359. ware sagen dagegen in der regel nicht viel mehr aus als dass die CDs silbern rund und mit maschinenlesbaren aufzeichnungen ver sehen sind Das einzige recht das dem kunden einger umt wird ist das recht auf r ckzahlung des kaufpreises Auch wenn nicht alle horrormeldungen ber softwareprodukte ernstge nommen werden sollten Glass 2005 so berichten die medien dennoch gen s slich von software desastern manche sprechen von bananensoftware sie reift beim kunden Die Computerzeitung Reiter 2008 schreibt Einer Studie von Corporate Quality beziffert die Sch den durch Softwarepannen allein in Deutschland auf bis zu 100 Milliarden Euro Diese Zahl ergibt sich dann wenn alle Aus wirkungen mangelhafter IT Strukturen mit eingerechnet werden Alleine durch schlechte Software respektive Ineffektivit t entgehen den Unternehmen j hrlich ber 20 Milliarden Euro so die Expertenbefragung Das Handelsblatt Nr 153 12 August 1998 S 37 l stert Software ist das fehlerhafteste Produkt berhaupt Es ist schon erstaunlich wie es man che Anwender mit der Geduld einer tibetanischen Bergziege hinnehmen was ihnen da Pro grammierer zumuten Programme machen was sie wollen nur nicht das was der Anwender gerne h tte Das System st rzt ab Daten gehen verloren Selbst die Gerichte haben kein Einsehen mit dem geplagten Anwender sie vertreten schlicht den Standpunkt da Software nun einmal fehlerhaft sei Gew hrleistung ist f
360. wie es die reine lehre vorsieht die spezifikation ohne umst nde vor dem program mierprozess erstellt werden dazu werden einfach die spezifikationsteile zusammen mit den methodendeklarationen erstellt wobei das eigentliche programm noch leer ist Es sind werkzeuge verf gbar welche die automatische behandlung sol cher spezifikationen unterst tzen indem sie sich auf die implementierung der programmiersprache abst tzen Im einzelnen kennt JML unter anderem die folgenden konstrukte requires zur spezifikation von vorbedingungen ensures zur spezifikation von nachbedingungen invariant zur spezifikation von invarianten pure zur spezifikation sog reiner funktionen methoden d h funktionen ohne nebenwirkungen side effects und modifies bzw assignable zur angabe von nebenwirkungen Die ersten drei konstrukte entsprechen genau denen von Eiffel wo die jewei ligen bedingungen auch innerhalb der programmiersprache formuliert wer den Die bedingungen sind entweder kommentare der Form sogenannte informelle beschreibungen oder normale boolesche ausdr cke von Java Dabei k nnen diese ausdr cke u a durch die folgenden konstrukte erg nzt werden die nicht zum ei gentlichen Java geh ren Copyright Herbert Klaeren 29 Juni 2015 30 2 4 Spezifikation von software requires n gt 1 ensures result product int i 1 lt i amp amp i lt n i x public static int factorial in
361. wir nun auch pr ziser diskutieren M muss den vertrag von M einhalten das be deutet im einzelnen 1 Die vorbedingungen von M sind schw cher als die von M pre M gt pre M 2 Die nachbedingungen von M sind st rker als die von M post M gt post M 3 Die invarianten von M machen die invarianten von M nicht ung ltig enthalten keinen widerspruch zu den invarianten von M Eine besondere beachtung verdienen in diesem zusammenhang auch die ausnahmesituationen exceptions Eine methode die feststellt dass sie aus ir gendeinem grund ihre nachbedingung nicht gew hrleisten kann kehrt nicht einfach an die aufrufstelle zur ck sondern wirft eine exception 2 3 Bestandteile eines Moduls Konzeptuell ist ein Modul durch die folgenden Komponenten bestimmt Importschnittstelle Hier wird festgelegt welche konstrukte von ausserhalb hier verwendet werden In der regel wird man dabei auch genau mittei len aus welchem anderen modul man diese konstrukte beziehen m chte implizit wird nat rlich auch der typ der konstrukte importiert Exportschnittstelle Hier wird festgelegt welche konstrukte funktionen va riablen etc aus diesem modul von ausserhalb benutzt werden d rfen dabei wird gleichzeitig mindestens der typ dieser konstrukte mitgeteilt Allgemein ist es w nschenswert ausser dem typ noch weitere angaben ber jede exportierte funktion zu spezifizieren swmodu tex 2 MODULKONZEPT 27 Art der
362. y The function of the scientist is to know while that of the engineer is to do The scientist adds to the store of verified systematized knowledge of the physical world the engineer brings this knowledge to bear on practical problems Unlike the scientist the engineer is not free to select the problem that interests him he must solve problems as they arise his solution must satisfy conflicting requirements Usually efficiency costs money safety adds to complexity improved performance increases weight The engi neering solution is the optimum solution the end result that taking many factors into account is most desirable It may be the most reliable within a given weight limit the simplest that will satisfy certain safety requirements or the most efficient for a given cost In many engineering problems the social costs are significant Encylopeedia Britannica 1999 Copyright Herbert Klaeren 29 Juni 2015 244 21 22 23 24 SMART Programm stabilisiert Auto Renningen Der Kleinwagen Smart wird mit dem Stabilisierungsprogramm Trust Plus nachger stet Der Smart Produzent Micro Compact Car MCC Renningen teilte gestern mit die Ma nahme sei das Ergebnis einer berpr fung des Winterfahrverhaltens Unter extremen Bedingungen waren einige Fahrzeuge umgekippt Das neue Stabilisierungsprogramm nehme zus tzlich zur bereits vorhande nen Stabilisierungskontrolle auch w hrend des Beschleunigens Einflu
363. yklus im programm bzw vor der freigabe einer neuen version release werden dann alle bekann ten testf lle aus der regressionsdatenbank erneut durchgespielt Dies kann ein zeitraubender prozess sein s fussnote auf s 108 8Das klingt gerade so als ob man hier ein stetigkeitsargument verwenden w rde ob wohl programme als digitale objekte ja maximal unstetig sind Trotzdem werden mit dieser methode viele fehler gefunden swkorr tex 5 SOFTWAREQUALIT T 115 5 4 5 Die rolle von zusicherungen Voas 1997 bemerkt dass der zweck eines dynamischen softwaretests ist inkorrekte programmausgaben zu provozieren da diese auf fehler im pro gramm hinweisen Damit dies berhaupt funktionieren kann m ssen folgen de bedingungen erf llt werden 1 Eine eingabe muss dazu f hren dass fehlerhafter code ausgef hrt wird 2 Wenn fehlerhafter code ausgef hrt wurde muss der nachfolgende daten zustand des programms fehlerhaft werden 3 Ein datenzustandsfehler muss sich in die programmausgabe fortpflanzen m a w wir m ssen eine fehlerhafte ausgabe erhalten Die erste bedingung hiervon l sst sich nur durch eine geschickte auswahl von testf llen erreichen In manchen programmiersprachen gibt es zusicherungen assertions die eine Boolesche aussage beinhalten und zur erzeugung einer ausnahmebedingung exception f hren wenn zur laufzeit diese zusicherun gen ung ltig sind Wir haben dies hier am beispiel der J
364. ystems von modulen inklusive der zwischen ihnen bestehenden benutzungs bzw aufrufstrukturen Im idealfall enth lt die systemarchitekturbeschreibung alle informationen die der entwer fer f r die weitere arbeit ben tigt so dass ein r ckgriff auf dokumente der sy stemanalyse nicht mehr notwendig wird Die modulstruktur ist von besonde rer wichtigkeit f r den fortgang des prozesses da sie auch auswirkungen auf die organisationsstruktur des programmierteams hat und den grad der w h rend der implementierung m glichen aufgabenteilung parallelarbeit Syste mentwurf ist ein kreativer prozess der viel erfahrung und sicherlich auch be gabung bei den entwicklern voraussetzt Von besonderer bedeutung in diesem zusammenhang ist der begriff der ent wurfsentscheidung W hrend der arbeit an einem system werden immer wie der entscheidungen getroffen wie eine bestimmte datenstruktur denn nun im rechner dargestellt werden soll oder warum ein bestimmter algorithmus f r den gegebenen zweck als geeignet ausgew hlt und wie er dann in die pro grammiersprache umgesetzt wird Entscheidung bedeutet immer eine wahl zwischen mehreren alternativen und h ufig ist diese wahl im ersten ansatz falsch bzw es stellt sich w hrend der weiteren arbeit die durch die alten ent wurfsentscheidungen massiv beeinflusst wird heraus dass eine andere ent scheidung besser gewesen w re Deshalb ist es sinnvoll dass jede entwurfs entscheidung durch ein dazu ei
365. z hlen und verwenden deshalb statt LOC die bezeichnung NCSS Non Commentary Source Statements Das mag durchaus einen signifikanten unterschied machen aber auch dazu ist zumindest eine rudiment re syntaxanalyse notwendig Man verwendet die einheit LOC NCSS immer noch gerne als mass f r den programmieraufwand auch wenn es inzwischen modernere masse gibt Copyright Herbert Klaeren 29 Juni 2015 14 1 4 Programmieren im grossen vs programmieren im kleinen Verwendet man LOC dagegen als steuerungsgr sse f r die unternehmens f hrung um die produktivit t einzelner programmierer zu bewerten so wird das mass unsinnig Programmierer w rden dann versuchen zeilenschinder zu werden und m glichst viele LOC abzuliefern Wartungsmassnahmen wel che code verbessern indem sie zeilen eliminieren w rden dadurch in miss gunst gebracht Ausserdem werden andere wichtige ziele z b wiederverwen dung von code damit in gefahr gebracht Besonders die OO welt lebt bzw wirbt sehr stark mit der wiederverwendung s das zitat von B Meyer in anh E s 242 Eine oft zitierte volksweisheit der softwaretechnik besagt dass ein pro grammierer etwa 100 LOC pro woche schreibt Das klingt zun chst wenig aber es beinhaltet nat rlich die zeiten f r vorbesprechungen planung ent wurf testen dokumentation etc Rechnen wir die woche zu 40 stunden so ergeben sich 2 5 LOC h berechnet man dann die programmiererstunde zu 90
366. ziehung ist blich Da eine subklasse eine spezialisie rung der superklasse ist bzw die superklasse eine generalisierung der Subklas swoo tex 4 OBJEKTKONZEPT OOD UND OOA 71 se spricht man auch von einer GenSpec beziehung Die durch vererbungs bzw klassifikationsbeziehungen induzierte struktur zwischen den klassen nennen wir die klassifikationsstruktur Order dateReceived Customer isPrepaid number String 1 are price Money address N dispatch Navigabiliy creditRating String close 1 if Order customer creditRating is poor then Order isPrepaid must be true Corporate Personal Customer Customer contactName creditCard creditRating creditLimit creditRating remind poor billForMonth Integer line items sales rep 0 1 Order Line Employee quantity Integer rice Mone isSatisfied Boolean 1 gt Product Abbildung 23 Vererbungsstruktur Gamma u a 1995 weisen zu recht darauf hin dass es in der praxis h ufig vorkommt dass man eine entwurfsentscheidung treffen muss ob beziehun gen zwischen komplexen klassen in form von aggregationen bzw komposi tionen oder von GenSpec beziehungen modelliert werden sollen Vom stand punkt des geheimnisprinzips her ist die aggregation wo immer anwendbar zu bevorzugen Hier wird ein komplexes objekt dargeste
367. zu verhindern In einem der zahlreichen Stuttgart 21 prozesse mussten die richter deshalb eine abw gung der rechtsg ter vornehmen und haben in diesem fall entschieden dass das recht der allgemeinheit auf einen anderen bahnhof schwerer wog als das recht des l ngst verstorbenen urhebers auf die unversehrtheit seines werkes 1 des urheberrechtsgesetzes sagt Die Urheber von Werken der Literatur Wissenschaft und Kunst genie fen f r ihre Werke Schutz nach Ma gabe dieses Gesetzes swfloss tex 10 FREE LIBRE OPEN SOURCE SOFTWARE 199 und 82 f hrt dazu weiter aus 1 Zu den geschiitzten Werken der Literatur Wissenschaft und Kunst geh ren insbesondere 1 Sprachwerke wie Schriftwerke Reden und Computerprogramme BY cig Das urheberrecht erlischt erst 70 jahre nach dem tod des urhebers und l sst sich nach 829 weder verkaufen noch verschenken es ist nicht bertragbar es sei denn es wird in Erf llung einer Verf gung von Todes wegen oder an Miterben im Wege der Erbauseinandersetzung bertragen Worin genau das deutsche recht des urhebers besteht sagt 815 1 Der Urheber hat das ausschlie liche Recht sein Werk in k rperlicher Form zu verwerten das Recht umfa t insbesondere 1 das Vervielf ltigungsrecht 16 2 das Verbreitungsrecht 8 17 3 das Ausstellungsrecht 18 2 Der Urheber hat ferner das ausschlie liche Recht sein Werk in un k rperlicher Form ffentlich wiederzugeben Recht de
368. zusammengeklam mert wurden Mehr zu dieser thematik findet sich im abschnitt 3 2 1 Geheimnisprinzip Grundlegende gedanken zur modularisierung hat D L Parnas 1972 vorge stellt In dieser oft zitierten arbeit wird das geheimnisprinzip information hi ding principle als von ihm bevorzugtes kriterium allerdings nur anhand eines beispiels KWIC index erl utert und mit einem standardkriterium verglichen Die Parnas schen ideen zum geheimnisprinzip lassen sich ungef hr folgen dermassen zusammenfassen 1 Ein modul kommuniziert mit seiner umwelt nur ber eine klar definierte schnittstelle 2 Das verwenden von modulen verlangt keine kenntnis ihrer inneren ar beitsweise 3 Die korrektheit eines moduls kann man ohne kenntnis seiner einbettung in das gesamtsystem nachpr fen Dieses geheimnisprinzip auch als kapselung bekannt ist der kern einer vern nftigen abstraktion und deshalb auch die hauptidee bei den abstrakten datentypen abschnitt 3 3 berhaupt ist es eins der wichtigsten konzepte der softwaretechnik Inzwischen scheint es leider weitgehend in vergessenheit ge raten zu sein und zwar trotz aller publikationen im OO sektor und trotz der tatsache dass die kapselung die wichtigste eigenschaft des objektbegriffs ist Tatsache ist dass systeme die wirklich verwendet werden einem steti gen wandel unterworfen sind die notwendigen nderungen lassen sich aber Objekte verf gen allerdings ausserde

Download Pdf Manuals

image

Related Search

Related Contents

Manual de instrucciones (PDF - 3,5Mb)  SRP-2410 User Guide  DeLonghi HMP 1500 space heater    MEGA STICK 528 User`s Manual    John Mills Speedfit BS7291 User's Manual  8374838B208379815B835720464158208376838A83938367  2014 MR Forum Questions    

Copyright © All rights reserved.
Failed to retrieve file