Języki i metodyka oprogramowania
Transkrypt
Języki i metodyka oprogramowania
Języki i metodyka oprogramowania Automatyka i Robotyka sem.2 (część I) Rok akademicki 2010/2011 Dr inż. Wojciech Koziński Literatura A. Januszkiewicz. Inżynieria oprogramowania. Helion 1997. W. Dąbrowski, A. Stasiak, M. Wolski. Modelowanie systemów informatycznych w języku UML2.1. PWN S.A. 2007. G. Booch, J.Rumbaugh, I.Jacobson. UML przewodnik użytkownika. WNT 2001, 2002. (Seria: inżynieria oprogramowania). F. P. Brooks: The Mythical Man-Month. Addison Wesley Publishing Company. 1995 (Anniversary Addition) (jest polskie tłumaczenie). J. Hunt. The Unified Process for Practitioners. Object Oriented Design, UML and Java. Springer, 2000. JIMO 2010/2011 2 Kariera zawodowa Kariera zawodowa w informatyce: Programista (tester), Projektant (projektant testów), Analityk. Kierownik (osoba zarządzająca): Zadaniem, Projektem (coraz większym). JIMO 2010/2011 3 1 Inżynieria oprogramowania a dobre oprogramowanie Inżynieria oprogramowania jako nauka praktyczna mówiąca o sposobie (metodyce) tworzenia dobrego oprogramowania. Cechy dobrego oprogramowania: Zgodne z wymaganiami użytkownika, Niezawodne, Efektywne, Łatwe w konserwacji, Ergonomiczne. JIMO 2010/2011 4 Dobre oprogramowanie Dlaczego jest trudno zrobić dobre oprogramowanie? Duża złożoność systemów informatycznych. Niepowtarzalność poszczególnych przedsięwzięć. Nieprzejrzystość procesu budowy oprogramowania (trudność w ocenie stopnia zaawansowania prac). Co to znaczy, że prace są zaawansowane w 90%? Jak mierzyć postęp w realizacji przedsięwzięcia? Pozorna łatwość wytwarzania produktu i dokonywania poprawek (1 dzień – 100 linii, 10 dni – 1000 linii, 100 dni – 10.000 linii, 10 osób razy 100 dni – 100.000 linii). JIMO 2010/2011 5 Inżynieria oprogramowania Inżynieria oprogramowania opisuje między innymi: Sposoby prowadzenia przedsięwzięć informatycznych, Techniki planowania, szacowania kosztów, harmonogramowania i monitorowania przedsięwzięć informatycznych, Metody analizy i projektowania systemów, Techniki zwiększania niezawodności oprogramowania, Sposoby testowania systemów i szacowania niezawodności, Sposoby przygotowania dokumentacji technicznej i użytkowej, Procedury kontroli jakości, Metody redukcji kosztów konserwacji (usuwania błędów, modyfikacji i rozszerzeń), Techniki pracy zespołowej i czynniki psychologiczne wpływające na efektywność pracy. JIMO 2010/2011 6 2 Modele cyklu życia oprogramowania Model kaskadowy, Realizacja sterowana dokumentami (ang. document driven). Prototypowanie, Programowanie odkrywcze, Realizacja przyrostowa, Montaż z gotowych elementów, Model spiralny. JIMO 2010/2011 7 Cykl życia oprogramowania (fazy) Model wodospadowy Strategia, Określenie wymagań. Analiza (modelowanie). Projektowanie. Implementacja. Dokumentacja (produkcyjna, użytkownika). Testowanie. Instalacja, szkolenie. Konserwacja oprogramowania. JIMO 2010/2011 8 Narzędzia wspomagające Narzędzia wspomagające tworzenie oprogramowania – (narzędzia CASE): Do zarządzania całym cyklem życia (OracleCASE, RUP IBM). Do analizy i projektowania z wykorzystaniem UML, (Posejdon, wtyczki do NetBeans, Eclipse). Do kodowania, uruchamiania, testowania (Eclipse, NetBeans, JBuilder). Rozwój graficznych metod tworzenia oprogramowania, aż do pełnej generacji kodu. JIMO 2010/2011 9 3 Podstawowe wiadomości o UML (Unified Modelling Language) Diagramy (rysunki) tworzące model systemu. Do diagramów konieczne są definicje, opisy, słowniki. Zespół diagramów daje całkowity opis systemu (miejmy nadzieję). UML jest językiem przeznaczonym do: Wizualizacji, Specyfikacji, Opisu, Dokumentacji oprogramowania. JIMO 2010/2011 10 UML – podstawowe diagramy Diagram przypadków użycia (ang. use case diagram), Diagram klas (ang. class diagram), Diagram obiektów (ang. object diagram), Diagram działania (ang. activity diagram), Diagram sekwencji (ang. sequence diagram), Diagram współpracy (ang. collaboration diagram), Diagram przejść stanów (ang. state charts), Diagram składowych (ang. component diagram) Diagram rozmieszczenia (ang. deployment diagram). JIMO 2010/2011 11 Tradycyjny sposób tworzenia oprogramowania Projekt przebiega według modelu wodospadowego, w kolejności wykonując wymagania, analizę, projekt, implementację, a następnie utrzymując system. Projekt ma tylko jeden cykl. Projekt ma tylko jedną iterację w jednym kroku (przykładowo – w analizie). JIMO 2010/2011 12 4 Wada tradycyjnego sposobu wytwarzania oprogramowania Podstawowym problemem (wadą) modelu kaskadowego (wodospadowego) jest to, że wymagania są analizowane raz, powinny być więc dobrze zdefiniowane na początku. W takim procesie nie ma miejsca na zmiany w wymaganiach, czyli odbiorca może otrzymać produkt niedostosowany do zmienionych (w czasie budowy systemu) warunków. JIMO 2010/2011 13 Podstawowe wiadomości o Rational Unified Process (RUP). Hierarchiczna struktura RUP Cykle (ang. Cycles) Fazy (ang. Phases) Iteracje (ang. Iterations) Prace (ang. Workflows) Czynności (ang. Activities) Cztery fazy RUP Inception -> Elaboration -> Construction -> Transition JIMO 2010/2011 14 Rational Unified Process (RUP) Inception - Definiuje zakres projektu i cel tego przedsięwzięcia w terminach biznesowych. Określa możliwość wykonania projektu (ang. feasibility). Elaboration - Opisuje i analizuje wymagania funkcjonalne, specyfikuje wymagania niefunkcjonalne, ustala podstawową architekturę systemu. Construction - Wytworzenie produktu (systemu). Transition - Przeniesienie produktu do środowiska produkcyjnego. JIMO 2010/2011 15 5 Rational Unified Process (RUP) JIMO 2010/2011 16 Rational Unified Process (RUP) JIMO 2010/2011 17 Rational Unified Process (RUP) Inception (olśnienie, pomysł). Faza ta koncentruje się na wygenerowaniu opisu z punktu widzenia potrzeb użytkownika (business case), oceny czy jest to wykonalne i opłacalne. Zdefiniowane są tu przypadki użycia, zakres działania systemu, a także nowe, ryzykowne bądź trudne elementy systemy, mogące mieć wpływ na końcowy sukces. W fazie tej powstaje koncepcja architektury (na najwyższym poziomie), dla oceny stopnia komplikacji. Należy też ocenić wykonalność projektu oraz oszacować nakłady czasu, siły roboczej, finansowe. Podstawową pracą są tu prace nad wymaganiami, jednakże by rzetelnie ocenić architekturę konieczne są pewne prace analityczne, projektowe, a nawet implementacyjne. Podstawowym pytaniem jest jednak wykonalność przedsięwzięcia. JIMO 2010/2011 18 6 Rational Unified Process (RUP) Elaboration (podstawowa architektura – zarys systemu) Podstawowym zadaniem tej fazy jest zrozumienie (i formalne zapisanie) jak wymagania przekładają się na podstawową architekturę systemu i jak mogą przebiegać dalsze prace. Wszystkie przypadki użycia powinny być dokładnie opisane. Zidentyfikowane powinny być elementy obarczone ryzykiem (nieznane). Powinny one być opracowane jako pierwsze w następnej fazie (construction). Rozważeniu powinny podlegać też zagadnienia związane z niezawodnością oraz szybkością działania. Odpowiednio wysokie wymagania mogą mieć istotny wpływ na architekturę systemu. W fazie tej powinna być zaprojektowana, zaimplementowana i przetestowana przewidywana architektura systemu. Jak w każdej fazie powinny być określone elementy o najwyższym ryzyku (najwyższej trudności). JIMO 2010/2011 19 Rational Unified Process (RUP) Construction (w pełni funkcjonalna wersja beta) Produktem końcowym tej fazy jest w pełni funkcjonalna wersja beta systemu. Może ona zawierać pewne błędy, wymagać pewnych niedużych poprawek. Poprawki te nie powinny zmieniać podstawowej funkcjonalności. Powodzenie tej fazy zależy głównie od rozwiązania problemów wykrytych we wcześniejszych fazach. Faza ta zawiera prace głownie projektowe i implementacyjne, chociaż prace nad wymaganiami i analityką są dopuszczalne. JIMO 2010/2011 20 Rational Unified Process (RUP) Transition (produkt końcowy - wersja produkcyjna) Faza ta zaczyna się instalacji beta wersji systemu, uzyskaniu opinii użytkownika i wprowadzeniu żądanych zmian i usprawnień. Mogą być tu prowadzone prace projektowe i implementacyjne. Faza ta kończy się oddaniem wersji produkcyjnej systemu. JIMO 2010/2011 21 7 Rational Unified Process (RUP) Faza (ang. Phase) Inception Czas trwania Zużycie zasobów 10-20% 5-10% Elaboration 30-40% 20-25% Construction 40-50% 60-65% Transition 5-10% 5-10% JIMO 2010/2011 22 Rational Unified Process (RUP) Liczby iteracji dla projektu o średnim stopniu złożoności: Inception. Jedna iteracja, składająca się głównie z prac nad wymaganiami. Elaboration. Dwie iteracje, pierwsza identyfikująca przypadki użycia i zarys architektury, druga uszczegółowiająca przyjętą architekturę. Construction. Trzy, cztery lub pięć iteracji w zależności od wykrytych zagrożeń i złożoności systemu. Każda z iteracji zawiera prace projektowe, implementacyjne i testowanie. Mogą też wchodzić prace analityczne (wprowadzanie zmian). Transition. Jedna lub dwie iteracje w zależności od sukcesu wersji beta. JIMO 2010/2011 23 Metodyka SCRUM SCRUM to iteracyjny, przyrostowy sposób budowy/rozwoju produktu. Po każdej iteracji powinien powstać produkt o nowej funkcjonalności, gotowy do przekazania zamawiającemu. Cechy charakterystyczne metodyki SCRUM: SCRUM jest zwinną metodyką zarządzania produkcją oprogramowania, SCRUM obejmuje (zawiera) istniejące (stosowane) metodyki, SCRUM jest metodyką dla zespołu wytwarzającego produkt, którego wymagania zmieniają się gwałtownie, SCRUM jest procesem, który uwzględnia i rozwiązuje konfliktowe sytuacje, SCRUM jest sposobem na poprawę komunikacji w zespole i osiągnięcie dobrej współpracy. SCRUM jest sposobem na eliminację przeciwności w procesie tworzenia produktu. SCRUM jest sposobem zwiększenia produktywności zespołu, SCRUM jest skalowany, od pojedynczych produktów do całych organizacji, SCRUM powoduje, że każdy członek zespołu czuje się przydatny. JIMO 2010/2011 24 8 Metodyka SCRUM JIMO 2010/2011 25 Zarządzanie metodyką SCRUM JIMO 2010/2011 26 Metodyka SCRUM i eXtreme programmning JIMO 2010/2011 27 9 Obiektowy sposób myślenia Języki programowania, rys historyczny kod maszynowy, języki asemblera, języki wysokiego poziomu, języki generacyjne. Programowanie strukturalne i obiektowe. Obiektowy sposób myślenia ang. object oriented analysis, design, programming (OOA - OOD – OOP) JIMO 2010/2011 28 Wymagania – przypadki użycia (ang. use cases) Wyniki zastosowania przypadków użycia to: Opis wszystkich interakcji z systemem, Aktorzy, którzy współdziałają z systemem, Inne artefakty (takie jak GUI i wymagania niefunkcjonalne). Podstawowe czynności analizy przypadków użycia: Znaleźć i opisać aktorów występujących w systemie, Znaleźć wszystkie przypadki użycia, Właściwie opisać przypadki użycia, Opisać cały model przypadków użycia, Przygotować słownik terminów. JIMO 2010/2011 29 Przypadki użycia (przykład) JIMO 2010/2011 30 10 Przypadki użycia (przykład) JIMO 2010/2011 31 Przypadki użycia - aktor Aktor to cokolwiek, co współdziała (ma interakcję) z naszym systemem. Aktor nie reprezentuje konkretnego użytkownika, reprezentuje jedynie rolę użytkownika. Aktor może mieć dodatkowe cechy jak identyfikatory, dozwolone operacje, znaczniki (ang. tagged values), ograniczenia. JIMO 2010/2011 32 Przypadki użycia - aktor Aktor - jak go znaleźć – trzeba poszukać odpowiedzi na pytania: Kto jest zainteresowany systemem? Kto potencjalnie będzie używał systemu? Kto będzie czerpał korzyści z działania systemu? Kto dostarcza informację do systemu? Kto otrzymuje informację z systemu? Kto pielęgnuje informację w systemie? Gdzie jest miejsce systemu w organizacji? JIMO 2010/2011 33 11 Przypadki użycia Reguły, które muszą być spełnione przy poszukiwaniu aktorów: Zawsze powinien być przynajmniej jeden użytkownik dla każdego aktora. Role poszczególnych aktorów powinny być rozłączne. Przypadki użycia specyfikują sekwencję akcji z wariantami, które system może wykonać i które w rezultacie dają wymierny (obserwowalny) rezultat dla aktora. JIMO 2010/2011 34 Przypadki użycia Przypadki użycia zawierają (opisują): Sekwencję wykonywanych akcji, Opcjonalny zbiór jednej lub wielu alternatywnych sekwencji akcji, Krótką definicję przyczyny przypadku użycia, Sposób komunikacji z jednym lub wieloma aktorami, Ograniczenia w użyciu. JIMO 2010/2011 35 Przypadki użycia Przypadki użycia i sposób ich zidentyfikowania. Zbiór wszystkich przypadków użycia definiuje funkcjonalność systemu i stanowi postawę do ustalenia testów końcowych (!). Identyfikacja przypadków użycia bazuje na identyfikacji aktorów. Każdy aktor musi posiadać przynajmniej jeden przypadek użycia. JIMO 2010/2011 36 12 Przypadki użycia W identyfikacji przypadków użycia pomocne mogą być odpowiedzi na pytania: Jakie są główne zadania każdego aktora? Czy aktor zapisuje, odczytuje lub zmienia informację w systemie? Czy rozpatrywany przypadek użycia powoduje utworzenie, zapamiętanie, zmianę, usunięcie, odczytanie informacji? Dla każdego aktora: Czy aktor ma informować system o zmianach na zewnątrz? Czy aktor chce być informowany o zmianach na zewnątrz? Czy przypadki użycia zawierają utrzymanie systemu? Czy wszystkie wymagania funkcjonalne dla systemu są zawarte w aktualnych przypadkach użycia? JIMO 2010/2011 37 Przypadki użycia Nazwy przypadków użycia muszą mieć znaczące nazwy. Do poprawnego zidentyfikowania przypadków użycia pomocne są techniki: Wywiadów z aktualnymi lub przyszłymi użytkownikami systemu, Tablice poglądowe (rysunki w dużej skali), Seminaria połączone z burzą mózgów nad możliwymi scenariuszami zdarzeń w systemie. JIMO 2010/2011 38 Przypadki użycia Zdarzenia w przypadkach użycia: Warunki wstępne do użycia przypadku (logowanie). Kiedy i jak przypadek zaczyna się i kończy się? Jakie interakcje przypadku użycia występują z aktorami? Jakie dane są potrzebne do przypadku użycia? Jaki jest normalny ciąg (sekwencja zdarzeń)? Jakie są sekwencje alternatywne bądź związane z obsługą wyjątków? Jakie są warunki po zakończeniu przypadku użycia? JIMO 2010/2011 39 13 Przypadki użycia Doskonalenie modeli przypadków użycia. Model nie powinien być zbyt mały bądź zbyt obszerny. Celem jest zrozumiałość modelu. Model powinien być kompletny i zwarty. Nie powinien odwoływać się do dodatkowego materiału, by móc określić jego funkcjonalność. Przypadki użycia powinny dostarczać „wartość dodatkową” dla użytkowników systemu (aktorów). Każdy przypadek użycia musi być skojarzony z przynajmniej jednym aktorem. Przypadek użycia bez aktora nigdy nie będzie użyty. JIMO 2010/2011 40 Przypadki użycia Słowniki (konieczne definicje). Opisy (konieczne objaśnienia), Projekty interfejsów : Interfejsy graficzne z użytkownikiem (GUI), dla języka Java – pakiet Swing, Interfejsy z innymi systemami (budowane na zamówienie – specyfikacja). Interfejsy oparte na standardach wymiany informacji (np. XML, webMethods). JIMO 2010/2011 41 14