160 likes | 350 Views
Objekt-orienteeritud projekteerimine. Sissejuhatus Objekt-Orienteeritud projekteerimisse UML – skeemide süntaks ja semantika, lihtne metoodika UML-i kasutamiseks Kasutusmetoodika Unified Process Kasutusmetoodikad Unified Process, Select Perspective. Andres Järviste
E N D
Objekt-orienteeritud projekteerimine • Sissejuhatus Objekt-Orienteeritud projekteerimisse • UML – skeemide süntaks ja semantika, lihtne metoodika UML-i kasutamiseks • Kasutusmetoodika Unified Process • Kasutusmetoodikad Unified Process, Select Perspective Andres Järviste AS Assert Tartu osakonna juhataja I aasta magistrant andres.jarviste@assert.ee Sissejuhatus OO projekteerimisse
Śissejuhatus – muutuv maailm • Arvutid muutuvad kiiremaks • Programmid keerukamaks • Programmide arendustsüklid kiiremaks • 2/3 tarkvaraprojektidest ei anna soovitud resultaati • Struktuursed projekteerimismeetodid ei rahulda muutunud vajadusi Sissejuhatus OO projekteerimisse
Struktureeritud projekteerimismeetodite põhilised iseloomujooned ja puudused • Programm valmib tervikuna korraga. • Erinevad arendusfaasid on selgelt eristatud. Kodeerimine ei alga enne kui on lõppenud süsteemi analüüs ja disain • Suur tõenäosus, et projekti lõppfaasis ilmevad kriitilised vead • Programmi eri osade vahel on seosed, mis tingivad tervete programmide ümberkirjutamist • Ei toeta koodi taaskasutust • Kasutamine muutub väga keerukaks mahu kasvades Lahendus : Objekt Orienteeritud (OO) projekteerimine Sissejuhatus OO projekteerimisse
Objekt-orienteeritud projekteerimise iseloomujooned • Disaini ja modelleerimise meetodid, mis toetavad programmide loomist OO – vahenditega (OOD&M) • Koosnevad tavaliselt • mudelite kirjelduse süntaksist ja semantikast • protsessi kirjeldusest, kuidas mudeleid luua ning neid tarkvara arendamise käigus kasutada Kuidas teha efektiivselt kindlaks kliendi vajadused? Vahendid ülesande püstituse kirjeldamiseks • Mis realiseerib püstitatud eesmärke? • -Klassimudeli kirjeldus • - Dünaamika modelleerimine ehk kirjeldus, kuidas klassid omavahel suhtlevad. Sissejuhatus OO projekteerimisse
OOP ajalugu • 1988 – 1996 Metodoloogiate sõda (Methodology wars) • Peter Coad, Ed Yourdon – 1991 Orienteeritud prototüüpidele • Beck, Cunningham – 1989 CRC kaardid • Grady Booch –1994 Rational Approach • Jim Rumbaugh General Electric R&D - 1991 Object Modeling Technique OMT • Ivar Jacobson - Objectory 1994 ( Ericsson Approach) Kasutuslood (Use Cases) Sissejuhatus OO projekteerimisse
OOP ajalugu • 1994 – esimesed standardiseeerimise katsed OMG poolt • 1995: Booch, Rumbaugh – “Meie võitsime” • Unified Process – ver 0.8 • Ühines Jacobson -> Kolm amigot • Asusid põhiliselt OMT ja Objectory alusel looma modelleerimiskeelt Unified Modelling Process (UML) ja arendusprotsessi kirjeldust selle kasutamiseks Rational Unified Process • 1997 UML muudetakse OMG poolt “vaikimisi standardiks” • 1998 . Protsesside kirjeldused, mis kasutavad UML-i • Rational Unified Process • Select Perspective Sissejuhatus OO projekteerimisse
Objekt-orienteeritud projekteerimise tehnikad • CRC kaardid – Lihtne meetod kasutajavajaduste kaaridastmiseks • Suurte ja keeruliste projektide jagamine väiksemateks terviklikeks alamprojektideks – komponentide arendamine • Iteratiivne ja inkrementaalne arendusprotsess • Riskide maandamine kasutajate kaasamisega kõigis arendamisprotsessi faasides • Stsenaariumite koostamine • Prototüüpimine • Kujundid Sissejuhatus OO projekteerimisse
Iteratiivne ja inkrementaalne arendusprotsess Programm ei valmi tervikuna ühel hetkel. Konstrueerimine jagatakse paljudeks arendustsükliteks. Iga tsükkel koosneb kõigist arendusfaasidest (analüüs, disain, kodeerimine, testimine, aktsepteerimine). Tsükli tulemusena lisandub valmivale süsteemile uued funktsioaalsed omadused Sissejuhatus OO projekteerimisse
Iteratiivne ja inkrementaalne arendusprotsess • Lisatööd projekti alguses. Tsüklid peavad olema planeeritud! • Projektijuhtimine tsüklite käigus on lihtsam • Tellijal/kasutajatel on pidevalt olemas ülevaade tööde olukorrast/progressist • Vead ilmenvad varem. Vead ilmnevad pidevalt, need ei kuhju. Sissejuhatus OO projekteerimisse
Iteratiivne ja inkrementaalne arendusprotsess Kriitiliste vigade tekkimise tõenäosus on projekti lõppfaasis väiksem Sissejuhatus OO projekteerimisse
Iteratiivne ja inkrementaalne arendusprotsess Kose meetodil ei hakka arendajad kodeerimisega enne pihta, kui nad on lõplikult valmis saanud analüüsi ja süsteemi kui terviku disainiga. Programmeerimine edeneb kiiresti, kuna puudub tagasiside kasutajaga. Integreerimise faasis ilmevad probleemid. Sissejuhatus OO projekteerimisse
Kasutajate kaasamine • Peab olema selgelt teadvustatud tellijale • Eeldab suurte süsteemide arendamise puhul vähemalt ühe inimese osavõttu projekti meeskonnast täisajaga Sissejuhatus OO projekteerimisse
Stsenaariumid (Storyboards) Kasutajaliidese kirjeldamine stsenaariumite abil Iga vormi kohta paberileht kirjeldusega, milliseid operatsioone sellelt vormilt täidetakse, millistele teistele vormidele on võimalik liikuda Sissejuhatus OO projekteerimisse
Prototüüpimine (Rapid Prototyping) Ekraanikujude loomine mingi arenduskeskkonna vahendiga. Stsenaariumite alusel täpsemate ekraanivormide loomine, nende kirjeldamine Töötav programm, mis justkui täidab tegevusportsesse Realiseeritakse ainult “võtmetähtsuega” vormid. Prototüübi ekraanivorme EI TOHI võtta aluseks tegelike ekraanivormide kodeerimisel. Sama funktsionaalsus tuleb realiseerida projekti tehnilise arhitektuuri tingimuste kohaselt Sissejuhatus OO projekteerimisse
CRC kaardid(CRC cards) Class-Responsibility-Collaboration Registrikaardid klassi nime, kohustuste ja koostööde spetsifitseerimiseks. Põhiidee: Klassi eesmärgi kirjeldamine paari lausega Selle asemel, et kujutada klasse graafiliselt, kujutatakse neid tabelitena 4x6 tollistel kaartidel. Klassi atribuute ja meetodeid asemel kirjeldatakse vastutusalasid (responsibilities) Aitab kujundada klassi kui terviku käitumist/olemust. Aitab mõista klassidevahelisi suhteid. Sissejuhatus OO projekteerimisse
Kujund (Pattern) Kujund on üldlevinud probleemi tavalahend antud kontekstis.Kujund kirjeldab (UML keeles), kuidas komponent teha. Näiteks, kas olem “Klient” tuleks realiseerida ühe klassina või põhiklassi ja ühe, kahe või kolme alamklassiga Jagunevad kaheks. Üldised – Näiteks Tellimuste sisestamise programm Spetsiifilised – Näiteks Kujund mis kirjeldab ühe süsteemi Alamosa käitumist. Kui süsteemi kasutatakse erinevatel platvornidel, siis võib selle realisatsioon olla erinev Analoog – stereotüübid programmeerimiskeeltes Sissejuhatus OO projekteerimisse