Summary Software engineering

-
ISBN-10 0137053460 ISBN-13 9780137053469
398 Flashcards & Notes
11 Students
  • These summaries

  • +380.000 other summaries

  • A unique study tool

  • A rehearsal system for this summary

  • Studycoaching with videos

Remember faster, study better. Scientifically proven.

Summary 1:

  • Software engineering
  • Ian Sommerville
  • 9780137053469 or 0137053460
  • 9th ed., International ed.

Summary - Software engineering

  • 1 Introduction

  • Noem twee oorzaken van mislukte softwareprojecten
    • Bestaande software-engineeringmethoden sluiten niet aan bij nieuwe ontwikkelingen
    • Er wordt geen software-engineeringmethode toegepast
    [1]
  • 1.1 Professional software development

  • Wat zijn de belangrijkste uitdagingen voor software engineering?
    • Toegenomen diversiteit
    • Behoefte aan snelle ontwikkeling
    • Het ontwikkelen van betrouwbare software
    [1.1]
  • Hoe verhouden zich de verschillende kostengebieden van software engineering zich tot elkaar?
    Ongeveer 60% van de kosten zijn ontwikkelkosten en 40% van de kosten wordt besteed aan testen.
    Bij maatwerksoftware zijn de kosten van evolutie doorgaans hoger dan de ontwikkelkosten.
    [1.1]
  • In welke opzichten heeft de opkomst van het web het vakgebied van software engineering veranderd?
    Het web heeft geleid tot de beschikbaarheid van webservices en de ontwikkeling van gedistribueerde systemen.
    De ontwikkeling van webbased systemen heeft een gunstige invloed gehad op de ontwikkeling van programmeertalen en hergebruik van software.
    [1.1]
  • Welke twee soorten software kunnen onderscheiden worden?
    • Generieke software, waarbij de eisen bepaald worden door de organisatie die het product op de markt brengt
    • Maatwerk, waarbij de eisen bepaald worden door de afnemer van de software
    [1.1]
  • Noem twee redenen voor het belang van software engineering
    • De maatschappij wordt steeds afhankelijker van software
    • De kosten voor de ontwikkeling van software betalen zich op de langere termijn terug
    [1.1]
  • Noem drie algemene aandachtspunten voor software engineering, onafhankelijk van het type software
    • Heterogeniteit: de software moet met verschillende systemen kunnen samenwerken
    • Veranderingen gaan steeds sneller, waardoor de oplevertijd onder de druk komt te staan
    • Informatiebeveiliging en betrouwbaarheid
    [1.1]
  • Noem acht typen applicaties
    • Stand-alone applicaties
    • Interactieve transaction-based applicaties, bijv. e-commerce applicaties
    • Embedded control systems, bijv, software voor mobiele telefoons
    • Batch processing systems, bijv. een salarissysteem
    • Entertainment systems, bijv. games
    • Systemen voor modellering en simulaties
    • Data collection systems op basis van sensoren
    • Samengestelde systemen
    [1.1]
  • Noem vier basisprincipes (fundamentals) voor software engineering
    • Software processes
    • Software dependability en security
    • Requirements engineering
    • Software reuse
    [1.1]
  • Noem twee voordelen van de webbased applicaties
    • Het is goedkoper om de software aan te passen
    • De kosten voor het ontwikkelen van de user interface zijn lager
    [1.1]
  • Noem drie karakteristieken van webbased softwareontwikkeling
    • Belangrijke rol voor software reuse
    • Incrementele ontwikkeling, waarbij de eisen in de loop van het ontwikkeltraject worden gespecifeerd
    • De mogelijkheden voor de ontwikkeling van user interfaces voor web browsers zijn beperkt
    [1.1]
  • 1.2 software engineering ethics

  • Noem vier ethische aspecten van softwareontwikkeling
    • Confidentiality: schaadt het vertrouwen van medewerkers en klanten niet
    • Competence: wees eerlijk over je vaardigheden
    • Intellectual property rights: respecteer de wet- en regelgeving met betrekking tot intellectueel eigendom
    • Computer misuse: gebruik je kennis en vaardigheden niet om anderen te schaden
    [1.2]
  • Wat is de functie van de Code of Ethics voor software engineers?
    Door zich te committeren aan de Code of Ethics spreken software engineers de intentie uit om conform de ethische standaarden te handelen en op professionele wijze met ethische dilemma's om te gaan.
    [1.2]
  • 2 Software processes

  • Wat is van belang bij elke activiteit?
    1 Producten
    2 Rollen
    3 Pre- en post condities
  • Noem vier fundamentele activiteiten van een software proces
    • Software specification
    • Software design and implementation
    • Software validation
    • Software evolution
    [2]
  • Waarmee kan je software processen verbeteren?
    Standarisatie
  • Noem vier elementen van een procesbeschrijving
    • De activiteiten
    • De op te leveren producten
    • Rollen en verantwoordelijkheden
    • Pre- en postcondities
    [2]
  • Wat zijn de vier activiteiten bij elk softwareproces?
    1 specificatie
    2 ontwerp en implementatie
    3 Validatie
    4 evolutie
  • Wat is het verschil tussen plan-driven en agile processen?
    Bij plan-driven processen worden alle activiteiten van tevoren gepland. Aan de hand van deze planning wordt de voortgang van het project bewaakt.
    Bij agile processen is de planning incrementeel, waardoor het makkelijker is om in te spelen op veranderende eisen.
    [2]
Read the full summary
This summary. +380.000 other summaries. A unique study tool. A rehearsal system for this summary. Studycoaching with videos.

Summary 2:

  • Software engineering
  • Ian Sommerville
  • or
  • 2011

Summary - Software engineering

  • 1 Introduction

  • a.Wat zijn de 4 belangrijke attributen die alle profesionele softwar zou moeten hebben?

    b.Noem er nog 4 die soms ook belangrijk kunnen zijn

    a.Maintainability

    dependability

    performance

    usability

    b. reusability

    distributability

    portability (meerdere platformen)

    inter-operability (meerdere softwaresystemen)

    security

    safety

    availability

     

     

     

  • Verklaar waarom het universeel gebruik van het Web software systemen heeft veranderd.

    - Systemen kunnen op op al bestaande systemen worden opgebouwd

    - Systemen kunnen incrementeel ontwikkeld worden

    - Systemen kennen beperkingen in de gebruikersinterface ten gevolge van de beperkingen van webbrowsers

     

  • Om terrorisme te bestrijden, worden veel activiteiten van gebruikers gelogd. Dit heeft privicy issues. Geef argumenten waarom dit ethiesche problemen geeft als je werkt met de ontwikkelingen van dit systeem.

    Op een aantal punten kunnen conflicten ontstaan tot de ethische code:

    - Public: is het systeem volgens u wel in het algemeen belang? Wellicht spelen hier persoonlijke en politieke motieven een rol

    - Client en employer: idem

    - Judgement: conflicteren uw persoonlijke en professionele oordeel hier

    - Profession: schaadt dit volgens u de reputatie van het beroep niet?

    - Collegueas: wat doet u als uw collega's een hele andere opinie hebben?

  • Wat wordt in het tekstboek verstaan onder software en wat onder software engineering?

    Software is een computer programma inclusief documentatie

    Software engineering is een vak die zich bezig houdt met alle aspecten van het produceren van software

  • Waarin onderscheidt software engineering zich enerzijds van informatica en anderzijds van system engineeering?

    Software engineering is een technisch vak: het gaat als alle technische vakken over hoe iets geconstrueerd wordt. Informatica is een theoretisch vak, waarin de inzichten wel de grondslag vormen voor software engineering.

    System engineering is breder; dit vak houdt zich bezig met de constructie van verschillende systemen, waarbij een systeem een verzameling onderling afhankelijke componenten is die samenwerken om een gegeven doel te verwezenlijken. In de praktijk houdt system engineering zich vooral bezig met systemen die software bevatten als een van de componenten.

  • Wat zijn de 4 belangrijkste soorten activiteiten in ieder software proces?

    specificatie

    ontwikkeling

    validatie

    evolutie

  • Wat zijn de belangrijkste punten uit de Software Engineering Code of Ethics and Professional Practise?

    1. Public: software engineers moeten consistent met een publieke interesse werken

    2. Client en employer: belang van de client en employer werken

    3. Product: hoogste professionele standaard

    4. Judgement: integriteit en ongafhankelijk professioneel oordeel

    5. Management: ethische benadering naar het management van software ontwikkeling en onderhoud

    6. Profession: integriteit en reputatie van het beroep met een publieke interesse

    7. Collegues: eerlijk en sportief naar collega's

    8. Self: levenslang leren en een ethische benadering aanmoedigen bij het uitoefenen van hun beroep

  • 2 Software processes

  • Welk software proces model zou je gebruiken bij het maken van de onderstaande systemen;

    a. een systeem om het anti-lock braking systeem van een auto te maken

    b. Een virtual reality systeem om onderhoudt to support software maintenance

    c. Een university accounting system die een bestaand systeem vervangt

    d. Een interactief vakantieplanning systeem die gebruikers helpt om reizen te plannen met de laagste environmental impact

    a. een systeem om het anti-lock braking systeem van een auto te maken -> Dit is een safity-critical systeem, die veel analyse aan het begin vereist. Dit heeft echt een plan-driven aanpak nodig om te maken, waarbij de requirements goed geanaliseerd moeten woden. Een waterfall methode zal hierom dan ook de beste methode zijn

    b. Een virtual reality systeem om onderhoudt to support software maintenance -> Dit is een syseteem waarbij de requirements zullen veranderen en de UI zal een grote bijdrage moeten leveren. Incremental development en enige UI prototyping is de meest geschikte model. Een agile process is nodig.

    c. Een university accounting system die een bestaand systeem vervangt -> Van dit systeem zijn de requirements ook erg bekend en wordt gebruikt in een omgeving met veel andere systemne. Hierom zal een reuse-based aanpak het meest geshcikt zijn.

    d. Een interactief vakantieplanning systeem die gebruikers helpt om reizen te plannen met de laagste environmental impact -> Systemen met een complexe UI maar moeten stabiel en betrouwbaar zijn. Een incremental onwikkel aanpak is het meest geschikt omdat de system requirements zullen veranderen wanneer echte gebruikers het systeem gaan gebuiken

  • Welke van de onderstaande stadia helpen bij de verificatie van het systeem en welke bij de validatie?

    a. development testing 

    b. system testing

    c. acceptance testing

    a. development testing -> verificatie

    b. system testing -> verificatie

    c. acceptance testing -> verificatie en validatie (omdat hier nog fouten in de requirements naar voren kunnen komen)

  • Leg uit waaarom verandering onvermijdelijk is in een complex software systeem en geef voorbeelden van process activiteiten die je helpen om software veranderingen te voorspellen en om de software te ontwerpen die beter tegen veranderingen kan.

    Systemen moeten veranderen omdat ze geinstalleerd zijn in een omgeving. De omgeving past zich aan en deze aanpassing genereerd nieuwe systeem requirements. Tevens is de omgevbing dynamisch en genereerd steeds nieuwe requirements. Als het systeem zich niet aanpast aan de veranderingen zal het systeem steeds minder bruikbaar zijn.

    Voorbeelden van processen die verandering ondersteunen zijn:

    1. Reden van requirement opnemen in de requirements, dit help bij toekomstige veranderingen

    2. Afhankleijkheden tussen requirements en de design/code opnemen

    3. Disign modeling, waarbij het design model de documentaie is van de structuur van de software

    4. Code refactoring die de kwaliteit van de code beter maakt, zodat het makkelijker is aan te passen

  • Wat zijn de voordelen om statische en dynamische views van de software processen te maken in het Ratitional Unified Proces (RUP)?

    In de meeste gevallen zijn de statisch eactiviteiten interleafed, dus een sequentieel proces model beschrijft dit niet. Door dit te scheiden van het dynamische perspectief, kun je het er over hebben hoe elk van deze statische activiteiten wordt gebruikt in elke fase van het proces.

  • a. Noem 4 procesmodellen, geef een korte karakterisering en geef aan voor welk type project het model geschikt is.

    b. Leg uit waarom het incrementele model en het signaalmodel van Boehm beschouwd worden als hybride modellen of raamwerken

    1. Watervalmodel. Dit is een lineair ontwikkelingsmodel waarin een systeem stap voor stap wordt ontwikkeld. Iedere stap wordt afgesloten met een document. Dit model is alleen geschikt voor conventionele projecten waarvan het verloop goed in te schatten is.

    2. Incrementele ontwikkeling. Hierbij gaan specificatie, ontwikkeling en validatie hand in hand. Er wordt snel een 1e prototype ontwikkeld, dat vat vervolgens stap voor stap groeit. De klant levert op iedere tussenstap commentaar . Evolutionaire ontwikkeling is geschikt voor systemen waarvan vooraf niet duidelijk is aan welke eisen ze moeten voldoen, bijvoorbeeld omdat het een nieuw toepassingsgebied betreft of een toepassingsgebied waar de klant weinig ervaring mee heeft.

    3. Formele systeemontwikkeling. Gaat uit van een gedetailleerde formele specificatie, die via een reeks correctheidsbehoudende (formele) transformaties wordt omgezet in een implementatie. Formele systeemontwikkeling is geschikt voor relatief kleine systemen met strikte eisen aan veiligheid. (safety and security).

    4. Reuse-oriented ontwikkeling. Probeert een systeem op te bouwen uit beschikbare herbruikbare en/of standaardcomponenten. Deze werkwijze is vooral geschikt in situaties waar de systeemeisen licht aangepast kunnen worden aan de beschikbaarheid van bestaande componenten.

    b. Deze modellen zijn geparametriseerd en beschrijven dus een familie van procesmodellen

     

  • Wat is 'throwaway prototyping'?

    Het gaat om wegwerp-prototypes. Deze worden bewust simpel gehouden en dus snel ontwikkeld. Het wegwerpaspect is bedoeld om te voorkomen dat deze prototypes deel uit gaan maken van het systeem. Het gaat om het snel testen van een bepaalde geïsoleerde functionaliteit van het uiteindelijke systeem

  • a. Wat zijn de belangrijkste kenmerken van het spiraalmodel van Boehm?

    b. Kan elk procesmodel dat met behulp van het incrementele model beschreven kan worden, ook worden beschreven met het spiraalmodel van Boehm? En omgekeerd?

    a. Iteratieve ontwikkeling, waarbij iedere iteratie bestaat uit 4 fasen. Risicanalyse speelt een belangrijke rol

    b. Een incrementeel proces kan makkelijk worden oondergebracht in Boehm's spiraalmodel. Het voortraject wordt ondergebracht in de 1e cyclus en verder per iteratie een cyclus.

    Omgekeerd is dat niet het geval, omdat in het incrementele model activiteiten als prototypering en risicoanalyse ontbreken. Het spiraalmodel is dus algemener dan het incrementele model.

  • a. Teken het schema van Rational Unified Process (RUP)?

    b. Kunnen de iteraties in het Rational Unified Process (RUP) ook worden gemodelllerd volgens het spiraalmodel van Boehm?

    a. Inception, Elaboration, Construction, Transition (figuur 2.12)

    b. Het spiralmodel van Boehm loopt in elke iteratie door alle fasen van het proces heen, In het RUP kun je binnen een fase itereren. De iteraties binnen het RUP zijn dan ook niet zomaar te modelleren volgens het spiraalmodel van Boehm. De achterliggende reden is dat binnen het spiraalmodel van Boehm de dynamisch en statich eviews die gegeven worden voor het RUP niet zo duidelijk te scheiden zijn, en de workflows dus enigszins aan de verschillende kwadranten gekoppeld zijn.

Read the full summary
This summary. +380.000 other summaries. A unique study tool. A rehearsal system for this summary. Studycoaching with videos.

Latest added flashcards

Welke argumenten pleiten voor plan-driven ontwikkeling ten opzichte van agile ontwikkeling?
  • Er moet een gedetailleerd ontwerp zijn voordat begonnen wordt met de implementatie
  • Er moet een uitgebreide analyse worden uitgevoerd voordat begonnen wordt met de implementatie
  • Het gaat om een groot project waarbij veel medewerkers zijn betrokken
  • Het systeem moet lang meegaan, waardoor het belang van documentatie toeneemt
  • De organisatie die software ontwikkelt is gewend om plan-based te werken
  • De software moet gekwalificeerd worden door een derde
[3.2]
Welke argumenten pleiten voor agile ontwikkeling ten opzichte van plan-driven ontwikkeling?
  • Incremental delivery met snelle feedback van de gebruikers
  • Het systeem wordt ontwikkeld door een klein team waarbij de communicatie informeel kan verlopen
  • Men heeft de beschikking over tools die het gebrek aan documentatie kunnen compenseren
  • De projectmedewerkers hebben de juiste skills voor agile ontwikkeling
[3.2]
Wat zijn de risico's van een gebrekkig configuratiemanagement?
  • De verkeerde versie van een systeem wordt gewijzigd
  • De klant ontvangt een verkeerde versie van het systeem
  • Het zoekraken van de broncode van een bepaalde systeemversie of component
[25]
Noem enkele voorbeelden van softwareontwikkeling met reuse
  • Architectural patterns
  • Design patterns
  • Component-based development
  • Application frameworks
  • Legacy system wrapping
  • Service-oriented systems
  • Software product lines
  • COTS product reuse
  • ERP systems
  • Configurable vertical applications
  • Program libraries
  • Model-driven engineering
  • Program generators
  • Aspect-oriented software development
[16.1]
Noem drie factoren die het testen op beveiliging bemoeilijken
  • De eisen zijn vaak 'shall not'-eisen. Het is onmogelijk om aan te tonen dat een systeem iets niet doet.
  • Men kan niet testen op aanvallen waarvan men het bestaan niet kent
  • Aanvallers hebben veel meer tijd om zwakke plekken in het systeem te ontdekken dan testers. Daarbij kunnen zij zich baseren op de aannames die bij de ontwikkeling van het systeem zijn gedaan.
[15.3]
Safety of dependability cases worden meestal opgesteld na afloop van de ontwikkeling van een systeem. Welk risico's brengt dit met zich mee?
  • Tijdens de ontwikkeling van het systeem zijn niet de benodigde gegevens of documentatie voor de safety of dependability case verzameld
  • Tijdens de ontwikkeling van het systeem zijn  keuzes zijn gemaakt die het opstellen van de safety of dependability case bemoeilijken.
[15.5]
Wat wordt bedoeld met formele technieken?
Formele technieken zijn gebaseerd op een specificatie van het systeem in de vorm van een formeel model. Ze bestaan in hoofdzaak uit:
  • Mathematische analyse van de specificatie
  • Transformatie van de specificatie in een gedetailleerde representatie van het systeem
  • Het vergelijken van verschillende representaties van het systeem.
[15.1]
Noem enkele consequenties van de introductie van een socio-technisch systeem voor de omgeving
  • Proceswijzigingen: het systeem kan leiden tot een aanpassing van de werkprocessen
  • Taakwijzigingen: het systeem kan ertoe leiden dat de werkzaamheden van mensen wijzigingen (de-skilling)
  • Organisatiewijzigingen: het systeem kan de machtsverhoudingen binnen een organisatie veranderen
[10.1]
Noem enkele richtlijnen voor het ontwerpen van testcases voor system testing
  • Test alle functies die via menu's toegankelijk zijn
  • Test combinaties van de functies die via hetzelfde menu toegankelijk zijn
  • Test zowel met correcte gebruikersinvoer als met foutieve gebruikersinvoer
[8.1]
Geef aan in welke stappen reuse-oriented ontwikkeling verloopt
  • Requirements specification
  • Component analysis: onderzoeken welke componenten geschikt zijn
  • Requirements modification
  • System design with reuse: de ontwikkeling van een framework
  • Development and integration
[2.1]