Politechnika Poznańska, Instytut Informatyki, Studia niestacjonarne. Inżynieria oprogramowania



Podobne dokumenty
Politechnika Poznańska, Instytut Informatyki, Studia niestacjonarne. Inżynieria oprogramowania

2005 Andrzej Jaszkiewicz. Wyłącznie dla użytku studentów Politechniki Poznańskiej, kierunek Informatyka

Zasady organizacji projektów informatycznych

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

Zaawansowane programowanie w C++ (PCP)

Wprowadzenie do programowania aplikacji mobilnych

Programowanie obiektowe

Problemy projektowania obiektowego. Czy podobne problemy można rozwiązywac w podobny sposób?

INŻYNIERIA OPROGRAMOWANIA

Zaawansowane programowanie obiektowe - wykład 5

Metodyka projektowania komputerowych systemów sterowania

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

System kontroli wersji - wprowadzenie. Rzeszów,2 XII 2010

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

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

Technologia Programowania 2016/2017 Wykład 4

Egzamin / zaliczenie na ocenę*

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

Etapy życia oprogramowania

Analiza i projektowanie obiektowe 2016/2017. Wykład 11: Zaawansowane wzorce projektowe (1)

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

Podstawy programowania III WYKŁAD 4

Wykład 1 Inżynieria Oprogramowania

Rok akademicki: 2012/2013 Kod: IET SW-s Punkty ECTS: 3. Kierunek: Elektronika i Telekomunikacja Specjalność: Systemy wbudowane

Program szkolenia: Wzorce projektowe i ich implementacja w C# oraz testowanie automatyczne

Szczegółowa specyfikacja funkcjonalności zamawianego oprogramowania.

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

Zarządzaj projektami efektywnie i na wysokim poziomie. Enovatio Projects SYSTEM ZARZĄDZANIA PROJEKTAMI

Szczegółowy opis przedmiotu umowy. 1. Środowisko SharePoint UWMD (wewnętrzne) składa się z następujących grup serwerów:

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

Wzorce projektowe ArrayList. Aplikacja i zdarzenia. Paweł Chodkiewicz

Projektowanie. Kryteria jakości projektu. Spójność obiektowa. Brak spójności obiektowej. Znaczenie notacji graficznych w projektowaniu

PRZEWODNIK PO PRZEDMIOCIE


Wytwarzanie, integracja i testowanie systemów informacyjnych

INŻYNIERIA OPROGRAMOWANIA. Zakład Języków Programowania Instytut Informatyki Uniwersytet Wrocławski

Technologia Programowania 2016/2017 Wykład 5

Projekt dotyczy stworzenia zintegrowanego, modularnego systemu informatycznego wspomagającego zarządzanie pracownikami i projektami w firmie

Szczególne problemy projektowania aplikacji internetowych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

INŻYNIERIA OPROGRAMOWANIA Wykład 6 Organizacja pracy w dziale wytwarzania oprogramowania - przykład studialny

Projektowanie oprogramowania cd. Projektowanie oprogramowania cd. 1/34

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

SYSTEM VILM ZARZĄDZANIE CYKLEM ŻYCIA ŚRODOWISK WIRTUALNYCH. tel: +48 (032)

Narzędzia CASE dla.net. Łukasz Popiel

Metodyki zwinne wytwarzania oprogramowania

Tom 6 Opis oprogramowania

Analiza i projektowanie aplikacji Java

Faza Określania Wymagań

Program szkolenia: Continuous Integration i Git

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

Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2017

Builder (budowniczy) Cel: Przykład:

Projektowanie obiektowe Wzorce projektowe. Gang of Four Strukturalne wzorce projektowe (Wzorce interfejsów)

Wzorce projektowe cz. I. Wzorce projektowe cz. I 1/33

Wzorce projektowe i refaktoryzacja

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

Zarządzanie testowaniem wspierane narzędziem HP Quality Center

Modelowanie i analiza systemów informatycznych

Cykle życia systemu informatycznego

Metodyki zwinne wytwarzania oprogramowania

Testowanie oprogramowania Wzorce projektowe

Jak daleko jesteśmy od standardu? ankieta dla twórców produktów informatycznych o podwyższonych wymaganiach bezpieczeństwa

Ćwiczenia 9: Zarządzanie konfiguracją Zadania:

Podstawy modelowania programów Kod przedmiotu

Dr Katarzyna Grzesiak-Koped

KOŁO NAUKOWE INFORMATYKÓW SYSTEMY KONTROLI WERSJI CZ.1 16 XII 2009 OPRACOWAŁ: PRZEMYSŁAW PARDEL

: ::Rysunek : ::Figura. Rysuj() *: Rysuj() Uwaga! Modularność (spójność i niezależność składowych) to nie to samo, lecz więcej niż hermetyzacja

Studia podyplomowe PROGRAM NAUCZANIA PLAN STUDIÓW

Systemy Kontroli Wersji

Wprowadzenie do projektu QualitySpy

ZARZĄDZANIE DOKUMENTACJĄ. Tomasz Jarmuszczak PCC Polska

Wzorce projektowe. dr inż. Marcin Pietroo

Projektowanie oprogramowania. Wykład Weryfikacja i Zatwierdzanie Inżynieria Oprogramowania Kazimierz Michalik

Wykład 7. Projektowanie kodu oprogramowania

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

mgr inŝ. Jacek Kołodziej, mgr inŝ. Grzegorz Młynarczyk

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Uniwersytet Mikołaja Kopernika w Toruniu. Profilowanie ruchu sieciowego w systemie GNU/Linux

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

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

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

Programowanie I

12) Wadą modelu kaskadowego jest: Zagadnienia obowiązujące na egzaminie z inżynierii oprogramowania: 13) Wadą modelu opartego na prototypowaniu jest:

Web frameworks do budowy aplikacji zgodnych z J2EE

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym

METODY REPREZENTACJI INFORMACJI

Część I Rozpoczęcie pracy z usługami Reporting Services

Projektowanie obiektowe Wzorce projektowe. Wprowadzenie do wzorców projektowych

Narzędzia podnoszące jakość procesu wytwarzania i wdrażania

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

Omówienie wzorców wykorzystywanych w Prism 5.0. Dominika Różycka

PLAN ZARZĄDZANIA KONFIGURACJĄ OPROGRAMOWANIA PROJEKT <NAZWA PROJEKTU> WERSJA <NUMER WERSJI DOKUMENTU>

Zarządzanie Zapasami System informatyczny do monitorowania i planowania zapasów. Dawid Doliński

Projektowanie oprogramowania: wzorce architektoniczne i projektowe

Inżynieria oprogramowania

Wzorce projektowe. dr inż. Marcin Pietroo

Wykład I. Wprowadzenie do baz danych

1. Zakres modernizacji Active Directory

Transkrypt:

Politechnika Poznańska, Instytut Informatyki, Studia niestacjonarne Inżynieria oprogramowania 27 kwietnia 2014

Wzorce projektowe Prawie każdy problem, także projektowy, nad którym się zastanawiasz, ktoś już rozwiązał Wzorce (patterns) zawierają dobre praktyki Antywzorce przykłady złych praktyk Wzorce mogą też przyśpieszać komunikację

Przechowywanie Jak przechować pojedynczą wielkość? double IloscPaliwa;! Problem: W jakiej jednostce przechowywane jest to pole? Litry, hektolitry, metry sześcienne, mililitry, tony?

Wzorzec Quantity

Wzorzec Quantity - Lub np. pole typu Wielkosc

Wzorzec Quantity - cechy Informacja o jednostce jest zawsze przechowywana wraz z ilością

Współpracujące klasy np.:

Wzorzec Client-Server

Przykład wzorca

Wzorzec Client-Server - Zmiany klienta nie wymuszają zmian serwera Np. zmiany w klasie interfejsowej nie wymuszają zmian w klasie należącej do dziedziny problemu Serwer pełni rolę pasywną Częściowo można to obejść korzystając np. ze wzorca Observer

Wzorzec Client-Server dla pakietów klas

Uniezależnienie interfejsu użytkownika od części obliczeniowej programu

Wzorzec Facade Facade

Wzorzec Facade - cechy Zmiany w pakiecie serwera nie wymuszają zmian klientów o ile fasada pozostaje taka sama Klasy wyłącznie delegujące swoje zadania (jak fasada) są często traktowane jako niepożądane

Niezależność współpracujących klas We wzorcu client-server klient jest zależny od serwera Jest to szczególnie niekorzystne, jeżeli współpraca z serwerem jest tylko niewielką częścią funkcjonalności klienta Jak tego uniknąć?

Wzorzec Mediator

Przykład wzorca Mediator

Wzorzec Mediator - cechy Pozwala na współpracę klas (pakietów, modułów) całkowicie od siebie niezależnych Role aktywną pełni mediator Częściowo można to obejść korzystając np. Z wzorca Observer

Kosztowne obiekty

Wzorzec Proxy

Przykład wzorca Proxy

Wzorzec Proxy - cechy Kosztowny obiekt jest konstruowany tylko wtedy jeżeli będą na nim wykonywane jakieś operacje Opóźnione konstruowanie kosztownego obiektu jest niewidoczne dla klienta

Niespójne klasy

Wzorzec Adapter

Przykład wzorca Adapter

Wzorzec Adapter - cechy Adaptowana klasa może być wykorzystywana tak jak inne klasy implementujące standardowy interfejs Fakt korzystania z niestandardowej klasy jest niewidoczny dla klienta

Potrzeba wielopoziomowej hierarchii agregacji Przykład: Rysunek składa się z figur Figury mogą tworzyć grupy W skład grupy może wchodzić inna grupa figur Pewne operacja można wykonywać zarówno na pojedynczych figurach, jak i grupach figur.

Wzorzec Composite

Przykład wzorca

Wzorzec Composite - cechy Hierarchia zawierania się może być dowolnie zagłębiona Liście mogą się pojawiać na dowolnym poziomie hierarchii obok grup (dowolnego poziomu) Jak tego uniknąć?

Jak oddzielić konstrukcję złożonego obiektu od jego reprezentacji Np. zapis danych programu graficznego w różnych formatach

Wzorzec Builder

Przykład wzorca builder

Wzorzec Builder Reżyser (director) zna tylko ogólną strukturę budowanego obiektu Budowniczy (builder) zna tylko elementarne kroki budowy obiektu w zadany sposób

Polecenia Jak zapewnić: Możliwość stosowania różnych sposobów wydawania poleceń Niezależność pomiędzy obiektem wysyłającym polecenie i odbiorcą

Wzorzec Command

Przykład wzorca

Wzorzec Command Nadawca jest niezależny od odbiorcy i vice versa To samo polecenie może być wydawane przez różnych nadawców Łączenie poleceń z nadawcami może być dynamiczne

Różna reakcja na zdarzenia w zależności od stanu

Typowa implementacja void CZadanie::Zwolnij_zasob (TZasobID Zasob) {!! if (State == _ZDEFINIOWANE) {!!!...!! }!! else if (State == _ZAPLANOWANE) {!!!...!! }!! else if (State == _REALIZOWANE) {!!!...!! }!! else if (State == _ZREALIZOWANE) {!!!...!! }!

Wzorzec State

Przykład wzorca State

Wzorzec State - cechy Łatwiejsze dodawanie/usuwanie stanów Konieczne konstruowanie usuwanie obiektów przy zmianie stanów Trudniejsze dodawanie/usuwanie metod (trzeba je dodawać/usuwać w różnych stanach)

Schemat algorytmu Znajdź populację początkową powtarzaj Selekcja Rekombinacja Mutacja dopóki nie są spełnione warunki stopu

Wzorzec Template

Przykład wzorca Template method

Wzorzec Template Ponownie wykorzystywany jest szkielet algorytmu przy możliwości zmiany poszczególnych kroków

Grupowanie podobnych Gdzie umieścić operacje tego samego typu dotyczące grupy klas?

Klasyczne rozwiązanie

Przykład wzorca Visitor

Wzorzec Visitor - cechy Grupuje operacje danego typu, np. kod składowej zarządzania danymi Korzystne np. przy zmianach technologii składowych technicznych

Jak rozszerzyć działanie Np. jak w programie graficznym dodać do każdej figury i grupy figur możliwość wyświetlania nazwy?

Rozwiązanie klasyczne -

Wzorzec Decorator

Przykład wzorca Decorator

Wzorzec Decorator - Zachowanie każdego komponentu może zostać rozszerzone Rozszerzenia są niewidoczne dla klienta

Tworzenie obiektów Czy rysunek musi znać wszystkie manipulatory?

Wzorzec Factory method

Przykład wzorca Factory

Wzorzec Factory method Klient nie musi znać konkretnych klas, których obiekty są konstruowane

Wzorzec Singleton zapewnianie istnienia tylko

Wzorzec Singleton w C+ class CSingleton {! protected:!! static CSingleton* UniqueInstance;!! CSingleton () {!!...!! }! public:!! static CSingleton* Instance () {!!! if (UniqueInstance == NULL)!!! UniqueInstance = new CSingleton;!!! return UniqueInstance;!! }! };!! CSingleton* CSingleton::UniqueInstance = NULL;!...! CSingleton* Singleton = CSingleton::Instance ();

Wzorzec Singleton w Javie public class Singleton {! static protected Singleton uniqueinstance = null;! protected Singleton() {!...! }! static public Singleton instance() {! if(uniqueinstance == null) {!!! uniqueinstance = new Singleton();! }! return uniqueinstance;! }! }!...! Singleton singleton = Singleton.getInstance();

Dostarczanie i pielęgnacja

Instalacja oprogramowania Szkolenia użytkowników końcowych i administratorów systemu Instalacja sprzętu i przeniesienie oprogramowania Wypełnienie baz danych Uruchomienie oprogramowania Plany awaryjne

Instalacja oprogramowania Nadzorowane korzystanie z systemu, często równoległe z tradycyjnym sposobem pracy Usuwanie błędów w oprogramowaniu i dokumentacji użytkowej Przekazanie systemu klientowi Klient powinien otrzymać także dokumentację techniczną

Konserwacja oprogramowania Modyfikacje poprawiające/korygujące ulepszające dostosowujące

Źródła żądań zmian Klienci Wytwórcy oprogramowania Zarząd

Narzędzia zarządzania żądaniami zmian Keystone (Freeware) JitterBug (Freeware, Open Source) GNATS (Freeware) Visual Intercept (commercial) Bugzilla (Open source) Mantis (Open source)

Funkcje narzędzi zarządzania żądaniami Zarządzanie projektami/podprojektami i przydziałami odpowiedzialności Wprowadzanie żądań zmian Powiadamianie osób odpowiedzialnych, osób wprowadzających żądania Śledzenie żądań zmian Raporty, statystyki

Ocena żądanej zmiany Znaczenie wprowadzenia zmiany dla użytkowników Koszt wprowadzenia zmiany Wpływ zmiany za poszczególne składowe systemu Wpływ zmiany na poszczególne składowe dokumentacji technicznej Propagacja zmian

Zarządzanie żądaniami zmian Całościowa ocena i decyzja Kolejkowanie żądań zmian Zlecenie wykonania zmiany Przydział osoby/zespołu do wykonania zmiany Monitorowanie realizacji zmiany

Czynniki wpływające na koszty konserwacji Niezależne od firmy Stabilność środowiska, w którym pracuje system Stabilność platformy sprzętowej i oprogramowania systemowego Czas użytkowania systemu

Czynniki wpływające na koszty konserwacji Zależne od firmy Znajomość dziedziny problemu Wysoka jakość modelu i projektu Wysoka jakość dokumentacji technicznej pełna zgodność z systemem wystarczająca szczegółowość zgodność ze standardami Stabilność personelu

Dokumentacja techniczna Dokumentacja techniczna a projekt Jakość dokumentacji a jakość projektu Dobra dokumentacja Zły projekt Dobra dokumentacja Dobry projekt Zła dokumentacja Zły projekt Zła dokumentacja Dobry projekt

Inżynieria odwrotna Typowa składowa narzędzi CASE Generowanie kodu Synchronizacja projektu z kodem Narzędzia niezależne JavaDoc, Doxygen, NDoc,...

Reinżynieria oprogramowania Generowanie kodu CASE Kod Inżynieria odwrotna

Ponowne wykorzystanie oprogramowania Zalety Redukcja kosztów Wzrost niezawodność Narzucenie standardów

Przygotowanie kodu do ponownego wykorzystania Budowa klockowa Niezależność składowych Spójność składowych Odpowiednia złożoność Przejrzystość Dobra dokumentacja

Wzorce projektowe związane z ponownym wykorzystanie oprogramowania Mediator Adapter Decorator Template method

Dokumentacja użytkowa Odbiorcy dokumentacji Potencjalni użytkownicy Użytkownicy początkujący Użytkownicy zaawansowani Administratorzy

Składowe dokumentacji użytkowej Opis funkcjonalny Podręcznik użytkownika Kompletny opis (reference) Opis instalacji Podręcznik administratora systemu Słownik używanych terminów Indeks

Podręcznik użytkownika Sposoby uruchamiania oraz kończenia pracy z systemem Sposoby realizacji najczęściej wykorzystywanych funkcji systemu Metody obsługi błędów, np. sposoby odwoływania błędnych operacji wykonanych przez użytkownika Sposoby korzystania z systemu pomocy Podręcznik użytkownika powinien przedstawiać prosty przykład(y) korzystania z systemu.

Kompletny opis Szczegółowy opis wszystkich funkcji systemu Informacje o wszystkich sposobach wywoływania tych funkcji Opisy formatów danych Opisy wszystkich błędów, które mogą się pojawiać podczas pracy z systemem Informacje o wszelkich ograniczeniach dotyczących np. zakresów danych

Jakość dokumentacji użytkowej Struktura Zachowanie standardów Sposób pisania Stosowanie formy aktywnej oraz zwracanie się do czytelnika. Poprawność gramatyczna i ortograficzna. Krótkie zdania. Krótkie akapity. Oszczędność słów. Precyzyjna definicja używanych terminów. Powtarzanie trudnego opisu. Stosowanie tytułów i podtytułów sekcji, wyliczeń i wyróżnień. Zrozumiałe odwołania do innych rozdziałów.

Bezpieczeństwo użytkowników oprogramowania Zagrożenie dla życia lub zdrowia systemy medyczne, systemy sterowania Bezpieczeństwo prawne Bezpieczeństwo finansowe

Bezpieczeństwo niezawodność Program zawodny może być bezpieczny Program niezawodny może nie być bezpieczny

Jak zapewnić bezpieczeństwo Należy określić potencjalne zagrożenia Przykład - program sporządzający PIT-y błędne rozliczenie podatnika z urzędem podatkowym niezłożenie zeznania podatkowego złożenie wielu zeznań dla jednego podatnika, być może w różnych urzędach

Określanie potencjalnych przyczyn zagrożeń Analiza drzewa błędów Błędne rozliczenie podatnika Wprowadzenie błędnych danych Błąd obliczeniowy Błędny wydruk rozliczenia Błędnie obliczona podstawa opodatkowania Błędnie obliczony podatek Błędnie obliczona nadpłata - dopłata Błędnie zsumowane dochody Błędnie zsumowane ulgi

Unikanie zagrożeń Szczególny nacisk na niezawodność najważniejszych fragmentów systemu - unikanie błędów, testowanie Weryfikacja wprowadzonych danych Sprawdzanie warunków poprawności

Zapewnianie jakości Zapewnianie jakości a inżynieria oprogramowania Główne działania składające się na zapewnianie jakości: Standaryzacja Kontrole jakości formalne przeglądy techniczne

Standaryzacja Standardy dotyczące artefaktów: Kod, projekt, specyfikacja wymagań, dokumentacja techniczna, dokumentacja użytkowa Procedury standardy dotyczące działań Sposób zatwierdzania dokumentacji technicznej, sposób przekazywania modułu do testowania Cele: Promowanie dobrych praktyk Wymuszenie spójności Możliwość automatyzacji

Inne typowe problemy Czy wszystko zostało skompilowanie? Przetestowane? Jak usunąć niekompletną/błędną modyfikację? Nie mogę odtworzyć tego błędu. Jakie zmiany zostały uwzględnione w tej wersji? Muszę połączyć 250 plików? Jaką wersję ma ten klient? Czy dostarczyliśmy właściwą wersję? Czy klient zmodyfikował nam kod? Czy można klientowi dostarczyć najnowszą wersję jeżeli na zakupił dwóch poprzednich?

Praca grupowa

Praca grupowa Gdzie jest najnowsza wersja!!! Czy Kowalski cokolwiek robi w tym projekcie?!!! Kto popełnił ten błąd?!!! Nie ja!!! Przecież już raz poprawiłem ten błąd!!! Przecież poprzednio to działało!!! Ktoś nadpisał moje zmiany!!!

Praca grupowa i zarządzanie konfiguracjami Równoległa pracy wielu osób nad tym samym projektem Ryzyko nadpisywania zmian Problem najnowszej wersji Potrzeba odwoływania się do poprzednich wersji Monitorowanie prac

CVS concurrent versioning system Najpopularniejsze narzędzie zarządzania konfiguracjami w projektach open-source Często wykorzystywany komercyjnie Unix, Windows, WINCVS, WebCVS Komponenty pliki, przede wszystkim tekstowe Wypierany przez SVN (Subversion)

CVS - struktura Server CVS Centralne repozytorium

Podstawowy model pracy Server CVS Centralne repozytorium 1: Pobranie pliku(ów) (check-out) 3: Zapis pliku(ów) (check-in/commit) 2: Edycja pliku(ów)

Podstawowy model pracy Dołączanie komentarzy nt. wprowadzonych zmian podczas zapisu pliku(ów) Porównywanie lokalnej pliku(ów) z zawartością repozytorium Jaka powinna być częstotliwość zapisu do repozytorium?

Wersja bazowa Przed powstaniem wersji bazowej samodzielna praca osoby/zesołu Wersja bazowa od tego momentu komponent może być wykorzystywany przez inne osoby/zespoły i podlega zarządzaniu konfiguracjami

Praca równoległa unikanie konfliktów Blokowanie pliku(ów) lub pobieranie bez wyłączności (unreserved check-out) Synchronizacja lokalnej kopii pliku(ów) Wykrywanie konfliktów bez interpretacji zawartości pliku tekstowego Informowanie innych użytkowników o zapisie Możliwość sprawdzenia kto korzysta z pliku Obserwowanie wybranych plików - powiadamianie

Ochrona danych Użytkownicy Hasła Prawa dostępu

Wersjonowanie Jednostką wersjonowania jest plik Każda zmiana powoduje powstanie nowej wersji pliku Możliwość opisywania wersji etykietami Pobieranie poprzednich wersji na podstawie daty lub etykiety Porównywanie różnych wersji

Sposób zapisu wersji Wersja bazowa 01.05 Zmiany 04.05 Zmiany 07.05 Zmiany 11.05 Wersja 04.05 Wersja 07.05 Wersja 11.05

Rozgałęzianie i łączenie gałęzi Wersja 1.1b Wersja 1.2b Wersja 1.3b Wersja 1 Wersja 1.1a Wersja 1.2a Wersja 1.3

Przyczyny rozgałęzień Niezależne ścieżki rozwoju, np. konserwacja komponentu vs. jego dalszy rozwój Warianty np. konfiguracje na różne platformy Eksperymentalne ścieżki rozwoju Równoległa praca dwóch programistów/zespołów trudna do bieżącej synchronizacji

Śledzenie prac Obserwacja komentarzy Monitorowanie pracy użytkowników Analiza danych

System Subversion Praktycznie wszystkie cechy CVS-a Wersjonowanie operacji na katalogach (drzewach) katalogów Dołączanie i wersjonowanie metadanych Atomowe operacje zapisu Zapis danych w bazie danych Lepsza obsługa plików binarnych Łatwe i tanie rozgałęzianie Lepsza struktura kodu

Inne modele pracy w systemach zarządzania konfiguracjami Composition Model Long Transaction Model Change Set Model

Narzędzia wspomagające wytwarzanie oprogramowania Narzędzia programistyczne Narzędzia wspomagające pracę nad oprogramowaniem Narzędzia zarządzania i pracy grupowej Zaawansowane narzędzia wspomagające wytwarzanie oprogramowania

Narzędzia programistyczne Kompilatory Edytory kodu Debuggery IDE Narzędzia projektowania interfejsu użytkownika Biblioteki Narzędzia formatujące Analizatory kodu Narzędzia wspomagające refaktoryzację

Narzędzia wspomagające pracę nad oprogramowaniem Narzędzia zarządzania wymaganiami Narzędzia CASE modelowanie, projektowanie, generowanie i dokumentowanie oprogramowania Narzędzia zarządzania konfiguracjami Narzędzia wspomagające testowanie Narzędzia dokumentacji technicznej Narzędzia zarządzania zgłoszeniami zmian/błędów

Narzędzia zarządzania i pracy grupowej Narzędzia harmonogramowania przedsięwzięć Personalne plany zadań Narzędzia rozproszonego zarządzania przedsięwzięciami Narzędzia generujące metryki Narzędzia szacowania kosztów oprogramowania Narzędzia komunikacji Narzędzia zarządzania konfiguracjami

Zaawansowane narzędzia wspomagające wytwarzanie oprogramowania Narzędzia typu workflow Narzędzia śledzenia powiązań Narzędzia analizy danych

Narzędzia CASE Computer Assisted/Aided Software/System Engineering CAD dla inżynierów oprogramowania Upper-CASE głównie analiza Lower-CASE projektowanie, generowanie kodu, inżynieria odwrotna I-CASE, Integrated-CASE

Składowe narzędzi CASE Słownik danych repozytorium Edytor(y) notacji graficznych Generator raportów Generator dokumentacji technicznej Generator(y) kodu Moduł projektowania interfejsu użytkownika Moduł(y) inżynierii odwrotnej

Składowe narzędzi CASE Moduł kontroli poprawności Moduł kontroli jakości Moduł importu/eksportu danych Moduł zarządzania wersjami Moduł zarządzania pracą grupową

Główne zalety narzędzi CASE Wspomaganie analizy i projektowania Opracowywanie dokumentacji Wspomaganie pracy grupowej A co z generowaniem kodu?

Główne problemy we wdrażaniu narzędzi CASE Traktowanie narzędzi CASE wyłącznie jako generatorów kodu Nieznajomość metodyki analizy i projektowania Niewłaściwa organizacja i zarządzanie przedsięwzięciem Zbyt wysokie oczekiwania związane z wdrożeniem narzędzi CASE

Podsumowanie

Ważne trendy w inżynierii oprogramowania Lekkie metodyki Wpływ na podejścia klasyczne Narzędzia Integracja Zaawansowane narzędzia typu workflow, śledzenia powiązań, analizy danych Wolne oprogramowanie Wytwarzanie rozproszone Ponowne wykorzystanie oprogramowania W tym Applications framework Architektura/inżynieria kierowana modelem

Inżynieria oprogramowania Wiedza techniczna, dotycząca wszystkich faz cyklu życia oprogramowania, której celem jest uzyskanie wysokiej jakości produktu - oprogramowania.

Tanie Użyteczne Niezawodne Bezpieczne Dobre oprogramowanie Ergonomiczne Łatwe w konserwacji Zapewnianie jakości Efektywne

Określanie celów i wymagań Niezawodne Prototypowanie Użyteczne Ergonomiczne Analiza - modelowanie Projektowanie, implementacja, testowanie

Dobrze zaprojektowane Unikanie błędów Dobrze zaprojektowane Ponowne wykorzystanie oprogramowania Niezawodne Odporność na błędy Dobrze udokumentowane Testowanie Warunki poprawności

Projektowanie interfejsu użytkownika Ergonomiczne Dokumentacja użytkowa

Wzorce projektowe np. Proxy Efektywne Optymalizacja efektywności

Dobrze udokumentowane Inżynieria odwrotna Notacje Łatwe w konserwacji UML Refaktoryzacja Metody analizy i projektowania Dobrze zaprojektowane Przejrzyste Wzorce projektowe Zgodne z rzeczywistością Modularne

Zapewnianie bezpieczeństwa Bezpieczne Niezawodne

Łatwe w konserwacji Niezawodne Lekkie metodyki Ponowne wykorzystanie oprogramowania re-use Unikanie błędów Tanie Praca grupowa Narzędzia Modularne Narzędzia Notacje Wzorce projektowe

Standardy, procedury Zapewnianie jakości Przeglądy techniczne

http://zajecia.predki.com