Wprowadzenie do inżynierii oprogramowania

Slides:



Advertisements
Podobne prezentacje
Inżynieria Oprogramowania
Advertisements

Projektowanie w cyklu życia oprogramowania
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.
Część 2 OiZPI Iteracyjny przyrostowy model cyklu życiowego Rational Unified Process™ w materiałach wykorzystano: K.Subieta: Budowa i integracja systemów.
Role w zespole projektowym
Budowa i integracja systemów informacyjnych
1 / 47 WARSZAWA 2005 Przemysław Siekierko Stanisław Andraszek Rational Unified Process.
Inżynieria Oprogramowania 1. Wstęp
Platformy na żądanie (ASP) element wdrożenia rozwiązania e-learning
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 1 Prototypowanie oprogramowania l Błyskawiczne tworzenie oprogramowania służące.
Projektowanie Aplikacji Komputerowych
Na Etapie Inżynierii Wymagań
Copyright © Jerzy R. Nawrocki Wprowadzenie Analiza systemów informatycznych Wykład.
Testowanie oprogramowania
Cykle życia oprogramowania
Inżynieria Oprogramowania dla Fizyków
Jarosław Kuchta Jakość Systemów Informatycznych
Pomiary w inżynierii oprogramowania
Pomiary w inżynierii oprogramowania
Jakość systemów informacyjnych (aspekt eksploatacyjny)
Rational Unified Process
Podstawy Inżynierii Oprogramowania
Proces tworzenia oprogramowania
Projekt zaliczeniowy z przedmiotu "Inżynieria oprogramowania"
Bardzo ważnym elementem metodologii projektowania systemów informatycznych jest PMBoK PMBoK (ang. Project Management Body of Knowledge) jest zbiorem standardów.
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 2 Cykl życia systemu informacyjnego
C.d. wstępu do tematyki RUP
Certyfikacja Kompetencji Informatycznych w standardzie ECCC
Wykład 1 – część pierwsza
Microsoft Solution Framework
Rational Unified Process Implementacja Aleksandra Reiman, gr. I-52.
Pomiary procesów programistycznych Copyright, 2002 © Jerzy R. Nawrocki Zarządzanie jakością.
Proces tworzenia oprogramowania
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
Zarządzanie projektami informatycznymi
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
Copyright © Jerzy R. Nawrocki Team Software Process Inżynieria oprogramowania II Wykład.
ZASTOSOWANIE KOMPUTEROWEGO WSPOMAGANIA W ZARZĄDZANIU JAKOŚCIĄ - METODY FMEA I QFD Politechnika Śląska, Wydział Organizacji i Zarządzania, Katedra Zarządzania.
Eksploatacja zasobów informatycznych przedsiębiorstwa.
Ergonomia procesów informacyjnych
Bartosz Baliś, 2006 Wstęp do Inżynierii Oprogramowania Bartosz Baliś.
7/1/ Projektowanie Aplikacji Komputerowych Piotr Górczyński Cykl życia systemu.
Studia Podyplomowe IT w Biznesie Inżynieria Oprogramowania
Wykład 2 – Zintegrowane systemy informatyczne Michał Wilbrandt.
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.
Innowacyjne metody zarządzania jakością oprogramowania Przeglądy oprogramowania i standard IEEE 1028 Bartosz Michalik
(c) InMoST 2006 Plan szkolenia ▪ Wprowadzenie (9:00-10:30): Czym jest szacowanie? (MO) Systematyczne podejście do planowania (ŁO) Planowanie, a kalendarz.
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Zdzisław Sroczyński
Cykle życia oprogramowania oraz role w zespole projektowym Autor: Sebastian Szałachowski s4104.
Agile Programming a jakość
Inżynieria oprogramowania
Zarządzanie projektami informatycznymi
Inżynieria Oprogramowania Laboratorium
Budowa i integracja systemów informacyjnych
Wykład 1 – część pierwsza
IEEE SPMP Autor : Tomasz Czwarno
Cykl życia oprogramowania
Zapis prezentacji:

Wprowadzenie do inżynierii oprogramowania Inżynieria oprogramowania Wykład 1 Wprowadzenie do inżynierii oprogramowania Bartosz Walter <Bartek.Walter@man.poznan.pl>

Prowadzący dr inż. Bartosz Walter Instytut Informatyki PP Pokój: Centrum Polsko-Niemieckie p. 2 Email: Bartosz.Walter@cs.put.poznan.pl WWW: http://www.se.cs.put.poznan.pl/

Agenda Historia i geneza inżynierii oprogramowania Rola inżynierii Aspekty inżynierii oprogramowania Plan wykładów

Rynek oprogramowania Świat 207 miliardów euro (USA 97 miliardów, UE 63 miliardy) Bez oprogramowania wytwarzanego na własne potrzeby Wzrost 5.1% rocznie + 125 miliardów euro dodatkowych usług W UE 60-70% oprogramowania jestwytwarzane w firmach, dla których nie jest to główną działalnością

Historia: początki Sprzęt o bardzo ograniczonych możliwościach Ograniczone zastosowania Małe programy Programy pisane często dla własnych potrzeb lub potrzeb dobrze znanych osób Dobrze wyspecyfikowane zadania

Historia: rozwój Nowy zawód: programista Nowa rewolucja przemysłowa (Osborne 1979) Specjalizowane języki programowania – COBOL, Fortran, Algol Sprzęt o dużo większych możliwościach, np. pamięć wirtualna, pamięć masowa, czytniki kart i taśm Nowe, poza naukowe i poza militarne zastosowania – np. w biznesie Próba realizacji wielu dużych przedsięwzięć programistycznych

Objawy kryzysu oprogramowania Rozwój technik wytwarzania oprogramowania nie nadąża za rozwojem sprzętu komputerowego i potrzeb klientów Metody tworzenia oprogramowania się nie skalują

Historia: kryzys oprogramowania Czy kryzys oprogramowania trwa do dzisiaj? Nadal większość przedsięwzięć przekracza czas i/lub budżet Około 25% przedsięwzięć programistycznych nie jest kończona 90% firm przyznaje, że dość często zdarzają im się opóźnienia przedsięwzięć Powszechna akceptacja kiepskiej jakości oprogramowania (w pewnych obszarach) Brak powszechnie akceptowanych i stosowanych standardów

Przyczyny kryzysu Duża złożoność systemów informatycznych Złożoność, zmienność, nieadekwatność wymagań Niepowtarzalność poszczególnych przedsięwzięć Nieprzejrzystość procesu budowy oprogramowania Pozorna łatwość wytwarzania i modyfikowania oprogramowania Potrzeba kreatywności Czynnik ludzki Mało wymagający rynek (?) Niedoskonałość narzędzi Brak standaryzacji

Historia: próby przełamania kryzysu 1968: konferencja NATO w Ga-Pa nt. inżynierii oprogramowania Metodyki strukturalne Metodyki obiektowe Technologie komponentowe Programowanie aspektowe Standaryzacja technologii Time to Market Kryzys czy chroniczne niedomaganie?

Czym jest inżynieria oprogramowania? Inżynieria oprogramowania dotyczy tworzenia dużych systemów informatycznych przez wiele osób Inżynieria oprogramowania to wiedza techniczna, dotycząca wszystkich faz cyklu życia oprogramowania, której celem jest uzyskanie wysokiej jakości produktu – oprogramowania. Inżynieria oprogramowania: zastosowanie systematycznego, zdyscyplinowanego, policzalnego podejścia do tworzenia, wykorzystywania i utrzymania oprogramowainia. Inżynieria oprogramowania = proces + metody zarządcze i techniczne + narzędzia

Oprogramowanie Oprogramowanie jest budowane lub rozwijane w sposób inżynierski (zdefiniowany, uporządkowany), jednak w zupełnie inny niż w innych dziedzinach inżynierii Oprogramowanie się nie zużywa, choć jego jakość się pogarsza Choć przemysł skłania się ku tworzeniu oprogramowania z komponentów i reużywalności, to jednak większość systemów jest dedykowana

Modele procesu tworzenia oprogramowania Model klasyczny wodospadowy Zamknięcie jednej fazy otwiera następną Prototypowanie Pierwszy wstępny prototyp (działający!), potem właściwa implementacja Programowanie odkrywcze Programiści odgadują potrzeby klienta Model przyrostowy Kolejne funkcje są implementowane stopniowo

Model klasyczny (wodospad) czas Wymagania Analiza Projekt Implementacja Testowanie

Model klasyczny (wodospad)

Wady i zalety modelu wodospadowego Wymuszona niezmienność wymagań Wysoki koszt błędów popełnionych we wstępnych fazach Koszt błędu w wymaganiach 100-1000 razy większy od kosztu błędu programistycznego! Długa przerwa w kontaktach z klientem Nie lubiany przez wykonawców Wyższe prawdopodobieństwo niepowodzenia w przypadku dużych przedsięwzięć Łatwość zarządzania – planowanie i monitorowanie

Prototypowanie Cel – lepsze określenie wymagań Fazy: Ogólne określenie wymagań. Budowa prototypu. Weryfikacja prototypu przez klienta. Pełne określenie wymagań. Realizacja nowego, pełnego systemu zgodnie z modelem kaskadowym.

Wady i zalety prototypowania Zmniejszone ryzyko popełnienia błędu podczas definiowania wymagań i analizy Szybka prezentacja klientowi działającego szkieletu aplikacji (szybka reakcja) Dodatkowy koszt wytworzenia prototypu Możliwość nieporozumienia z klientem

Model spiralny (B. Boehm) Planowanie Analiza wymagań i ryzyka czas funkcjonalność Projektowanie i budowa Wdrożenie i ocena użytkownika

Wady i zalety modelu spiralnego Możliwość zmiany wymagań w trakcie realizacji systemu Szybka reakcja klienta na pojawiające się zmiany Niektóre funkcje są dostępne przed zakończeniem przedsięwzięcia Integracja! Zarządzanie!

Składowe inżynierii oprogramowania Wymagania Szkolenia Zarządzanie przedsięwzięciem Wdrożenie Wersjonowanie Planowanie Analiza Inżynieria oprogramowania Reinżynieria Testowanie Pomiary Kontrola i nadzór Szacowanie Proces Raportowanie Projektowanie Modelowanie Jakość Dokumentowanie Zarządzanie ryzykiem

Modelowanie Modelowanie: odtwarzanie rzeczywistości w celu uchwycenia najważniejszych elementów i pomijanie rzeczy nieistotnych Elementami modelu są elementy rzeczywistości Modelowanie procesów a modelowanie danych Dekompozycja strukturalna Modelowanie obiektowe (UML): obiekty, relacje, atrybuty

Projektowanie Reprezentacja modelu uwzględniająca ograniczenia techniczne i sposób realizacji Ten sam model może być zaprojektowany na różne sposoby Elementami projektu są byty implementacyjne Projektowanie strukturalne vs. Obiektowe Pojęcia: abstrakcja, uszczegółowienie, modularność, architektura, hermetyzacja Projektowanie klas, relacji, interfejsów...

Testowanie Błędów nie można całkowicie wyeliminować Testowanie jest czynnością destrukcyjną Dobry test to test, który z dużym prawdopobieństwem pozwala wykryć błąd Skuteczny test to test, który znajduje nowy błąd Testowanie a model tworzenia oprogramowania Dobór danych testowych i obszaru testowania Zasada Pareto Skalowalność – od szczegółu do ogółu Niezależność testowania od tworzenia oprogramowania

Testowanie: zadanie int oblicz(int arg1, int arg2, int operacja) { switch (operacja) { case DODAWANIE: return arg1 + arg2; case ODEJMOWANIE: return arg1 – arg2; case MNOŻENIE: return arg1 * arg2; case DZIELENIE: return arg1 / arg2; default: return –1; }

Szacowanie Czy przedsięwzięcie jest wykonalne? Czas = pieniądz Dekompozycja Funkcjonalna Produktowa Modele Punkty funkcyjne COCOMO II PROBE

Dokumentowanie Programy żyją dłużej niż pamięć twórców Spójność artefaktów (automatyzacja?) Dokumentacja użytkowa a dokumentacja techniczna Język i psychologia Dokumentowanie kosztuje... Nikt nie lubi dokumentowania, ale dobrze gdy dokumentacja istnieje

Planowanie Zasoby Zadania i ich przydział Harmonogramy Czas Ludzie Narzędzia Materiał (komponenty) Zadania i ich przydział Harmonogramy Czy przedsięwzięcie jest wykonalne?

Wersjonowanie i zarządzanie zmianą Zmiany są nieuniknione Jaka wersja modułu X posiadała funkcję A? Identyfikacja elementów i ich wersji Spójność wersji a praca w zespole Wiele wersji jednego oprogramowania Formalne zatwierdzanie zmian

Pomiary Potrzeba ilościowej informacji nt. produktu i procesu Informacja zarządcza nie można sterować niczym, czego nie można zmierzyć Dane historyczne, teraźniejszość i przyszłość Rodzaje metryk Produktowe: rozmiar, złożoność komponentów, liczba interfejsów, ekranów, formatek, stron dokumentacji, liczba wykrytych błędów Procesowe: czas, koszt, opóźnienie, stopień zrównoleglenia, liczba wymagań, czas poświęcony na testowanie

Reinżynieria Nieustanny pęd ku lepszemu Zmiana fundamentów w czasie eksploatacji Oblicza zmian Zmiana procesu Zmiana funkcjonalności Zmiana kodu (refaktoryzacja) Koszt pielęgnacji = 80% TCO Inżynieria odwrotna: odtwarzanie projektu na podstawie programu

Plan – I sem. Modelowanie (UML) Projektowanie (design patterns) Programowanie w języku Java Testowanie (scenariusze, Junit) Szacowanie (PROBE, Cocomo II) Dokumentowanie (użytkowe i techniczne) Zarządzanie zmianą i wersjonowanie Pomiary Narzędzia

Readings Jaszkiewicz A., Inżynieria oprogramowania. Helion 1997. Górski J., Inżynieria oprogramowania w projekcie informatycznym. Mikom 2000. Fowler M., UML w kropelce. Mikom 2001. Szejko St. (red.), Metody wytwarzania oprogramowania. Mikom 2002. Pressman R., Software Engineering. A Practitioner’s Approach. McGraw Hill 2001. Sommerville I., Software Engineering. Addison-Wesley 1995.

Q & A ?