Inżynieria Oprogramowania 1. Wstęp

Slides:



Advertisements
Podobne prezentacje
Projektowanie w cyklu życia oprogramowania
Advertisements

Inżynieria Oprogramowania 10. Szacowanie kosztu oprogramowania cz. 2
Katedra Mikroelektroniki i Technik Informatycznych Politechniki Łódzkiej Inżynieria oprogramowania (IO) Wykłady: mgr inż. Sławomir Wróblewski Godziny przyjęć:
Studia Podyplomowe IT w Biznesie Inżynieria Oprogramowania
Złożoność procesu konstrukcji oprogramowania wymusza podział na etapy.
Role w zespole projektowym
Budowa i integracja systemów informacyjnych
1 / 47 WARSZAWA 2005 Przemysław Siekierko Stanisław Andraszek Rational Unified Process.
Referat 3. Planowanie zadań i metody ich obrazowania
Inżynieria Oprogramowania 9. Testowanie oprogramowania
Inżynieria Oprogramowania 5. Prototypowanie
Inżynieria Oprogramowania 0. Informacje o zajęciach
Inżynieria Oprogramowania 6. Projektowanie architektoniczne
Wydział Zastosowań Informatyki i Matematyki SGGW
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 1 Prototypowanie oprogramowania l Błyskawiczne tworzenie oprogramowania służące.
Projektowanie Aplikacji Komputerowych
1 Stan rozwoju Systemu Analiz Samorządowych czerwiec 2009 Dr Tomasz Potkański Z-ca Dyrektora Biura Związku Miast Polskich Warszawa,
Propozycja metodyki nauczania inżynierii oprogramowania
Cykle życia oprogramowania
Grzegorz Jokiel Na podstawie materiałów firmy IDS-Scheer
Jakość systemów informacyjnych (aspekt eksploatacyjny)
Rational Unified Process
Projektowanie i programowanie obiektowe II - Wykład IV
Praca Inżynierska „Analiza i projekt aplikacji informatycznej do wspomagania wybranych zadań ośrodków sportowych” Dyplomant: Marcin Iwanicki Promotor:
Proces tworzenia oprogramowania
Dalsze elementy metodologii projektowania. Naszym celem jest...
Analiza, projekt i częściowa implementacja systemu obsługi kina
Wykład 4 Analiza i projektowanie obiektowe
Wykład 3 Analiza i projektowanie strukturalne
Wykład 2 Cykl życia systemu informacyjnego
C.d. wstępu do tematyki RUP
Wykonawcy:Magdalena Bęczkowska Łukasz Maliszewski Piotr Kwiatek Piotr Litwiniuk Paweł Głębocki.
Wykład 1 – część pierwsza
Microsoft Solution Framework
Zarządzanie jakością projektu
Rational Unified Process Implementacja Aleksandra Reiman, gr. I-52.
Unified Modeling Language - Zunifikowany Język Modelowania
Ian Sommerville Inżynieria oprogramowania WNT 2003 Rozdz. 1 slajd 1
Proces tworzenia oprogramowania
UML W V ISUAL S TUDIO Mateusz Lamparski. UML D EFINICJA Unified Modeling Language (UML) to graficzny język do obrazowania, specyfikowania, tworzenia i.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
Komputerowe wspomaganie projektowania
Waterfall model.
Metodologia CASE. Przyczyny użycia narzędzi CASE Główną przesłanką użycia narzędzi CASE jest zwiększenie produktywności i jakości produkowanych systemów.
Zarządzanie zagrożeniami
Inżynieria oprogramowania
Proces tworzenia oprogramowania Proces tworzenia oprogramowania jest zbiorem czynności i związanych z nimi wyników, które prowadzą do powstania produktu.
Podstawy zarządzania projektami Karta projektu
Michał Sipek Piotr Kapciak
ZINTEGROWANE SYSTEMY ZARZĄDZANIA
Eksploatacja zasobów informatycznych przedsiębiorstwa.
Projektowanie obiektowe. Przykład: Punktem wyjścia w obiektowym tworzeniu systemu informacyjnego jest zawsze pewien model biznesowy. Przykład: Diagram.
Ergonomia procesów informacyjnych
Bartosz Baliś, 2006 Wstęp do Inżynierii Oprogramowania Bartosz Baliś.
Projektowanie bazy danych z użyciem diagramów UML Obiektowe projektowanie relacyjnej bazy danych Paweł Jarecki.
Logical Framework Approach Metoda Macierzy Logicznej
Studia Podyplomowe IT w Biznesie Inżynieria Oprogramowania
Polsko-Japońska Wyższa Szkoła Technik Komputerowych Specjalność kursu inżynierskiego w Polsko-Japońskiej Wyższej Szkole Technik Komputerowych: Inżynieria.
Wykład 2 – Zintegrowane systemy informatyczne Michał Wilbrandt.
K.Subieta. Inżynieria Oprogramowania i Baz Danych, slajd 1 Wrzesień Specjalność kursu inżynierskiego w Polsko-Japońskiej Wyższej Szkole Technik Komputerowych:
Budowa i integracja systemów informacyjnych Wykład 1 Wprowadzenie do inżynierii oprogramowania mgr inż. Rafał Hryniów P olsko J apońska W yższa S zkoła.
Budowa i integracja systemów informacyjnych Wykład 2 Cykl życiowy oprogramowania dr inż. Włodzimierz Dąbrowski P olsko J apońska W yższa S zkoła T echnik.
Cykle życia oprogramowania oraz role w zespole projektowym Autor: Sebastian Szałachowski s4104.
Zarządzanie projektami informatycznymi
Efektywność algorytmów
Inżynieria Oprogramowania Laboratorium
Budowa i integracja systemów informacyjnych
Wykład 1 – część pierwsza
Zapis prezentacji:

Inżynieria Oprogramowania 1. Wstęp 26/03/2017 Inżynieria Oprogramowania 1. Wstęp Leszek J Chmielewski Wydział Zastosowań Informatyki i Matematyki SGGW www.lchmiel.pl

Plan Inżynieria oprogramowania znaczenie elementy Podstawowe pytania dotyczące inżynierii oprogramowania

Dlaczego? Kryzys oprogramowania Wiek XX: wzrost złożoności oprogramowania Syndrom LOOP: Late Over budget Overtime Poor quality Programiści proponują więcej Klienci też chcą więcej, ale nie tego samego, co jest im oferowane

Kryzys oprogramowania Nie widać jednoznacznego polepszenia

Inżynieria oprogramowania Zastosowanie zdyscyplinowanego systematycznego ilościowego podejścia do rozwoju eksploatacji i utrzymania oprogramowania

Źródła Materiały dra Waldemara Karwowskiego, wykładowcy w poprzednich semestrach Materiały z „ważniaka”: http://wazniak.mimuw.edu.pl Ian Sommerville, Inżynieria Oprogramowania, WNT, Warszawa 2003 Ian Sommerville, Software Engineering, Pearson Education Limited, 2001 Włodzimierz Dąbrowski, Kazimierz Subieta, Podstawy inżynierii oprogramowania, Wydawnictwo PJWSTK, Warszawa 2005. Inne materiały, osobno cytowane

Inżynieria oprogramowania 26/03/2017 Inżynieria oprogramowania Gospodarki wszystkich rozwiniętych krajów zależą od oprogramowania Coraz więcej systemów wymaga niezawodnego oprogramowania Inżynieria oprogramowania: teoria, metody i narzędzia związane z wytwarzaniem oprogramowania Jak każda inżynieria

Koszty oprogramowania 26/03/2017 Koszty oprogramowania Koszty oprogramowania są często dominującym składnikiem kosztów całego systemu Zdarza się, że koszt oprogramowania znacznie przekracza samą wartość sprzętu komputerowego, np. komputera osobistego Koszt utrzymania i konserwacji oprogramowania jest większy niż koszt jego wytworzenia Wieloletnia konserwacja oprogramowania może kosztować wielokrotnie więcej niż jego zakup Stąd potrzeba efektywnych metod i dobrych praktyk

Kryzys oprogramowania Uzależnienie organizacji od systemów komputerowych i przyjętych technologii nie są one stabilne w długim horyzoncie czasowym Problemy współdziałania niezależnie zbudowanego oprogramowania szczególnie istotne przy dzisiejszych tendencjach integracyjnych Problemy przystosowania istniejących systemów do nowych wymagań, tendencji i platform sprzętowo-programowych Frustracje informatyków wynikające ze zbyt szybkiego postępu w zakresie narzędzi i metod wytwarzania uciążliwości i długotrwałości procesów produkcji i pielęgnacji oprogramowania znaczące zmiany w przemyśle informatycznym następują co 5-7 miesięcy w porównaniu do 5-7 lat w innych dziedzinach

Kryzys oprogramowania - przyczyny Konflikt pomiędzy odpowiedzialnością, jaka spoczywa na współczesnych SI, a ich zawodnością wynikającą ze złożoności i ciągle niedojrzałych metod tworzenia i weryfikacji oprogramowania Długi i kosztowny cykl tworzenia oprogramowania, wysokie prawdopodobieństwo niepowodzenia Niska kultura ponownego użycia wytworzonych komponentów projektów i oprogramowania (reuse) Niski stopień powtarzalności przedsięwzięć Długi i kosztowny cykl życia SI, wymagający stałych (często globalnych) zmian Eklektyczne, niesystematyczne narzędzia i języki programowania

Źródła złożoności oprogramowania Podstawowym powodem kryzysu oprogramowania jest złożoność produktów informatyki i procesów ich wytwarzania Dziedzina problemowa, obejmująca ogromną liczbę wzajemnie uzależnionych aspektów i problemów Zespół projektantów podlegający ograniczeniom pamięci, percepcji, wyrażania informacji i komunikacji Oprogramowanie Potencjalni użytkownicy: czynniki psychologiczne, ergonomia, ograniczenia pamięci i percepcji, skłonność do błędów i nadużyć, tajność, prywatność Środki i technologie informatyczne: sprzęt, oprogramowanie, sieć, języki, narzędzia, itd.

Pytania o inżynierii oprogramowania Co to jest oprogramowanie? Co to jest inżynieria oprogramowania? Jaka jest różnica pomiędzy inżynierią oprogramowania a informatyką? Jaka jest różnica pomiędzy inżynierią oprogramowania a inżynierią systemów? Co to jest proces tworzenia oprogramowania? Co to jest model procesu tworzenia oprogramowania? Jakie są koszty inżynierii oprogramowania? Jakie właściwości ma dobre oprogramowanie? Jakie są najistotniejsze wyzwania dla inżynierów oprogramowania? Co to jest CASE (Computer-Aided Software Engineering)?

Co to jest oprogramowanie? Są to programy komputerowe, cała związana z nimi dokumentacja i dane konfiguracyjne Rodzaje produktów oprogramowania Powszechne Dostosowane (na zamówienie)

Co to jest inżynieria oprogramowania? Jest to dziedzina inżynierii, która obejmuje wszystkie aspekty tworzenia oprogramowania od fazy początkowej do jego pielęgnacji Inżynierowie oprogramowania pracują w sposób systematyczny i uporządkowany ponieważ jest to najskuteczniejszy sposób tworzenia oprogramowania wysokiej jakości

Jaka jest różnica pomiędzy inżynierią oprogramowania a informatyką? Zasadniczo informatyka obejmuje teorie i podstawowe zasady działania komputerów Inżynieria oprogramowania obejmuje praktyczne problemy związane z tworzeniem oprogramowania Byłoby dobrze, gdyby inżynier programowania znał teorie informatyczne, choć nie zawsze przystają one do rzeczywistości

Jaka jest różnica pomiędzy inżynierią oprogramowania a inżynierią systemów? Inżynieria systemów komputerowych obejmuje wszystkie aspekty tworzenia i ewolucji systemów komputerowych, w których oprogramowanie odgrywa zasadniczą rolę Inżynierowie systemów biorą udział w specyfikacji systemu i definiowania jego ogólnej architektury

Co to jest proces tworzenia oprogramowania? Jest to zbiór czynności i związanych z nimi wyników, które zmierzają do opracowania produktu programowego Przykładowe czynności wspólne dla wszystkich procesów Specyfikacja Projektowanie Budowa Integracja i testowanie

Co to jest model procesu tworzenia oprogramowania? Jest to uproszczona prezentacja procesu tworzenia oprogramowania (model == uproszczenie) Przykłady modeli oprogramowania: Model przepływu prac Model przepływu danych Model rola-akcja Przykłady ogólnych modeli (paradygmatów) tworzenia oprogramowania Model kaskadowy Tworzenie ewolucyjne Formalne przekształcenia Składanie systemu z komponentów ponownego użycia

Cykl życiowy oprogramowania Fazy cyklu życiowego oprogramowania: Faza specyfikacji i analizy wymagań  modelowanie pojęciowe Faza projektowania  projektowanie logiczne Faza konstrukcji (implementacji)  projektowanie fizyczne Faza testowania Faza wdrożenia czas

Modele tworzenia oprogramowania Model kaskadowy najprostszy Model ewolucyjny badawczy dla niezdecydowanego klienta Model spiralny jw., lepiej uwzględnia ryzyko Model przyrostowy lepszy niż kaskadowy, tańszy niż ewolucyjny Model formalny gdy można wszystko formalnie zapisać systemy krytyczne Model z wielokrotnym użyciem komponentów

Model kaskadowy

Model kaskadowy Najpopularniejsze podejście Kolejne etapy następują po sobie: sformułowanie wymagań, zatwierdzenie analiza projektowanie implementacja W czystym modelu kaskadowym każdy etap rozpoczyna się po zakończeniu poprzedniego Wada: brak procesu weryfikacji pomiędzy etapami Zastosowanie w czystej postaci: do projektów krótkich, gdzie wymagania są bardzo dobrze określone, a wątpliwości można wyjaśnić na czas

Model przyrostowy

Model przyrostowy Najpierw określamy wymagania, dokonujemy analizy i określamy ogólną architekturę systemu, zatwierdzenie Następne kroki znane z modelu kaskadowego wykonujemy etapami Pozwala projektować system etapami w przypadku, gdy nie możemy zaprojektować od razu całego systemu nie wiadomo, które funkcje okażą się bardziej istotne zakres przyrostów można zatwierdzić, liczbę niekoniecznie Można lepiej wykorzystać zasoby finansowe oraz zespoły ludzkie Istotna jest faza początkowa, w której należy wyznaczyć zakres całego projektu oraz określić etapy jego realizacji Dla całości systemu, jednokrotnie: kompleksowa analiza architektura projektu Etapowo, przyrostowo jest wykonywana realizacja zgodnie z potrzebami i możliwościami klienta

Model ewolucyjny

Model ewolucyjny Wersja początkowa Specyfikacja Ogólny opis Tworzenie Wersje pośrednie Zatwierdzanie Wersja końcowa Inny rysunek (I. Sommerville): Tworzenie badawcze: celem jest praca z klientem – badanie wymagań i dostarczenie systemu Prototypowanie z porzuceniem: celem jest zrozumienie wymagań klienta – wypracowanie lepszej definicji wymagań

Model ewolucyjny Wdrażamy kolejno coraz bardziej rozbudowane systemy informatyczne Projektowanie nadążne, tzn. że cały czas jesteśmy nastawieni na zmieniający się cel ponieważ wraz z upływem czasu cel ulega zmianie, musimy przez cały czas analizować i kontrolować proces projektowania w ten sposób staramy się zminimalizować straty, spowodowane wadliwym działaniem systemu Kosztem etapowej modyfikacji systemu, uzyskujemy efekt jego aktualności Ważne: mieć końcową wizję projektu i konsekwentnie realizować podzielone na kroki działania wdrożeniowe Problemy: wzrost trudności zarządzania – nie widać procesu nabranie nadmiernego tempa zmian i pojawianie się nowych celów ponad możliwości akceptacji system ma złą strukturę – źle dla dużych systemów specjalne narzędzia do programowania, rzadkie

Model spiralny

Model spiralny Cechą charakterystyczną jest realizacja kolejno poszczególnych zakresów działania systemów System dzieli się na etapy i dla każdego z nich opracowuje się całościowy projekt Zasadą jest, że stawiamy sobie cel i ulepszamy system metodą kolejnych przybliżeń Czas realizacji jest stosunkowo długi, o wiele dłuższy niż w poprzednio opisanych procedurach Stosuje się: dla złożonych i stosunkowo drogich przedsięwzięć, gdzie czas i koszty nie odgrywają istotnej roli, a najważniejsza jest jakość systemu informacyjnego dla projektów, dla których przewidujemy dość długi okres eksploatacji

Model spiralny Ciąg czynności jest następujący, kolejno: planowanie analiza ryzyka konstruowanie weryfikacja Etap konstruowania obejmuje: prototyp, symulację, kodowanie, integrację, testowanie modułów, testowanie całości, wdrożenie Sekwencja ta jest wielokrotnie powtarzana W wyniku realizacji poszczególnych etapów otrzymujemy projekt coraz bardziej doskonały – oczywiście większym kosztem.

Jakie są koszty inżynierii oprogramowania? Koszty wytworzenia oprogramowania można w przybliżeniu określić na 60%, natomiast 40% stanowią koszty testowania Ewolucja oprogramowania może przewyższyć koszty jego wytworzenia Koszty zmian oprogramowania użytkowanego przez długi okres czasu mogą kilkukrotnie przekroczyć koszty jego wytworzenia Koszty zależą od stosowanego modelu

Jakie właściwości ma dobre oprogramowanie? Konkretny zbiór właściwości zależy od zastosowania, niemniej można podać ogólny zbiór właściwości Zdatność do pielęgnacji zdolność do ewolucji zgodnie z potrzebami klientów Niezawodność nie powinno powodować fizycznych lub ekonomicznych katastrof w przypadku awarii Efektywność nie powinno marnotrawić zasobów systemu takich jak pamięć czy czas procesora Użyteczność powinno być użyteczne, bez zbędnego wysiłku ze strony użytkownika (np. interfejsy)

Jakie są najistotniejsze wyzwania dla inżynierów oprogramowania? Wyzwanie dziedzictwa Pielęgnacja i modyfikacji działających dużych systemów, pełniących poważne funkcje gospodarcze Wyzwanie różnorodności Wymóg działania oprogramowania w systemach rozproszonych przy rożnych typach komputerów i systemów wspomagających Wyzwanie doręczenia Wymóg dostarczanie gotowego programowania w skróconym czasie bez utraty jakości

Zadania inżynierii oprogramowania Zadania stojące przed inżynierią oprogramowania w walce z narastającą złożonością oprogramowania: Redukcja tej złożoności Propagowanie wykorzystywania technik i narzędzi ułatwiających pracę nad złożonymi systemami Upowszechnianie metod wspomagających analizę nieznanych problemów oraz ułatwiających wykorzystanie wcześniejszych doświadczeń Usystematyzowanie procesu wytwarzania oprogramowania, tak aby ułatwić jego planowanie i monitorowanie Wytworzenie wśród producentów i nabywców przekonania, że budowa dużego systemu wysokiej jakości jest zadaniem wymagającym profesjonalnego podejścia

Co to są metody inżynierii oprogramowania? Uporządkowane podejście do tworzenia oprogramowania, które obejmuje: Opisy modeli systemu np. Modele obiektów, modele przepływu itp. Reguły ograniczenia, którym podlegają modele systemu Zalecenia heurystyki, które określają dobre zwyczaje projektantów Poradnictwo opisy czynności, które należy wykonać

Modelowanie pojęciowe Modelowanie pojęciowe (conceptual modeling) oraz model pojęciowy (conceptual model) odnoszą się do procesów myślowych, do wyobrażeń towarzyszących pracy nad oprogramowaniem Projektant, programista, itp. muszą dokładnie wyobrazić sobie problem oraz metodę jego rozwiązania. Zasadnicze procesy tworzenia oprogramowania zachodzą więc w ludzkim umyśle i nie są związane z jakimkolwiek językiem programowania czy jakimkolwiek narzędziem w ogóle Modelowanie pojęciowe może (i powinno) być wspomagane przez środki wzmacniające ludzką pamięć i wyobraźnię, służące do opisu odwzorowywanej rzeczywistości w postaci struktur danych, operacji na danych, zachodzących procesów.

Metodyka Metodyka, w inżynierii oprogramowania, jest zestawem pojęć, oznaczeń, języków, modeli, diagramów, technik i sposobów postępowania służących do modelowania dziedziny problemowej stanowiącej przedmiot projektowanego systemu Metodyka jest wykorzystywana zarówno do projektowania pojęciowego, jak i logicznego czy fizycznego Metodyka ustala fazy realizacji projektu, a ponadto dla każdej z faz projektu wyznacza: role uczestników projektu, scenariusze postępowania, reguły przechodzenia do następnej fazy, modele, które powinny być wytworzone, dokumentację, która powinna powstać, notację, której należy używać

Co to jest CASE (Computer-Aided Software Engineering) CASE obejmuje rożne programy wykorzystane do wspomagania czynności procesu tworzenia oprogramowania (np. edytory notacji, generatory kodów) Upper-CASE Związane z początkowymi fazami tworzenia oprogramowania Lower-CASE Wspomagają implementowanie i testowanie

Metody i techniki analizy i projektowania W ramach metodyk wykorzystywane są metody analizy i projektowania oprogramowania Metoda projektowania oprogramowania jest to taki sposób postępowania, który ma na celu otrzymanie projektu systemu Technika jest pojęciem węższym. Technika projektowania jest to szczególny sposób postępowania, który służy konkretnemu rozwiązaniu w projektowaniu systemu informacyjnego Określona technika może służyć jednej lub wielu metodom projektowania Metody i techniki projektowania systemów informacyjnych, podobnie jak metody i techniki analizy podzielić można na grupy: Strukturalne Obiektowe

Podejście strukturalne Opiera się na rozkładzie problemu na części składowe. System ulega hierarchicznej dekompozycji Konsekwentna hierarchiczna struktura projektu (projektowanie od góry do dołu, czyli od ogółu do szczegółu) Podział projektu na moduły (niekiedy jako studium pośrednie występują jednostki funkcjonalne, podsystemy), z których jest jedno wejście i jedno wyjście Zaletą projektowania strukturalnego jest to, że przedsięwzięcie projektowe możemy podzielić na mniejsze części. możliwa jest równoległa, grupowa praca, a więc rozdział zadań pomiędzy mniejsze zespoły Prowadzi to do skrócenia czasu opracowania projektu. Trudności pojawiają się przy powiązaniu i zestrojeniu ze sobą opracowanych oddzielnie modułów

Podejście obiektowe Polega na stopniowym rozszerzaniu modelu opracowanego dla potrzeb analizy o moduły takie, jak: kontakt z użytkownikiem, zarządzanie zadaniami, zarządzanie danymi W czasie projektowania model jest na ogół kontynuacją analizy obiektowej wtedy analiza i projektowanie mogą się wzajemnie przeplatać Wyróżnikiem analizy i projektowania jest to, że analiza obiektowa służy do identyfikowania i definiowania tych klas i obiektów, które w bezpośredni sposób odzwierciedlają zadania systemu, natomiast czynności projektowe przedstawiają realizację wymagań.

26/03/2017 Podsumowanie Inżynieria oprogramowania to dziedzina inżynierii, która obejmuje wszystkie aspekty tworzenia oprogramowania Produkty programowe składają się z utworzonych programów oraz związanej z nimi dokumentacji Zasadniczymi atrybutami produktów są zdatność do pielęgnacji, niezawodność, efektywność i użyteczność Głównymi czynnościami podczas produkcji oprogramowania są specyfikacja oprogramowania, tworzenie, zatwierdzenie i ewolucja

26/03/2017 Podsumowanie cd. Modele tworzenia oprogramowania to uporządkowane sposoby jego budowy Obejmują sugestie wyboru procesu tworzenia, mutacji, reguły określające, jakie opisy systemu opracować, a także wskazówki projektowe Narzędzia CASE to systemy komputerowe, które są przeznaczone do wspomagania rutynowych czynności procesu tworzenia, takich jak praca nad diagramami projektowymi, sprawdzanie poprawności diagramów oraz śledzenie wykonanych testów UML to najważniejsza obiektowa notacja do specyfikacji, konstruowania, wizualizacji i dokumentowania systemów

Dziękuję leszek_chmielewski@sggw.pl http://www.lchmiel.pl