| Bevezetés | |
| Mit nevezünk tervezésnek? | 1 |
| Miért tervezzük meg előre a programokat? | 3 |
| A rendelkezésre álló módszerek | 4 |
| A lehetséges alkalmazási területek | 5 |
| Információfeldolgozás | 5 |
| Tudásalapú rendszerek és mesterséges intelligencia | 5 |
| Eseményalapú rendszerek | 5 |
| Numerikus problémákat megoldó programok | 6 |
| Valósidejű rendszerek és beágyazott rendszerek | 6 |
| Felmérési módszerek | 6 |
| Egyedi tulajdonságok és erősségek | 7 |
| Gyengeségek | 7 |
| Filozófia és szemléletmód | 7 |
| Szisztematikus jelleg | 8 |
| Megfelelő alkalmazási területek | 8 |
| Nem megfelelő alkalmazási területek | 8 |
| Támogatja-e a felülről lefelé történő építkezést? | 8 |
| Megfelel-e kis feladatok megoldására? | 9 |
| Megfelel-e nagy feladatok megoldására? | 9 |
| Eszközellátottság | 9 |
| Összefoglalás | 10 |
| Strukturált programozás | |
| Bevezetés | 11 |
| Miért ne használjuk a goto parancsot? | 13 |
| A goto parancs használata fölösleges | 13 |
| Kísérleti tapasztalatok | 13 |
| Világos írásmód és kifejezőerő | 15 |
| Hány ceruza? | 16 |
| Az olvasás megkönnyítése (statikus és dinamikus szerkezetek) | 17 |
| A programok helyességének bizonyítása | 18 |
| Miért használjuk mégis a goto parancsot? | 19 |
| A szakértelem csorbítása | 19 |
| Kivételek | 19 |
| A programok teljesítménye | 20 |
| Természetesség | 21 |
| A vezérlési szerkezetek megválasztása | 22 |
| Szabványosítás | 22 |
| Elvonatkoztatási képesség | 23 |
| Kifejezőerő | 23 |
| Különbözőség | 24 |
| Szerénység | 24 |
| Mi is az a strukturált programozás? | 25 |
| Összefoglalás | 29 |
| Gyakorlatok | 30 |
| Hivatkozások és további olvasmányok | 31 |
| A feladat funkcionális felbontása | |
| Bevezetés | 33 |
| Egy példa - egy videojáték megtervezése | 35 |
| Bővebben a módszerről | 39 |
| Mi a helyzet az adatokkal? | 41 |
| Más megoldások | 42 |
| A funkcionális felbontás helye a tervezésben | 44 |
| Elemzés | 44 |
| Értékelés | 46 |
| Összefoglalás | 47 |
| Gyakorlatok | 48 |
| Hivatkozások és további olvasmányok | 48 |
| A Michael Jackson programtervezési módszer | |
| Bevezetés | 49 |
| Egy egyszerű példa | 51 |
| Gyakorlatok | 56 |
| A bemenő fájlok feldolgozása | 57 |
| Fizikai és logikai szerkezetek | 60 |
| Gyakorlatok | 63 |
| Több bemeneti és kimeneti adatfolyam feldolgozása | 64 |
| Egy interaktív rendszer | 64 |
| Gyakorlat | 69 |
| Soros elérésű fájlok feldolgozása és a megfeleltetés | 70 |
| Gyakorlatok | 74 |
| Szerkezeti ellentmondások | 75 |
| Gyakorlat | 81 |
| Elemzés és értékelés | 82 |
| Elméleti perspektíva | 82 |
| A szervezettség mértéke | 83 |
| Alkalmazhatóság | 84 |
| A Jackson tervezési módszer szerepe | 84 |
| Összefoglaló értékelés | 85 |
| Összefoglalás | 86 |
| Gyakorlatok | 88 |
| Hivatkozások és további olvasmányok | 89 |
| Adatfolyam tervezés | |
| Bevezetés | 91 |
| Egy hasonlat | 92 |
| Az első példák | 94 |
| Egy másik példa | 99 |
| A módszer értelme | 104 |
| Egy újabb példa - egy ipartelep megfigyelése | 107 |
| Elemzés és értékelés | 110 |
| Előzmények | 110 |
| Az adatáramláson alapuló tervezés szerepe | 110 |
| Alkalmazhatóság | 111 |
| Összefoglaló értékelés | 112 |
| Összefoglalás | 113 |
| Gyakorlatok | 114 |
| Hivatkozások és további olvasmányok | 115 |
| Objektumközpontú tervezés | |
| Bevezetés | 117 |
| Az objektumközpontú programozás alapelvei | 118 |
| Objektumok és betokozás | 118 |
| Többalakúság és dinamikus kötés | 121 |
| Osztályok | 124 |
| Öröklés és alosztályok | 127 |
| Specializálás és általánosítás | 129 |
| Osztálykönyvtárak | 134 |
| Az objektumközpontú programozás alapelveinek összefoglalása | 135 |
| Bevezetés az objektumközpontú tervezésbe | 136 |
| CRC tervezés | 140 |
| A szükséges osztályok azonosítása | 141 |
| Az osztályok feladatainak meghatározása | 142 |
| Az osztályok együttműködési kapcsolatainak meghatározása | 144 |
| A terv finomítása | 146 |
| A feladatkörök finomítása felhasználási esettanulmányok segítségével | 146 |
| Az osztályok kapcsolatainak felderítése, hierarchiába szervezése és a feladatkörök felbontása | 149 |
| Újrahasznosítható tervezési keretrendszerek keresése | 152 |
| A tervezés egyben programozás, a programozás pedig egyben tervezés | 154 |
| Az objektumközpontú tervezés módszerei | 155 |
| Elemzés és értékelés | 155 |
| Összefoglaló értékelés | 156 |
| Összefoglalás | 158 |
| Gyakorlatok | 159 |
| Hivatkozások és további olvasmányok | 160 |
| Objektumközpontú tervezés | 160 |
| Az objektumközpontú programozással kapcsolatos fogalmak | 162 |
| Objektumközpontú programnyelvek | 162 |
| Formális módszerek | |
| Bevezetés | 165 |
| Mit is nevezünk formális eljárásnak? | 168 |
| A feladat meghatározása (leírás) | 170 |
| Egy esettanulmány | 171 |
| A leírás helyességének ellenőrzése | 177 |
| Tervezés | 180 |
| Megvalósítás | 187 |
| Elemzés | 189 |
| Értékelés | 191 |
| Összefoglalás | 192 |
| Gyakorlatok | 193 |
| Hivatkozások és további olvasmányok | 194 |
| Tervezési jelölések | |
| Bevezetés | 195 |
| Pszeudokód (PDL) | 196 |
| Értékelés | 197 |
| Hivatkozások és további olvasmányok | 199 |
| Folyamatábrák | 199 |
| Értékelés | 202 |
| Hivatkozások és további olvasmányok | 204 |
| Nassi-Shneidermann ábrák | 204 |
| Értékelés | 206 |
| Hivatkozások és további olvasmányok | 27 |
| Adatfolyam-diagramok | 208 |
| Értékelés | 209 |
| Hivatkozások és további olvasmányok | 210 |
| Szerkezeti diagramok | 211 |
| Értékelés | 212 |
| Hivatkozások és további olvasmányok | 213 |
| Osztályhierarchiák diagramjai | 214 |
| Értékelés | 215 |
| Hivatkozások és további olvasmányok | 216 |
| Osztály-Feladat-Együttműködés (Class-Responsibility-Collaborators, CRC) listák | 216 |
| Értékelés | 217 |
| Hivatkozások és további olvasmányok | 218 |
| Állapotváltási diagramok | 218 |
| Értékelés | 219 |
| Hivatkozások és további olvasmányok | 221 |
| Petri-hálók | 221 |
| Értékelés | 223 |
| Hivatkozások és további olvasmányok | 224 |
| Összefoglalás | 224 |
| Hivatkozások és további olvasmányok | 225 |
| A programtervezés alapelvei | |
| Bevezetés | 227 |
| Miért hasznos a moduláris felépítés? | 229 |
| A felépítés megtervezése | 229 |
| A modulok megtervezése | 229 |
| Hibakeresés | 230 |
| Tesztelés | 230 |
| Karbantartás | 230 |
| Független fejlesztés | 230 |
| A programok újrahasznosítása | 231 |
| A modulok mérete | 231 |
| A programok összetettsége | 234 |
| A globális adatok kerülendők | 237 |
| Információrejtés és elvont adattípusok | 239 |
| Csatolás és összetartás | 242 |
| Csatolás | 243 |
| Másik modul kódjának módosítása | 244 |
| Belépés az "oldalajtón" keresztül | 245 |
| Másik modulban található adatok módosítása | 245 |
| Megosztott vagy globális adatok használata | 245 |
| Eljáráshívás kapcsolóként használható paraméter segítségével | 246 |
| Eljáráshívás tisztán adat jellegű paraméterekkel | 247 |
| Soros elérésű adatfolyam átadása a modulok között | 247 |
| Összetartás | 248 |
| Véletlen összetartás | 249 |
| Logikai összetartás | 249 |
| Átmeneti össztartás | 250 |
| Kommunikációs össztartás | 250 |
| Funkcionális összetartás | 251 |
| Megosztott modulok és alulról építkezés | 252 |
| Összefoglalás | 254 |
| Gyakorlatok | 255 |
| Hivatkozások és további olvasmányok | 256 |
| Áttekintés | |
| Felülről lefelé vagy alulról felfelé? | 259 |
| Adatok vagy műveletek? | 261 |
| A programozás három dimenziója | 262 |
| A programozás mint modellezés | 264 |
| A formális megközelítés | 267 |
| A tervezési módszerek és a valóság | 268 |
| A tervezési módszerek értékelése | 272 |
| Elemzés | 273 |
| Összefoglalás | 274 |
| Hivatkozások és további olvasmányok | 275 |
| Tárgymutató | 277 |