Bartosz Baliś, 2006 Wstęp do Inżynierii Oprogramowania Bartosz Baliś.

Slides:



Advertisements
Podobne prezentacje
Agile w praktyce, czyli jak to robimy naprawdę
Advertisements

Inżynieria Oprogramowania
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.
Opis metodyki i procesu produkcji oprogramowania
Role w zespole projektowym
Formalizacja i uwiarygodnianie Iteracyjny proces syntezy modeli
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
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28Slide 1 Restrukturyzacja oprogramowania l Reorganizowanie i modyfikowanie istniejącego.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 1 Prototypowanie oprogramowania l Błyskawiczne tworzenie oprogramowania służące.
FIT Środowisko Testów Integracyjnych
Projektowanie Aplikacji Komputerowych
Na Etapie Inżynierii Wymagań
Cykle życia oprogramowania
Rational Unified Process
Podstawy Inżynierii Oprogramowania
Wstęp do programowania obiektowego
Proces tworzenia oprogramowania
Projekt zaliczeniowy z przedmiotu "Inżynieria oprogramowania"
Dalsze elementy metodologii projektowania. Naszym celem jest...
Projekt i implementacja aplikacji wspomagającej testowanie oprogramowania, zgodne z metodologią Unified Software Development Process (RUP). Włodzimierz.
Wykład 2 Cykl życia systemu informacyjnego
Wykład 10 Narzędzia CASE.
Projekt i implementacja aplikacji wspomagającej testowanie
Projekt i implementacja aplikacji wspomagającej testowanie
C.d. wstępu do tematyki RUP
Adam Gabryś , v1.1,
Continuous Integration
Wykład 1 – część pierwsza
Źródła: podręcznikopracował: A. Jędryczkowski.
Komputerowe wspomaganie pracy inżyniera
Microsoft Solution Framework
Wymiana integracja ? oprogramowania dr Danuta Kajrunajtys.
Rational Unified Process Implementacja Aleksandra Reiman, gr. I-52.
Dr Karolina Muszyńska Na podst.:
Unified Modeling Language - Zunifikowany Język Modelowania
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.
Walidacja danych alina suchomska.
ŁUKASZ DZWONKOWSKI Modele zwinne i ekstremalne. Podejście tradycyjne
Inżynieria oprogramowania
Studium osiągalności. Rozmiar projektu (np. w punktach funkcyjny projektu w porównaniu do rozmiaru zakładanego zespołu projektowego i czasu Dostępność.
Proces tworzenia oprogramowania Proces tworzenia oprogramowania jest zbiorem czynności i związanych z nimi wyników, które prowadzą do powstania produktu.
Michał Sipek Piotr Kapciak
Copyright © Jerzy R. Nawrocki Team Software Process Inżynieria oprogramowania II Wykład.
ZINTEGROWANE SYSTEMY ZARZĄDZANIA
Eksploatacja zasobów informatycznych przedsiębiorstwa.
7/1/ Projektowanie Aplikacji Komputerowych Piotr Górczyński Cykl życia systemu.
Dokumentacja programu komputerowego i etapy tworzenia programów.
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.
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 systemów informacyjnych
„Metodologia Zarządzania Cyklem Projektu (PCM) — klucz do sukcesu
Zarządzanie projektami informatycznymi
Budowa i integracja systemów informacyjnych
Wykład 1 – część pierwsza
Zapis prezentacji:

Bartosz Baliś, 2006 Wstęp do Inżynierii Oprogramowania Bartosz Baliś

Bartosz Baliś, 2006 Definicja Inżynieria – projektowanie, budowa i obsługa konstrukcji, maszyn, procesów i systemów w przemyśle i codziennym życiu Inżynieria oprogramowania – projektowanie, rozwój, dokumentowanie, wdrażanie i pielęgnacja oprogramowania  Cel: jak w każdej inżynierii – optymalizacja kosztów i niezawodność produktu

Bartosz Baliś, 2006 Powstanie inżynierii oprogramowania Lata 60 – kryzys oprogramowania  Coraz większe i bardziej złożone systemy Bo coraz większa moc obliczeniowa komputerów!  Jeden na 4 projekty kończył się porażką  Tworzenie dużych systemów trwało 3-5 lat Często stawały się przestarzałe, zanim zostały ukończone!  Powstawały systemy niskiej jakości nie odpowiadające wymaganiom  Pielęgnacja oprogramowania stała się niezwykle trudna i kosztowna Rozwiązanie – opracować metodologię (proces) rozwoju oprogramowania

Bartosz Baliś, 2006 Jak walczyć ze złożonością?* Abstrakcja  Ukrywanie szczegółów  Wyodrębnianie wspólnych własności  Wprowadzanie nowych pojęć do oznaczania tych własności Dekompozycja  Podział problemu/przedmiotu na mniejsze, które mogą być traktowane osobno Wielokrotne użycie  Ponowne użycie już utworzonych komponentów Zgodność z ludzkim sposobem myślenia  Używanie pojęć, notacji, języka, narzędzi, itd., odpowiadających ludzkiej psychice, sposobie postrzegania, itd.

Bartosz Baliś, 2006 Proces inżynierii oprogramowania Studium wykonalności (feasibility study)  Czy to w ogóle się opłaca? Czy za tyle to zrobimy? Analiza (analysis)  Czego chce użytkownik Specyfikacja (specification)  Precyzyjne sformułowanie niezbędnych cech systemu Projektowanie (design)  Techniczne zaprojektowanie rozwiązania Implementacja (implementation)  Budowa zaprojektowanego rozwiązania Testowanie (testing, verification & validation)  Czy system poprawnie robi to, co miał robić? Integracja (integration, deployment – wdrożenie)  Sytem musi funkcjonować w docelowym środowisku Pielęgnacja (maintance; też „utrzymanie”, „konserwacja”)  Modyfikowanie działającego systemu w miarę pojawiania się nowych wymagań

Bartosz Baliś, 2006 Analiza – zbieranie wymagań użytkownika Większość użytkowników nie wie dokładnie, czego chce! Ponieważ nie wie dokładnie, co aktualnie robi  know „how”  know „that”! (umiejętności vs. wiedza) Dlatego twórca oprogramowania (analityk) musi stać się ekspertem w dziedzinie użytkownika!  Przykład: program do projektowania maszyn Fazy analizy  Faza 1: Wywiad (Discovery) – słuchanie i obserwacja  Faza 2: Udoskonalanie (Refinement) – pytanie i wyjaśnianie  Faza 3: Modelowanie (Modelling) – propozycje i weryfikacje Wynik: wystarczające zrozumienie problemu, aby można było sformułować dokument specyfikujący wymagania

Bartosz Baliś, 2006 Specyfikacja – ostatni etap analizy Precyzyjny zapis pożądanego zachowania systemu Formalna notacja Ustrukturyzowana dokumentacja Wynik: specyfikacja wymagań, która precyzyjnie prezentuje pożądane cechy systemu projektantowi

Bartosz Baliś, 2006 Projekt Opracowanie rozwiązania, które odpowiada wymaganiom Czerpie z poprzednich doświadczeń (i standardowych technik) Wynikiem może być wiele możliwych rozwiązań  Wtedy potrzebne jest kryterium wyboru pomiędzy nimi Wynik: dokument, który precyzyjnie opisuje projekt systemu programistom

Bartosz Baliś, 2006 Implementacja Pisanie kodu Dokumentowanie kodu Debugowanie kodu Przygotowanie kodu do testów Informacja zwrotna dla projektantów i analityków Informacje dla testerów i integratorów Wynik: działający kod i dokumentacja, gotowe do testowania

Bartosz Baliś, 2006 Testowanie i integracja Konieczność sprawdzenia, czy implementacja jest zgodna z projektem (czyli, że działa) A także, czy jest zgodna z wymaganiami! (Czyli, że działa poprawnie) Testowane są pojedyncze moduły, a także cały system Następnie testy interakcji ze środowiskiem, innym oprogramowaniem, danymi, itp. Wynik: przetestowany kod, wdrożony do docelowego środowiska, działający poprawnie

Bartosz Baliś, 2006 Pielęgnacja Wymagania użytkowników zmieniają się w czasie Nawet najlepsze i najbardziej dogłębne testy nie wykryją wszystkich błędów! Zatem oprogramowanie również musi podlegać zmianom Zmiany wymagań mogą pociągnąć dodatkową pracę w zakresie implementacji, testowania, projektowania, a nawet nową analizę

Bartosz Baliś, 2006 Modele cyklu rozwoju oprogramowania (Software Development Life Cycle, SDLC) Waterfall – wodospad Incremental – inkrementacyjny Spiral – spiralny Inne – fountain, rapid prototyping,...

Bartosz Baliś, 2006 Model Wodospadu Sekwencyjne przejście przez kolejne etapy Zalety  Prostota  Dobry do małych projektów Wady  Wszystkie!

Bartosz Baliś, 2006 Model inkrementacyjny Seria mniejszych cykli Każda iteracja dodaje nową funkcjonalność do systemu Zalety: działająca wersja wcześniej, łatwiejsze zmiany, łatwiejsza praca w mniejszych iteracjach Wady: mogą wystąpić problemy z architekturą systemu, ponieważ nie wszystkie wymagania są definiowane z góry

Bartosz Baliś, 2006 Model spiralny Podobny do inkrementacyjnego Nacisk na analizę ryzyka Cztery etapy:  Planowanie  Analiza ryzyka  Budowa  Ewaluacja System cyklicznie przechodzi przez te etapy Zalety: analiza ryzyka, dobry do dużych projektów, wcześnie działający system Wady: może być kosztowny, sukces zależy od analizy ryzyka, niedobry dla mniejszych projektów

Bartosz Baliś, 2006 Ale jednak... Te modele to ostatecznie tylko teoria Uproszczony model tego, co dzieje się w rzeczywistości... lub sugestia, co powinno się dziać Nie ma „srebrnej kuli” – modelu panaceum No Silver Bullet, Frederick P. Brooks, 1987  Z samej natury oprogramowania wynika, że nigdy nie będzie cudownego wynalazku, który w informatyce dokona tego, co elektronika i tranzystory zrobiły dla sprzętu

Bartosz Baliś, 2006 Wspomaganie procesu – narzędzia CASE CASE – Computer Aided Software Engineering Programy wspomagające proces tworzenia oprogramowania  (Prawie) Na każdym etapie!

Bartosz Baliś, 2006 Technologie i praktyki Technologie  Kompilatory, repozytoria kodu, edytory,... Praktyki  Programowanie w parach (pair programming)  Recenzje kodu (code reviews)  Codzienne spotkania  Etc.