Hoofdstuk 1:Inleiding tot software engineering Waarom? Economie is afhankelijk vsoftware Wat is software? -Computer programma’s en geassocieerde documentatie - software prodcuten zijn: -generiek: ontwikkeld voor een waaier van klanten (vb:office) -maatsoftware: voor 1 klant overeenkomstig me zijn specificatie Nieuwe software kan ontstaan door: Nieuwe software te creeeren Generiek aan te configureren of hergebruik v software Software engineering: Discipline die bezig is met alle aspecten v software Soft eng moeten werken volgens systematische benaderingen afhankelijk van: -op te lossen probleem -development constraints (beperkingen) -bescikbare resources Software proces: Activiteiten met als doel : software Generieke activitieten : -specificatie: wat ? welke zijn development constraint? -ontwikkeling:productie v software -validatie: is dit wat de klant wenst? -onderhoud: eventuele wijzigingen aan de software Software model: Eenvoudige voorstelling v software proces getoodn vanuit een bep sprespectief Vb perspectief: Workflow,Data-flow,Rol/actie… Generiek process modelle: Waterval,interatief,component based Kosten bij engineering : afhankelijk van te ontwikkelen system en de gestelde eisen in combinatie met welk ontwikkelingsmodel gebruikt wordt Methodes software engineering Het zijn gestructureerde benaderingen voor software ontwikkeling rekening houdende met de systeemmodellen, regels,desgin advies en de procesbegeleiding. -Beschrijving systeemmodellen: Beschrijving van grafisch te ontwikkelen modellen -Regels Beperkingen van toepassing op het systeem -Aanbevelingen Samenvatting slides AO Bram Van den Brande -Procesbegeleidng Welke activiteiten zijn nodig? Uitdagingen v software eginering: Heterogeneniteit Vertrouwen(bewijs dat software kan vertrouwd worden door gebruikers) Opleveren(die technieken gebruiken die leiden tot een goed te plannen oplevering vd software) CASE (computer aided software development) Biedt geautomatiseerde ondersteuning voor software process activiteiten Upper-case:ondersteuning van 1e proces activiteiten (analyse of design) Lower-case : ondersteening van later activitieten (debugging,testen,programmeren) Activiteiten goede software Voldoen aan eisen : performantie,functionalitiet,onderhoudsaarheid,betrouwbaarheid -onderhoudsbaarheid: makkelijke aan te passen -betrouwbaarheid:correct & consisten reageren -efficiëntie:slechts resoucres gebruiken die nodig zijn -gebruiksvriendelijkheid: Hoofdstuk 2:Socio technische systemen Systeem categoriën: *Technische: Bevatten HW en SW geen operatoren of operationele processen *Socio-technische: Eveneens operatoren of operationele processen en mensen die interageren met het systeem.(onderworpen aan regels en afspraken vd organisatie) Types systeemeigenschappen *Functionele: Verschijnen tijden samenwerking v (systeem)onderdelen om een objectief te bereiken *Niet functionele: Betrouwbaarheid,prestaties,veiligheid…. Staan in relatie met gedrag v systeem in zijn omgeving Vb: Volume,betrouwbaarheid,beveiliging,onderhoudbaarheid,gebruiksvirendelijkheid *Betrouwbaarheid: -hardware -software -operator(kans dat operator een fout maakt) Systeem engineering Speciferen,ontwerpen,implementeren en onderhouden v socio-technische systemen Samenvatting slides AO Bram Van den Brande Systeemengineering proces Meestal waterfall proces Vraagt samenwerking verschillende engineers Vb: waterfall Interdisciplinaire betrokkenheid Verschillende groepen v engineers ontwikkelen elk hun deel en moeten dit itegreren in een groot geheel. Def vd systeemeisen 3 types -Abstract functioneel:syteem funcites worden op abastrace manier gedefineieerd -Systeem eigenschappen:non-func systeemeisen worden algemeen gedefinieerd -Ongewenste karakteristieken : ongewenst systeemgedrag wordt ge specifieerd ook algemene objectieven worden gedefinieerd Samenvatting slides AO Bram Van den Brande Systeem objectieven: -functionele: Omschrijving vd funcite ve systeem in zijn omgeveing -organisatie: Omschrijving van de gevolgen van bovenbeschreven functie op de werking vd organisatie Systeemontwerpproces Vereisten: veresiten in gerelateerde groepen vastleggen men bekomt sub-sytemen Sub-systemen definieren Versisten toekennen aan sub-sytemen Functionaliteit v sub-systemen specifieren Interfaces v sub-systemen definieren Systeem modellering Architectuurmodel: abstract beeld vd sub-systemen die het systeem vormen Kan verschillende types v functionele componenten in 1 model identificeren Systeemintegratie Bestaande systemen Kunne cruciaal zijn voor operatie ve bedrijf en kunnen soms niet uit dienst genomen worden Componenten: hardware,software(support en applicatie),data,bussines processen Op elk vd componeten kan ene probleem optreden waarmee rekening meot worden gehouden Hoofdstuk 4 : Software processen Set van activiteiten nodig om een software systeem te ontwikkelen Speciferen,ontwerpen,valideren,onderhouden Het is een abastracte voorstellinge ve proces vanuit een specifiek oogpunt. Generieke software proces modellen -Waterval Duidelijk gescheiden fasen van specificatie en ontwikkeling Fasen: -analyse en def eisen -systeem en stofware ontwerp -implementatie en testen Samenvatting slides AO Bram Van den Brande -integratie -onderhoud -Nadeel:Fouten in het begin zij bijna onherstelbaar -evolutie ontwikkeling Specificatie,ontwikkeling en validaite zijn in mekaar geweven Soorten -verkennend: In samenwerking met finale systeemgebruikers, men moet de vereisen goed begrijpen en op aanvraag nieuwe kenmerken toevoegen -prototyping: Als vereisten slecht worden begrepen, hopende dat men tijdens het gebruikt vh prototype beter zal kunne specifieren Problemen : Dikwijls slecht gestructureerde systemen Meesten prototyping nodig Toepasbaarheid: Klein of middelgrote interactieve systemen Delen v grote systemen Systemen v korte levensduur -component based Systeem wordt samengesteld uit bestaande componenten Processtappen: Component analyse Vereisten bijwerken Systeemontwerp met hergebruik Ontwikkeling en integratie Deze manier wordt meer gebruikt naarmate meer en meer standaard componenten opduiken Proces iteratie Systeemeisen veranderen altijd tijdens een project dus iteratie van herwerken van processen zal er ook altijd zijn; Iteratie kan op om het even welk generiek procesmodel worden tegepast 2 benaderingen Progressieve oplevering Spiraal ontwikkeling Software specificatie Vastleggen vereisten diensten rekeninghoudende met de beperkingen op ontwikkeling Hoe? Opstellen vereisten -haalbaarheisstudie -opzoeken + analyseren vereisten -specifieren vereisten -valideren vereisten Samenvatting slides AO Bram Van den Brande Software ontwerp en implementatie Ombouwen van eisen naar uitvoerbaar systeem Software ontwerp: Specificatie realiseren in een softwarestructuur Implementatie Structuur omzetten in uitvoerbaar programma Desing proces activitieten -architectuur ontwerp: Sub-systemen en onderlinge relatie worden gedefinieerd -abscrate specificatie: Ider sub-syteem krijgt een abstracte spec van zijn operaties en beperkingen -interface ontwerp Ieder sub-systeem krijgt interface ontwerp met ander sub-systemen en worden gedocumenteerd -component ontwerp Services aan componenten toekennen en interfaces ontwerpen vd componenten zelf -data(implementatie) structuur ontwerp Datstructuren vd systeemimplementatie worden uitgewerkt -algorythme ontwerp Gebruikte algorythmen(voor leveren diesnten) worden ontworpen Rational unified proces Komt van uml 3 perspecieven Dynamisch : toont fasen in tijd Statisch : toont procs activiteiten Praktisch Hoofdstuk 6 : Software vereisten Opstellen vereisten Tot stand brengen vd services die de klant vraagt ve systeem en de beperkingen waaraan het is onderworpen De vereisten zelf zijn beschrijvingen vd systeemservices,beperkingen en verplichtingen. Software vereiste Van een Absctracte beschrijving ve fucntie gedetailleerde mathematische spcificatie Types veresiten User Veresiten: Wordt geschreven door de klanten. Uiteenzetting in natuurlijketaal met diagrammen vd services die het systeem moet voorzien en de daarbijhorende beperkingen Systeem vereisten: Definieert wat moet geïmplementeerd worden. Document met gedetailleerde beschrijvingen van systeemfuncties,services en beperkingen Samenvatting slides AO Bram Van den Brande Funcitonele <> niet-functionele eisen Functionele: Omschrijving v service die het systeem meot voorzien en hoe te reageren op bep invoer en in specifieke situaties Vb: -ieder order een uniek order id -systeem zal geschikte viewers voorzien… Niet-functionele: Beperkingen op diensten of functies vb: tijdsbeperkingen,wettelijke verplichtingen,standaarden… Vb: -verplichtingen zoals: betrouwbaarheid,responstijd,… -beperkingen ivm i/o devices … Domein: Vereisten afkomstig vh toepassingsdomein ivm karakteristieken vh domein Vb: Dan heeft men nog onderverdeling in de vereisten afhankelijk van het systeem -Meetbare eisen -Librare systeem domein eisen -Vereisten geschreven door de gebruiker ( kan probleem oplevren ivm natuurlijke taal : gebrek aan duidelijkheid,functionele en non-functionele eisen door elkaar ….) Vb van problemen met taal: -ambigiteit(niet altidj zelfde interpretatie ve woord) -over-flexibiliteit (verschillende manier om iets te zeggen) -geen modularisatie (niet geschikt om systeem vereisten te structureren) -LIBSYS requirement -Systeem vereisten -meer specifiek over systeem zelf -basis voor systeemontwerp Versiseten <> ontwerp Vereisten: Wat moet het systeem zou moeten doen Ontwerp: hoe dit moet gebeuren Fomr base specs - def v funcite of entitiet - inputs + oorpsrong - outputs+bestemming - andere veresite entiteiten - pre/post doncities( indien aanwezig) - neven effecten v functie Samenvatting slides AO Bram Van den Brande Spec met tabellen zie vb Interface spec Meeste sysmtene moeten met ander kunnen werken, interfaces moeten als deel vd versiten worden gespecificeerd 3 types interface: 1) procedurele interfaces 2) data structuren die worden uitgewisseld 3) voorstellingen v data Vereisten document Geen ontwerp doc, het is officiële rapport vd systeemontwikkelaars en bevat de def vd gebruikersvereisten en specs vh systeem Key points Alle vereisten opstellen Hoofdstuk 7 : Requirement engineering processes Elicitation & analysis Technische staf werkt samen met de klant om in het domein volgende te zoeken -services die het systeem meot voorzien -beperkingen vh systeem De betrokkenen zijn: gebruikers,managers,engineers,domain experts… stakeholders geneoemd Problemen: Ze weten nei wat ze perfect willen. Stakeholders gebruiken eigne terminologie of hebben tegenstrijdige eisen. Organisatorische factoren kunnen eisen beïnvloeden Systeemeisen wijzingen tijdesn analyse proces Proces activiteiten -requirements discovery: Interactie tussen stakeholder om eisen te ontdekken (users als systeem requirements) Info bronnen : doc,systeem stakeholders,specs v gelijkaardige systemen -requirement classificqtion & organisation Gerelateerde eisen wordne in coherente groepen smane gezet -requirements documentation Viewpoint Veresiten structureren en de perspectieven van verschillende stakeholder weer geven Deze multi-perspectieve analyse is nodig als er geen eenduidige majeir bestaat om de systeemvereisten te analyseren Types: interactor : Samenvatting slides AO Bram Van den Brande o mensen of andere systemen die met het systeem willen interageren indeirect viewpoint o stakeholders die de eisen wel beïnvloeden maar het systeem nie rechtstreeks beïnvloeden domein viewpoint o domein karakteristieken en beperkingen die de vereisten beïnvloeden viewpoint identification identificeer viewpoint met : - providers en gebruikers - interagerende systemen met het te specifieren systeem - afspraken,standaarden - systeemontwikkelaars - … Scenario’s Geven een beschrijving van: - actor - succesvol verloop - uitbreidingen - foutsituaties - beschrijving van einde v scenario Requirement validation Aantonen dat de pgestelde eisen de eisen zijn die de klant wil Technieken: Requirements reviews(manuele analyse vd vereisten) Prototyping Rest case scenario Requirements checking - validity: systeem voldoet aan eisen vd klant? - Consistency:tegenstrijdigheden? - Completeness:alles functies aanwezig? - Realism:eisen te realiseren binne budget? - Verifiabilty:kunne eisen geferifieerd? Traceability - source traceability - requirements traceability o link tussen onderling afhankelijke eisen - Desgin tracebility Link tussen vereisten en design Samenvatting slides AO Bram Van den Brande Hoofdstuk 8 : Systeem modellen (zie vb’n slides) Syteemmodellng helpt de analyst de functionaliteit vh systeem te begrijpen Modellen worden gebruikt om met de gebruikers te communiceren Model types - dataprocessing model: o toont hoe date verwerkt wordt in verschillende niveau’s - compositie model: o toont hoe entiteiten samengesteld zijn uit andere entiteiten - architectuur model: o toont belangrijkste sub-systemen - classificatie model: o toont gemeenschappelijke eigenschappen vh systeem - stimulus/responsmodel: o toont reactie v systeem op events Cintext model Toont wat buiten de systeemgrenzen ligt, het architectuur model toont de relatie met ander systemen. Proces modellen Toont totale processen en de processen ondersteunt door het systeem Data-flow modellen worden ook gebruikt om transformaties van activiteiten te tonen die , binne een set activiteiten en op een bep niveau, uitgevoerd worden op data flows Gedragsmodellen Om het gedrag v totale systeem te beschrijven 2 types: * dataprocessing modellen : tonen hoe data verwerkt wordt doorheen het systeem * state machines models toene respons vh systeem op events Data porcessing modellen Dfd : om dataprocessing ve systeem te modelleren Tonen processtappen samen me dataflow en datastores State machine models Tonen respons v systeem op een event, dikwijls gebruikt voor real-time sytemen Systeemteostanden zijn nodes en eents zijn cirkelbogen ertussen. Bij optreding vee ent gaat het van 1 naar andere toestand State machine diagrams Maken mogelijk te decomposeren in sub-systemen Worden vervolledigd door tabellen die de toestanden en stimuli beschrijven Semantische data modellen Beschrijft logische structuur vd data verwerkt door het systeem Entity relation attribute : toont entiteiten en de realtie vd entiteiten met hun attributen Samenvatting slides AO Bram Van den Brande Data dictionaries Beschrijving v alle namen die in de systeemmodellen gebruikt worden Beschrijven data flows,data elementen,datastore en ook specs v primiteiven zijn hierin opgenomen Zijn integraal supplement bij diagrammen Object modellen Beschrijven systeem dmv object classes en hun associaties Object claas is een abstracte set van gemeenschappelijke objecten en de services Soorten: Inheritance models Aggregation models Interaction models Object gedrags modellen Interactie tussen objecten om een use case te definieren Hoofdstuk 12 : distributed systems architecture Distributed systems Info verwerking wordt verdeeld over verschillende computers en is daarom zeer bealngrijk op bedrijfsniveau Virtueel zijn alle grote computer-based systemen zijn gekend als distributed systems Types: PErsonal systems: Niet distributes en werden ontwikkeld om op PC of Workstation te werken Embedded sytems: Lopen op 1 enkele processor of geïntegreerde groep processoren Distributedsystems: Systeem software loop of geïntegreerde groep samenwerkende processoren linked door een netwerk Characteristics Resource sharing Openheid (verschilende hard- en software ) Concurrency (concurrency processen verhogen prestaties) Nadelen Complexiteit: Security: Gevoeliger voor indringers van buiten Managebility: complexer Onvorspelbaarheid: Onvoorspelbare rsponses afhankelijk v systeemorganisatie en netwerk Architectures Client-server: Samenvatting slides AO Bram Van den Brande Clients gebruiken services van servers.Distributes services worden opgeroepen dor clients Distributed object: Elke object kan services leveren aan of gebruiken van andere objecten (geen client/server onderscheid) Middleware Software die beheer en onderhoud doet van componennten ve distributed systeem VB: Data convertors Communication controllers Multi-processor architectures Eenvoudigste distributed system Het architectuur model van veel real-time systeme Systeem bestaande uit verschillende processen al dan niet uigeveord door verschillende processoren Client-server rchitecturen Gemodelleerd als een set v services geleverd door servers en een set clients die deze gebruiken/ Clients kennen servers, omgekeerd niet Layerd application architecture Presentation layer: o Verzamelen user inputs o Betrokken bij voorstellen resultaten ve bewerking aan users Application processing layer: o Toepassingen ve specifieke functionaliteit Datamanagement layer: o Beheer systeem databases Thin- fat clients - Thin clients: o Server doet datamanagement en volledige uitwerking vd toepassing , client presenteert Gebruikt waneer bestaande systemen naar client/server emergen Bestaand systeem is server met gui op clients Zware druk op servers en netwerk - Fat clients: o Server doet alleen datamanagement, client doet uitwerking en presentatie Verwerking gebeurd lokaal Meest toepasbaar als mogelijkheden v client vooraf gekend zijn Complexer dan thin client : nieuwe versies v toepassingen moetne op clients gezet worden Three tier architectures Elk vd architecture app layers kan worden uitgevoerd op een afzonderlijke processor Presteert beter dan thin-client en is makkelijker te beheren als fat-client Samenvatting slides AO Bram Van den Brande Distributed object architectures Geen sever/client onderscheid Elke gedistributeerde entiteit is een object dat services voorziet voor andere objecten en services ontvangt dan andere objecten Object communicatie gebeurd via middleware adhv request broker Complexer in ontwikkeling dan Client/servers systemen Voordelen: - System designer kunnen de beslissing waar en hoe services te voorzien, uitstellen Opensysteem : nieuwe resources makkelijk te te voegen Flexibel en uitbreidbaar Dynamisch herconfigureerd worden met object die migreren over netwerk , waar nodig Data mining system Geen services provision logisch model omdat er afzonderlijek datamanagemnt services zijn Database kunne worden bijgeveogd zonder onderbrekeing vh systeem Nieuwe relatietypes kunnen worden omschreven door toevoeging van nieuw inegrator objects CORBA( slide 31-40) Peer-to-peer architectures Gedecantraliseerde systemen waar bewerkingen kunnen worden uitgeveod in elke node in het network Totaal systeem haalt werkracht uit het grote aantal computers over het netwerk P2P architectural models Samenvatting slides AO Bram Van den Brande Decantralised arch Semi-centralised arch Hoofdstuk 13 : Application architectures Application types - Data processing apps: o Data driven apps die data verwerken in batch Vb: billing systeem, pay-roll systeem - Transaction processing apps: o Data centred apps die user requests verwerken en info updaten in databases Vb: e-commerce systeem,reservation systeem - Event processing systems: o Interpreteert evens en reageert Vb: word prcessors, real-time systems - Lanuage processing systems: o Formele taal wordt geïnterpreteerd en uitgevoerd door het systeem Vb:Compilers, command interpreters Samenvatting slides AO Bram Van den Brande Data processing systems Input-proces-ouptu systeem Voorbeeld dfd payroll Transaction processing systems Verwerkt queries qls dml opdrqchten vd gebruiker Vb: ATM Samenvatting slides AO Bram Van den Brande Transaction management E-commerce system architecture Internet based resource management systemen die elektronische orders aanvaarden Meestal multi tier met app layers geassocieerd met elke tier Event-processin systems Geven respons op event Sleutel karakteristiek: opvangen van onvoorspelbaarheid vd event-timing Language processing sytems Aanvaarden natuurlijke of artificiële taal en generen er een ander van Hoofdstuk 19 : Component based software engineering CBSE essentials Onafhankelijek compoenten gespeciefieerd door hun interfaces Somponent standaards Samenvatting slides AO Bram Van den Brande Middleware voorziet ondersteuning Hergebruik CBSE & design principals Hergebruik: - onafhankelijke componenten geen interferentie - verborgen implementatie - communicatie via goed gedefineerde interfaces - shared component platforms Components Bieden een services aan -onafhankelijk uitvoerbare entiteit(soms bestaande uit meer entiteiten) -publieke interface waarlangs alls interacteis gaan Component interfaces Provides interface: o Definieert service die worden aangeboden Requires interface: o Definieert services die speciferen welke services moeten worden beschikbaar gesteld voor goede werking Vb: Data collector comp Components & objects Componenten zijn: - enteiteiten - definierne geen type - ondoorzichtige implemantaties Samenvatting slides AO Bram Van den Brande - taal-onafhankelijk gestandariseerd Component models Definietive standard ve implementatie ve component Het specifieert hoe interfaces moeten worden gespeciefieerd en welken elementen moeten worden opgenomen inde interface def Elements of a component model Middelware support Component models zijn de basis voor middleware support Component models implementaties bestaan uit : -platfrom services:laten componetne communiceren -horizontale servces:app nahfankelijke services gebruikt door veschillende componenten Platfrom en honrizontal: Samenvatting slides AO Bram Van den Brande CBSE proces (info) Component identification proces (info) Component composition Types: Sequential composition: samengestelde componenten worden uitgevoerd in sequentiële vologorde Hierarcical composition: component doet beroep op service ve ander. Provide en require interfaces v beiden zijn samengevoegd Additive composition: interfaces van 2 componenten worden samengevoegd tot een nieuw Samenvatting slides AO Bram Van den Brande Interface incompatibility Parameter incompatibility: zelfde naam v operatie, ander type Operation incompatibility: namen v operaties in de provide & require interface zijn verschillend Operation incompletness: provide interface van ene is een subset vd ander zijn require interface Vb: Adapter components: Interfaces v samen te stellen componenten,bij incomptabiliteit, wordt met een ADAPTOR compatble gemaakt Zodat types kunne verschillend zijn. Hoofdstuk 22 : Verificatie & validatie Verificatie <> validatie Verificatie: software conform aan specificatie? Validatie:doet software wat gevraagd is ? V&C proces In volledige life-cycle toepassen Fouten ontdekken Evaluatie vh systeem Vertrouwen wekken dat het systeem doelgeschikt is Hoeft NIET volledig foutvrij te zijn eerder goed genoeg voor voorbestemd gebruik Statische en dynamische verificatie - Software inspection - Software testing Samenvatting slides AO Bram Van den Brande Testing Types - Defect testing: o Systeem fouten ontdekken o Succesvol als men fout heeft gevonden - Validatie testing: o Aantonen dat software voldoet aan eisen o Succesvol als blijkt dat vereisten goed zijn geïmplementeerd Debugging Locaiseren en corrieren van de bij test gevonden fouten Proces: V& V planning Moet worden gestart met ontwikkelingsproces Evenwicht zoeken tussen testen en verificatie Testplanning: afspreken v standaarden voor het test proces( niet de test beschrijven) v-model (info) Samenvatting slides AO Bram Van den Brande Structuur ve software test plan - Test proces : beschrijving vd grootste fasen - Opvolging requirements: in welke mate is voldaan aan de eisen vd gebruiker - Geteste items : specificieren welke onderdelen getest worden - Test volgorde schedule en resource allocation - Test recording procedures :uitkomste ve test moten opgeslagen worden zodat men kan nagaan op iets correct verlopen is tijdesn de test - Hardware en software requirements : - Constrants : rekening houden met eventuele beperkingen (te weinig personeel) Software inspections Nagaan vd source met mensen ,zonder uitvoering van iets, om fouten op te sporen Succes: meerder fouten bij 1 inspection Inspecties en testen gaan dus nauw samen. Wat men bij inspecites vindt zal men bij testen proberen oplossen. Er bestaan inspectionlist om het allemaal iets makkelijker te maken Inspection proces Automated static analysis Software tools voor het verwerken v source tekst Parsen het prog en zoeken naar fouten (gebruiken V & V) Zeer effectief, maar vervangt inspections niet Samenvatting slides AO Bram Van den Brande Stages - Control flow analysis: o Test op loops, zoekt onbereikbare code… - Data use analysis: o Ontdekt niet geinitaliseerde of ongebruikte variabelen, - Interface analysis: o Test consistentie v routine en procedure declaraties en hun gebruik - Infrmation flow: o Identificeert afhankelijkheden v output vars - Path analysis: o Identificeert maden doorheen het programma Samenvatting slides AO Bram Van den Brande