Inżynieria oprogramowania Robert Szmurło

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

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

Wykład 1 Inżynieria Oprogramowania

Programowanie zespołowe

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

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

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

Cykle życia systemu informatycznego

Inżynieria Oprogramowania. Robert Szmurło

Narzędzia CASE dla.net. Łukasz Popiel

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

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

Środowiska i platformy programistyczne

Przedsięwzięcia Informatyczne w Zarządzaniu

WPROWADZENIE DO UML-a

Król Łukasz Nr albumu:

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

Przegląd i ewaluacja narzędzi do szybkiego tworzenia interfejsu użytkownika (RAD).

Inżynieria oprogramowania (Software Engineering)

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

Inżynieria oprogramowania

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

Opis metodyki i procesu produkcji oprogramowania

Język programowania. Andrzej Bobyk

MODELE CYKLU śycia OPROGRAMOWANIA

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

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

ZAPYTANIE OFERTOWE. Zamawiający. Przedmiot zapytania ofertowego. Wrocław, dnia r.

Projektowanie systemów informatycznych. wykład 6

PRZEWODNIK PO PRZEDMIOCIE

Spis treúci. 1. Wprowadzenie... 13

Przegląd i ewaluacja narzędzi do szybkiego tworzenia interfejsu użytkownika (RAD).

Zakres wykładu. Podstawy InŜynierii 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

Feature Driven Development

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.

GUI - projektowanie interfejsów

INŻYNIERIA OPROGRAMOWANIA TESTOWANIE INTEGRACYJNE

SOA Web Services in Java

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

INŻYNIERIA OPROGRAMOWANIA

Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski

Całościowe podejście do testowania automatycznego dla programistów. (TDD, BDD, Spec. by Example, wzorce, narzędzia)

AUREA BPM HP Software. TECNA Sp. z o.o. Strona 1 z 7

Podstawy programowania III WYKŁAD 4

REFERAT PRACY DYPLOMOWEJ

Procesy wytwarzania oprogramowania Specyfikacja i projektowanie oprogramowania

Maciej Oleksy Zenon Matuszyk

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

Podstawy modelowania programów Kod przedmiotu

Wstęp do zarządzania projektami

Testowanie oprogramowania

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

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

Języki i paradygmaty programowania - 1

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

RUP. Rational Unified Process

Metodyka wdrożenia. Bartosz Szczęch. Starszy Konsultant MS Dynamics NAV

Wprowadzenie do systemów informacyjnych

Tester oprogramowania 2014/15 Tematy prac dyplomowych

Usługa: Testowanie wydajności oprogramowania

Wykaz osób w postępowaniu o udzielenie zamówienia publicznego nr 32-CPI-WZP-2244/13. Podstawa do dysponowania osobą

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 2

STUDIA STACJONARNE I STOPNIA Przedmioty kierunkowe

Projektowanie interakcji

Zaawansowane programowanie w języku C++

Waterfall model. (iteracyjny model kaskadowy) Marcin Wilk

INŻYNIERIA OPROGRAMOWANIA

HP Service Anywhere Uproszczenie zarządzania usługami IT

Modelowanie i analiza systemów informatycznych

Dokument Detaliczny Projektu

Acceptance Test Driven Development wspierane przez narzędzie ROBOT Framework. Edyta Tomalik Grzegorz Ziemiecki

Wprowadzenie do Behaviordriven

Narzędzia RAD (wykład 1)

Dr Katarzyna Grzesiak-Koped

Zarządzanie testowaniem wspierane narzędziem HP Quality Center

STUDIA NIESTACJONARNE I STOPNIA Przedmioty kierunkowe

Agile Project Management

Tworzenie gier na urządzenia mobilne

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

Inżynieria oprogramowania

Techniki CAx. dr inż. Michał Michna. Politechnika Gdańska

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

Egzamin / zaliczenie na ocenę*

Rozpoczęcie, inicjacja (ang. inception

DESIGNER APPLICATION. powered by

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

Wprowadzenie, podstawowe pojęcia, projekt a produkt Wykład1

Programowanie Zespołowe

ZASADY TWORZENIA OPROGRAMOWANIA

Wstęp do zarządzania projektami

SYLABUS/KARTA PRZEDMIOTU

Całościowe podejście do testowania automatycznego dla programistów. /C#/PHP (TDD, BDD, Spec. by Example, wzorce, narzędzia)

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

Podstawy programowania. Wprowadzenie

Proces tworzenia oprogramowania

DLA SEKTORA INFORMATYCZNEGO W POLSCE

Analityk i współczesna analiza

Transkrypt:

Inżynieria oprogramowania Robert Szmurło LATO 2007 Inżynieria oprogramowania 1

Prototypowanie + RAD jako środek wytwarzania (implementacji) Analiza Projekt Wizualny Prototyp Zrealizowany System Z http://www.blender.pl/cpg/albums/userpics/10505/normal_carprototypeconcept1b.jpg LATO 2007 Inżynieria oprogramowania 2

Model kaskadowy Modele procesów tworzenia systemów inf. Na podstawie: Ian Sommerville, Inżynieria oprogramowania, Rozdział 3 W tym modelu podstawowe czynności specyfikowania, tworzenia, zatwierdzania i ewolucji są odrębnymi fazami procesu takimi jak specyfikowanie wymagań, projektowanie oprogramowania, implementacja, testowanie itd. Tworzenie ewolucyjne (związane z RAD i JAD) W tym procesie czynności specyfikowania, projektowania i zatwierdzania przeplatają się. Pierwsza wersja systemu powstaje bardzo szybko na podstawie abstrakcyjnych specyfikacji. Później jest udoskonalana zgodność z informacjami otrzymanymi od klienta. Tworzenie formalne systemu (modelowanie) To podejście jest oparte na budowaniu formalnych matematycznych specyfikacji systemu i przekształcaniu tych specyfikacji w program za pomocą metod matematycznych. Weryfikacja zgodności komponentów polega na wnioskowaniu matematycznych o ich zgodności ze specyfikacją. Tworzenie z użyciem wielokrotnym (linie produkcyjne) W tym podejściu zakłada się istnienie dużej liczby komponentów zdatnych do ponownego użycia. Proces budowy systemu polega głównie na integrowaniu tych fragmentów, a nie na tworzeniu ich od początku. LATO 2007 Inżynieria oprogramowania 3

Modele tworzenia systemów informatycznych Model kaskadowy (czasem waterfall model) Długie cykle tworzenia oraz wdrażania. Sekwencyjne fazy akceptowane przez klienta. Programiści odseparowani od analityków. Słaba komunikacja między zespołami oraz klientem. Proces Spiralny (Spiral Model) Krótkie okresy tworzenia oraz wdrażania. Przyspieszony proces iteracyjny. Elastyczne wspólne zespoły programistów i analityków. Powtarzalność faz. Tworzenie ewolucyjne (Evolutionary Model) A jak to się ma do GUI? LATO 2007 Inżynieria oprogramowania 4

Elementy RAD Proces prototypowania Prototypowanie ewolucyjne ma wiele wspólnego z metodami błyskawicznego tworzenia programów użytkowych (Rapid Application Development, RAD) (Ian Sommerville, Inżynieria oprogramowania, Rozdział 8, Prototypowanie oprogramowania) JAD: Joint Application Design Czasem nawet Joint Application Development Zintegrowane narzędzia CASE Generatory kodu narzędzia do projektowania GUI narzędzia do refaktoryzacji kodu narzędzia do kompilacji kodu i generowania wdrożeń LATO 2007 Inżynieria oprogramowania 5

Podstawowe cechy RAD Na podstawie: Ian Sommerville, Inżynieria oprogramowania, Rozdział 8.1 1. Procesy specyfikowania, projektowania i implementowania przeplatają się. Nie ma szczegółowej specyfikacji systemu, a dokumentacja projektowa zwykle zależy od narzędzi użytych do implementacji systemu. Dokumentacja wymagań specyfikuje jedynie najważniejsze właściwości systemu. 2. System jest budowany w postaci ciągu przyrostów. Użytkownicy i inni udziałowcy systemu są włączeni w projektowanie i ocenę każdego przyrostu. Mogą proponować zmiany w oprogramowaniu i nowe wymagania, które mają być zaimplementowane w późniejszej wersji systemu. 3. Stosuje się metody błyskawicznego tworzenia systemów. Narzędzia CASE i języki czwartej generacji. 4. Interfejsy użytkownika budowane za pomocą interakcyjnego systemu wytwórczego, który umożliwia szybkie tworzenie projektu interfejsu przez rysowanie i rozmieszczanie ikon. LATO 2007 Inżynieria oprogramowania 6

Cztery filary RAD Narzędzia Ludzie Zarządzanie Metodyka Rysunek zmodyfikowany z: AN INTRODUCTION TO RAPID APPLICATION DEVELOPMENT, Feb 2002, The Government of the Hong Kong Special Administrative Region LATO 2007 Inżynieria oprogramowania 7

Tworzenie ewolucyjne z pomocą prototypów Koncepcja programistów Sesje klienta z programistami Rozbieżność Koncepcja klienta Ogólna koncepcja, podstawowe wymagania Wersja ١ Zmiany Rozszerzenia Funkcje Specyfikacje Wersja ٢ Zmiany Usterki Wydajność ٢-٦ Miesięcy Wersja ٣... Wersja N-١ Produkt końcowy Wersja N Przeprojektowanie Specyfikacja ١-٢١ Dni Testowanie LATO 2007 Inżynieria oprogramowania 8

Etapy i Zadania RAD Prototypowanie Iteracja RAD Narzędzia! Testy 2 Analiza i przewidywanie wymagań Projekt Użytkownika Błyskawiczna Implementacja Wdrożenie Zbadanie Aktualnego Stanu Zdefiniowanie Wymagań Akceptacja Wymagań Stworzenie Szczeg. Modelu Systemu Stworzenie Ram Projektu Systemu Doskonalenie Projektu Przygotowanie Strategii Implementacji Implemetacja Systemu Kontrola Implementacj i Systemu Przygotowanie do błyskawicznej Implementacji Utworzenie Danych Testowych i Dokumentów Systemowych Przygotow anie do wdrożenia Prowadzeni e Szkoleń Dostosowanie Danych Akceptacja Zainstalowanego Systemu Instalacja Systemu Produkcyjneg o Zakończenie Projektu Systemu Zdobycie Akceptacji na Implementację LATO 2007 Inżynieria oprogramowania 9

Uczestnicy RAD Koordynator spotkań, kontrolujący ich przebieg Sekretarz (wpisywanie ustaleń do narzędzi CASE) Zespół SWAT (Skilled With Advanced Tools) Koordynator modelu Administrator bazy danych Zespół planujący spotkania robocze Zespół projektowy użytkowników Zespół wspomagający implementację Zespół wdrożeniowy Ludzie RAD http://www.radioluz.pwr.wroc.pl/upload/images/ people_press_play.2007.people_press_play_(denmark).jpg LATO 2007 Inżynieria oprogramowania 10

Założenia biznesowe Timeboxing technika zarządzania stawiająca na pierwszym planie termin oddania systemu kosztem funkcjonalności. możliwy dzięki: W pewnych sytuacjach 80% funkcjonalność systemu może być uzyskana w jednej piątej czasu potrzebnego do zrealizowania pełnej funkcjonalności. W pewnych sytuacjach, wymagania handlowe dla systemu mogą być w pełni zaspokojone nawet gdy niespełnione są niektóre wymagania operacyjne. W pewnych sytuacjach, może być uzyskana akceptacja systemu przy określonym minimum użytecznych funkcji a nie wszystkich. LATO 2007 Inżynieria oprogramowania 11

Techniki stosowane w RAD Modelowanie procesów biznesowych mało charakterystyczne, ale krytycznie wymagane aby RAD mógł zakończyć się sukcesem, Budowanie prototypów Iteracje podejście oparte na jak najwcześniejszym stworzeniu wersji, która może być zaprezentowana klientowi, podporządkowanie przyrostowemu tworzeniu aplikacji opartemu na udoskonalaniu wersji, Timeboxing technika zarządzania stawiająca na pierwszym planie termin oddania systemu kosztem funkcjonalności, LATO 2007 Inżynieria oprogramowania 12

Techniki stosowane w RAD Spotkania robocze użytkowników JRP - Joint Requirements Planning, JAD - Joint Application Design Kontrola przebiegu spotkań sformalizowana kontrola spotkań przez specjalnie wyznaczoną osobę, ta sama lub dodatkowa osoba dokumentuje spotkanie w narzędziu CASE, Równoległa implementacja systemu wykorzystanie technik komponentowych, modularyzacja przez zespół SWAT (Skill With Advanced Tools). LATO 2007 Inżynieria oprogramowania 13

Iteracyjne, ewolucyjne budowanie prototypów Prototypy budowane przy bardzo bliskiej współpracy z przyszłymi użytkownikami 1. Projekt: JAD (Joint Application Design) bliska współpraca przyszłych użytkowników oraz projektantów 2. Iteracje dopóki nie jest uzyskany pożądany efekt. 3. Stworzenie prototypu opartego na aktualnych wymaganiach. 4. Przegląd oraz ocena wewnętrzna prototypu. 5. Ocena prototypu przez klienta, sprecyzowanie dalszych wymagań. 6. Spotkanie robocze klienta z programistami. 7. Ocena czasu na realizację nowych wymagań i zmian. LATO 2007 Inżynieria oprogramowania 14

Zalety RAD? Krótki rozwój systemu. (3-6 miesięcy) Namacalne wyniki można uzyskać w bardzo krótkim czasie. Użytkownicy mają do dyspozycji prototypy systemu. Nie tworzy się systemów nie spełniających wymagań. Niższe koszty projektu, w dodatku łatwiejsze do kontroli. Większe zaangażowanie twórców (użytkowników i projektantów). Weryfikowane na bieżąco spełnienie kluczowych wymagań biznesowych. (80% funkcjonalności może być spełnione przy nakładzie 20%) LATO 2007 Inżynieria oprogramowania 15

Czy jest druga strona medalu? RAD często może doprowadzić do obniżenia jakości oprogramowania. Tworzenie systemów zapchaj dziura. Poświęcenie solidnej struktury systemu oraz metodologii na rzecz zyskania czasu. Trudna kontrola postępu, za względu na brak podziału na etapy. Większa liczba błędów z powodu złego kodu. Zaufanie do dodatkowych, obcych komponentów. Słabe ponowne wykorzystanie komponentów. Słaba skalowalność produktu. Brak dokumentacji.? http://www1.istockphoto.com LATO 2007 Inżynieria oprogramowania 16

Czy RAD mogło być pigułką na problemy? RAD nie jest lekarstwem na kryzys oprogramowania. Nie skompensuje braku kompetencji autorów. Nie wyeliminuje potrzeby zarządzania projektem. Nie pomoże gdy zespół nie jest zdyscyplinowany pod względem kosztów oraz czasu realizacji. LATO 2007 Inżynieria oprogramowania 17

Narzędzia w RAD The Top 20 Tools Of All Time http://uk.gizmodo.com/2006/03/23/the_top_20_tools_of_all_time.html LATO 2007 Inżynieria oprogramowania 18

Wymagania dla środowisk RAD Technologia podnieś i upuść Narzędzia CASE (Computer Aided Software Engineering), m.in.: organizacja w odpowiedniej strukturze zintegrowane środowisko do manipulacji na danyc automatyczne generowanie dokumentacji Obiektowa architektura języka Powtórne używanie kodu Rozszerzalność, elastyczność, skalowalność Dostęp do wielu baz danych Łatwy dostęp do serwisów wsparcia użytkowników Popularność Automatyczne generowanie kodu Koordynacja prac wielu projektantów LATO 2007 Inżynieria oprogramowania 19

Delphi jak się ma do RAD? CodeGear from Borland http://www.codegear.com/ LATO 2007 Inżynieria oprogramowania 20

Jak do tego pasuje Delphi? Wielowarstwowe środowisko programistyczne Graficzny interfejs użytkownika Język Object Pascal Skalowalny interfejs do baz danych Bezpośredni dostęp do interfejsu API Windows Warstwa sieciowa (DCOM, MIDAS, CORBA, Internet) Zintegrowany debugger Biblioteki komponentów Możliwość tworzenia własnych zestawów narzędzi (nie we wszystkich wersjach) Organizacja projektów LATO 2007 Inżynieria oprogramowania 21

Krótka geneza Delphi Chuck Jazdzewski (Chief Architect, Borland) - Button.Caption := OK; Wcześniej: OWL, MFC (Turbo Vision) Nowy język na podstawie Turbo Pascala Właściwości klas (Properties) Reprezentowanie obiektów przez wskaźniki Typ referencyjny (przekazywany do funkcji) Włączenie do kodu informacji o klasie i typach właściwości (RTTI Runtime Type Information) Generowanie kodu maszynowego Bardzo prosty i naturalny do nauki język Fenomenalnie szybki kompilator, dzięki nieskomplikowanej składni, która była projektowana również pod kątem wydajności procesu kompilacji LATO 2007 Inżynieria oprogramowania 22

Ewolucja Delphi Następca Turbo Pascala Delphi 1 - elementy wizualne, procedury obsługi zdarzeń, biblioteki dll, bazy danych, 16 bitowy Delphi 2 32 bitowy, zoptymalizowany kompilator, poszerzona biblioteka komponentów, udoskonalone mechanizmy dostępu do baz danych, dziedziczenie formularzy, technologia OLE Delphi 3 implementacja nowych technologii pod Windows: obiekty COM, kontrolki ActiveX, aplikacje serwerów WWW Delphi 4 wielowarstwowe aplikacje typu klient/serwer (MIDAS, CORBA czy DCOM) Delphi 6 udostępnie środowiska dla linuxa: Kylix Delphi 7 integracja z architekturą NET Delphi 2005, 2006, 2007 for Win32 Turbo Delphi Explorer Rok 2006, Borland wystawia na sprzedaż dział rozwoju narzędzi programistycznych! LATO 2007 Inżynieria oprogramowania 23

Turbo Delphi Explorer Projekt wizualny Freeware! (oczywiście z ograniczoną funkcjonalnością - komponenty) LATO 2007 Inżynieria oprogramowania 24

Interakcja Dziękuję za uwagę. Chcemy być coraz lepsi! Jeżeli coś cię zainteresowało napisz e-maila: robert@iem.pw.edu.pl Jeżeli coś cię bardzo znudziło napisz e-maila: robert@iem.pw.edu.pl Jeżeli zauważyłeś błąd napisz e-maila: robert@iem.pw.edu.pl LATO 2007 Inżynieria oprogramowania 25