Solutions for examination 2001-06-12 CD5360 Software Engineering Andreas Sjögren, Nerina Bermudo, Jan Carlsson {ase,nerina.bermudo,jcn}@mdh.se Abstract This is a proposal for solutions to the examination in CD5360 2001-06-12. The solutions are sound but not necessarily complete. I.e. the solutions shall be treated as a draft, which extended with more comments and motivations eventually would have been a complete solution to the examination. The Swedish translations for the solutions are placed after the English text. Sammanfattning Detta är ett lösningsförslag till omtentamen i CD5360 2001-06-12. Lösningsförslagen är sunda men inte garanterade att vara kompletta. Dvs. lösningarna ska ses som ett utkast, som med eventuellt lite mera kommentarer och motiveringar, hade gett full poäng på tentamen. Den svenska versionen på lösningarna kommer efter den engelska versionen av texten. A1 Project Management A company has decided to upgrade their software product. The functionality to be added has been described in 5 use cases. The project management has estimated the required effort as follows: 12 points?? Design of one use case requires six man-days.?? Implementation of one use case requires six man-days.?? Preparing tests for one use case requires one man-day. In order to prepare tests, a complete design of the use case must exist.?? Testing one use case requires one man-day.?? Integration of one use case into the existing system takes one man-day, including integration testing.?? Project management will require one man-day each week throughout the project. The project group consists of the following 7 members: One project manager One designer Two coders (can do design if needed) One tester (to prepare and run tests) One integrator Plan the project, and present the activities in a Gantt diagram, for the two different process models specified below. Aim at minimizing the total calendar time by identifying activities that may overlap. Determine the total calendar time of the project in each case.
a) Assuming the project uses the waterfall process model, i.e. all use cases are handled together in each phase. b) Assuming the project uses an incremental process model, i.e. the use cases are added to the system one at a time. A1 Solution a) Waterfall model w1 w2 w3 w4 w5 w6 w7 design impl. p.test Test intgr. p.m. X X X X X X X We assume the designer will work together with the two coders on the design phase. TOTAL: 35 man-days b) Incremental model W1 w2 w3 w4 w5 design impl. p.test Test intgr. p.m. X X X X X The different use cases are labeled with different colors. TOTAL: 23.5 man-days A2 Requirement Engineering 10 points The department wants a system for dealing with laborations. It should allow students to sign up in lab groups, read the instructions and send messages to the lab assistant. They should be able to upload their solutions, and to see which assignments that they have sent in, which have been approved and which they have to complete, and if deadlines have been missed. a) Construct an UML use case diagram that describes the part of the system that the students use (no administration or lab assistant functionality). b) Describe briefly each use case in the diagram, as a list of interaction steps between the system and the participating actors. c) Suggest at least ten requirements for this system. You do not have to cover every aspect of it, but rather focus on formulating concrete and precise requirements. Of these ten requirements, at least 4 should be non-functional, and at least 4 should be functional. A2 Solution a) Use case diagram:
LogIn RegLabGroup Student LabInstructions SendMsg SendLab ViewLabStatus b) Use case descriptions: LogIn: SendLab: 1 System displays the login dialog 1 Student chooses course 2 Student enter name and password 2 Student chooses send a solution 3 Student chooses login 3 System displays assignments the student have 4 System verify password not send in or have to give a complementary solution 5 System displays a menu with courses 4 Student chooses a assignment Alt. 4 System not able to verify the password, 5 System asks for a file Displays information about this, returns to step 1. 6 Student gives a path to the file 7 System get the file 8 System updates status for the assignment (The assignment is send in) 9 System displays status for all the assignments on the course Alt 5 The assignment already approved, the system displays information about this. RegLabGroup: LabInstructions: 1 Student chooses course 1 Student chooses course 2 Student chooses to sign up in a group 2 Student chooses to read instructions 3 Student enters name of students in group 3 System displays list with file formats 4 Student chooses to sign up the group 4 Student chooses a format 5 System displays the new group 5 System displays instructions 6 Student confirms it is ok 7 System reports that the new group has been signed Alt. 5 some students are signed up in another group, return to step 3 Alt. 5 some students are not registered on the course
Return to step 3 SendMsg: ViewLabStatus: 1 Student chooses course 1 Student chooses course 2 System displays lab assistants on the course 2 Student chooses to view lab status 3 Student chooses to send a message to a lab ass. 3 System displays status for all assignments 4 System displays a message box Alt 3. No assignments exist on the course, 5 Student enter a message system displays information about this 6 Student chooses to send the message 7 System displays the message 8 Student confirm to send the message c) Example of possible requirements (functional (f)):?? All users must verify there identity with a name and a personal password (f)?? All courses which are registered shall have information about all lab assistants, who the examiner is and all the assignments on the course (f)?? All registered assignments shall have one of the labels, complement, send in (up for consideration ), approved or n/a?? All registered assignments shall status relatively deadline, ok, failed or n/a (f)?? For all assignments which is send in shall the status about send in immediately be updated (f)?? To choose to send in a particular assignment is only possible if the label is complement or n/a (f)?? When a group is signed up all students in the group has to be registered on the course and they are not allowed to already be signed up for another group (f)?? When a student has been approved for all the assignments on a course, a mail about this is send to the examiner on the course (f)?? The system shall be web based?? In the system there shall be information about all courses in a actual period?? A student shall only receive information about the courses the student is registered on?? The system shall be written in Prolog A3 Architectures 12 points For each of the following systems, suggest an appropriate architecture style. Give a brief description of what the system architecture would look like (name the components of the architecture and any connections between them). a) A java source code optimizer. The program reads a set of java source files, performs a number of optimizing transformations on them, and finally generates new optimized source files. b) The whole lab report system from the requirement engineering question (including administration and lab assistant parts). c) A program for translation that is intended to be a part of by many different applications (such as a web-browser, text editor or mail tool). d) A software agent to control an intelligent monster in a violent computer game. The game provides functionality for primitive actions like moving and looking in different direction. The monster should have a complex behavior that simulates for example curiosity and fear. A3 Solution a) Optimizer for Java code The code transformations in the optimizer are probably independent of each other and are able to perform separately. The format of the output from all the transformations will still be legal java code, therefore are
the correctness of the optimization independent of in which order the transformations are done. A solution build on the pipe-and-filter is applicable in this example. In such a solution every filter will correspond to a transformation, and pipes corresponds to every output from the transformations to the final optimized source code. By using this architecture we get the benefits to have independent code transformations, which can be reused in other applications and it will also be easier to test the optimizer during the development. b) Laborations system In this example a suitable solution would be an n-tier architecture. We have a database, and then a database driver, information, which will be presented and updated in a uniform way, but with some variations, on the basis of which roll the user have (student, lab assistant, etc.). By using this style we are able to write the program for one type of user, for instance students, and then extend it for the other type of user one by one. c) Translation program The system here is not only the translator, but all the programs. The translator is part of a system which can be viewed as a distributed system. Thereby a client-server-architecture would be applicable. The translator will take the roll of a server, which offers a service with a well-defined interface to the other programs, or clients. Probably we can combine this solution with a object oriented design, which excellent in combination with a client-server-architecture. d) Agent This is a typical example of an application that uses to have a layered architecture. For every layer the agent behaviors will be more and more complex. In the lowest layers are the most primitive behaviors, like walk, stop, turn in different directions, gape, swallow, etc. Every layer of higher behaviors uses the lower layers behaviors, for instance, if we have a behavior like drink beer, then it (hopefully) will use the lower layer behaviors gape and swallow. One benefit with this solution is that we can start with the development of a relatively primitive agent, which we then let evolve into a more and more complex agent. A4 UML 6 points For each of the following UML diagrams, explain which aspects of a system it describes. Also, give an example of how it can be used in a software development project (during what phase, and what purpose does it have). a) Class diagrams b) Sequence diagrams c) Statechart diagrams d) Use case diagrams A4 Solution a) Class diagram A class diagram is used to describe static information about classes, with operations and data, and to describe relations between different classes. Relations are inheritance, composition, associations, etc. Is mostly used during the requirements capture phase, on a conceptual level and mostly to capture requirements on the system domain. During the design phase they are used on a specification level to describe interfaces between different software components, which main functionality they provides. They are also used for detailed design on an implementation level, to directly describe the actual implementation of the system.
b) Sequence diagram A sequence diagram is used to describe dynamic information about the system, how a collection of classes working together to solve a task. A sequence diagram implements a use case. They are mostly used during the design phase. c) Statechart diagram A statechart has states, events and guards. They are used during the design phase to describe internal behavior in a class with natural states, i.e. in some part of the execution the execution thread are inside an instance of the class to solve a task. d) Use case diagram Use case diagrams are used during the requirements capture phase to describe functional requirements on the system. They are also used, in some extent, to verify that all requirements have actually been implemented. Consists of use cases, actuators and eventually relations between the use cases or actors. U1 Projektledning 12 poäng Ett företag har beslutat att uppgradera sin mjukvaruprodukt. Den nya funktionaliteten har fångats i fem användningsfall. Projektledningen har uppskattat den nödvändiga arbetsinsatsen enligt följande:?? Design av ett användarfall tar sex man-dagar.?? Implementering av ett användarfall tar sex man-dagar.?? Att förbereda testning av ett användarfall tar en man-dag. För att kunna förbereda testning krävs att designen av användarfallet är färdig.?? Att testa ett användarfall tar en man-dag.?? Att integrera ett användarfall med det existerande systemet tar en man-dag, integrationstestning inkluderat.?? För projektledning krävs en man-dag för varje vecka under hela projektet. Projektgruppen består av sju personer, med följande rollfördelning: En projektledare En designer Två kodare (kan hjälpa till med design om det behövs) En testare (för att förbereda och genomföra tester) En integrerare Planera projektet och presentera alla aktiviteter i Gantt-diagram, för de två olika processmodeller som beskrivs nedan. Försök minimera den totala kalendertiden genom att identifiera aktiviteter som kan överlappa varandra. Ange den totala kalendertiden för projektet i båda fallen. a) Använd vattenfallsmodellen, d.v.s. alla användarfall hanteras tillsammans under varjeaktivitet. b) Använd en inkrementell processmodell, d.v.s. användarfallen läggs till systemet ett i taget. U1 Lösning a) Vattenfallsmodellen design impl. p.test Test intgr. v1 V2 V3 v4 v5 v6 V7
p.l. X X X X X X X Vi antar att designern och de två kodarna arbetar tillsammans I designfasen. TOTALT: 35 man-dagar b) Inkrementell modell v1 V2 v3 v4 V5 design impl. p.test Test intgr. p.l. X X X X X De olika användningsfallen markeras med olika färger. TOTAL: 23.5 man-dagar U2 Kravhantering 10 poäng Institutionen anser sig behöva ett system för att hantera laborationer. Studenterna ska kunna anmäla sig i labgrupper, läsa instruktioner och skicka meddelanden till sin labassistent. De ska även kunna ladda upp sina lösningar, och se vilka uppgifter de har skickat in, vilka som är godkända, vilka som måste kompletteras, och om de missat någon deadline. a) Konstruera ett användningsfallsdiagram (use case diagram) i UML, som beskriver den del av systemet som studenterna kommer att använda (ingen funktionalitet för administration eller för laborationsassistenterna). b) Beskriv översiktligt varje användarfall i diagrammet, som en sekvens av interaktionssteg mellan systemet och de medverkande aktörerna. c) Föreslå minst tio krav för systemet. Du behöver inte täcka alla delar av systemet, utan snarare fokusera på att formulera konkreta och precisa krav. Av de tio kraven ska minst fyra vara ickefunktionella, och minst fyra vara funktionella. U2 Lösning a) Användningsfallsdiagram:
LogIn RegLabGroup Student LabInstructions SendMsg SendLab ViewLabStatus b) Beskrivning av användningsfall: LogIn: SendLab: 1 Systemet visar inloggningsdialog 1 Studenten väljer vilken kurs 2 Studenten anger sitt namn och password 2 Studenten väljer ladda ner laboration 3 Studenten väljer logga in 3 Systemet visar de laborationer som studenten 4 Systemet bekräftar password ej skickat in eller har komplettering på 5 Systemet visar meny med kurser 4 Studenten väljer en laboration Alt. 4 systemet kan inte bekräfta password, 5 Systemet frågar efter en fil informerar om detta, återgår till steg 1. 6 Studenten anger var filen finns på sin dator 7 Systemet hämtar filen 8 Systemet uppdaterar status för laborationen (bara att den är inskickad alltså) 9 Systemet visar status för laborationer på kursen Alt 5 Laboration redan godkänd, systemet meddelar detta RegLabGroup: LabInstructions: 1 Studenten väljer vilken kurs 1 Studenten väljer vilken kurs 2 Studenten väljer att registrera labgrupp 2 Studenten väljer att läsa labbinstruktionerna 3 Studenten fyller i namn på studenter i grupp 3 Systemet visa lista med olika filformat 4 Studenten väljer att registrera gruppen 4 Studenten väljer ett format 5 Systemet visar ny grupp med medlemmarna 5 Systemet visar instruktioner i korrekt format 6 Studenten bekräftar att allt är ok 7 Systemet meddelar att gruppen registrerats Alt. 5 Någon av studenter redan med i en annan grupp, återgår till steg 3 Alt. 5 Någon av studenter ej registrerad på kurs, återgår till steg 3
SendMsg: ViewLabStatus: 1 Studenten väljer vilken kurs 1 Studenten väljer vilken kurs 2 Systemet visar labb.assar på kurs 2 Studenten väljer att visa lab.status 3 Studenten väljer skicka meddelande till ass. 3 Systemet visar status för alla laborationer 4 Systemet visar en meddelandebox Alt 3. Finns inga laborationer på kursen, 5 Studenten skriver ett meddelande systemet meddelar om detta 6 Studenten väljer skicka 7 Systemet visar meddelandet 8 Studenten bekräftar att meddelande ska skickas c) Exempel på några lämpliga möjliga krav (funktionella (f)):?? Alla användare måste verifiera sig med namn och ett personligt password (f)?? Alla kurser som är registrerade ska ha information om vilka laborationsassistenter, vem som är examinator och vilka laborationer som ingår (f)?? Alla registrerade laborationer ska ha en status, komplettera, inskickad (under behandling ), godkänd eller n/a?? Alla registrerade laborationer ska ha status relativt deadline, ok, fail eller n/a (f)?? När laboration skickas in ska status om inskickad omedelbart uppdateras för denna (f)?? Att välja att skicka in en specifik laboration ska bara gå om den har status komplettera eller n/a (f)?? När man registrerar en labbgrupp måste alla studenter i denna vara registrerade på kursen och får inte heller vara med i en grupp redan (f)?? När en student har klarat alla laborationer som registrerats för en kurs, skickas ett mail till examinatorn om detta (f)?? Systemet ska vara åtkomligt via webben?? Alla kurser som går aktuell period ska kopplas till systemet?? En student ser endast de kurser som den registrerad på?? Systemet ska skrivas i Prolog U3 Arkitektur 12 poäng Föreslå en lämplig arkitekturstil för varje system nedan. Ge en kortfattad beskrivning av hur systemarkitekturen skulle se ut (namnge komponenterna i arkitekturen och eventuella bindningar mellan dem). a) En optimerare av java-källkod. Programmet läser in en mängd källkodsfiler, applicerar ett antal optimeringstransformationer på dessa, och genererar slutligen nya optimerade källkodsfiler. b) Hela laborationssystemet från uppgift 2 (inklusive administration och labassistentens delar). c) Ett program för översättning, som är tänk att ingå som en del av många olika applikationer (t.ex. webbläsare, texthanterare och mail-program). d) En mjukvaruagent som kontrollerar ett intelligent monster i ett våldsamt dataspel. I spelet finns redan funktioner för enkla handlingar, som förflyttning och att titta åt olika håll. Monstret ska ha ett komplext beteende som simulerar till exempel nyfikenhet eller rädsla. U3 Lösning a) Optimerare av Java-kod Kodtransformationerna i optimeraren är antagligen oberoende av varandra och kan utföras separat och dessutom kommer formatet på output från varje transformation fortfarande vara korrekt java-kod, därmed är korrektheten på hela optimeringen oberoende av i vilken ordning delarna utförs. En lösning som bygger på arkitekturstilen pipe-and-filter är därför bra i detta exempel. I denna lösning skulle varje filter
korrespondera mot en viss kodtransformation, och pipes motsvarar varje mellankodsformat fram till den slutgiltiga optimerade källkoden. Genom denna lösning får vi bl.a. fördelarna att vi kan återanvända separata kodtransformationer i andra applikationer och det blir också enklare att testa optimeraren under utvecklingen. b) Laborationssystem I detta exempel är en n-tier-arkitektur ett lämpligt val. Man har en databas, och då också en databas driver, samt information som man vill presentera och uppdatera på ett enhetligt sätt men vissa variationer, beroende på vilken roll man har (student, laborationsassistent, etc.). På detta sätt kan man först skriva programmet för en roll, tex. studenter och sedan bygga ut det för de andra rollerna var för sig. c) Översättningsprogram Med systemet menas alltså här inte enbart översättaren, utan alla programmen. Översättaren ska ingå i flera applikationer, som kan ses som distribuerade system. Alltså passar det bra med en client-server-arkitektur, där översättaren agerar som en server som levererar en tjänst med ett väldefinierat interface till ett flertal olika klienter. Antagligen kan man lösa det med en objektorienterad design, vilken går utmärkt att kombinera med client-server-arkitekturen. d) Agent Detta är ett typiskt exempel på en applikation som man brukar lösa med en layered arkitektur. För varje lager lägger man på allt mer komplexa beteenden. I det yttersta lagret har man de mest primitiva formerna av beteenden, som gå, stanna, vrida sig åt olika håll, gapa, svälj, etc. Varje lager av högre beteenden använder sig av de lägre nivåernas beteenden, t.ex. om man har ett beteende dricka öl så använder det sig (förhoppningsvis) av de lägre beteendena gapa och svälj. En fördel med denna lösning är att man kan börja med att göra en relativt primitiv agent som man gradvis kan ge mer och mer komplexa beteenden. U4 UML 6 poäng Beskriv, för följande UML-diagram, vilka aspekter av ett system det beskriver. Ge även ett exempel på hur det kan användas i ett mjukvaruprojekt (under vilken fas och vilket syfte det fyller). a) Klassdiagram b) Sekvensdiagram c) Tillståndsdiagram (statechart diagrams) d) Diagram över användningsfall (use case diagrams) U4 Lösning a) Klassdiagram Används för att beskriva statisk information om klasser, med operationer och data, samt relationer mellan olika klasser, som arv, komposition, association, etc. Används under kravinsamlingen, på en konceptuell nivå och mest för att fånga krav på omgivningen. Under designen använder man dem dels för på specifikationsnivå för att beskriva interface mellan mjukvarukomponenter, vilken huvudfunktionallitet de kan erbjuda. Man använder dem också under den detaljerade designen på Implementationsnivå, för att direkt beskriva hur man tänkt sig att implementera systemet. b) Sekvensdiagram Används för att beskriva dynamisk information om systemet, hur en samling klasser samarbetar för att lösa en uppgift. Man kan också säga att de implementerar ett användningsfall. De används under designen. c) Tillståndsdiagram
Består av tillstånd (states), transaktioner (events) och guards. Används under designfasen för att beskriva beteende inom en klass som har naturliga tillstånd, dvs. man kommer att befinna sig inne i en instans av klassen för att utföra en uppgift. d) Användningsfallsdiagram Används under kravinsamlingen för att beskriva funktionella krav. Man kan också delvis använda dem senare för att kontrollera att alla krav implementerats korrekt. Består av användningsfall, aktörer och eventuella relationer mellan aktörer och användningsfall.