Szoftverfejlesztés

Ficsor Lajos (1,3,4,7,8,9,10,11,12,13 fejezet)

Krizsán Zoltán (14,16 fejezet)

Dr. Mileff Péter (2,5,6,15 fejezet)

2011, Miskolci Egyetem, Általános Informatikai Tanszék

Új Széchenyi Terv logó.

Kelet-Magyarországi Informatika Tananyag Tárház

Nemzeti Fejlesztési Ügynökség http://ujszechenyiterv.gov.hu/ 06 40 638-638

Lektor

Dr. Stefán Péter

NIIF, Budapest

A tananyagfejlesztés az Európai Unió támogatásával és az Európai Szociális Alap társfinanszírozásával a TÁMOP-4.1.2-08/1/A-2009-0046 számú Kelet-Magyarországi Informatika Tananyag Tárház projekt keretében valósult meg.


Tartalom

1. Bevezetés
1.1. A jegyzet használata
1.2. Történelem: a szoftver technológia kialakulása és fejlődése
1.3. A szoftver fogalma, sajátosságai
1.4. A szoftver technológia definíciói
1.5. Kihívások a szoftver fejlesztés során
2. A szoftverfejlesztés életciklus modelljei
2.1.  A vízesésmodell
2.2.  Evolúciós fejlesztés
2.3. Komponens alapú fejlesztés
2.4. A folyamatiteráció
2.4.1. Inkrementális fejlesztés
2.4.2.  Spirális fejlesztési modell
2.5. A V-modell
2.6. RUP folyamatmodell
2.6.1.  RUP rendszerfejlesztési fázisok
2.6.2.  Mérföldkövek
2.6.3.  A fejlesztés további dimenziója
2.7. Ellenőrző kérdések
3. A szoftver fejlesztés mint modellezési tevékenység
3.1. A modell fogalma
3.2. A modell készítés folyamata
3.2.1. Az evolúciós fejlesztés
3.2.2. Az egyes fejlesztési fázisok modelljei
3.2.3. Modell nézetek
4. Fejlesztési módszertanok
4.1. A módszertan fogalma
4.2. A módszertanok fejlődése
4.2.1. Processz alapú módszertanok
4.2.2. Adat alapú módszertanok
4.2.3. Objektum orientált módszertanok
4.3. Az OMT módszertan
4.3.1. Az OMT szemlélete
4.3.2. Az objektum modell
4.3.3. A dinamikus modell
4.3.4. A funkcionális modell
4.4. Az OMT és a modern fejlesztési folyamat
5. Követelmény analízis
5.1. A szoftverspecifikáció
5.2.  A szoftver követelmények
5.2.1.  Funkcionális követelmények
5.2.2.  Nemfunkcionális követelmények
5.2.3.  Szakterületi követelmények
5.2.4.  Felhasználói- és rendszerkövetelmények
5.3.  Szoftverkövetelmények dokumentuma
5.3.1. A dokumentum felépítése
5.3.2.  Megvalósíthatósági tanulmány
5.3.3. Követelmények feltárása és elemzése
5.4. Ellenőrző kérdések
6. A szoftvertervezés folyamata
6.1. Architekturális tervezés
6.1.1. Architekturális tervezési döntések
6.1.2. 6.1.2 A rendszer felépítése
6.1.3. Vezérlési stílusok
6.2. Objektumorientált tervezés
6.2.1. Objektumok és objektumosztályok
6.2.2. Objektumok élettartalma
6.3. Felhasználói felületek tervezése
6.3.1. Felhasználói felületek tervezési elvei
6.3.2. Felhasználói felületek tervezési folyamata
6.4. Ellenőrző kérdések
7. A Unified Modeling Language (UML)
7.1. Az UML története
7.2. Az UML fogalma, tervezési alapelvei
7.2.1. Kifejező vizuális modellező nyelv biztosítása
7.2.2. Lehetőség az alap koncepció bővítésére és specializálására
7.2.3. Programozási nyelvtől és módszertantól független legyen
7.2.4. Biztosítson formális alapot a modellező nyelv megértéséhez
7.2.5. Támogatja az objektum orientált eszközök fejlesztését
7.2.6. Az eddigi gyakorlati tapasztalatok ("best practices") integrálása
7.3. UML diagram típusok
7.4. Kiterjesztési mechanizmusok
7.4.1. Megjegyzés
7.4.2. Sztereotípia
7.4.3. Megszorítás (Constraint)
7.4.4. Kulcsszavak értékek
7.4.5. Profilok
7.5. UML eszközök
8. A használati eset modell
8.1. Az aktor
8.2. A használati eset
8.3. Kapcsolatok
8.3.1. Kapcsolat aktor és use case között
8.3.2. Kapcsolat a használati esetek között
8.3.3. Kapcsolat az aktorok között
8.4. Használati eset modell készítése
8.4.1. Aktorok azonosítása
8.4.2. Használati esetek azonosítása
8.4.3. Egy összetettebb példa
8.4.4. A használati eset modell dokumentációja
8.5. A használati eset modell helye a fejlesztési folyamatban
8.6. Ellenőrző kérdések
9. Strukturális diagramok
9.1. Az osztálydiagram
9.1.1. Az osztály szimbóluma
9.1.2. Az objektum szimbóluma
9.1.3. Osztályok közötti kapcsolatok
9.1.4.  Parametrizált osztály
9.1.5. Absztakt osztály
9.1.6.  Interfész
9.2. A csomag diagram
9.3. Komponens diagram
9.4. Telepítési diagram
10. Viselkedés diagramok
10.1. Szekvencia diagram
10.1.1. Objektumok
10.1.2. Üzenetek
10.1.3. Üzenetek időbelisége
10.1.4. Interakciós operátorok
10.1.5. Példa: a Blokkolás forgatókönyvének pontosítása
10.2. Kommunikációs diagram
10.2.1. A szekvencia és a kommunikációs diagram összehasonlítása
10.3. Állapotgép diagram
10.3.1. Az állapot fogalma
10.3.2. Az állapot átmenet és jelölése
10.3.3. Az állapot jelölése
10.3.4. Strukturált állapotgép diagram
10.3.5. Konkurencia
10.4. Aktivitás diagram
10.4.1. Az aktivitás diagram alapelemei
10.4.2. Konkurens tevékenységek
10.4.3. Sávos aktivitás diagram
10.4.4. Adatfolyam és adattárolás
10.4.5. Szignál küldése és fogadása
10.4.6. Kivételek
11. Az analízis modell
11.1. Elemzési osztálydiagram készítése
11.1.1. Osztályok azonosítása
11.1.2. Megfelelő osztályok kiválasztása
11.1.3. Osztályok leírása
11.1.4. Példa: kezdeti osztálydiagram
11.1.5. Asszociációk azonosítása.
11.1.6. Megfelelő asszociációk kiválasztása.
11.1.7. Ternáris (illetve többszörös) asszociációk átalakítása
11.1.8. Asszociációk szemantikájának ellenőrzése
11.1.9. Attribútumok azonosítása
11.1.10. Megfelelő attribútumok kiválasztása
11.1.11. Általánosítás
11.1.12. Elérési utak tesztelése
11.1.13. Modulok meghatározása
11.2. Az analízis modell dinamikus nézete
11.2.1. Forgatókönyvek készítése
11.2.2. A felhasználói felület elsődleges terve
11.2.3. Objektumok állapotainak vizsgálata
11.2.4. Input és output értékek vizsgálata
11.2.5. A számítási folyamatok specifikálása
11.2.6. Az osztályok operációinak azonosítása
12. A tervezési modell
12.1. Tervezési szintű osztálydiagram
12.2. Rendszer architektúra kialakítása
12.3. Alrendszerek telepítési terve
12.4. Adattárolás eszközének kiválasztása
12.4.1. Adattárolás adatbázisokban
12.4.2. Adattárolás file-okban
12.5. Konkurencia kezelése
12.6. Vezérlés elvének kiválasztása
12.7. Rendszer határfeltételeinek meghatározása.
12.7.1. A rendszer telepítése
12.7.2. A rendszer üzemszerű indulása (inicializálás)
12.7.3. A rendszer üzemszerű leállása (terminálás)
12.7.4. Hibás befejeződés
12.8. Felhasználói felület tervezése
12.9. Külső interface tervezése
13. Az implementációs modell
13.1. A megvalósítási osztálydiagram
13.2. Algoritmus tervezés
13.3. Asszociációk tervezése
13.4. Láthatóság biztosítása
13.5. Nem objektum orientált környezethez való illesztés
13.5.1. Adatbázis elérési felület
13.5.2. Objektum-relációs leképezés (ORM)
13.6. Ütemezés
13.7. Osztályok egyedi vizsgálata:
13.8. Implementációs adatstruktúrák:
14. Tervezési minták
14.1. Bevezetés
14.2. Létrehozási minták(Creational patterns)
14.2.1. Prototípus (Prototype)
14.2.2. Egyke (Singleton)
14.2.3. Építő (Builder)
14.2.4. Elvont gyár (Abstract Factory)
14.3. Szerkezeti minták (Structural Patterns)
14.3.1. Illesztő (Adapter)
14.3.2. Híd (Bridge)
14.3.3. Összetétel (Composite)
14.3.4. Díszítő(Decorator)
14.3.5. Homlokzat(Facade)
14.4. Viselkedési minták (Behavioral Patterns)
14.4.1. Parancs (Command)
14.4.2. Megfigyelő (Observer)
14.4.3. Közvetítő (Mediator)
14.4.4. Bejáró (Iterator)
14.4.5. Felelősséglánc (Chain of Responsibility)
15. További fejlesztési tevékenységek áttekintése
15.1. 15.1 Verifikáció és validáció
15.2. 15.2 Projekt menedzsment áttekintése
15.2.1. 15.2.1 A projektek tervezése
15.2.2. 15.2.4 A projekt ütemezése
15.3. 15.3 Konfigurációkezelés
15.3.1. 15.3.1 Verziókezelés
15.4. 15.4 Ellenőrző kérdések
16. Esettanulmány
16.1. Bevezetés
16.2. Követelmények felderítése
16.2.1. Funkcionális követelmények felderítése
16.2.2. Nem funkcionális követelmények felderítése
16.3. A rendszer elemeinek, struktúrájának azonosítása
16.4. A rendszer statikus modelljének kidolgozása
16.5. A rendszer dinamikus modelljének kidolgozása
16.5.1. Bejelentkezés
16.5.2. Rendszer osztályainak részletei
17. Animációk
Irodalomjegyzék

Az ábrák listája

2.1. A szoftver életciklusa
2.2. Evolúciós fejlesztési modell
2.3. Újrafelhasználás orientált modell
2.4. Az inkrementális fejlesztés folyamata
2.5. Boehm féle spirálmodell (forrás: [1])
2.6. A V modell
2.7. Fázisok és munkafolyamatok
2.8. Fázisok idő- és erőforrásigénye
2.9. Mérföldkövek
4.1. Az OMT modelljei
5.1. A követelménytervezés folyamata
5.2. Nem funkcionális követelmények alcsoportjai
5.3. A követelménydokumentum használói
5.4. A követelménytervezés folyamata
5.5. A feltárás és elemzés általános modellje
6.1. A tervezési folyamat általános modellje
6.2. Általános kliens szerver architektúra
6.3. Rétegzett rendszerek
6.4. A hívás-visszatérés modell
6.5. Az Alkalmazott objektumosztály
7.1. Az UML kialakulása
7.2. Az UML digaram típusai
7.3. Megjegyzés
7.4. Kapcsolt megjegyzés
8.1. Aktor
8.2. Használati eset
8.3. Aktor és használati eset kapcsolata
8.4. Használati eset és aktor kapcsolata számossággal
8.5. Használati esetek „include” kapcsolata
8.6. Használati esetek „extend” kapcsolata
8.7. Használati esetek általánosítás kapcsolata
8.8. Aktorok általánosítás kapcsolata
8.9. A pénztári rendszer aktorai
8.10. A pénztári rendszer használati eset diagramja
8.11. A kisbolti rendszer kontextus diagramja
8.12. A kisbolti rendszer funkció leltár diagramja
9.1. Osztály szimbóluma
9.2. Objektum jelölése
9.3. Egy osztály tetszőleges objektuma
9.4. Objektum adott attribútum értékekkel
9.5. Asszociáció és alap tulajdonságai
9.6. Több szerepkör jelölése
9.7. Sorrendiségi szerepkör jelölése
9.8. Nem navigálgató asszociáció
9.9. Szerepkör minősítője
9.10. Asszociációs osztály
9.11. Ternáris asszociáció
9.12. Általánosítás jelölése
9.13. Kompozíció jelölése
9.14. Aggregáció jelölése
9.15. Parametrizált osztály és konkretizálása
9.16. Absztrakt osztály és leszármazottai
9.17. Interfész, interfészek közötti öröklődés, interfészt implementáló és használó osztály jelölése
9.18. Elem importálása
9.19. Komponens diagram
9.20. Telepítési diagram
10.1. A Blokkolás használati eset forgatókönyve
10.2. Üzenet fajták jelölése
10.3. Kiegészített szekvencia diagram
10.4. Készpénzfelvétel kommunikációs diagramja
10.5. A készpénzfelvétel szekvencia diagram formájában
10.6. A blokkolás forgatókönyve kommunikációs diagramon
10.7. Állapot jelölése
10.8. ATM állapotdiagramja
10.9. Struktúrált állapotgép diagram
10.10. Konkurencia az állapotgép diagramban
10.11. Egyetemi kurzus meghirdetésének aktivitás diagramja
10.12. Aktivitás diagram párhuzamos tevékenységekkel
10.13. Sávos aktivitás diagram
10.14. Adatfolyam jelölése
10.15. Adattárolás jelölése
10.16. Szignál küldése és fogadása
10.17. Kivétel jelölése
11.1. Kezdeti osztálydiagram
11.2. Osztályok kapcsolatokkal
11.3. Osztálydiagram pontosított kapcsolatokkal
11.4. Osztálydiagram attribútumokkal
11.5. Osztálydiagram általánosítással
15.1. A tesztelési folyamat
15.2. A szoftvertesztelési folyamat modellje
15.3. A projekt ütemezési folyamata
16.1. Az openrtm-aist rtcse rendszer szerkesztőjének képernyője
16.2. A szerkesztő használati esetei
16.3. A szerkesztő használati esetei
16.4. A SZTAKI Openrtm kiterjesztésének felépítése
16.5. A SZTAKI Openrtm kiterjesztésének szerver oldali struktúrája
16.6. A SZTAKI Openrtm kiterjesztés logikájának struktúrája
16.7. Felhasználó bejelentkezésének folyamata

A táblázatok listája

16.1. Használati eset diagram elemeinek összefoglaló táblázata
16.2. "Elérhető komponensek lekérdezése a CORBA nameservertől" használati eset részletei
16.3. "Port csatlakoztatása egy másik porthoz" használati eset részletei
16.4. A rendszer struktúrájának részletei
16.5. PortBean adattagok