Pavel Cagaš (pc@mii.cz) Jak se dělá software FIT VUT Brno 14. 5. 2002 Pavel Cagaš (pc@mii.cz) Moravské přístroje a.s.

Slides:



Advertisements
Podobné prezentace
© 2000 VEMA počítače a projektování spol. s r. o..
Advertisements

Tento výukový materiál vznikl v rámci Operačního programu Vzdělávání pro konkurenceschopnost 1. KŠPA Kladno, s. r. o., Holandská 2531, Kladno,
VÝVOJ PROGRAMOVACÍCH JAZYKŮ PERSPEKTIVY ELEKTRONIKY 3. Celostátní seminář, 18. března 2003 Ing. Pavel Pokorný UNIVERZITA TOMÁŠE BATI VE ZLÍNĚ Fakulta technologická.
HYPERTEXT PREPROCESSOR. PROGRAMOVÁNÍ. DEFINICE POJMŮ Problém Problém nevyřešený, nežádoucí stav obvykle vyžaduje nějaké řešení Neřešitelný problém Neřešitelný.
Typy programů operační systémy programy pro práci se soubory
Základy počítačů a kancelářský software
SOFTWARE dálkové studium PODNIKÁNÍ 2. listopad 2006.
SOFTWARE operační systémy
Programová rozhraní pro grafické adaptéry
CZ.1.07/1.4.00/ VY_32_INOVACE_133_IT7 Výukový materiál zpracovaný v rámci projektu Vzdělávací oblast: Informační a komunikační technologie Předmět:Informatika.
Operační systém Adam Greguš, 4.A.
PROGRAMOVACÍ JAZYKY (c) Tralvex Yeap. All Rights Reserved.
Tvorba webových aplikací
Informatika I Informatika pro 1. ročník 4 letého gymnázia
Štěpán Lískovec, 4.A.  =základní programové vybavení počítače (tj.software)  hlavní úkol:  A, zajistit uživateli možnost ovládat PC  B, vytvořit pro.
Vývoj aplikací pro SharePoint
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Historie operačních systémů Fiala Filip, 4.C. 50. léta Počítače bez OS Programy se psaly pro konkrétní počítače, často v binárním kódu Až ke konci 50.
Požadavky na programy Programové Měřící Systémy Sběr datZpracováníPrezentace systémy – uzavřené (omezená množina funkcí, nelze jednoduchým způsobem rozšiřovat.
Rozšíření jednouživatelské verze IS na víceuživatelskou Prezentace Diplomové práce Autor : Libor Tomášek Spoluautoři : Pobucký M., Drábek L. Vedoucí :
Operační systémy.
Operační systémy.
C# - Úvod Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Lokální počítačové sítě Novell Netware Ing. Zdeněk Votruba Úvod do síťového operačního systému Novell Netware.
Operační systém (OS) ICT Informační a komunikační technologie.
S oftware – programové vybavení počítače. Operační systém. „Základní program“
Gymnázium, SOŠ a VOŠ Ledeč nad Sázavou I NFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE Ing. Jan Roubíček.
Lokální počítačové sítě Novell Netware Ing. Zdeněk Votruba Technická fakulta ČZU Laboratoř výpočetních aplikací.
OPERAČNÍ SYSTÉMY Správa zdrojů Historie Funkce Ovládání počítače
Gymnázium, SOŠ a VOŠ Ledeč nad Sázavou I NFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE Ing. Jan Roubíček.
Dokumentace informačního systému
Copyright (C) 1999 VEMA počítače a projektování, spol. s r.o.
Začátky mikroprocesorů
Vytváření a realizace algoritmů Algoritmy a datové struktury
Databázové modelování
2 Fučíková Sylvie HR/Win – moderní technologie pro osvědčené aplikace.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Vzdálené počítačové sítě a programování v prostředí Windows Okruhy ke zkoušce z předmětu: Ing. Zdeněk Votruba LVALVA.
Vnitřní (operační paměť)
Anotace Žák definuje základní SW Autor Petr Samec Jazyk Čeština Očekávaný výstup Dokáže definovat základní software Speciální vzdělávací potřeby Ne Klíčová.
Kontakty Webpage přednášky: – Slajdy (MS PowerPoint): –ftp://ulita.ms.mff.cuni.cz/predn/PRG017 Technické.
Operační systémy. Výpočetní systém Stroj na zpracování dat vykonávající samočinně předem zadané operace.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
OPERAČNÍ SYSTÉMY.
14. června 2004Michal Ševčenko Architektura softwarového systému DYNAST Michal Ševčenko VIC ČVUT.
Název školyStřední odborná škola a Gymnázium Staré Město Číslo projektuCZ.1.07/1.5.00/ AutorIng. Ivana Brhelová Název šablonyIII/2.
doc. RNDr. Zdeněk Botek, CSc.
Mikroprocesor.
Operační systémy. Výpočetní systém Stroj na zpracování dat vykonávající samočinně předem zadané operace.
Základy operačních systémů
Klient pro správu databází MySQL 1 Klient pro správu databází MySQL Zbyněk Munzar České vysoké učení technické v Praze Fakulta elektrotechnická.
Kontakty Webpage přednášky: – Slajdy (MS PowerPoint): –ftp://ulita.ms.mff.cuni.cz/predn/PRG017 Technické.
Uvedení autoři, není-li uvedeno jinak, jsou autory tohoto výukového materiálu a všech jeho částí. Tento projekt je spolufinancován ESF a státním rozpočtem.
Nastavení serverů OB21-OP-EL-KON-DOL-M Orbis pictus 21. století.
Uvedení autoři, není-li uvedeno jinak, jsou autory tohoto výukového materiálu a všech jeho částí. Tento projekt je spolufinancován ESF a státním rozpočtem.
Software,hardware,data,biti a bajty.  Software je v informatice sada všech počítačových programů používaných v počítači, které provádějí nějakou činnost.
SOFTWAROVÁ PODPORA PRO VYTVÁŘENÍ FUZZY MODELŮ Knihovna fuzzy procedur Ing. Petr Želasko, VŠB-TU Ostrava.
Vývojová prostředí Objektově Orientované Programování OB21-OP-EL-KON-DOL-M Orbis pictus 21. století.
SOFTWARE Operační systémy.
Vypracoval / Roman Málek
Programování mikropočítačů Platforma Arduino
Výukový materiál zpracován v rámci projektu
Operační Systém Operační systém je v informatice základní programové vybavení počítače (tj. software), které je zavedeno do paměti počítače při jeho.
Vlastnosti souborů Jaroslava Černá.
Operační systémy - úvod
Operační systémy 9. Spolupráce mezi procesy
Tradiční metodiky vývoje softwaru
1. ročník oboru Mechanik opravář motorových vozidel
Segmentace Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
Tradiční metody vývoje softwaru
Transkript prezentace:

Pavel Cagaš (pc@mii.cz) Jak se dělá software FIT VUT Brno 14. 5. 2002 Pavel Cagaš (pc@mii.cz) Moravské přístroje a.s.

Kapitola 1: Jak se dělá Control Web Co vlastně děláme?

Co vlastně děláme? Programové systémy pro rychlý vývoj aplikací v oblasti vizualizace a řízení technologických procesů: Analýza“ Návrh funkčnosti (architektury) systému. Návrh uživatelského rozhraní. Interoperabilita (COM/ActiveX, SQL/ODBC, HTTP, OPC, …). Kódování a ladění. Testování: Základní funkčnost. Použitelnost, přehlednost, ovladatelnost. Dlouhodobá stabilita, paměťová stabilita. Testovací aplikace. Obcházení chyb Win32 API.

Co vlastně děláme? (pokračování) Údržba jazykových mutací, spolupráce s partnery: Čeština a angličtina v průběhu vývoje. Japonština (UNICODE, Win32 IME). Němčina. Instalace a distribuční systém: Instalační CD-ROM. Prodej přes WWW. Systém licencí a registrace. Dokumentace: Asi 1000 stran základní dokumentace. Ukázkové aplikace, tipy a příklady.

Co vlastně děláme? (pokračování) Školení a technická podpora: Telefonická, e-mail podpora. Školení začátečníci/pokročilí, nové verze produktů. Údržba stávajících verzí (Service Packs): Testování kompatibility. Podpora průmyslového HW: Ovladače pro PLC, I/O, standardní sběrnice. Podpora ovladačů třetích stran. Marketing: WWW prezentace. Propagační materiály, prospekty. Inzeráty, PR články. Veletrhy, výstavy a prezentace.

Trocha statistiky Prakticky veškerý kód je psán v jazyce Modula-2. (spíše Modula-2++ ) 12 MB DLL a EXE modulů (optimalizovaný kód). 22 MB binárního neoptimalizovaného kódu. 752 .DEF souborů, 11 MB textu. 695 .MOD souborů, 40 MB textu. 1696 ikon, 12 MB dat. 205 binárních souborů, 3 MB dat. 218 make souborů, 0,5 MB textu. 223 resource skriptů, 0,4 MB textu.

Statistika pokračuje Zdrojové kódy (*.DEF, *.MOD) mají 1 402 189 řádků textu. V kódu je implementováno 2 525 tříd (classes). Počet procedur a metod je 32 281. (Statistika systému CW verze 5 k začátku května 2002)

Zdrojové kódy a binární verze Z jedné sady zdrojových textů se generuje řada binárních verzí: Vývojová a runtime verze, Cluster Server verze, … ANSI a UNICODE verze. Různé jazykové mutace. Verze pro „desktopová“ Windows a Windows CE. Windows CE verze pro různé platformy (CEPC, PocketPC, H/PC, …). Windows CE verze pro různé procesory (x86, ARM, MIPS, SH3/4 …). Build jedné verze systému trvá asi 50 minut. (AMD Athlon 1,2 GHz, 256 MB DDR266 paměti)

Výjimečnost software Předešlá čísla nezahrnují historické verze systému pro Extended DOS (Control Panel) a „odumřelé“ vývojové větve, které byly opuštěny nebo nahrazeny novým kódem. Množství kódu (ale i dokumentace, aplikací, …), které nám „prošlo rukama“ je tak výrazně větší. Jak je možné tento objem práce vykonat v relativně malém týmu? Vývoj software má oproti jiným produktům řadu výjimečných atributů. Pokusím se je zobecnit ve druhé části přednášky.

Jak vypadá Control Web uvnitř? Veškerý kód v jazyce Modula-2. Nutná rozšíření standardní definice jazyka vzhledem k jazykově závislé povaze Win32 API (zřejmě se programátorům obtížně brání použití např. výčtů s určeným ordinálním číslem apod.). Control Web vychází z architektury svého předchůdce, systému Control Panel, který pracoval nad systémem DOS.

Stručně o Control Panel Systém Control Panel vznikal v první polovině 90. let (minulého století ). Procesory 486 byly revoluční novinkou, 386 vzácností a 286 ve velmi solidních PC. MS Windows ve verzi 3.0 byly krásnou hračkou do kanceláří, ale pro průmyslové použití téměř nepoužitelnou. Proto Control Panel implementoval řadu vlastností operačního systému, ze systému DOS se jen spouštěl.

Control Panel OS Jádro chráněného módu procesorů 286: 16-bitový režim, bez limitu 640 KB systému DOS. Segmentace paměti po 64KB velkých segmentech (x86). Ochrana paměti na úrovni segmentů. Virtualizace paměti, možnost relokace segmentů ve fyzické paměti. Odkládací soubor pro datové segmenty (kódové segmenty zaváděny z původních EXE a DLL). Podpora DLL (dynamicky linkovaný kód). Duální obsluha přerušení (real mode/protected mode). Tunelování požadavků na souborový systém do reálného módu systému DOS.

Control Panel OS (pokračování) Aplikační objektově-orientované API: Grafika nezávislá na zařízení: Ovladače grafiky jako dynamicky linkované binární moduly. Grafická primitiva v systému. Bitmapové fonty pro obrazovku i tiskárny. Systém oken, dialogů, GUI prvků. Událostní subsystém: Poziční, selektované a „broadcast“ šíření událostí. Časovače a „Event Idle“ události.

Control Panel OS (pokračování) Abstraktní objektový dokumentový model DataView: DataView coby abstraktní kontejner na data. Mechanismy správy životního cyklu DataView. Podpora drag-and-drop, zabudovávání, editace na místě. Obecný kontejner pro DataView. Standardní sada uživatelských nástrojů: Nastavení vlastností, barev a metrik GUI. Volby rozložení klávesnice. Nastavení vlastností myši, volby kursorů. …

Architektura systému Control Panel Uvnitř objektově-orientovaný návrh. Navenek komponentová architektura. Malé jádro systému zajišťující: Alokaci komponent „virtuálních přístrojů“ tvořících aplikaci. Alokaci I/O ovladačů. Komunikace mezi přístroji a ovladači, správa kanálů a proměnných. Funkčnost systému je tak dána především dynamicky konfigurovanou sadou komponent (např. databázové funkce, skriptování, apod.).

Limity vývoje systému Control Panel Veškerý současný vývoj se týká jen systému Control Web. Malá firma nemůže zajišťovat veškerou podporu pro rozvoj OS (i velmi velké firmy s tím mají velké problémy): TCP/IP stack nedokončen, zůstal asi v polovině vývoje. Nelze sledovat překotný vývoj grafických karet a doplňovat ovladače. V souborových službách a síťování odkázán na služby DOS. Implementace použité objektové technologie způsobuje problémy s udržením binární kompatibility mezi verzemi.

Změna operačního systému (Control Panel pro DOS -> Control Web pro Windows) Přechod 16 -> 32 bitů (rušení kódu ošetřujícího přechody mezi segmenty). Díky vrstevnaté architektuře „stačí jen přepsat“ nejnižší vrstvy. Některé prvky architektury sémanticky nekompatibilní (Windows GDI a USER poplatné době vzniku, s řadou omezení a nedokonalostí): Rozdílné šíření událostí. Rozdílný způsob překladu znakových událostí. Nesymetrie Windows (Overlapped, Popup, Child window, …). Chybná implementace překreslovacích mechanismů Windows. Rozdílné chování Win32 API v 9X a NT verzích Windows.

Změna vnitřní architektury Control Panel implementoval kooperativní multitasking: Objekty reagovaly na události. „Souvislá“ činnost byla vykonávána v rámci zpracování „Event Idle“ událostí. Změna stavu detekována dotazováním. Control Web pracuje v preemptivním multitaskingu: „Souvislá“ činnost v samostatných prováděcích tocích. Změna stavu signalizována prostřednictvím synchronizačních objektů Win32 API.

Runtime knihovny jazyka Modula-2 Nejprve bylo nutno implementovat základní runtime knihovnu (moduly Str, Lib, FIO, …). Některé funkce implementovány kompletně (např. Str, část Lib), jiné navázány na runtime podporu C/C++ (např. FIO, Storage). Řada modulů runtime knihovny postupně přibyla (např. modul „dstr“ pro dynamické řetězce nebo modul „os“ obsahující systémově závislé funkce, třeba práci s 64 bitovým časem).

Views pro Windows – zase další GUI knihovna Na rozdíl od podobných objektových knihoven (Borland OWL nebo Microsoft MFC), které byly tvořeny se sémantikou Win32 API na mysli, sémantika knihovny Views byla dána. Nutnost dodržet kompatibilitu s existujícím kódem: Události jsou distribuovány výhradně v režii Views, ať již je Windows pošlou kamkoliv. Mechanismy překreslování (okamžitého, zpožděného, vynuceného) jsou implementovány pomocí Windows API. Nově bylo zapotřebí implementovat (poněkud nešťastné) rozlišení mezi client a non-client area Windows.

Abstraktní datové struktury Vše je seznam (pokud na rychlosti moc nezáleží)… … nebo vyvažovaný binární (AVL) strom (pokud je rychlé hledání kritické). Všechny abstraktní datové struktury jsou implementovány pomocí objektů. Řada struktur je implicitně obsažena v např. v hierarchii GUI tříd (Views): Každé View (Window) je v seznamu svých sousedů. NodeView mohou obsahovat celý seznam pod-Views. Hierarchie Views tak tvoří tak obecný strom, který definuje vizuální podobu i šíření událostí.

Další datové struktury V některých případech nevyhoví ani seznam ani strom: Dynamická alokace elementů může být z výkonnostních důvodů neúnosná. Pak je nahrazena např. dynamickým polem (složitost hledání 1) nebo seznamem navazovaným v již alokovaných strukturách (třeba ve stromu). Pro několik instancí zpravidla vyhoví jakákoliv konstrukce. Problémy se objeví, pokud algoritmus nepracuje s několika instancemi, ale několika desítkami tisíc instancí (tzv. „množstevní rabat“ ).

A trochu diskrétní matematiky… Skriptovací jazyk popsán LL(1) gramatikou. Parser implementován technikou rekurzívního sestupu. Zotavení po chybě spíše empirické (dává lepší výsledky než důsledné dodržování pravidel). Dramatická většina konstrukcí je ale „řemeslně-programátorská“. Třeba syntakticky závislé obarvení textu v editoru. Undo-Redo. A prakticky všechno ostatní mimo překladače.

Ukázka

Kapitola 2: Pokus o abstrakci Program nikdy nedělá to, co chceme, ale jen to, co naprogramujeme. (Murphy)

Převod algoritmu do strojové podoby První ENIAC i dnešní procesory Pentium či Athlon v podstatě jen vykonávají více či méně triviální instrukce (jen s každou novou generací procesorů se rychlost vykonávání instrukcí dramaticky zvyšuje). Přesto, že základní principy práce počítačů se mnoho let nemění, disciplína jejich programování zaznamenala nesmírný pokrok.

Začalo to strojovou instrukcí Instrukční soubor procesoru (počítače) je definován mikroarchitekturou procesorů. Kód instrukce (přečtený z paměti programu) je zpracován řadičem mikroinstrukcí nebo přímo obvody procesoru. V moderních procesorech je zpracování instrukcí mnohem složitější, principy ale zůstávají stejné. První programy vznikaly jako soubory kódů instrukcí, zapisované přímo do paměti počítače (např. přes tzv. switch register).

Boj o efektivitu S rozšířením používání počítačů rostly požadavky na jejich efektivnější programování. Práce se strojovými instrukcemi vyžadovala expertní znalosti celého systému. Assembler (jazyk symbolických adres) využívá skutečnosti, že k programu samotnému lze přistupovat jako k datům, a lze ho tedy zpracovávat jiným programem. Část tíhy tvorby programu (např. výpočty cílových adres skoků) tedy na sebe bere jiný program.

Mezníky ve vývoji informačních technologií Operační systém: Aplikace nepracují přímo na „holém železe“. V paměti je neustále přítomen kód, který aplikace mohou používat a který řeší přístup k periferiím a přidělování zdrojů. Funkce operačních systémů s časem narůstaly, jak se rozšiřovalo množství jimi poskytovaných služeb – virtualizace paměti, souborový systém, multiprocesing, apod. Vyšší programovací jazyk: Formulace algoritmu je výrazně usnadněna díky symbolickému zápisu.

A máme tu krizi software Software se objevuje ve stále větším množství produktů a musí jej vytvářet stále větší okruh lidí, jejichž znalosti informačních technologií se relativně zmenšují. Přesto že software prostupuje náš každodenní život, současně se jej nedostává a také způsobuje řadu potíží. Často se tak hovoří o „krizi software“. Nelze přesně říci, kdy „krize“ začala, ani kdy a za jakých podmínek skončí. Spíše jen označení „krize software“ permanentně označuje problémy s tvorbou software spojené.

Příčiny „krize“? Proč hovoříme o „krizi“? Software se velmi obtížně vytváří a udržuje. Nestíhají se slíbené termíny vývoje. Programy mají nízkou kvalitu (jsou i výjimky ). Velké množství projektů nebylo vůbec realizováno nebo bylo dodáno a nebylo možné je použít nebo si alespoň vyžádalo úpravy. Proč nemáme podobnou krizi např. v automobilovém průmyslu?

Zvláštnosti software Software se od ostatních oblastí průmyslu dosti liší. Počítače jsou naprosto nejuniverzálnější stroje – dokáží zpracovat „jakoukoliv“ informaci. Prakticky neexistují hranice – často nelze stanovit co program dělat může a co už ne. Počítače dokáží s informacemi zacházet naprosto virtuózně: Např. chyba na desce plošných spojů znamená úpravu návrhu, zaslání do výroby, výrobou nové desky, osazení novými součástkami, hledání další chyby (spousta času a peněz, lidé se proto drží zkrátka). U software se doplní IF a jede se dál (meze se nekladou).

Jak dál? Často proklamovaný „návrat ke kořenům“ – omezení funkčnosti, ořezání vlastností (hlavně když to bude fungovat!) asi není cesta. Bobtnání software není vina jen programátorů. Většinu bobtnání mají na svědomí požadavky zákazníků a je tedy diktováno trhem: Lidé nemají času a energie nazbyt a tak zcela zásadní vlastnost je automatičnost – ať to nějak software udělá, jen ať po mě nechce abych něco studoval, něco rozhodoval… K tomu je zapotřebí efektní a atraktivní vzhled. Řešení je asi v pozvolném učení se z chyb a evolučním zdokonalování softwarové technologie.

Jak posoudit kvalitu software? Zřejmě neexistují obecně platná kritéria. Volba kritérií velmi záleží na cílové skupině uživatelů: Software pro osobní použití je psán, pokud autor má čas a chuť. Neexistují pravidla pro posuzování takového software (každému autorovi se jeho programy samozřejmě líbí nejvíce :-). Software pro omezenou skupinu je psán, pokud jej skupina akceptuje. Software komerční musí poskytnout dostatek prostředků pro financování vývojového týmu, hardware, propagace a režií firmy.

Kritéria přežití software Různé skupiny uživatelů hodnotí software podle rozdílných kritérií Obecně ale platí, že uživatel potřebuje udělat svoji práci. V tom je mu bráněno důmyslnými způsoby: Nedostatečná spolehlivost software (aplikace padá). Aplikace není dokončena (zastará dříve, než je dokončena, dojdou peníze). Nedostatečná srozumitelnost (uživatel tomu nerozumí). Žádné z těchto kritérií nelze brát absolutně. Například s padací aplikací lze dobře pracovat, pokud často ukládáte (mnohé aplikace raději automaticky ukládají samy ).

Srozumitelnost uživatelského rozhraní Srozumitelnosti nelze docílit žádnou obecnou technikou. Návrh srozumitelného uživatelského rozhraní je téměř výhradně záležitostí jeho tvůrců, neboť kritéria srozumitelnosti silně závisí na cílové skupině uživatelů (uživatelské rozhraní software pro ženy v domácnosti se asi bude lišit od software pro správce informačních systémů). Na pomoc mohou přijít obecné směrnice publikované firmami produkujícími operační systémy (Microsoft, Apple).

Spolehlivost a včasné dokončení Spolehlivost a včasné (rychlé) dokončení jsou protichůdné požadavky. Naprogramovat jde všechno, pokud je dost času a peněz. Dost času a peněz není nikdy. (Murphy) Přesto oba požadavky bývají plněny podobnými prostředky: Použití vhodných programovacích technologií. Použití vhodných vývojových nástrojů.

Technologie programování Pokusů zefektivnit programování zavedením různých technologií byla celá řada. Týkají se samotné tvorby programu (kódování): Strukturované programování. Objektově-orientované programování. Skriptování komponent. Ale také dalších technologií, nesouvisejících přímo se způsoby zápisu kódu. Abstraktní datové struktury. Teorie grafů a automatů. A řada dalších.

Strukturované programování Jazyk Pascal on N. Wirtha (ETH) přináší programovací techniky označované jako strukturované. Jejich použití spolu s vlastnostmi Pascalu dokáže zefektivnit a zbezpečnit vývoj software. Zamezuje se chybám, které např. stály stovky mil. USD při havárii sondy Mariner-2. DO100I=1.10 ... 100 CONTINUE

Objektově orientované programování… Poprvé se objevuje u jazyka Smalltalk v polovině 80. let. Principy OOP jsou ale použity i v řadě jiných jazyků. Masového rozšíření dosáhlo OOP s příchodem C++ a také překladače Turbo Pascal, který od verze 5.5 podporoval třídy.

…není pro všechny? Objektovému programování byla připisována velká budoucnost. Přesto ale Úspěšnost dokončení softwarových projektů využívajících OOP v roce 1991 byla 92%. V roce 1993 jen 66%. Jak je to možné? OOP prokázalo své výhody v oblasti znovupoužití kódu, nikoliv však jako prostředek vystihující přirozené vlastnosti systémů a jako snadný a lehce pochopitelný model. Snižování úspěšnosti dokončení OO projektů je dáno zapojením méně kvalitních programátorů do těchto projektů, kteří již nejsou schopni kvalitní analýzy.

Objekt Objekt jako programová entita má tři základní charakteristiky: Zapouzdření (encapsulation). Data (stavová informace) a metody jež tímto stavem manipulují jsou součástí jediné struktury - třídy objektu. Tyto struktury lze libovolně deklarovat nebo dynamicky tvořit v paměti - instance objektu. Metody pak manipulují jen se svými vlastními daty. Dědičnost (inheritance). Novou třídu lze vytvořit jako potomka jiné třídy. Obecně platí, že datové položky lze jen přidávat, zatímco metody lze přidávat i měnit stávající. Mnohotvarost (polymorphism). Mnohotvarost bývá realizována dynamickou vazbou na metody. Volání metody tedy není volání kódu na pevné adrese, ale volání nepřímé. Dvě instance objektů z hlediska volajícího stejného typu (stejné třídy) tak mohou mít různé implementace jediné metody - mohou se chovat různě.

OO analýza

Skriptování komponent Stále více se prosazuje model vývoje software, který se dosti liší od tradiční představy programu, psaného v programovacím jazyce, který bude přeložen a spuštěn jako proces. Tento způsob přestává stačit nárokům na rychlý a efektivní vývoj, znovupoužití existujícího kódu, integraci s jinými systémy (databázemi, systémy přenosu zpráv, systémy autentizace apod.). Relativně malé množství kódu využívající existujících komponent dokáže vykonat velké množství práce.

Jaký vývojový nástroj zvolit pro nejefektivnější dosažení cíle? Každý projekt má své specifické požadavky. Při volbě nástroje je nutno zvážit řadu věcí. Jaké nástroje jsou na trhu k dispozici? Jaký nejefektivnější nástroj lze pro daný projekt použít? Nemá význam programovat v C kreslení grafů a analýzu dat, pokud totéž s použitím tabulkového kalkulátoru zabere jen zlomek času. Na druhé straně nelze použít tabulkový kalkulátor pro programování ovladače periferního zařízení. Jaké jsou schopnosti (znalosti, zkušenosti) týmu lidí, který je k dispozici? Existují nástroje speciálně navrhované pro danou třídu úloh?

Volba správného vývojového prostředku Jazyk Úroveň Assembler 1 Ada 83 4,5 AWK 15 C 2,5 C++ 6,5 Cobol 3,5 Excel (tabulkový kalkulátor) ~50 Lisp 5 Modula-2 4 Pascal Perl Smalltalk Visual Basic v3 10