Inżynieria Programowania - Wstęp

Podobne dokumenty
Inżynieria Programowania - Wstęp. Plan wykładu. Bibliografia. Motto. Notatki. Notatki. Notatki. Notatki. Arkadiusz Chrobot. Kielce, 4 kwietnia 2013

Inżynieria Programowania - Wstęp

Wstęp. Kryzys rozwoju oprogramowania. Efekty. Przyczyny

Inżynieria Programowania - Wstęp. Plan wykładu. Bibliografia (część, reszta na stronie) Motto. Notatki. Notatki. Notatki. Notatki.

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

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

Inżynieria oprogramowania

Inżynieria oprogramowania (Software Engineering)

Wykład 1 Inżynieria Oprogramowania

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

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

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

Etapy życia oprogramowania

Zakres wykładu. Podstawy InŜynierii Oprogramowania

Metody wytwarzania oprogramowania. Metody wytwarzania oprogramowania 1/31

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

Cykle życia systemu informatycznego

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

Projektowanie systemów informatycznych. wykład 6

INŻYNIERIA OPROGRAMOWANIA

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

Narzędzia CASE dla.net. Łukasz Popiel

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

Lekkie metodyki. tworzenia oprogramowania

Inżynieria oprogramowania I

Przedsięwzięcia Informatyczne w Zarządzaniu

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

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

Informatyczne fundamenty

PRZEWODNIK PO PRZEDMIOCIE

Programowanie zespołowe

Oceny z prezentacji INKU011S. Zofia Kruczkiewicz

Egzamin / zaliczenie na ocenę*

Inżynieria oprogramowania (Software Engineering) Wykład 1

SYSTEMY INFORMATYCZNE ćwiczenia praktyczne

Waterfall model. (iteracyjny model kaskadowy) Marcin Wilk

Agile Project Management

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

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

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

Inżynieria Programowania Zarządzanie projektem

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

Inżynieria Programowania Zarządzanie projektem. Plan wykładu. Motto. Motto 2. Notatki. Notatki. Notatki. Notatki.

Inżynieria Oprogramowania. Robert Szmurło

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl

KARTA MODUŁU KSZTAŁCENIA

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

Pytania z przedmiotów kierunkowych

Rozpoczęcie, inicjacja (ang. inception

PRZEWODNIK PO PRZEDMIOCIE

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

INŻYNIERIA OPROGRAMOWANIA

Efekt kształcenia. Ma uporządkowaną, podbudowaną teoretycznie wiedzę ogólną w zakresie algorytmów i ich złożoności obliczeniowej.

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

Organizacja procesu projektowania, rozwoju i serwisowania systemu wspomagającego zarzadzanie uczelnią

Procesy wytwarzania oprogramowania Specyfikacja i projektowanie oprogramowania

PRZEWODNIK PO PRZEDMIOCIE

Modelowanie i Programowanie Obiektowe

Spis treści. Analiza i modelowanie_nowicki, Chomiak_Księga1.indb :03:08

Metody Programowania

Programowanie Zespołowe

Plan zarządzania projektem

Inżynieria oprogramowania. Jan Magott

5 Moduył do wyboru II *[zobacz opis poniżej] 4 Projektowanie i konfiguracja sieci komputerowych Z

Inżynieria Oprogramowania w Praktyce

WPROWADZENIE DO UML-a

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

Feature Driven Development

Wykład 2. MIS n Inżynieria oprogramowania Marzec Kazimierz Michalik Akademia Górniczo-Hutnicza im. S. Staszica w Krakowie

Projekt Kompetencyjny - założenia

Opis metodyki i procesu produkcji oprogramowania

Proces tworzenia oprogramowania

E-ID1S-08-s5. Informatyka. I stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny)

Tworzenie gier na urządzenia mobilne

Praktyczne aspekty stosowania metody punktów funkcyjnych COSMIC. Jarosław Świerczek

Baza danych to zbiór wzajemnie powiązanych ze sobą i zintegrowanych danych z pewnej dziedziny.

Zasady organizacji projektów informatycznych

PRZEWODNIK PO PRZEDMIOCIE

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

KIERUNKOWE EFEKTY KSZTAŁCENIA

Zagadnienia egzaminacyjne INFORMATYKA. stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

12) Wadą modelu kaskadowego jest: Zagadnienia obowiązujące na egzaminie z inżynierii oprogramowania: 13) Wadą modelu opartego na prototypowaniu jest:

Wytwarzanie oprogramowania

5 Moduył do wyboru II *[zobacz opis poniżej] 4 Projektowanie i konfiguracja sieci komputerowych Z

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

Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło

MODELE CYKLU śycia OPROGRAMOWANIA

Część I - Załącznik nr 7 do SIWZ. Warszawa. 2011r. (dane Wykonawcy) WYKAZ OSÓB, KTÓRYMI BĘDZIE DYSPONOWAŁ WYKONAWCA DO REALIZACJI ZAMÓWIENIA

ROZWÓJ SYSTEMÓW SZTUCZNEJ INTELIGENCJI W PERSPEKTYWIE "PRZEMYSŁ 4.0"

Inżynieria oprogramowania

INŻYNIERIA OPROGRAMOWANIA

Kurs programowania. Wykład 12. Wojciech Macyna. 7 czerwca 2017

E-1IZ3-06-s6. Inżynieria Programowania. Informatyka. I stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny)

Metodyka projektowania komputerowych systemów sterowania

Michał Olejnik. 22 grudnia 2009

Podstawy programowania III WYKŁAD 4

KIERUNKOWE EFEKTY KSZTAŁCENIA KIERUNEK STUDIÓW INFORMATYCZNE TECHNIKI ZARZĄDZANIA

tel. (+48 81) /22 fax (+48 81) Wykład Ćwiczenia Laboratorium Projekt

Analiza i programowanie obiektowe 2016/2017. Wykład 6: Projektowanie obiektowe: diagramy interakcji

PRZEWODNIK PO PRZEDMIOCIE

Transkrypt:

Katedra Informatyki, Politechnika Świętokrzyska w Kielcach Kielce, 12 października 2010

Plan wykładu 1 Bibliografia 2 3 Definicja Geneza Stan obecny Przyczyny 4 Cechy oprogramowania Paradygmaty programowania Paradygmaty tworzenia oprogramowania 5 Model procesu tworzenia oprogramowania Model kaskadowy Tworzenie ewolucyjne Tworzenie formalne Tworzenie z użyciem wielokrotnym Programowanie ekstremalne 6 Metody inżynierii oprogramowania Koszty tworzenia oprogramowania Computer-Aided Software Engineering Wyzwania 7

Bibliografia Ian Sommerville, Inżynieria oprogramowania, wnt, Warszawa, 2003 Software Engineering Inżynieria oprogramowania

Bibliografia If you look at software today, through the lens of the history of engineering, it s certainly engineering of a sort but it s the kind of engineering that people without the concept of the arch did. Most software today is very much like an Egyptian pyramid with millions of bricks piled of top of each other, with no structural integrity, but just done by brute force and thousand of slaves. Alan Kay

Bibliografia Definicja Geneza Stan obecny Przyczyny Inżynieria Oprogramowania Inżyniera Oprogramowania (ang. software engineering) - dziedzina inżynierii, która obejmuje wszystkie aspekty tworzenia oprogramowania od początkowej fazy specyfikacji systemu aż do jego pielęgnacji po dacie rozpoczęcia użytkowania. Oprogramowanie Oprogramowanie w ujęciu Inżynierii Oprogramowania jest każdą postacią programu zapisu programu komputerowego (kod, dokumentacja, dane konfiguracyjne).

Kryzys rozwoju oprogramowania Definicja Geneza Stan obecny Przyczyny W latach 60 ubiegłego wieku pojawiły się systemy komputerowe drugiej generacji. To wydarzenie zapoczątkowało powstawanie programów o dużym stopniu skomplikowania. Wkrótce okazało się, że brakuje wytycznych jak takie oprogramowanie tworzyć. W efekcie wiele przedsięwzięć związanych z produkcją oprogramowania kończyło się klęską. W roku 1969 pod patronatem nato zwołano w Niemczech konferencję, które celem było znalezienie wyjścia z zaistniałej sytuacji. To właśnie tam powstał pomysł stworzenia inżynierii programowania.

Efekty Bibliografia Definicja Geneza Stan obecny Przyczyny Do chwili obecnej nie udało się znaleźć metod, które gwarantowałyby sukces każdego projektu programistycznego. Sytuacja nadal jest poważna: Nist szacuje roczne straty pieniężne w usa związane z projektami programistycznymi na około 60 miliardów dolarów, według Standish Group 30% projektów programistycznych jest porzucanych, około połowa z nich przekracza zamierzony budżet, 60% jest uważanych za katastrofę przez organizacje, które je zapoczątkowały, a 9 z 10 jest kończonych za późno, Peter G. Neumann - Illustrative Risks to the Public in the Use of Computer Systems and Related Technology

Przyczyny Bibliografia Definicja Geneza Stan obecny Przyczyny Niektóre z przyczyn: przedsięwzięcia informatyczne mają często charakter innowacyjny, Źródła: Terence Parr - Why writing software is not like engineering Chuck Allison - Code Quality

Przyczyny Bibliografia Definicja Geneza Stan obecny Przyczyny Niektóre z przyczyn: przedsięwzięcia informatyczne mają często charakter innowacyjny, produkt inżynierii oprogramowania ma charakter niematerialny, Źródła: Terence Parr - Why writing software is not like engineering Chuck Allison - Code Quality

Przyczyny Bibliografia Definicja Geneza Stan obecny Przyczyny Niektóre z przyczyn: przedsięwzięcia informatyczne mają często charakter innowacyjny, produkt inżynierii oprogramowania ma charakter niematerialny, częste zmiany wymagań w trakcie realizacji projektu, Źródła: Terence Parr - Why writing software is not like engineering Chuck Allison - Code Quality

Przyczyny Bibliografia Definicja Geneza Stan obecny Przyczyny Niektóre z przyczyn: przedsięwzięcia informatyczne mają często charakter innowacyjny, produkt inżynierii oprogramowania ma charakter niematerialny, częste zmiany wymagań w trakcie realizacji projektu, złe zarządzanie projektem, Źródła: Terence Parr - Why writing software is not like engineering Chuck Allison - Code Quality

Przyczyny Bibliografia Definicja Geneza Stan obecny Przyczyny Niektóre z przyczyn: przedsięwzięcia informatyczne mają często charakter innowacyjny, produkt inżynierii oprogramowania ma charakter niematerialny, częste zmiany wymagań w trakcie realizacji projektu, złe zarządzanie projektem, wojna wykładników. Źródła: Terence Parr - Why writing software is not like engineering Chuck Allison - Code Quality

Cechy oprogramowania Paradygmaty programowania Paradygmaty tworzenia oprogramowania Informatyka (ang. computer science) Jak tworzyć efektywne oprogramowanie? (algorytmy, struktury danych, złożoność obliczeniowa, języki programowania, paradygmaty programowania) Inżynieria oprogramowania (ang. software engineering) Jak efektywnie tworzyć oprogramowanie? (reguły zarządzania projektami, metody radzenia sobie ze złożonością, architektura oprogramowania, dokumentacja, koszty produkcji, testowanie, niezawodność, pielęgnacja)

Cechy oprogramowania Cechy oprogramowania Paradygmaty programowania Paradygmaty tworzenia oprogramowania Jakie właściwości powinno mieć oprogramowanie: zdolność do pielęgnacji (ang. maintenance),

Cechy oprogramowania Cechy oprogramowania Paradygmaty programowania Paradygmaty tworzenia oprogramowania Jakie właściwości powinno mieć oprogramowanie: zdolność do pielęgnacji (ang. maintenance), niezawodność,

Cechy oprogramowania Cechy oprogramowania Paradygmaty programowania Paradygmaty tworzenia oprogramowania Jakie właściwości powinno mieć oprogramowanie: zdolność do pielęgnacji (ang. maintenance), niezawodność, efektywność,

Cechy oprogramowania Cechy oprogramowania Paradygmaty programowania Paradygmaty tworzenia oprogramowania Jakie właściwości powinno mieć oprogramowanie: zdolność do pielęgnacji (ang. maintenance), niezawodność, efektywność, użyteczność.

Paradygmaty programowania Cechy oprogramowania Paradygmaty programowania Paradygmaty tworzenia oprogramowania Istnieją cztery podstawowe paradygmaty (programowania): 1 programowanie imperatywne (Pascal, C, Perl), 2 programowanie obiektowe (C++, Java), 3 programowanie funkcyjne (Erlang, lisp), 4 programowanie logiczne (Prolog).

Cechy oprogramowania Paradygmaty programowania Paradygmaty tworzenia oprogramowania Paradygmaty tworzenia oprogramowania Modeli tworzenia oprogramowania jest kilka, między innymi: model kaskadowy, tworzenie ewolucyjne, tworzenie formalne, tworzenie z użyciem wielokrotnym, programowanie ekstremalne.

Model procesu tworzenia oprogramowania Model kaskadowy Tworzenie ewolucyjne Tworzenie formalne Tworzenie z użyciem wielokrotnym Programowanie ekstremalne jest procesem zmierzającym do wytworzenia produktu, jakim są programy komputerowe. Przebieg tego procesu jest zależny od rodzaju tworzonego oprogramowania. Można jednak wyróżnić cztery zasadnicze czynności, które występują zawsze w tym procesie: 1 specyfikacja oprogramowania - prostsza w przypadku oprogramowania powszechnego, dużo trudniejsza w przypadku oprogramowania specjalistycznego, 2 tworzenie oprogramowania, 3 zatwierdzania oprogramowania, 4 ewolucja oprogramowania.

Model procesu tworzenia oprogramowania Model kaskadowy Tworzenie ewolucyjne Tworzenie formalne Tworzenie z użyciem wielokrotnym Programowanie ekstremalne Model procesu tworzenia oprogramowania Model procesu (paradygmat) w sposób uproszczony opisuje przebieg procesu względem przyjętego punktu widzenia. Można je sklasyfikować jako: model przepływu prac, model przepływu danych, model rola-akcja.

Model kaskadowy Bibliografia Model procesu tworzenia oprogramowania Model kaskadowy Tworzenie ewolucyjne Tworzenie formalne Tworzenie z użyciem wielokrotnym Programowanie ekstremalne Paradygmat kaskadowy (ang. waterfall) jest pierwszym modele procesu tworzenia oprogramowania jaki powstał. Podstawą przy jego tworzeniu były doświadczenia z innych dziedzin inżynierii. Obejmuje on pięć głównych czynności, które są powtarzane wielokrotnie przez cały proces tworzenia: definiowanie i analizowanie wymagań, projektowanie oprogramowania, implementację i testowanie jednostek, integrację i testowanie systemu oraz działanie i pielęgnację. Model ten porządkuje prace nad oprogramowaniem, ale jest mało elastyczny i kosztowny jeśli zachodzą zmiany wymagań w trakcie projektu.

Tworzenie ewolucyjne Model procesu tworzenia oprogramowania Model kaskadowy Tworzenie ewolucyjne Tworzenie formalne Tworzenie z użyciem wielokrotnym Programowanie ekstremalne Tworzenie ewolucyjne polega na stworzeniu prototypu oprogramowania na podstawie pierwszej wersji specyfikacji, następnie przekazaniu go użytkownikowi, zebraniu opinii i udoskonaleniu na ich podstawie wstępnej wersji programowania. Ten proces powtarzany jest tak długo, aż powstanie ostateczna wersja systemu. Można wyróżnić dwie podklasy tego modelu: 1 tworzenie badawcze, 2 tworzenie z porzuceniem. Ten paradygmat tworzenia oprogramowania jest bardziej efektywny niż model kaskadowy, a produkt wytworzony na jego bazie bardziej odpowiada potrzebom użytkowników. Niestety struktura oprogramowania tworzonego tą metodą może być zła. Proces wytwórczy nie jest przy takim podejściu widoczny. Wymagane są także specjalne narzędzia i techniki.

Tworzenie formalne Bibliografia Model procesu tworzenia oprogramowania Model kaskadowy Tworzenie ewolucyjne Tworzenie formalne Tworzenie z użyciem wielokrotnym Programowanie ekstremalne W modelu tworzenia formalnego wymagania odnośnie opracowywanego oprogramowania zapisywane są w postaci formuł matematycznych. Przejście od wymagań do działającego programu dokonywane jest na zasadzie ściśle zdefiniowanych przekształceń matematycznych. Zaletą tego modelu jest to, że oprogramowanie opracowywane przy jego pomocy jest bardzo niezawodne i zawiera małą liczbę błędów. Jednakże nie każde oprogramowanie może być tworzone przy użyciu tego paradygmatu. Dodatkowo jest to proces dosyć kosztowny.

Tworzenie z użyciem wielokrotnym Model procesu tworzenia oprogramowania Model kaskadowy Tworzenie ewolucyjne Tworzenie formalne Tworzenie z użyciem wielokrotnym Programowanie ekstremalne W tym modelu zakłada się ponowne wykorzystanie komponentów oprogramowania, które zostały wcześniej wykonane lub zakupione. Zaletą tego podejścia jest względnie mały koszt tworzenia oprogramowania. Niestety niekiedy konieczne są kompromisy między funkcjonalnością dostępnych komponentów, a specyfikacją. Oznacza to, że oprogramowania powstałe z użyciem tego modelu nie zawsze odpowiada wymaganiom użytkownika.

Programowanie ekstremalne Model procesu tworzenia oprogramowania Model kaskadowy Tworzenie ewolucyjne Tworzenie formalne Tworzenie z użyciem wielokrotnym Programowanie ekstremalne Główną wadą klasycznych metod tworzenia oprogramowania są bardzo sztywne procedury, które przy często zmieniających się wymaganiach powodują spowolnienie procesu twórczego i prowadzą do generowania rozbudowanej dokumentacji, zamiast działającego oprogramowania. W odpowiedzi na te problemy powstał szereg tak zwanych metod zwinnych (ang. agile development), w których nacisk kładziony jest na dostarczeniu użytkownikowi działającego oprogramowania, a nie bezużytecznej dokumentacji. Jedną z tych metod jest programowanie ekstremalne (ang. extreme programming - xp). Główne postulaty tego modelu to ciągła rewizja kodu (programowanie w parach), ciągłe testowanie (zarówno po stronie programistów, jak i użytkowników), prostota projektu, ciągła praca nad definiowaniem i udoskonalaniem architektury systemu, integrowanie i testowanie komponentów kilkukrotnie w ciągu dnia, krótkie okresy wydań.

Metody inżynierii oprogramowania Metody inżynierii oprogramowania Koszty tworzenia oprogramowania Computer-Aided Software Engineering Wyzwania Celem inżynierii oprogramowania jest opracowanie metod porządkujących proces tworzenia programów komputerowych, tak aby produkt końcowy był wysokiej jakości, a wytwarzanie było ekonomiczne. Metody inżynierii oprogramowania pozwalają tworzyć modele (najczęściej graficzne) programów, które mogą być wykorzystywane jako specyfikacja i projekt systemu. Przykładem takiej metody jest Unified Modeling Language (uml).

Koszty tworzenia oprogramowania Metody inżynierii oprogramowania Koszty tworzenia oprogramowania Computer-Aided Software Engineering Wyzwania Koszty budowy oprogramowania zależą od jego typu oraz od rodzaju zastosowanego modelu wytwórczego. Generalnie najbardziej kosztowną fazą (bez uwzględniania pielęgnacji) jest testowanie, które w typowych projektach pochłania około 40% całkowitych kosztów, a w przypadku systemów krytycznych nawet 50%.

Metody inżynierii oprogramowania Koszty tworzenia oprogramowania Computer-Aided Software Engineering Wyzwania Computer-Aided Software Engineering Aby usprawnić tworzenie oprogramowania opracowano szereg narzędzi programowych, które wspomagają niektóre z czynności wykonywanych w trakcie tego procesu. Wszystkie te programy należą do kategorii Computer- -Aided Software Engineering - case. Należą do nich programy wspomagające modelowanie (np. Rational Rose), generujące kod, zarządzające wersjami (np. Mercury), testujące i inne.

Wyzwania Bibliografia Metody inżynierii oprogramowania Koszty tworzenia oprogramowania Computer-Aided Software Engineering Wyzwania Najczęściej napotykanymi przez inżynierów oprogramowania wyzwaniami są: systemy odziedziczone, różnorodność systemów, terminy wdrożenia.

Oprogramowanie komputerowe staje się coraz bardziej skomplikowane, a od jego działania zależy coraz więcej aspektów ludzkiego życia. Nie znamy jeszcze metod, które pozwalałby tworzyć niezawodne, efektywne i pozbawione błędów oprogramowanie w sposób tani i skuteczny. Stosowanie metod inżynierii programowania nie gwarantuje sukcesu procesu wytwórczego, jednakże ich zignorowanie gwarantuje że ten proces zakończy się katastrofą.

Pytania Bibliografia?