Objektorienterad analys och design Provmoment: Ladokkod: Tentamen ges för: Namn: Personnummer: Tentamen NOA011 Systemarkitektprogrammet 7,5 högskolepoäng Tentamensdatum: 2014-10-24 Tid: 09:00 13:00 Hjälpmedel: Inga hjälpmedel Totalt antal poäng på tentamen: För att få respektive betyg krävs: G=27 VG=39 51 poäng Allmänna anvisningar: Svaren skall kryssas i på svarssidan. Alternativa svarsmetoder kommer inte att bedömas. Varje fråga kan ha 1-3 rätta alternativ. Poäng erhålls om och endast om samtliga korrekta alternativ kryssats i (eller inga alternativ är ikryssade för frågor där inga alternativ är korrekta). Varje korrekt ikryssad fråga ger 3 poäng. Rättningstiden är som längst tre veckor Viktigt! Glöm inte att skriva namn på alla blad du lämnar in. Lycka till! Ansvarig lärare: Tuve Löfström Telefonnummer: 033 435 4236 Answers (swe. svarsblankett)
Namn: Personnummer: Questions: A B C A B C 1 10 2 11 3 12 4 13 5 14 6 15 7 16 8 17 9 2
1. Vilka av följande påståenden är korrekta angående utveckling enligt UP? a. Vanliga faser är Inception, Construction, Realization och Transition. b. Varje iteration inkluderar både analys, design, konstruktion, test osv. c. Under inception skall tillräckligt mycket information samlas in för att möjliggöra att avgöra om projektet skall genomföras. 2. Betrakta nedanstående diagram och ange vilka av alternativen som korrekt beskriver diagrammet. a. Diagrammet visar ett domändiagram och är en del av designmodellen. b. 0-8 spelare kan spela monopolsepelet. c. Det finns ingen kvalificerad association i diagrammet. 3
3. Vilka av följande alternativ beskriver diagrammet korrekt? by Expert returns "null" if not a member by Controller confirmmembership(membershipid) :RentVideos Handler 1: m:=getmembership(membershipid): Membership :VideoStore 2: [ ismember ] create( m ) by Creator 1.1: m := find(membershipid): Membership :RentalTransaction 2.1: create( ) :VideoRental :VideoRental :Membership a. Find-anropet går till ett samlingsobjekt innehållandes Membership-instanser. b. Om create-anropet till RentalTransaction genomförs så är det det tredje anropet i diagrammet om man exkluderar det initierande confirmmembership-anropet. c. Notationen i diagrammet är version 1 av UML. 4. Vilka av följande designmönster klassificeras som behavioural patterns? a. Observer, Strategy, Visitor b. Observer, Adapter, Decorator c. Singleton, Composite, Bridge 5. Vilka av följande påståenden är sant angående Singleton-mönstret? a. Alla metoder utom getinstance() skall vara private b. Alla metoder skall vara static c. En Singleton-class måste ha minst ett static attribut 6. Vad är sant angående Facade-mönstret? a. En Facade är ett sätt att uppnå protected variation b. En Facade är inte altid en controller men en controller är alltid en facade c. En facade kan ses som en controller men en controller är inte alltid en facade 7. Vad är sant angående Composite-mönstret? a. Composite-klassen inkluderar en statisk referens till sig själv. b. Composite-klassen implementerar ett interface. c. Composite-klassen måste ha detaljerad kunskap om de komponenter som den utgörs av. 8. Överdrivet användande av designmönstret Facade kan leda till följande anti-mönster: a. Poltergeist b. God object c. Sequential coupling 9. Applikationslager kan ingå i mjukvaruarkitekturen. Kryssa i alternativ som är korrekta på svarsbladet. 4
a. Applikationslager har ofta en relativt tajt UC-koppling. b. Applikationslager separerar domänlagret från de tekniska lagren och används för att styra vilka lågnivåtjänster applikationen skall utnyttja. c. Applikationslagret används bland annat för att hantera sessioner. 10. I Unified Process ingår begrepp som faser, discipliner, artefakter. Kryssa i alternativ som är korrekta på svarsbladet. a. Arbetet pågår inom de flesta discipliner löpande genom alla faser. b. I varje disciplin finns exakt en artefakt som syftar till att fånga och beskriva det som görs i disciplinen. c. Alla faser pågår kontinuerligt och parallellt. 11. God kravhantering är en central förutsättning för framgångsrika projekt. Krav delas grovt in i funktionella och icke-funktionella krav. Kryssa i alternativ som är korrekta avseende krav och kravhantering på svarsbladet. a. En förutsättning för att lyckas med kravhanteringen är att låsa kraven så snart de har förhandlats klart b. Funktionella krav definierar vad systemet skall göra c. Ickefunktionella krav har ofta stor inverkan på systemgenomgripande aspekter såsom arkitekturbeslut 12. När man skriver use case behöver man identifiera aktörer och intressenter. Kryssa i alternativ som är korrekta på svarsbladet. a. Det finns alltid en primäraktör för systemet som kommer vara primäraktör för samtliga use case. b. Aktörer är alltid personer som identifieras av sina roller c. Use caset skall, när det är fullt utvecklat, uppfylla samtliga aktörers och intressenters mål kopplade till use caset 13. Persistance frameworks (som t ex Hibernate) används för att hantera interaktion med persistent data. Kryssa i alternativ som är korrekta på svarsbladet. a. Det finns väl definierade standards som gör det väldigt smidigt att byta mellan olika persistenta frameworks b. Ett syfte med persistenta frameworks är att minska representationsgapet mellan objekt i lösningsdomänen och relationsmodellen i databaser c. Det finns ett språk som definierats explicit för persistenta ramverk, Persistance Quary Language, PQL. 14. Kryssa i alternativ som är korrekta på svarsbladet. a. Systemsekvensdiagram (SSD) ingår i use case-modellen. b. Systemsekvensdiagram (SSD) är viktiga som utgångspunkt för att definiera use casen. c. Systemsekvensdiagram (SSD) är en form av interaktionsdiagram som används vid design av interaktion mellan objekt i designmodellen. 5
15. Betrakta nedanstående (par av) diagram och ange vilka av alternativen som korrekt beskriver diagrammen. [new (not from DB)] [ from DB] chart: PersistentObject New commit / insert OldClean save rollback / reload commit / update OldDirty Legend: New--newly created; not in DB Old--retrieved from DB Clean--unmodified Dirty--modified delete rollback / reload delete OldDelete Deleted commit / delete { state.delete( this ) } { state.rollback( this ) } PersistentObject oid : OID state : PObject commit() delete() rollback() save() set(pobject) { state.commit( this ) } * 1 { state.save( this ) } PObject commit(obj : PersistentObject) delete(obj : PersistentObject) rollback(obj : PersistentObject) save(obj : PersistentObject) { // default no-op // bodies for // each method } Product Specification Sale OldDirty commit() delete() rollback() OldClean delete() save() New commit() OldDelete commit() rollback() { // commit PersistenceFacade.getInstance().update( obj ) obj.set( OldClean.getInstance() ) } { // rollback PersistenceFacade.getInstance().reload( obj ) obj.set( OldClean.getInstance() ) } { // delete obj.set( OldDelete.getInstance() ) } { // save obj.set( OldDirty.getInstance() ) } { // commit PersistenceFacade.getInstance().insert( obj ) obj.set( OldClean.getInstance() ) } { // commit PersistenceFacade.getInstance().delete( obj ) obj.set( Deleted.getInstance() ) } a. Utifrån tillståndsdiagrammet kan man utläsa vilka ansvar som varje tillståndsobjekt måste realisera. b. Utifrån tillståndsdiagrammet kan man (i princip) utläsa hur varje metod i varje tillståndsobjekt skall implementeras. c. Klassdiagrammet illustrerar ett exempel på en design med hjälp av Pattern. 6
16. Vilka alternativ är korrekta avseende diagrammet nedan? a. Varje gång man anropar en subklass i ett interaktionsdiagram måste man ange vilken subklass man anropas så att man kan designa lösningen för den konkreta subklassen. b. Interaktionsdiagram som inkluderar ett anrop till metoden authorize i någon av de konkreta subklasserna till Payment avslutas med detta anrop. c. Abstrakta metoder måste alltid designas med separata interaktionsdiagram för varje subklass. 17. Kryssa i alternativ som är korrekta på svarsbladet. a. Interaktionsdiagram är exempel på statiska UML diagram b. Kollaborations- och sekvensdiagram är olika former av interaktionsdiagram. Det går att uttrycka exakt samma saker med båda diagramtyperna c. Interaktionsdiagram skapas för var och en av operationerna i systemsekvensdiagrammen 7