Laboratorium 5 - Projektowanie programów zorientowanych obiektowo. Indywidualny projekt programistyczny



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

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

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

Podstawy programowania III WYKŁAD 4

Programowanie zespołowe

PRZEWODNIK PO PRZEDMIOCIE

Etapy życia oprogramowania

ZARZĄDZANIU. Wykład VI. dr Jan Kazimirski

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

Podstawy modelowania programów Kod przedmiotu

Narzędzia CASE dla.net. Łukasz Popiel

Inżynieria oprogramowania (Software Engineering)

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

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

Wykład 1 Inżynieria Oprogramowania

Technologia programowania

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

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

Analiza i projektowanie obiektowe 2017/2018. Wykład 3: Model wiedzy dziedzinowej

Laboratorium 1 - Programowanie proceduralne i obiektowe

Egzamin / zaliczenie na ocenę*

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

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

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 2

Grupy pytań na egzamin magisterski na kierunku Informatyka (dla studentów niestacjonarnych studiów II stopnia)

KATEDRA INFORMATYKI STOSOWANEJ PŁ INŻYNIERIA OPROGRAMOWANIA

WPROWADZENIE DO UML-a

PRZEWODNIK PO PRZEDMIOCIE

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

Modelowanie i analiza systemów informatycznych

Wykorzystanie standardów serii ISO oraz OGC dla potrzeb budowy infrastruktury danych przestrzennych

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

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

Analiza i projektowanie obiektowe 2016/2017. Wykład 10: Tworzenie projektowego diagramu klas

Zasady organizacji projektów informatycznych

INŻYNIERIA OPROGRAMOWANIA

Architektura Systemu. Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu.

Inżynieria oprogramowania I

PROJEKTOWANIE. kodowanie implementacja. PROJEKT most pomiędzy specyfikowaniem a kodowaniem

Projektowanie oprogramowania cd. Projektowanie oprogramowania cd. 1/34

Waterfall model. (iteracyjny model kaskadowy) Marcin Wilk

PRZEWODNIK PO PRZEDMIOCIE

Programowanie obiektowe - 1.

Projektowanie systemów informatycznych. wykład 6

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa

Inżynieria oprogramowania II

Wytwarzanie oprogramowania

Dokument Detaliczny Projektu

Podstawy inżynierii oprogramowania

PRZEWODNIK PO PRZEDMIOCIE

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 1

problem w określonym kontekście siły istotę jego rozwiązania

Cykle życia systemu informatycznego

Język UML w modelowaniu systemów informatycznych

Tom 6 Opis oprogramowania Część 8 Narzędzie do kontroli danych elementarnych, danych wynikowych oraz kontroli obmiaru do celów fakturowania

Opis metodyki i procesu produkcji oprogramowania

Projektowanie Modeli Usług dla rozwiązań typu SOA

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

Inżynieria oprogramowania

Modelowanie obiektowe - Ćw. 3.

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

Zagadnienia (1/3) Data-flow diagramy przepływów danych ERD diagramy związków encji Diagramy obiektowe w UML (ang. Unified Modeling Language)

Tutorial prowadzi przez kolejne etapy tworzenia projektu począwszy od zdefiniowania przypadków użycia, a skończywszy na konfiguracji i uruchomieniu.

UML w Visual Studio. Michał Ciećwierz

Projekt systemu informatycznego

Kumulowanie się defektów jest możliwe - analiza i potwierdzenie tezy

Programowanie Zespołowe

Zapisywanie algorytmów w języku programowania

Automatyzacja testowania oprogramowania. Automatyzacja testowania oprogramowania 1/36

AKADEMIA GÓRNICZO-HUTNICZA

Programowanie obiektowe

Zakres wykładu. Podstawy InŜynierii Oprogramowania

Mechatronika i inteligentne systemy produkcyjne. Modelowanie systemów mechatronicznych Platformy przetwarzania danych

REFERAT PRACY DYPLOMOWEJ

Programowanie obiektowe

Podstawy Programowania Obiektowego

Jarosław Kuchta Dokumentacja i Jakość Oprogramowania. Wymagania jakości w Agile Programming

Charakterystyka oprogramowania obiektowego

Dokument Detaliczny Projektu

Laboratorium modelowania oprogramowania w języku UML. Ćwiczenie 1 Wprowadzenie do narzędzia CASE. Materiały dla nauczyciela

REFERAT PRACY DYPLOMOWEJ

Podstawy Programowania 2

Projektowanie baz danych za pomocą narzędzi CASE

Diagramu Związków Encji - CELE. Diagram Związków Encji - CHARAKTERYSTYKA. Diagram Związków Encji - Podstawowe bloki składowe i reguły konstrukcji

Cel wykładu. Literatura. Wyższa Szkoła Menedżerska w Legnicy. Modelowanie wymagań Wykład 2

Fazy analizy (modelowania) oraz projektowania FAZA ANALIZY:

Programowanie obiektowe

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

Tester oprogramowania 2014/15 Tematy prac dyplomowych

WOJSKOWA AKADEMIA TECHNICZNA

Programowanie obiektowe

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

Wykład Ćwiczenia Laboratorium Projekt Seminarium

Zwinna współpraca programistów i testerów z wykorzystaniem BDD i. by Example (JBehave/Spock/SpecFlow)

Opracowanie systemu sterowania wybranej linii technologicznej z uwzględnieniem zagadnień inżynierii oprogramowania

ZARZĄDZANIE WYMAGANIAMI ARCHITEKTONICZNYMI

Procesowa specyfikacja systemów IT

Feature Driven Development

Grupy pytań na egzamin magisterski na kierunku Informatyka (dla studentów dziennych studiów II stopnia)

Transkrypt:

Laboratorium 5 - Projektowanie programów zorientowanych obiektowo. Indywidualny projekt programistyczny mgr inż. Kajetan Kurus 15 kwietnia 2014 1 Dostępne techniki programowania Tworząc program należy zastanowić się jakie podejście zastosować, aby najlepiej rozwiązać postawiony problem. W zależności, czy mamy do czynienie z programowaniem sterownika, programowaniem mikrokontrolera, wykonujemy prosty program wykonujący z góry określone zadane czy tworzymy duży program dla przedsiębiorstwa należy wybrać jedno z następujących technik programistycznych: 1. Programowanie liniowe 2. Programowanie proceduralne 3. Programowanie z obiektami - object based design 4. Programowanie zorientowane obiektowo 2 Programowanie zorientowane obiektowo - zalety 2.1 Wtórne wykorzystanie kodu Tworząc pewne rozwiązanie za pomocą klasy, możemy przekazywać je za pomocą dziedziczenia. Dzięki takiemu podejściu nie ma potrzeby przepisywania zaimplementowanych już metod dla kolejnych klas, które rozwiązują pewną pule problemów w ten sam sposób. Umiejscowienie definicji tylko w jednym miejscu umożliwi szybkie poprawianie błędów lub usprawnienie metod bez potrzeby przeszukiwania całego programu w poszukiwaniu powielonych fragmentów kodu. 2.2 Rozszerzanie kodu Dzięki funkcja wirtualnym program może reagować na wprowadzenie nowych obiektów, bez potrzeby implementowania ich w każdym miejscu programu. 1

2.3 Najlepsze odzwierciedlenie rzeczywistego świata Programowanie obiektowe najlepiej odzwierciedla dzianinie świata, które składa się z obiektów mających w sobie inne obiekty lub wchodzących w interakcje z innymi obiektami. Obiekty maja pewne dane, własności (pola) i możliwości (metody). 2.4 Łatwe tworzenie aplikacji okienkowych Każdy element okienka jest traktowany jako osobny obiekt, który działa niezależnie od innych. Dzięki można tworzyć dowolne okienka za pomocą dostępnych obiektów bez potrzeby implementacji zachowania całego okna (każdy element działa autonomicznie). 2.5 Abstrakcja Dzięki możliwości tworzenia metod bez podawania ich dokładnej postaci, można zlecać implementację tych metod w późniejszym etapie. 3 Projektowanie programu zorientowanego obiektowo Najważniejszym etapem, który ma bezpośredni wpływ na poprawne i zgodne z założeniem działanie całego programu jest etap projektowania. Przed rozpoczęciem etapu implementacji programu, należy najpierw stworzyć jego dokładny plan zawierający strukturę klas, ich zachowania i powiązania między nimi. Na jego podstawie krok po kroku będzie można stworzyć spójny, działający program. Łatwo można zauważyć, że w programowaniu obiektowym etap implementacji, jest wyłącznie etapem zamiany schematu na kod programu. Poprawność działania zależy od etapu rozpoznania i projektowanie. Pierwszym etapem jest poznanie założeń dotyczących programu (najczęściej rozmowa z klientem), w kolejnych etapach należy zapisać problem w postaci wyspecyfikowanie klas, wypisanie ich zachowań, uwzględnić dziedziczenie oraz wzajemne zależności. Ostatnim etapem jest złożenie modelu w sekwencje, która umożliwi zrealizowanie powierzonego mu zadania. Zlekceważenie tego etapu może spowodować, że wykonanie projektu odbiega od tego co było założone przy specyfikacji początkowej. Przykładem błędów na etapie projektowania jest problem zamówienia huśtawki Rys 1. 2

Rysunek 1: http : //www.ap.krakow.pl/ raj/media/humor/powstawanie p rogramu.jpg 3.1 Opis problemu - rozpoznanie Rozpoznanie zazwyczaj polega na poznaniu wymagań stawianych przed tworzonym przez nas programem. Zazwyczaj jest to rozmowa z klientem. Ten etap wymaga największego doświadczenia ponieważ dochodzi tutaj do interakcji z osobami, które nie muszą znać się na tworzeniu oprogramowania. Należy stworzyć opis z postawie zestawu krótkich pytań i odpowiedzi. Przykładowe pytana: ˆ Jakie cele ma realizować program? ˆ Jakie są istniejące gotowe elementy - bazy danych, pliki wejściowe, wyjścia z innego oprogramowania? ˆ Czy cele mogą ulegać zmianom? ˆ Jakie wyniki klient chce otrzymać z programu? ˆ Jaki ma być poziom interakcji? Zadawanie kolejnych pytań wynika ze specyfiki danego problemu. Ważnym jest aby opis by na tyle dokładny aby dało się go zapisać w postaci ogólnej koncepcji (np. schemat blokowy). Jednak należy pamiętać aby na etapie rozpoznania nie wdawać się w szczegóły samego programu, klas, metod, powiązań itp. 3

3.2 Projektowanie Wspomaganiem całego cyklu wytwarzania oprogramowania zajmuje się Inżynieria Oprogramowania. IO zajmuje się praktycznymi aspektami programowania: od analizy, przez projektowanie i wdrożenie, aż do ewolucji gotowego oprogramowania. Do tworzenia opisu systemu często stosuje się języki opisujące system informatyczny. Najpopularniejszym z nich jest UML (Unified Modeling Language), w szczególności jego wersja graficzna. UML pozwala wiernie oddać działanie całego systemu i umożliwia zbudowanie działającego programu tylko na podstawie tego języka. Inżynieria Oprogramowania z wykorzystaniem UML jest dziedziną wymagającą osobnego kursu, aby zrealizować etap projektowy, dlatego poniżej zostanie zaprezentowany ogólny zarys koncepcji bez zgłębiania się w jakikolwiek język modelowania. 3.2.1 Zachowanie systemu Pierwszym etapem projektowania jest zapisanie całej wiedzy na temat działania systemu w formie tabeli. Należy uwzględnić elementy biorące czynny udział w działaniu programu, ich czynności i interakcje z innymi elementami oraz rezultaty ich działania. Tabela 1: Zachowanie systemu Obiekt Działanie Z czym wchodzi w interakcje Wyniki działania kot pije mleko miska jest pusta auto uruchamia zapłon silnik pracuje user włącza przycisk licznik inkrementuje się o 1 3.2.2 Identyfikacja obiektów Kolejnym etapem jest wyszczególnienie na podstawie zachowania systemu, wszystkich obiektów biorących udział w jego działaniu. W opisie klasy należy uwzględnić jego zadania, elementy, z którymi współpracuje oraz jego widoczne elementy. Dopiero na tym etapie powinno się uwzględniać szczegóły klas. 4

Tabela 2: Klasa NAZWA KLASY - KOT ZADANIA: pije liże... WSPÓŁPRACUJE: miska pies... WIDOCZNE ELEMENTY: karmienie głaskanie... 3.2.3 Klasyfikacja obiektów Etap klasyfikacji obiektów można podzielić na dwie cześci: 1. Ustalenie hierarchii - ustalenie dziedziczenia np. kot jest rodzajem ssaka 2. Ustalenie zawierania innych klas (obiekt zawiera w sobie obiekty innej klasy) - kot posiada obiekt łapka i uszy Wszystkie zależności należy opisać słownie lub w postaci tabeli. 3.2.4 Określenie zależności między obiektami W tym etapie należy określić wzajemne interakcje pomiędzy klasami: należy wypisać wszystkie zależności które łączą daną klasę z kolejną. Tabela 3: Zależności między klasami Obiekt Wymuszenie czynności Na jakim obiekcie człowiek pij mleko kot śpij kot włącz światło włącznik kot baw się pies...... Na podstawie tabeli można wyznaczyć graf współpracy obiektów. Pozwala on na wizualizacje skomplikowania zależności między obiektami. Im mniejsza ilość tym lepiej. 5

3.2.5 Określenie sekwencji działań Ostatnim etapem jest zaprojektowanie sekwencji działania programu tak, aby realizował powierzone mu cele. Wykonuje się to na podstawie zachowania systemu. Można program traktować jako kilka podsystemów, dla których tworzymy sekwencje a następnie łączymy je w jedną - główną sekwencję. Zasada wygląda następująco: wybiera się pierwszy obiekt i definiuje się jego następne kroki aż do zakończenia sekwencji. Przykład: Kot dostał polecenie zabawy - w pierwszej kolejności wyszukał psa w domu, następnie przeszedł do etapu zaczepiania, po wykonaniu pięciu zaczepek kot wrócił do miejsca wydania polecenia. Taki opis tworzymy dla wszystkich sekwencji występujących w programie. 3.3 Implementacja Na podstawie utworzonych w procesie projektowania klas oraz sekwencji zachowań i interakcji można przystąpić do tworzenia rzeczywistego programu. W pierwszej kolejności należy stworzyć klasy i jej pola a następnie na podstawie sekwencji i zależności zrealizować wszystkie działania jako metody klasy. 3.4 Testy / integracja Kolejnym ważnym elementem jest sprawdzenie czy stworzony program spełnia wszystkie wymagania z założeń w fazy projektowej. ˆ elementów systemu (klas, komponentów, podsystemów, systemowe) ˆ whiebox i blackbox ˆ testy warstw (testy funkcjonalne - testy API, testy UI, testy GUI, testy warstwy danych,...) ˆ testy wymagań (weryfikujące zgodność implementacji z wymaganiami), testy funkcjonalne testy niefunkcjonalne -klasyfikacja wymagań testy implementacji (np. testy jednostkowe) 3.5 Ewolucja 4 Cykl życia oprogramowania ˆ model kaskadowy ˆ model prototypowy ˆ model przyrostowy (iteracyjny) ˆ model równoległy 6

ˆ programowanie zwinne (ang. agile programming) ˆ programowanie ekstremalne (ang. extreme programming) ˆ Rational Unified Process 5 Zadanie - Projekt 5.1 Etap 1 Termin: 22 04 2014 Przysłanie tematu projektu. Wraz z krótkim opisem działania. 5.2 Etap 2 Termin: 29 04 2014 Projekt zawierający wszystkie 5 etapów: zachowanie systemu, identyfikację obiektów, klasyfikację obiektów, określenie zależności między obiektami,określenie sekwencji działań. 5.3 Etap 3 Termin 13-05 - 2014 Oddanie gotowego, działającego programu 5.4 Etap 4 Termin 13-05 - 2014 Sprawozdanie - Zawiera wszystkie 3 etapy oraz instrukcję obsługi. Tylko w wersji elektronicznej 5.5 Oceny Oceną wyjściową jest ocena 5.0. Błędy w realizacji lub niedotrzymanie wytycznych będzie skutkować obniżeniem oceny. Aby otrzymać ocenę 5.5 należy poprawnie wykonać zadanie oraz zrobić jego wersję okienkową oraz stworzyć program realizujący testy poprawnosci wykonania projektu. 7