Tarkvaraprojekti etappe
Projektis kasutatavad meetodid ja vahendid ei pea tingimata olema objektorienteeritud, suuremate projektide korral sageli on.
Metoodika ja protsessi haldamine, standardid ja keel, tarkvaratugi (näit. RUP + UML + Rational Rose)
Vajaduste analüüs
Ülesande püstitamine koostöös tellijaga. Tulemuseks konkreetne dokument (näiteks eelleping). Riskid. Keskenduda küsimusele "mis?", mitte "kuidas?".Spetsifikatsiooni koostamine (suunatud tellijale)
Määratakse komponendid, objektid, seosed, andmevood, kitsendused, ... . Tulemuseks spetsifikatsioon (täpne kirjeldus) - skeemid, erinevad vaated. Spetsifikatsiooni vorm sõltub kasutatavast meetodist - näit. UML. Lihtsamal juhul esitatakse pakutava lahenduse mitteformaalne kirjeldus.
Sel etapil võiks koostada kasutajajuhendi ja/või kasutajaliidese prototüübi , et hakataks tegema "õiget" asja. Dokumenteerimine peab toimuma pidevalt, mitte töö lõppedes.Produkti/lahenduse kavandamine (suunatud tegijatele)
Küsimus "mis?" muutub nüüd küsimuseks "kuidas?".
Algoritmide ja andmestruktuuride valik, keerukusanalüüs, vajadusel verifitseerimine. Tulemuseks kõigi osiste (näit. moodulite ja liideste) täpsed kirjeldused.
Sõltuvalt kasutatavatest vahenditest võib see etapp olla rohkem või vähem formaliseeritud.Teostamine
Vahendite valik ja kodeerimine, suhteliselt "odav" võrreldes muude etappidega.
Tulemuseks kavandatud produkti esialgne versioon.Testimine
Testimine peab olema metoodiline ja põhjalik, kõik testid tuleb ette planeerida (enne kavandamisetappi). Testijad võiksid olla realiseerijatest eraldi. Tihti on testimine mitmel tasemel - moodulite testimine, kasutajaliideste ja kasutatavuse (kasutuslikkuse) testimine, käideldavuse ja jõudluse testimine jne. jne.Juurutamine
Projekti viimine tegelikku töökeskkonda, väljaõpe, dokumentatsiooni viimistlemine. Peab olema selge, kuidas lahendatakse edaspidi tekkida võivaid probleeme. Võib osutuda kriitiliseks, sest puudutab vahetult tellija poole inimesi.Kavandamiseesmärgid (design goals)
Korrektsus
Laiemas mõttes: "korrektne" käitumine kõigi antud ainevallas ette tulla võivate sisendite korral.Kitsamas mõttes: vastavus spetsifikatsioonile.
Efektiivsus
Ajaliste ja mahuliste piirangute arvestamine. Võib osutuda kriitiliseks näit. sardsüsteemides. Näit. suuremahuline järjestamisülesanne.Usaldatavus
(reliability, tihedalt seotud terminiga robustness)Käitumine ootamatute (spetsifitseerimata) sisendite korral. Ootuspärased ("mõistlikud") reaktsioonid eriolukordades.
Kohandatavus, skaleeritavus
Platvormi (riistvara, tarkvara) või keskkonna muutumine. Skaleeritavuse korral näit. kasutajate arvu hüppeline suurenemine.Taaskasutatavus
Võimalus sama "komponenti" kasutada mõnes muus kontekstis.Kasutuslikkus
Kas tellija (kasutaja) on võimeline asja kasutama, kas tal on meeldiv seda teha.Hooldatavus
Kuidas lahendatakse produkti kasutamisel tekkivaid probleeme.Modulaarsus
Võimalus osi välja vahetada.Avatus
Võimalus muuta ja edasi arendada.
Modelleerimisest
Koerakuut -> suvila -> koolimaja -> pilvelõhkuja
Ehitades pilvelõhkujat samade meetodite abil kui koerakuuti, on parimal juhul tulemuseks hiiglaslik koerakuut.
Modelleerimise eesmärk - loodava süsteemi parem mõistmine, s.h.:
- nii soovitava tulemuse kui ka hetkeseisu visualiseerimine
- struktuuri ja käitumise kirjeldamine
- lähtealus realiseerimiseks (mudeli valik mõjutab realisatsiooni)
- protsesside ja tehtud otsuste dokumenteerimine mudelit kasutades
Booch (Grady Booch), OOSE (Ivar Jacobson), OMT, OMT2 (James Rumbaugh), Fusion, ... -> UML - Unified Modeling Language (1994 Rational Software, 1998 OMG: UML 1.3, UML 2),
Modelleerida tuleb erinevaid aspekte, nii staatilisi (struktuur) kui ka dünaamilisi (käitumine).
Kasutusloovaade (use case view) - jälgitavad pretsedendid, tüüpsituatsioonid
Projekteerimisvaade (design view) - struktuur ja funktsionaalsus
Protsessivaade (process view) - protsessid, paralleelsus, sünkroniseerimine, lõimed, ...
Teostusvaade (implementation view) - versioonid, failid, ...
Levitusvaade (deployment view) - riistvara, võrgutopoloogia, serverid, ...
struktuursedSeosed
klass (class)käitumuslikud
liides (interface)
koostöö (collaboration) - rollide ja elementide koosmõju kirjeldus
kasutuslugu (use case) - teatava tegutseja (actor) poolt vaadeldav tegevuste järjekord
aktiivne klass (active class) - seotud juhtimisvooga (aktiivse klassi objektid osalevad protsesside või lõimede töös)
komponent (component) - süsteemi osa, mis realiseerib kokkulepitud liideseid ja mida saab välja vahetada
sõlm (node) - füüsilise süsteemi komponent (näit. server)
interaktsioon (interaction), näit. teate saatminerühmitavad
automaat (state machine)
pakett (package)annoteerivad
märkus, kommentaar (note)
kitsendus (constraint)
sõltuvus (dependency) - "a kasutab b" (b muutmine võib tuua kaasa a muutumise)Skeemid
assotsiatsioon (association) - struktuurne seos objektide vahel (tavaliselt binaarne, aga võib olla n-aarne) ("a on olemuslikult seotud b-ga" või "a mängib b suhtes rolli x"). Assotsiatsiooniga saab siduda kordsuse (multiplicity): 1 0..1 0..* 1..* n m..n
agregatsioon (aggregation) - seos "osa-tervik" ("a on osa b-st"), tugevamal juhul koostamine (composite aggregation) ("a on b koostisosa, millel on b-ga sama eluiga; kõik a kokku moodustavad b")üldistus (generalization) - seos alamklassi ja ülemklassi vahel ("a on b erijuht")
navigatsioon (navigation) - "a lubab (efektiivselt) leida b"
realisatsioon (realization) - liidesega määratud "lepingu" täitmine ("a realiseerib b poolt määratud funktsioonid")
klassiskeem (class diagram) - staatiline struktuur
objektiskeem (object diagram) - staatiline vaade (konkreetsete) objektide kooslusele
kasutuslooskeem (use case diagram) - staatiline vaade käitumise modelleerimisele
interaktsiooniskeem (interaction diagram) - teadete saatmise aspekt
jadaskeem (sequence diagram) - sündmuste ajalise järgnevuse aspektolekuskeem (statechart diagram) - dünaamiline vaade: olekud, sündmused, üleminekud
koostööskeem (collaboration diagram) - teateid vahetavate objektide struktuurne kirjeldus
tegevusskeem (activity diagram) - juhtimisvoo kirjelduskomponendiskeem (component diagram) - füüsilised aspektid, staatiline vaade
levitusskeem (deployment diagram) - komponentide paigutamine sõlmedesse (riistvara), staatiline vaade