Jarosław Kuchta. Projektowanie Aplikacji Internetowych. Wprowadzenie

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

Projektowanie oprogramowania cd. Projektowanie oprogramowania cd. 1/34

Zakres wykładu. Podstawy InŜynierii Oprogramowania

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

Feature Driven Development

Usługa: Audyt kodu źródłowego

Czym jest jpalio? jpalio jpalio jpalio jpalio jpalio jpalio jpalio jpalio

Projektowanie logiki aplikacji

Zasady organizacji projektów informatycznych

Modelowanie i analiza systemów informatycznych

Wykład 1 Inżynieria Oprogramowania

Inżynieria oprogramowania. Jan Magott

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

Technologie dla aplikacji klasy enterprise. Wprowadzenie. Marek Wojciechowski

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

Projekt systemu informatycznego

INŻYNIERIA OPROGRAMOWANIA

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

Projektowanie architektury systemu rozproszonego. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Jakość w procesie wytwarzania oprogramowania

Koncepcja wirtualnej pracowni GIS w oparciu o oprogramowanie open source

Spring Framework - wprowadzenie i zagadnienia zaawansowane

Tester oprogramowania 2014/15 Tematy prac dyplomowych

Projektowanie interakcji

Problemy niezawodnego przetwarzania w systemach zorientowanych na usługi

Projektowanie architektury systemu internetowego

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

Etapy życia oprogramowania

Overlord - specyfikacja uzupełniająca. Jakub Gołębiowski Adam Kawa Piotr Krewski Tomasz Weksej

SYSTEMY INFORMATYCZNE ćwiczenia praktyczne

Egzamin / zaliczenie na ocenę*

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

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

Proces projektowania i wdrożenia serwisu internetowego

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

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

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

Konfiguracja modelowania w procesie wytwarzania oprogramowania

Praktyczne aspekty stosowania metody punktów funkcyjnych COSMIC. Jarosław Świerczek

REFERAT PRACY DYPLOMOWEJ

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

Projektowanie systemów informatycznych. wykład 6

Inżynieria wymagań. Jarosław Kuchta Dokumentacja i Jakość Oprogramowania

Opis metodyki i procesu produkcji oprogramowania

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

Analiza i projektowanie aplikacji Java

Referat pracy dyplomowej

WPROWADZENIE DO UML-a

PRZEWODNIK PO PRZEDMIOCIE

Narzędzia CASE dla.net. Łukasz Popiel

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

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

KARTA PRZEDMIOTU. 1) Nazwa przedmiotu: INŻYNIERIA SYSTEMÓW I ANALIZA SYSTEMOWA. 2) Kod przedmiotu: ROZ-L3-20

Szkolenie wycofane z oferty

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

Podstawy modelowania programów Kod przedmiotu

Analiza i projekt systemu pracy grupowej z zastosowaniem metodyki SCRUM w technologii SharePoint Karolina Konstantynowicz

Spis treści 1. Wstęp 2. Projektowanie systemów informatycznych

Główne założenia XP. Prostota (Simplicity) Komunikacja (Communication) Sprzężenie zwrotne (Feedback) Odwaga (Agressiveness)

<Nazwa firmy> <Nazwa projektu> Specyfikacja dodatkowa. Wersja <1.0>

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

Jarosław Kuchta Jakość Systemów Informatycznych Jakość Oprogramowania. Pomiary w inżynierii oprogramowania

Oceny z prezentacji INKU011S. Zofia Kruczkiewicz

1. WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI

Wskazówki projektowe. Programowanie Obiektowe Mateusz Cicheński

udokumentowanych poprzez publikacje naukowe lub raporty, z zakresu baz danych

Prezentacja firmy Royal Solutions Sp. z o.o.

Skrócone opisy pryncypiów architektury korporacyjnej podmiotów publicznych

I. Opis przedmiotu zamówienia

DLA SEKTORA INFORMATYCZNEGO W POLSCE

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 2

Biorąc udział w projekcie, możesz wybrać jedną z 8 bezpłatnych ścieżek egzaminacyjnych:

Kontraktor - Analityk Biznesowy

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

Inżynieria Programowania - Projektowanie architektoniczne

Inżynieria oprogramowania Jarosław Kuchta. Modelowanie interakcji

Tytuł szkolenia: Angular 4 - budowanie nowoczesnych i wydajnych aplikacji przeglądarkowych

Web frameworks do budowy aplikacji zgodnych z J2EE

Usługa: Testowanie wydajności oprogramowania

Program szkolenia: Tworzenie aplikacji w Ruby on Rails z wykorzystaniem zwinnych metodyk

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

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

Wytwarzanie oprogramowania

Projekt: Współpraca i Rozwój wzrost potencjału firm klastra INTERIZON

Testowanie oprogramowania

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

Opis realizacji dla czterech zespołów (4 przypadki użycia)

Modelowanie i analiza systemów informatycznych

Projekt współfinansowany ze środków Europejskiego Funduszu Rozwoju Regionalnego w ramach Programu Operacyjnego Innowacyjna Gospodarka

Karta opisu przedmiotu Zaawansowane techniki analizy systemowej oparte o modelowanie warsztaty

Inżynieria oprogramowania I

Podrozdziały te powinny zawierać informacje istotne z punktu widzenia przyjętego celu pracy

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

INŻYNIERIA OPROGRAMOWANIA

Informatyczne fundamenty

Modelowanie przypadków użycia. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Programowanie zespołowe

Transkrypt:

Jarosław Kuchta Projektowanie Aplikacji Internetowych Wprowadzenie

Zagadnienia Rola projektowania w procesie wytwarzania aplikacji internetowych (podejście klasyczne, podejście zwinne) Modele analityczne a modele projektowe Projektowanie wielowarstwowe podział kompetencji deweloperów Współczesne podejścia do projektowania aplikacji: RAD, modelowanie w IDE, frameworki i wzorce projektowe Szczególne problemy w aplikacjach internetowych: przenośność, wydajność, skalowalność, ochrona, bezpieczeństwo, użyteczność i globalizacja Projektowanie Aplikacji Internetowych Wprowadzenie 2

Miejsce projektowania w klasycznym procesie wytwarzania aplikacji Analiza dziedziny problemu Analiza statyczna Analiza funkcjonalna Analiza dynamiczna Modele Analiza behawioralna SWS Projektowanie systemowe Projektowanie szczegółowe Projektowanie architektury systemu Projektowanie logiki aplikacji Projekty Projektowanie interfejsu użytkownika Projektowanie struktury danych Implementacja Utworzenie struktury kodu Implementacja logiki aplikacji Implementacja interfejsu użytkownika Implementacja struktury danych Projektowanie Aplikacji Internetowych Wprowadzenie 3

Analiza projektowanie implementacja (podejście klasyczne) Cel Analiza Projektowanie Implementacja Zrozumienie oczekiwań klienta przez zespół projektowy Opracowanie koncepcji rozwiązania Realizacja opracowanej koncepcji Pytania Co? Po co? Co? Jak? Jak? Źródła Specyfikacja wymagań, publikacje dziedzinowe, dokumentacja od klienta Specyfikacja wymagań, modele analityczne, wzorce projektowe, dokumentacja z innych projektów dokumentacja projektowa, specyfikacja wymagań, dokumentacja frameworków Środki Rozmowy z klientem, modelowanie w UML Analiza wymagań, opracowywanie projektów Analiza projektów, kodowanie, uruchamianie, debugowanie Efekt Specyfikacja wymagań, model przypadków użycia, model klas, Projekt architektury systemu, projekt logiki aplikacji, projekt interfejsu użytkownika projekt struktury danych Oprogramowanie wdrożone, kod źródłowy, dokumentacja kodu Projektowanie Aplikacji Internetowych Wprowadzenie 4

Aspekty analityczne i projektowe Analityczne Projektowe Projekt architektury systemu Projekt logiki aplikacji Projekt interfejsu użytkownika Projekt struktury danych Statyczny Komponenty systemowe Klasy, właściwości Schemat interfejsu, formularze Schemat bazy danych, tabele Funkcjonalny Funkcjonalności, uprawnienia Interfejsy, interakcje Menu, komendy, nawigacja Kwerendy, procedury wbudowane Behawioralny Zdarzenia, stany Zdarzenia, akcje, aktywności Obsługa zdarzeń, obsługa błędów Walidacja danych, kopie zapasowe Dynamiczny Wydajność, dostępność Przetwarzanie asynchroniczne Responsywność, logika u klienta Synchronizacja, migracje b.d. Projektowanie Aplikacji Internetowych Wprowadzenie 5

Rozróżnienie pojęć Aspekt wyodrębniony zbiór cech systemu, które są rozważane przy pominięciu innych jego cech Model opis rzeczywiście istniejącego lub projektowanego systemu pokazujący jego wybrany aspekt Diagram graficzne przedstawienie modelu w postaci rysunku, którego elementy mają określone znaczenie Elementy diagramu mają odwzorowanie w elementy modelu. Diagram to nie model: Nie wszystkie elementy modelu są przedstawiane na diagramie. Mogą być inne przedstawienia modelu (np. CRC dla modelu klas). Jeden model może być przedstawiony na kilku diagramach. Elementy modelu mają odwzorowanie w elementy systemu. Model to nie system: Model opisuje system tylko w wybranym aspekcie. Nie wszystkie elementy systemu są modelowane. Gdyby model opisywał w pełni wszystkie elementy systemu, to byłby równoważny systemowi. Projektowanie Aplikacji Internetowych Wprowadzenie 6

Modele a diagramy Model Diagram Aspekt Analiza Projektowanie Model przypadków użycia Diagram przypadków użycia, diagram klas Funkcjonalny Modelowanie możliwości systemu Modelowanie możliwości (uprawnień) użytkowników Model obiektowy Diagram klas, diagram obiektów Statyczny Modelowanie pojęć biznesowych i ich relacji Modelowanie struktury obiektowej kodu Model interakcji Diagram interakcji, diagram aktywności, diagram komunikacji (kolaboracji) Funkcjonalny Modelowanie współdziałania systemu z otoczeniem Modelowanie współdziałania komponentów systemowych Model stanów Diagram przejść stanów Behawioralny Modelowanie reakcji systemu na zdarzenia Modelowanie reakcji komponentów systemowych Model czasowy Diagram sekwencji diagram timingu Dynamiczny Modelowanie scenariuszy zdarzeń Modelowanie zależności czasowych zdarzeń i procesów Model architektury systemu Diagram komponentów, diagram wdrożenia Statyczny nie stosowany Modelowanie struktury sprzętowej i programowej systemu Model struktury kodu Diagram pakietów, diagram obiektów Statyczny nie stosowany Modelowanie struktury fizycznej kodu Model struktury danych Diagram ERD, diagram klas Statyczny nie stosowany Modelowanie schematu bazy danych Model nawigacji Diagram WND, storyboard Funkcjonalny nie stosowany Modelowanie przejść między komponentami interfejsu Projektowanie Aplikacji Internetowych Wprowadzenie 7

Projektowanie aplikacji za i przeciw Za Szybsze zrozumienie potrzeb klienta Szybsze wykrycie potencjalnych problemów technicznych Możliwość wyboru optymalnego rozwiązania Możliwość zrozumienia złożonej struktury aplikacji Oszczędność na modyfikacji kodu Ułatwienie późniejszej pielęgnacji i rozwoju Przeciw Trudność w zastosowaniu przy niedookreślonych wymaganiach Późniejsze dostarczenie działającej aplikacji do klienta Zagrożenie nierealnością projektu (oderwanie od możliwości implementacji) Koszty opracowania dokumentacji projektowej Późniejszy zwrot kosztów opracowania Projektowanie Aplikacji Internetowych Wprowadzenie 8

Współczesne podejścia do projektowania aplikacji (1) RAD Rapid Application Development wytwarzanie bez wcześniejszego projektowania design = development zaleta efektywność wada uzależnienie od IDE (Integrated Development Environment) brak przenośności projektu Modelowanie w IDE Wykorzystanie narzędzi modelowania dołączonych do IDE ograniczone możliwości modelowania zalety: łatwość przełożenia projektu na kod, łatwość utworzenia projektu z działającego kodu wada - uzależnienie od IDE brak przenośności projektu Projektowanie Aplikacji Internetowych Wprowadzenie 9

Współczesne podejścia do projektowania aplikacji (2) Wykorzystanie wzorców projektowych wzorzec projektowy sprawdzone rozwiązanie projektowe samodzielna implementacja zaleta uniwersalność zastosowania wada: duży narzut na kodowanie Wykorzystanie frameworków framework zaimplementowany wzorzec projektowy + recepta na sprawdzone rozwiązanie implementacyjne zaleta duży wybór, efektywność w typowych zastosowaniach zagrożenia: niekompatybilność różnych frameworków, brak dostatecznej wiedzy, niedojrzałość rozwiązań wady: brak elastyczności zastosowania, zagrożenie niedotrzymania harmonogramu Wnioski: Stosowanie frameworków jest efektywne, ale i bardzo ryzykowne. Warto wykorzystywać wzorce projektowe, gdy frameworki nie są wystarczające. Projektowanie Aplikacji Internetowych Wprowadzenie 10

Projektowanie w metodykach zwinnych? Extreme programming, SCRUM planowanie iteracji (a nie projektowanie) Test Driven Development projektowanie testów Feature Driven Development projektowanie funkcjonalności Projektowanie Aplikacji Internetowych Wprowadzenie 11

Prototyp projekt SCRUM W większych projektach informatycznych: Idea Prototyp Projekt Product Backlog Sprint Backlog SPRINT Działający soft Rewizja Projektowanie Aplikacji Internetowych Wprowadzenie 12

Design Thinking Wniosek: Projektowanie towarzyszy wytwarzaniu nawet jeśli nie jest uwidocznione jawnie z: Jumpstarting Scrum with Design Thinking Christophe Vetterli et. al. http://www.researchgate.net/publication/255710860 Projektowanie Aplikacji Internetowych Wprowadzenie 13

Projektowanie wielowarstwowe podział kompetencji deweloperów Projekt interfejsu użytkownika HTML5 CSS3 JavaScript Front-end developer C# PHP Java Szanse: Zrównoleglenie pracy Podział kompetencji Wykorzystanie kompetencji Projekt architektury systemu Projekt logiki aplikacji Projekt struktury danych Programista SQL proxy MVC Back-end developer Zagrożenia: Brak koordynacji Nieporozumienia Niespójność projektu Projektowanie Aplikacji Internetowych Wprowadzenie 14

Szczególne problemy projektowania aplikacji internetowych W specyfikacji wymagań trzeba dookreślić: Wymagania co do architektury systemu (mogą wynikać z organizacji przedsiębiorstwa) Wymagania co do przenośności Wymagania co do wydajności (trudne do określenia oszacować) i skalowalności Wymagania co do ochrony i bezpieczeństwa uświadomić klientowi Wymagania co do dostępności i globalizacji (np. języki interfejsu użytkownika) Projektowanie Aplikacji Internetowych Wprowadzenie 15

Problemy przenośności Użytkownicy mogą dysponować rozmaitym sprzętem, również starszym (mniej wydajnym). jakie będą minimalne wymagania sprzętowe? Klienci mogą działać w różnych systemach operacyjnych. na jakich systemach ma działać aplikacja? Część aplikacji może być przeznaczona dla urządzeń mobilnych (responsywność dopasowanie interfejsu do możliwości urządzenia). jak zapewnić responsywność aplikacji? Projektowanie Aplikacji Internetowych Wprowadzenie 16

Problemy wydajności Dane muszą być przekazywane na odległość przez łącza o różnej przepustowości jak zminimalizować ilość przesyłanych danych? Serwer musi obsłużyć często wielu klientów. czy i jak podzielić przetwarzanie między serwer a klientów? czy i jak podzielić funkcjonalność na wiele serwerów? Serwer musi zapewnić szybką reakcję na żądania użytkowników. czy i jak przechowywać wyniki obliczeń dla powtórnego użycia? czy i jak podzielić funkcjonalność na wiele serwerów? Projektowanie Aplikacji Internetowych Wprowadzenie 17

Problemy skalowalności Trudno jest przewidzieć rzeczywiste obciążenie serwera. jak podzielić funkcjonalność na wiele serwerów? jak umożliwić dołączanie serwerów w miarę potrzeby? jak zabezpieczyć się przez przeciążeniem? Ilość przechowywanych danych może być ogromna. jaki silnik bazy danych użyć? jak umożliwić zwiększenie pojemności serwera danych? czy zastosować rozproszenie bazy danych? Projektowanie Aplikacji Internetowych Wprowadzenie 18

Problemy ochrony Serwer internetowy jest widoczny z zewnątrz. w jaki sposób zapewnić uwierzytelnienie użytkowników? jakie role użytkowników zaplanować i jakie im przydzielić uprawnienia? czy ograniczyć dostęp z zewnątrz do serwera? Dane klientów z reguły są poufne. jak chronić dane osobowe? do jakich danych ma mieć dostęp administrator? jak uniemożliwić dostęp użytkowników do nieswoich danych? czy i jak zapewnić bezpieczną komunikację? Serwer internetowy może stać się obiektem ataku hakerów. jak zabezpieczyć się przed skanowaniem portów serwera? jak zabezpieczyć się przed włamaniem? jak ograniczyć potencjalne możliwości ataku? Projektowanie Aplikacji Internetowych Wprowadzenie 19

Problemy bezpieczeństwa Serwery mogą ulec awarii. czy zapewnić serwery zapasowe? Dane klientów mogą ulec zniszczeniu. jak i kiedy robić kopie zapasowe? gdzie przechowywać kopie zapasowe? komu dać uprawnienia do odzyskiwania danych? Łącza internetowe mogą ulec awarii lub okazać się niewystarczające. czy i jak zapewnić zapasowe łącza internetowe? Projektowanie Aplikacji Internetowych Wprowadzenie 20

Problemy dostępności i globalizacji Serwis internetowy może mieć użytkowników o różnych możliwościach i preferencjach. dla jakiej grupy użytkowników jest przeznaczony ten serwis? jak zapewnić czytelność i zrozumiałość treści dla grupy docelowej użytkowników? jak zapewnić czytelność dla użytkowników nierozróżniających kolorów? czy konieczne jest zapewnienie wersji dla niedowidzących? Serwis internetowy może być dostępny z całego świata. czy konieczna jest dostępność 7/24? kiedy i jak robić konserwację serwera? Serwis internetowy może być dostępny dla ludzi z różnych kultur. jakie wersje językowe zaimplementować? jakie standardy wymiany danych zapewnić? czy i jak dopasowywać się do różnej wrażliwości kulturowej? Projektowanie Aplikacji Internetowych Wprowadzenie 21

Literatura Pressman R.S.: Software Engineering, A Practitioner s Approach. 7th Ed., McGraw-Hill, USA, 2010 Booch G., Rumbaugh J., Jacobson I.: UML. Przewodnik użytkownika. WNT, Warszawa, 2006 Projektowanie Aplikacji Internetowych Wprowadzenie 22