ZASADY TWORZENIA OPROGRAMOWANIA



Podobne dokumenty
MODELE CYKLU ŻYCIA OPROGRAMOWANIA (1) Model kaskadowy (często stosowany w praktyce do projektów o niewielkiej złożonoś

Etapy życia oprogramowania

Etapy życia oprogramowania. Modele cyklu życia projektu. Etapy życia oprogramowania. Etapy życia oprogramowania

Błędy procesu tworzenia oprogramowania (Badania firmy Rational Software Corporation)

Cykle życia systemu informatycznego

MODELE CYKLU śycia OPROGRAMOWANIA

In ż ynieria oprogramowania wykład II Modele i fazy cyklu życia oprogramowania

Co to jest jest oprogramowanie? 8. Co to jest inżynieria oprogramowania? 9. Jaka jest różnica pomiędzy inżynierią oprogramowania a informatyką?

Programowanie zespołowe

Inżynieria oprogramowania I

Procesy wytwarzania oprogramowania Specyfikacja i projektowanie oprogramowania

Ogólne określenie wymagań. Ogólny projekt. Budowa systemu. Ocena systemu. Nie. Tak. System poprawny. Wdrożenie. Określenie.

Inżynieria oprogramowania (Software Engineering)

Zasady organizacji projektów informatycznych

Inżynieria Oprogramowania. Inżynieria Oprogramowania 1/36

Przedsięwzięcia Informatyczne w Zarządzaniu

Jarosław Kuchta Dokumentacja i Jakość Oprogramowania. Wymagania jakości w Agile Programming

Projektowanie systemów informatycznych. Roman Simiński programowanie.siminskionline.pl. Cykl życia systemu informatycznego

Opis metodyki i procesu produkcji oprogramowania

In ż ynieria oprogramowania wykład II Modele i fazy cyklu życia oprogramowania

KOMPUTEROWE WSPOMAGANIE ZARZĄDZANIA

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

SVN. 10 października Instalacja. Wchodzimy na stronę i pobieramy aplikację. Rysunek 1: Instalacja - krok 1

Wprowadzenie do metodologii modelowania systemów informacyjnych. Strategia (1) Strategia (2) Etapy Ŝycia systemu informacyjnego

SYSTEMY INFORMATYCZNE ćwiczenia praktyczne

Zakres wykładu. Podstawy InŜynierii Oprogramowania

Projektowanie systemów informatycznych. wykład 6

Faza strategiczna. Synteza. Analiza. Instalacja. Faza strategiczna. Dokumentacja. kodowanie implementacja. produkt konserwacja

RUP. Rational Unified Process

Zarządzanie i realizacja projektów systemu Microsoft SharePoint 2010

Projektowanie oprogramowania. Wykład Weryfikacja i Zatwierdzanie Inżynieria Oprogramowania Kazimierz Michalik

Podstawy programowania III WYKŁAD 4

Zakład Języków Programowania Instytut Informatyki Uniwersytet Wrocławski

Cele oraz techniki tworzenia prototypów systemów infromatycznych. Inżynieria Oprogramowania

Wykład 1 Inżynieria Oprogramowania

PRZEWODNIK PO PRZEDMIOCIE

Inżynieria oprogramowania

Wytwórstwo oprogramowania. michał możdżonek

Wstęp do zarządzania projektami

PROJEKTOWANIE. kodowanie implementacja. PROJEKT most pomiędzy specyfikowaniem a kodowaniem

WPROWADZENIE DO UML-a

Metodyka projektowania komputerowych systemów sterowania

Wstęp do zarządzania projektami

Techniki komputerowe w robotyce

Jakość w procesie wytwarzania oprogramowania

Testowanie oprogramowania

Projekt Kompetencyjny - założenia

Uniwersytet w Białymstoku Wydział Ekonomiczno-Informatyczny w Wilnie SYLLABUS na rok akademicki 2012/2013

Główne składowe przedsiębiorstwa: procesy,technologia, ludzie, organizacja.

Analiza i projektowanie obiektowe 2016/2017. Wykład 10: Tworzenie projektowego diagramu klas

INŻYNIERIA OPROGRAMOWANIA TESTOWANIE INTEGRACYJNE

Egzamin / zaliczenie na ocenę*

Rozpoczęcie, inicjacja (ang. inception

BIM jako techniczna platforma Zintegrowanej Realizacji Przedsięwzięcia (IPD - Integrated Project Delivery)

Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1

GUI - projektowanie interfejsów

Wymagania, specyfikacja i projektowanie

Metody wytwarzania oprogramowania. Metody wytwarzania oprogramowania 1/31

KARTA MODUŁU KSZTAŁCENIA

Zagadnienia. Inżynieria Oprogramowania

Projektowanie zorientowane na uŝytkownika

IO - inżynieria oprogramowania. dr inż. M. Żabińska, zabinska@agh.edu.pl

PRZEWODNIK PO PRZEDMIOCIE

Wykład 7. Projektowanie kodu oprogramowania

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

<Nazwa firmy> <Nazwa projektu> Specyfikacja dodatkowa. Wersja <1.0>

KIERUNKOWE EFEKTY KSZTAŁCENIA

Wprowadzenie do systemów informacyjnych

Grupa treści kształcenia, w ramach której przedmiot jest realizowany Przedmiot kierunkowy

Inżynieria oprogramowania

Architektura Systemu. Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu.

Wytwarzanie oprogramowania

Zarządzanie projektem wdrożeniowym systemu klasy ERP autorska metodyka

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Inżynieria oprogramowania, C12

Wstęp do zarządzania projektami

INKS105 ( INK9117 ) Podstawy inżynierii oprogramowania

PRZEWODNIK PO PRZEDMIOCIE

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

Maciej Oleksy Zenon Matuszyk

Waterfall model. (iteracyjny model kaskadowy) Marcin Wilk

INŻYNIERIA OPROGRAMOWANIA

Faza Określania Wymagań

Laboratorium 5 - Projektowanie programów zorientowanych obiektowo. Indywidualny projekt programistyczny

Narzędzia CASE dla.net. Łukasz Popiel

Podstawy Inżynierii Oprogramowania

Szybkie prototypowanie w projektowaniu mechatronicznym

Testowanie i walidacja oprogramowania

PRZEWODNIK PO PRZEDMIOCIE

Inżynieria oprogramowania II

Agile Project Management

Kod doskonały : jak tworzyć oprogramowanie pozbawione błędów / Steve McConnell. Gliwice, cop Spis treści. Wstęp 15.

Wykład VII. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Testowanie aplikacji mobilnych na platformie Android - architektura, wzorce, praktyki i narzędzia

Zasadnicze czynności w zarządzaniu projektem, fazy cyklu życia systemu informatycznego. Modele cyklu życia - część 1

OPROGRAMOWANIE WSPOMAGAJĄCE ZARZĄDZANIE PROJEKTAMI. PLANOWANIE ZADAŃ I HARMONOGRAMÓW. WYKRESY GANTTA

Łatwa czy niełatwa droga do celu? - wdrożenie COSMIC w ZUS

Wykład 3 Wymagania. MIS n Inżynieria oprogramowania Październik Kazimierz Michalik Akademia Górniczo-Hutnicza im. S. Staszica w Krakowie

Tworzenie gier na urządzenia mobilne

Nazwa przedmiotu: MODELOWANIE I ANALIZA SYSTEMÓW INFORMATYCZNYCH. Modeling and analysis of computer systems Forma studiów: Stacjonarne

Transkrypt:

ZASADY TWORZENIA OPROGRAMOWANIA 1. Tylko złożone oprogramowanie wymaga inżynierii (cykl życia składający się z modelowania i testowania oraz sprzężenia zwrotnego prosty problem, zajęcia z programowania) 2. Złożoność przedsięwzięcia programistycznego stanowi trzon problemu (niepowodzenie uwarunkowane utratą kontroli intelektualnej) 3. Ogólną metodą rozwiązywania złożoności jest dekompozycja zagadnienia na części (sztuką jest określenie, jakich? pułapki!) - rozwiązanie poszczególnych części może nie rozwiązać problemu plan musi przewidywać ich złożenie - czasem części mogą być trudniejsze do rozwiązania niż całość?

TWORZENIA OPROGRAMOWANIA Dziel i zwyciężaj (ogólna metoda rozwiązywania problemów) 1. Podstawa dekompozycji części niezależne 2. Ograniczenie elementów niezależnych (części 7+-2). Dekompozycja problemu przedstawiona w postaci drzewa hierarchii problem problema problemb problemc Potęga intelektu hierarhiczne rozwiązywanie problemu problemc1 problemc2 problemc1a problemc1b problemc1c Rozwiązywanie problemów miliony razy trudniejszych niż te które można rozwiązać bezpośrednio.

TWORZENIA OPROGRAMOWANIA Odbiorcy 3. Każdy etap jest realizowany dla określonego odbiorcy (odbiorca zadań wykonanych na danym etapie znajduje się na etapie następnym wymagania twórca projektant kodujący testujący (odbiorca na każdym etapie) 4. Zdolność do abstrakcyjnego myślenia jest bez wątpienia największym talentem ludzkiego rozumu (największe niebezpieczeństwo) z kolei uogólnienie prowadzi do stereotypów 5. Zasada od rozmycia do skupienia (wstępny ogólny diagram ma prowadzić do spójnych, jasnych i jednoznacznych specyfikacji rola inżyniera oprogramowania system płacowy) 6. Dokumentacja błędne jest twierdzenie dobrze wykonana praca dokumentuje się sama (kodowanie program bez komentarzy jest prawie nie do zrozumienia), ( najbardziej oczywiste informacje raz wykorzystane, nie zapisane, będą utracone ; notuj założenia i o nich pamiętaj, nie powielaj informacji powinna być zapisana i ewentualnie modyfikowana w jednym miejscu)

TWORZENIA OPROGRAMOWANIA Dokumentacja 6a. W dokumentacji nie stosuj synonimów i nie rozpraszaj pojęć 7. Wejście/wyjście (we-wy_ jest podstawą oprogramowania Wejście Oprogramowanie Wyjście - określenie wszystkich wejść i wyjść (widocznych i niewidocznych (data czas systemowy) - określenie zakresu dopuszczalnego we-wy - określenie szczególnych wartości we-wy (czek 0)

TWORZENIA OPROGRAMOWANIA Nie przesadzaj!! 1. Ma powstawać dobrze funkcjonujący program spełniający oczekiwania odbiorcy. 2. Jeżeli system nie jest uszkodzony nie naprawiaj go ( każdy system można poprawiać... doprowadzając go do śmierci ) 3. Użytkownik docelowy ma decydujący głos w dyskusji na temat funkcji i użyteczności produktu 4. Wykorzystaj poprzednie prace i doświadczenie nie uszczęśliwiaj użytkownika (pulpit, share documents, dokumentacja). Nie wynajduj koła!! Twórz oprogramowanie z myślą jego ponownego wykorzystania. 5. Bądź odpowiedzialny za oprogramowanie które tworzysz.

ZARZADZANIE INŻYNIERIĄ Rola menedżera 1. Dobry menedżer kierujący pracą inżyniera oprogramowania to osoba zapewniająca odpowiedni sprzęt i izolująca inżynierów od problemów nietechnicznych. 2. Techniczne składniki pracy menedżera to harmonogram, budżet i jakość. 3. Po rozpoczęciu projektu zadanie menedżera zmienia się ze zgadywania tego, co będzie potrzebne na monitorowanie i utrzymywanie kierunku prac

Każda miara może być krytykowana jako niedokładna, ale w porównaniu z zgadywaniem niemal każdy pomiar jest lepszy ZARZADZANIE INŻYNIERIĄ Miary 1. Zarejestrowana historia (podobny projekt realizowaliśmy przez 1 rok) w inżynierii oprogramowania nosi znamiona miary. 2. Powiązanie ilości kodu KDSI (thousand of delivered source code instruction), LOC (line of code) z elementami potrzebnymi do napisania tego kodu: Ludzie ilu i w jakim czasie brało udział w realizacji projektu, Czas jak długi był harmonogram i jego poszczególne etapy Sprzęt jaki zasób rzeczy (komputery, biurka, pokoje, kawa był potrzebny 3. Brak własnych danych historycznych modele estymacyjne algorytmiczne (na podstawie wzoru)

wymagania MODELE CYKLU ŻYCIA OPROGRAMOWANIA (1) Model kaskadowy specyfikowanie projektowanie kodowanie testowanie Gotowy produkt Faza strategiczna Analiza Synteza Instalacja Dokumentacja

MODELE CYKLU ŻYCIA OPROGRAMOWANIA (2) Fazy w modelu kaskadowym plan testów określenie wymagań specyfikowanie projektowanie kodowanie implementacja testowanie produkt konserwacja Faza strategiczna Analiza Synteza Instalacja i utrzymanie Dokumentacja

MODELE CYKLU ŻYCIA OPROGRAMOWANIA (3) Wady i zalety m. kaskadowego 1. Narzucona twórcom oprogramowania ścisła kontrola kolejności realizacji prac. 2. Wysoki koszt błędów popełnionych we wstępnych fazach ( błędy popełnione w fazie wymagań i specyfikacji najpewniej zostana odkryte dopiero w fazie testowania) 3. Klient (inwestor użytkownik) bierze udział jedynie we wstępnej fazie projektu (jest mało angażowany) więc jego zainteresowanie produktem słabnie, co ma oczywisty negatywny wpływ na wartościowanie produktu przez Klienta Najbardziej cenimy to, co sami wykonamy, lub jest realizowane z naszym udziałem

wymagania MODELE CYKLU ŻYCIA OPROGRAMOWANIA (4) Model kaskadowy rozbudowa testowania specyfikowanie projektowanie kodowanie testowanie plan testów Gotowy produkt Faza strategiczna Analiza Dokumentacja Instalacja

MODELE CYKLU ŻYCIA OPROGRAMOWANIA (5) Iteracje w modelu kaskadowym wymagania specyfikowanie plan testów projektowanie kodowanie testowanie Gotowy produkt

MODELE CYKLU ŻYCIA OPROGRAMOWANIA (6) Inne modele 1. Realizacja kierowana dokumentami (model armii USA * ) kaskadowy z warunkiem kompletnej dokumentacji każdej fazy (szereg dokumentów weryfikowanych przez klienta) pozwalającej nawet na zmianę firmy programistycznej (dodatkowa praca, przerwy na weryfikację). 2. Prototypowanie (prototyping) model pozwalający na minimalizację ryzyka związanego z błędami w fazie wymagań. ogólne określenie wymagań budowa prototypu weryfikacja prototypu przez klienta pełne określenie wymagań realizacja pełnego systemu w modelu kaskadowym Pozwala na wyeliminowanie nieporozumień klienta i twórców oprogramowania. Prowadzi do wykrycia brakujących funkcji, trudnych usług, braków w specyfikacji wymagań oraz punktów krytycznych systemu. (szybka demonstracja systemu, wstępne szkolenia użytkowników

MODELE CYKLU ŻYCIA OPROGRAMOWANIA (7) Prototypowanie - techniki Niepełna realizacja pominięcie elementów oczywistych i skupienie się na wymaganiach trudnych. Opis systemu w językach wysokiego poziomu: Smalltalk. LISP, wykonywalne języki specyfikacji formalnych. Wykorzystanie gotowych komponentów Szybkie programowanie (bez testów i finezji) Automatyczne generowanie interfejsu użytkownika Papier i ołówek prototypowanie interfejsu uzytkownika Programowanie odkrywcze (exploratory programming) iteracyjna weryfikacja ogólnego projektu przez klienta systemy złożone

MODELE CYKLU ŻYCIA OPROGRAMOWANIA (7) Inne modele Model konstrukcji prototypów złożone systemy o wymaganiach niejasnych lub wieloznacznych cykliczna realizacja systemu poprzez prototypy weryfikowane przez klienta modelowanie Projektowanie Implementacja prototypu Implementacja systemu Instalacja, testowanie, usuwanie błędów Prototypy prowizoryczne mogą być konstruowane bardzo szybko w małych kosztach metodologia pozwala na weryfikację wymagań pielęgnacja, dalszy rozwój

MODELE CYKLU ŻYCIA OPROGRAMOWANIA (8) Inne modele Model ewolucyjnej konstrukcji prototypów złożone systemy o wymaganiach niejasnych lub wieloznacznych cykliczna realizacja systemu poprzez prototypy weryfikowany przez klienta poprawiany, testowany i instalowany jako zrealizowany przyrost modelowanie Projektowanie Implementacja prototypu Implementacja systemu Połączenie podejścia przyrostowego i iteracyjnego Szybkie dostarczanie niepełnej wersji systemu instalacja, testowanie, usuwanie błędów prototypu Instalacja, testowanie, usuwanie błędów pielęgnacja, dalszy rozwój

MODELE CYKLU ŻYCIA OPROGRAMOWANIA (8) Inne modele 3. Programowanie odkrywcze złożone systemy o trudnych do sprecyzowania wymaganiach cykliczna realizacja systemu ogólnego do wymagań weryfikowanych przez klienta Określ ogólne wymagania Budowa ogólnego systemu Wstępne testowanie systemu Nie Dostarcz system Tak System działa poprawnie? Tak Klient zadowolony? Nie Model może być stosowany jako sposób tworzenia systemu (amatorski). Profesjonalnie stosuje się go w prototypowaniu

MODELE CYKLU ŻYCIA OPROGRAMOWANIA (9) Inne modele 4. Realizacja przyrostowa po określeniu projektu wstępnego następuje iteracyjne testowanie podzbioru funkcji systemu. Następnie jest realizowany projekt szczegółowy tej części i implementacja części systemu realizującej te funkcje. 5. Montaż z gotowych elementów - wykorzystywane na różnych etapach realizacji projektu (najczęściej implementacji) : biblioteki, pełne aplikacje języki symboliczne itp. narzędzia CASE (Computer Assisted/Aided Software/System Engineering) 6. Model spiralny (Boehma 1988) najbardziej ogólny model cyklu życia oprogramowania

MODELE CYKLU ŻYCIA OPROGRAMOWANIA (1) Model kaskadowy (często stosowany w praktyce do projektów o niewielkiej złożoności) wymagania specyfikowanie projektowanie kodowanie 1. sprzężenie zwrotne jedynie pomiędzy sąsiednimi fazami 2. fazy częściowo nakładają się na siebie 3. niemożność weryfikacji decyzji podjętych we wcześniejszych fazach (wada) 4. powroty do zbyt wczesnych faz powodują opóźnienie projektu, brak dyscypliny i pączkowanie testowanie Gotowy produkt Faza strategiczna Analiza Synteza Instalacja Dokumentacja

wymagania MODELE CYKLU ŻYCIA OPROGRAMOWANIA (4) Model kaskadowy rozbudowa testowania specyfikowanie projektowanie kodowanie testowanie plan testów Gotowy produkt Faza strategiczna Analiza Synteza Instalacja Dokumentacja

modelowanie MODELE CYKLU ŻYCIA OPROGRAMOWANIA (2) Model przyrostowy (często stosowany w praktyce do modeli iteracyjnych i metodyk) projektowanie modelowanie implementacja projektowanie modelowanie fragment systemu implementacja fragment systemu projektowanie implementacja 1. podział produktu na mniejsze fragmenty które przechodzą poszczególne fragmenty w sposób nakładający się 2. konieczność dokładnej definicji interfejsów pomiędzy fragmentami 3. łatwość implementacji w modelach kaskadowych i iteracyjnych fragment systemu

MODELE CYKLU ŻYCIA OPROGRAMOWANIA (3) Model V (eliminacja niemożności testowania produktu danej fazy) modelowanie testowanie wymagań - walidacyjne projektowanie testowanie jednostek oprogramowania - integracyjne implementacja system 1. udział dwóch zespołów: projektowego i testującego 2. zespół projektowy opracowuje produkty poszczególnych faz zespół testujący testuje powstające produkty 3. testowanie jest związane z fazami produkcyjnymi

MODELE CYKLU ŻYCIA OPROGRAMOWANIA (10) Model spiralny (Boehma 1988) cztery główne fazy cyklu życia oprogramowania wykonywane cyklicznie: analiza ryzyka, konstrukcja, atestowanie, planowanie. Planowanie Wymagania począt. planowanie proj. Analiza ryzyka w oparciu o wymagania Analiza ryzyka Planowanie wyniki kontaktu z klientem Analiza ryzyka w oparciu o reakcje klienta Go, no-go decision Customer evaluation Atestowanie Iteracje 1,2 Konstrukcja (model kaskadowy)

FAZA STRATEGICZNA określenie wymagań specyfikowanie projektowanie kodowanie implementacja testowanie produkt konserwacja Faza strategiczna Analiza Synteza Instalacja i utrzymanie Dokumentacja - rozmowy z klientami (przedstawicielami) - cele przedsięwzięcia z pkt. widzenia klienta - zakres i kontekst przedsięwzięcia -ogólne określenie wymagań wykonanie wstępnej analizy i projektu systemu -propozycja kilku sposobów realizacji systemu - szacowanie kosztów oprogramowania -analiza rozwiązań -prezentacja wyników analizy klientowi korekta -budowa wstępnego harmonogramu -określenie standardów wg których będzie realizowane przedsięwzięcie