systemów informatycznych Roman Simiński roman.siminski@us.edu.pl programowanie.siminskionline.pl Cykl życia systemu informatycznego
Trochę wprowadzenia...
engineering co to oznacza? Oprogramowanie w sensie wdrożeniowym to zestaw obejmujący programy wykonywalne, biblioteki programowe, bazy danych, dane konfiguracyjne i dokumentacje użytkową. Całość tworzy produkt w sensie komercyjnym. Oprogramowanie w sensie realizacyjnym to zestaw obejmujący kody programów wykonywalnych, kody bibliotek programowych, schematy i skrypty tworzenia baz danych, opisy interfejsów programowych, dane konfiguracyjne i dokumentacje projektową. Inżynieria działalność polegająca na projektowaniu, konstruowaniu, wdrażaniu i utrzymywaniu i kontrolowaniu obiektów lub procesów, działania te odbywają się, z wykorzystaniem wiedzy naukowej, technicznej oraz doświadczenia. Inżynieria w naturalny sposób dąży do metodycznej, uporządkowanej i weryfikowalnej realizacji poszczególnych etapów lub faz działań. system system informatyczny informatyczny 3
engineering co to oznacza? engineering engineering inżynieria inżynieria oprogramowania oprogramowania Według IEEE: The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software; that is, the application of engineering to software. The study of approaches as in the above statement. Według Fritza Bauera: engineering is the establishment and use of sound engineering principles in order to obtain economically software that is reliable and work efficiently on real machines. 4
development vs engineering Zastosowanie metod inżynierskich do produkcji oprogramowania oznacza metodyczny i uporządkowany proces projektowania oprogramowania. Zatem powszechnie wykorzystuje się termin software development jako nazwę konkretnego podejścia do zagadnień inżynierii oprogramowania. W Polsce historycznie inżynieria oprogramowania bywa rozumiana jako dyscyplina zajmująca się uporządkowaniem procesu programowania i optymaliz development development projektowanie projektowanie oprogramowania oprogramowania system system informatyczny informatyczny development development projektowanie projektowanie systemów systemów informatycznych informatycznych 5
development vs engineering Zastosowanie metod inżynierskich do produkcji oprogramowania oznacza metodyczny i uporządkowany proces projektowania oprogramowania. Ale termin projektowanie raczej nie uwzględnia zagadnień wdrożeniowych i związanych z utrzymaniem systemu... Zatem powszechnie wykorzystuje się termin software development jako nazwę konkretnego podejścia do zagadnień inżynierii oprogramowania. W Polsce historycznie inżynieria oprogramowania bywa rozumiana jako dyscyplina zajmująca się uporządkowaniem procesu programowania i optymalizacji kodu. development development projektowanie projektowanie oprogramowania oprogramowania system system informatyczny informatyczny development development rozwijanie rozwijanie systemów systemów informatycznych? informatycznych? development development projektowanie projektowanie systemów systemów informatycznych? informatycznych? 6
development Development Realization (Programming) Design 7
Cykl życia systemu informatycznego Development Development Life Life Cycle Cycle SDLC SDLC SDLC opisuje serię kroków koniecznych do efektywnego zaprojektowania, implementacji wdrożenia i utrzymania systemu informatycznego. Istnieje ogólne porozumienie jakie są te kolejne kroki, jednak szczegółowe propozycje ich nazewnictwa oraz organizacji przejść pomiędzy nimi mogą się różnić w zależności od konkretnej metody organizacji cyklu życia. 8
Cykl życia systemu informatycznego typowe kroki Komunikacja Komunikacja Communication Communication Gromadzenie Gromadzenie wymagań wymagań Requirement Requirement Gathering Gathering Studium Studium wykonalności wykonalności Feasibility Feasibility Study Study systemowa systemowa System System Analysis Analysis oprogramowania oprogramowania Design Design SDLC SDLC Programowanie Programowanie Coding Coding Testing Testing Integracja Integracja Integration Integration Implementation Implementation Wdrożenie Wdrożenie Obsługa Obsługa ii pielęgnacja pielęgnacja Operation Operation and and Maintenance Maintenance Wycofanie Wycofanie Disposition Disposition 9
Cykl życia systemu informatycznego nierówne obciążenie - Analysis - Design Programowanie - Codeing - Testing Obsługa- Operation Pielęgnacja - Maintenance Development Maintenance 10
Uproszczone fazy cyklu życia oprogramowania Planowanie Planowanie Pielęgnacja Pielęgnacja Jak to zorganizować... Jak zarządzać fazami cyklu życia oprogramowania...? 11
Kaskadowy model procesu wytwarzania oprogramowania Planowanie Planowanie Pielęgnacja Pielęgnacja 12
Kaskadowy model procesu wytwarzania oprogramowania Planowanie Planowanie Pielęgnacja Pielęgnacja Model wodospadu... czy to realne? 13
Ścisła interpretacja to utopia Planowanie Planowanie Pielęgnacja Pielęgnacja Nawroty do wcześniejszych faz są możliwe 14
Model etapowy jak obejść ograniczenia nie zmieniając koncepcji Planowanie Planowanie System System wer. wer. 11 System System wer. wer. 22 itd... itd... 15
Model przyrostowy Określenie Określenie wymagań wymagań Projekt Projekt ogólny ogólny Wybór Wybór podzbioru podzbioru funkcji funkcji Szczegółowy Szczegółowy projekt projekt Testy Testy Dostarczenie Dostarczenie zrealizowanej zrealizowanej części części systemu systemu Procesy realizowane iteracyjnie 16
Trochę inny model iteracyjno-przyrostowy Plan Plan Wymagania Wymagania Weryfikacja Weryfikacja Kolejne iteracje Wdrożenie Wdrożenie 17
Model z prototypem Plan Plan Weryfikacja Weryfikacja Prototyp Prototyp Konstruowanie i weryfikacja prototypu Ostateczna Ostateczna implementacja implementacja System System 18
Model z odrzucanym prototypem Plan Plan Weryfikacja Weryfikacja Wymagania Wymagania Architektura Architektura Prototyp Prototyp Konstruowanie i weryfikacja prototypu Projekt Projekt System System 19
Model spiralny Żródło i więcej informacji: http://www.sei.cmu.edu/reports/00sr008.pdf 20
Model V Gromadzenie Gromadzenie wymagań wymagań Testy Testy akceptacyjne akceptacyjne systemowa systemowa Testy Testy systemowe systemowe oprogramowania oprogramowania Testy Testy integracyjne integracyjne modułów modułów Testy Testy jednostkowe jednostkowe Programowanie Programowanie 21