Software Engineering 1. Einführung und...

Post on 06-Aug-2020

0 views 0 download

transcript

SoftwareEngineering1.EinführungundBegriffe

Prof.Dr.KlausOstermann

1 SoftwareEngineering

Agenda

SoftwareEngineering2

}  Organisatorisches}  Begriffsklärung:Softwaretechnik}  AufbauderVorlesung

Organisatorisches

SoftwareEngineering3

OrganisationderLV

SoftwareEngineering4

}  Umfang:2SWSmit~8Vorlesungen}  BegleitendzumTeamprojekt}  Termine:

}  VL:Mi14.15–15.45Uhrhier}  Klausur:27.06.2018,14:00Uhr,HörsaalN6

}  Scheinkriterien}  Abschlussklausur}  MusszumAbschlussdesProgrammierprojektsbestandenwerden}  FliesstindieNoteein(Detailsfolgen)

}  HomepagederLV:}  http://ps.informatik.uni-tuebingen.de/teaching/ss18/se/

KopienderFolien,Literaturhinweise,...

Lehrveranstaltungsstil

SoftwareEngineering5

}  KonzeptvermittlungdurchFolien}  FolienkopiensindaufderHomepageverfügbar,Abweichungen(insb.Korrekturen)sindmöglich

}  BeispielehäufiganderTafel}  ZwischenfragenundKommentarewährendderVorlesungsindgrundsätzlicherwünscht.

}  „EinsatzinderPraxis“imPraktikum}  GastvorträgevonhochkarätigenDozentenausderIndustrie

}  KommenSiezurVorlesung!}  UndwerdenSienichtzurBelastungfürIhreTeampartner

Inhalt

SoftwareEngineering6

}  SoftwareEngineering:}  Systeme,Projekte,Fachgebiet

}  Vorgehens-undProzessmodelle}  Anforderungsanalyse}  Softwareentwurf:ModellierenvonSoftwaresystemen}  Systementwurf:

}  SW-Architekturen,EntwurfsmusterundKomponenten}  OO-KonzeptefürFortgeschrittene}  Software-Qualitätssicherung:

}  speziellTestenvonSoftwaresystemen}  Projektmanagement

BegriffeundKontext

SoftwareEngineering7

Vorgehen?

SoftwareEngineering8

}  WoherkommtdieProblembeschreibung?}  BeschreibtsiewirklichdasProblemdesNutzers?}  WelcheStruktursolldasfertigeProgrammhaben?}  LöstdasProgrammwirklichdasProblem?Funktionierteskorrekt?

}  WaspassiertmitneuenAnforderungendesBenutzers?}  WieteiltmandieArbeitbeimehrerenEntwicklern?

ProblembeschreibungeinesBenutzers

Programmierer FertigesProgram

Softwaretechnik(engl.SoftwareEngineering)

SoftwareEngineering9

}  EtabliertesTeilgebietderInformatik}  Anforderungsanalsyse}  EntwurfundEntwicklungvonSoftware,undWerkzeugedafür}  OrganisationundStrukturierungderEntwicklung,Projektmanagement

}  Qualitätssicherung}  BetriebundWartungvonSystemen}  uvm.

Software-Krise

SoftwareEngineering10

}  Mitte1960erJahre}  MitschnellererHardwarewurdeSoftwarewichtiger}  SteigendeAnforderungen,aber

}  QualifiziertesPersonalfehlte}  Softwareentwicklungdurch“Bastelei”}  Softwarewarunzuverlässig,ständigeWartung}  BestehendeSystemeintransparentundunübersichtlich,kaumänderbar

}  KostenundDauerüberstiegenErwartungen}  Anforderungenoftnichterfüllt

}  SoftwarekostenüberstiegenHardwarekosten}  GroßeSoftwareprojektescheiterten

Software-KriseII

DieSoftware-Krisevonmorgen

SoftwareEngineering12

FehlgeschlageneSoftwareprojekte(Beispiele)

SoftwareEngineering13

}  SAGE-Systemvon1951zurAufspürungvonBombern;beiInbetriebnahme1963überflüssig;neueGefahrRaketen

}  TollCollect:GeplanterStart31.Aug2003,tatsächlicherStart1.Jan2006;3.5MilliardenEUREinnahmeausfälle

}  KaliforniensFührerscheinstellestopptProjektnach6Jahrenund45M$

}  FBIVirtualCaseFilein2005gestoppt,nach3Jahrenund170M$

}  LondonerBörsebeendetTaurusProjekt1993nach11JahrenundBudgetüberschreitungum13200%(800M£)

ExtremeKomplexität(Beispiel)

SoftwareEngineering14

}  DDXU-Boot}  VieleeingebetteteSysteme}  Zusammen30.000.000.000ZeilenCode(Schätzung)}  In142Programmiersprachen

Woranliegtes?

SoftwareEngineering15

}  unzureichendspezifizierteAnforderungen}  häufigesÄndernderAnforderungenwährenddesProjekts

}  MangelanRessourcen}  inkompetenteMitarbeiter}  wenigBenutzer-Einbeziehung}  fehlendeUnterstützungdurchdasManagement}  zugroßeErwartungen}  falscheSchätzungderZeit/Kosten}  Managementfehler}  ObsoleteProjekte(inzwischenbessereLösungen)

Kommunikation?

SoftwareEngineering16

Engineering?

DerNeidaufdieIngenieure…}  Autoproduktion

}  KalkulierbareKostenundRisiken}  VorhersehbaresErgebnis}  HoheQualität

}  Softwareproduktion}  Kostenkönnennichtzuverlässigvorhergesagtwerden}  VieleProjekteendenwährendoderkurznachderProduktionalsFehlschlag

}  QualitätssicherungsmaßnahmengarantierenkeinequantifizierbareQualität

• KlareTrennungzwischenPlanungundProduktioneinesProdukts• QualitätskontrolledurchMessungen• MöglichkeitderAutomatisierung,„Industrialisierung“

SoftwaretechnikalsLösungsidee

SoftwareEngineering19

}  Begriff1968geprägt}  SystematischesHerangehen}  PublikationvonbewährtemVorgehenundErfahrung}  Entwurf,Teile-und-Herrsche}  Wiederverwendung}  Qualitätssicherung

}  Begriff“SoftwareEngineering”provokativgewählt

SoftwareEngineering:„TheEstablishmentanduseofsoundengineeringprinciplesinordertoobtaineconomicallysoftwarethatisreliableandworksefficientlyonrealmachines.”[Bauer1975,S.524]

SoftwaretechnikinderInformatik

Informatik(computerscience)

Softwaretechnik(softwareengineering)

SoftwareEngineering20

}  TheorienundMethodenfürComputerundSoftwaresysteme

}  PraktischeErstellungvonSoftware

GrundlageundFundierung

SoftwareEngineering=Engineering?

SoftwareEngineering21

Software=Design=Plan!ProgrammierenistEntwerfen,nichtProduktionSimulationvonSoftwareistnichtnotwendig.AgileTechnikensindmöglich,“Wasserfallmodell”istnichtadäquat

Ingenieursprodukt Software§ ProduktisteinphysikalischesObjekt§ GebautdurchMenschenundWerkzeuge§ Konstruktion

§ istteuer§ erfordertArbeitundMaterial§ istlangsam§ teuerzuwiederholen

§ PräziseMessungderQualität

§ DasProduktistdaslaufendeProgramm§ KonstruktiondurchBetriebssystem§ Konstruktion

§ istextrembillig§ automatisch,keinMaterialeinsatz§ sehrschnell§ leichtzuwiederholen

§ WenigsinnvolleMetrikenzurMessung

Requirements

Design

Product

Designing

Building

Schlussfolgerungen

AufbauderVorlesung

SoftwareEngineering22

AufbauderVorlesung

SoftwareEngineering23

}  1.Anforderungsanalyse}  WaswillderKunde?}  EntwickelnwirdasRichtige?

}  2.Vorgehensmodelle}  WieplantmandasVorgehen?}  WiegehtmanaufgeänderteAnforderungenein?}  ZumBeispiel:WannundwieTesten?

}  3.TeamworkundProjektmanagement}  Versionsverwaltung:TechnischeZusammenarbeit}  Projektmanagement:Arbeitsteilung,Zeitplanung}  Risikomanagement

AufbauderVorlesungII

SoftwareEngineering24

}  4.SoftwaretechnikimKleinen}  WartbarerQuelltext}  Modellierung,UML}  Entwurfsmuster,TrennungvonBelangen}  Refactoring

}  5.SoftwaretechnikimGroßen}  Systementwurf,Modellierung}  Modularität

}  6.Qualitätssicherung}  Metriken}  Testen}  JenseitsvonTesten

Literatur

SoftwareEngineering25

}  VieleSoftwaretechnikbücheraufdemMarkt,z.B.}  SoftwareEngineering.IanSommerville.Addison-WesleyPubCo

}  KeinekonkreteEmpfehlungfürdiegesamteVorlesung}  ZujedemAbschnittweiterführendeLiteratur