Wykład VII. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej



Podobne dokumenty
Lekkie metodyki. tworzenia oprogramowania

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

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

SYSTEMY INFORMATYCZNE ćwiczenia praktyczne

Programowanie Zespołowe

Agile Project Management

Szybkość w biznesie. Zwinne testowanie oprogramowania (Agile) Mateusz Morawski (mateusz.morawski@hp.com) 14 kwietnia 2015

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

Feature Driven Development

Metodyki programowania. Tomasz Kaszuba 2015

szkolenia pod drzewem Wybrane Techniki XP bnd 2008 Tomasz Włodarek. Materiał udostępniany na podstawie licencji Creative Commons (by-nc-nd) 1.00.

Wskazówki projektowe. Programowanie Obiektowe Mateusz Cicheński

Podstawy programowania III WYKŁAD 4

MODELE CYKLU ŻYCIA OPROGRAMOWANIA (1) Model kaskadowy (często stosowany w praktyce do projektów o niewielkiej złożonoś

Wprowadzenie do metodyki SCRUM. mgr inż. Remigiusz Samborski Instytut Informatyki Politechnika Wrocławska

Systemy Open Source w zarządzaniu projektami, na przykładzie Redmine i OpenProject. Rafał Ciszyński

Programowanie zespołowe

REFERAT PRACY DYPLOMOWEJ

Michał Olejnik. 22 grudnia 2009

Budowa aplikacji webowej w oparciu o Maven2 oraz przykłady testów jednostkowych. Wykonał Marcin Gadamer

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

Wykład 2. MIS n Inżynieria oprogramowania Marzec Kazimierz Michalik Akademia Górniczo-Hutnicza im. S. Staszica w Krakowie

Modelowanie i Programowanie Obiektowe

Projektowanie oprogramowania. Termin zajęć: poniedziałek, a podstawie materiału ze strony.

Techniki komputerowe w robotyce

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 6. Karol Tarnowski A-1 p.

Projektowanie systemów informatycznych. wykład 6

SCRUM niełatwe wdrażanie metodyki w praktyce. Adam Krosny

Metody wytwarzania oprogramowania. Metody wytwarzania oprogramowania 1/31

Agile vs PRINCE /2015 I rok st. magisterskie Informatyka

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Metodyki zwinne wytwarzania oprogramowania

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

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

Wprowadzenie do Behaviordriven

MVVM Light Toolkit. Julita Borkowska

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

Wytwarzanie oprogramowania

Zagadnienia. Inżynieria Oprogramowania

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

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

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

Programowanie zwinne

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

Oceny z prezentacji INKU011S. Zofia Kruczkiewicz

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Podejście tradycyjne. plan wykonanie sekwencyjna natura wykonywanych zadań

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/17

Informatyka I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny)

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

Wstęp do Informatyki dla bioinformatyków

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Szkolenia zgodne z sylabusem ISTQB.

Etapy życia oprogramowania

NAJLEPSZE STRATEGIE SKUTECZNYCH PROGRAMISTÓW. TECHNIKI PRACY Z KODEM KOD: NSKOD

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

Wzorce projektowe i refaktoryzacja

Wykład 8: klasy cz. 4

Wykład 1 Inżynieria Oprogramowania

Widoki zagnieżdżone, layout. 1. Wprowadzenie Repozytoria danych

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

Informatyka I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny)

Kod doskonały : jak tworzyć oprogramowanie pozbawione błędów / Steve McConnell. Gliwice, cop Spis treści. Wstęp 15.

WYKŁAD. Jednostka prowadząca: Wydział Techniczny. Kierunek studiów: Elektronika i telekomunikacja. Nazwa przedmiotu: Język programowania C++

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

Testowanie oprogramowania

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/17

Program szkolenia: Wprowadzenie do Domain Driven Design dla biznesu (część 0)

Zagadnienia. Inżynieria Oprogramowania

Podstawy modelowania programów Kod przedmiotu

Podstawy Programowania Obiektowego

PRZEWODNIK PO PRZEDMIOCIE

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

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

Języki i techniki programowania Ćwiczenia 2

Zarządzanie projektami. Porównanie podstawowych metodyk

Informatyka I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) kierunkowy (podstawowy / kierunkowy / inny HES)

Aplikacje w środowisku Java

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

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

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

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

Agile Project Management WHITEPAPER

JUnit TESTY JEDNOSTKOWE. Waldemar Korłub. Platformy Technologiczne KASK ETI Politechnika Gdańska

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

PROJEKTOWANIE ZORIENTOWANE NA UŻYTKOWNIKA W METODYCE SCRUM. Hubert Wawrzyniak Grupa Allegro

Tworzenie gier na urządzenia mobilne

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

Struktury systemów operacyjnych

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.

Budowa systemu wspomagającego podejmowanie decyzji. Metodyka projektowo wdrożeniowa

INŻYNIERIA OPROGRAMOWANIA

ECDL Podstawy programowania Sylabus - wersja 1.0

Piotr Ślęzak. Gdzie się podziała jakość

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

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

Transkrypt:

Wykład VII - semestr III Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik

Wytwarzanie oprogramowania

Model tworzenia oprogramowania 1 analiza 2 projektowanie 3 implementacja 4 testowanie 5 wdrożenie 6 pielęgnacja/rozwój

Złote zasady twórz intuicyjne i czytelne interfejsy, ale jednocześnie dostatecznie ogólne, aby można ich było użyć w różnych sytuacjach nie wymagaj, aby użytkownicy biblioteki/klasy robili rzeczy, które może ona sama zrobić minimalizuj liczbę argumentów, usuwaj zbędne argumenty i parametry metod, dla częstych wartości/operacji/typowych zachowań wprowadź wartości/ustawienia domyślne, metody pozwalające przedefiniować zachowanie (metody takie zwykle nie będą wywoływane) w dokumentacji udostępnianej publicznie opisuj zachowanie, a nie użytą implementację projektuj i implementuj mając zawsze na uwadze możliwość dalszego rozwoju aplikacji

Dekompozycja kodu Dekompozycja - to praktyka dzielenia kodu na mniejsze fragmenty. Każda funkcja czy metoda powinna realizować jedno zadanie. Wszystkie nietrywialne podzadania powinny być wydzielone do osobnych funkcji i metod (najczęściej prywatnych). Programowanie od ogółu do szczegółu. Jest to pisanie kodu z jednoczesnym dekomponowaniem go, bez uzupełniania szczegółów. Np. pisząc funkcję realizującą jakieś zadanie, używam w niej wywołań innych funkcji, która mają realizować podzadania, nie posiadając jeszcze ich implementacji. Po zakończeniu pisania głównej funkcji. Przystępujemy do uzupełniania szczegółów stosując teraz tę regułę na tym poziomie.

Refaktoryzacja Kolejne modyfikacje kodu, uzupełnienia funkcjonalności programu, nowe wymagania i usuwanie błędów powodują, że istniejący kod jest wzbogacany o kolejne linie. Kod może stać się gęsty, długi i nieczytelny. Refaktoryzacja (inaczej refaktoring) - jest wprowadzaniem zmian w kodzie/projekcie, w wyniku których zasadniczo nie zmienia się jego funkcjonalność. Celem refaktoryzacji jest więc nie wytwarzanie nowej funkcjonalności, ale utrzymywanie odpowiedniej, wysokiej jakości kodu. Możliwości: - refaktoryzacja poprzez dekompozycję - wyszukiwanie nowych wzorców, szablonów i ich implementacja - separacja warstw projektu. Refaktoryzacja jest kosztowna, ale jest istotnym elementem zarządzania projektem informatycznym. Koszt refaktoryzacji powinien być zrekompensowany dużo niższym kosztem wprowadzania późniejszych zmian w projekcie.

Wskaźniki czy referencje Referencja nie wnosi nowej funkcjonalności do języka C++ w stosunku do C. Jest to po prostu inna składnia tego co było już dostępne dzięki wskaźnikom. Referencje są czytelniejsze od wskaźników (nie używamy * i &), gdyż mają taką samą składnię jak zwykłe zmienne. Referencja jest bezpieczniejsza, gdyż zawsze związana jest z jakimś obiektem, nie może mieć wartości NULL. Kiedy zamienić wskaźnik na referencję? Jeżeli piszemy metodę/funkcję i w argumencie otrzymujemy referencję do obiektu, to możemy go czytać i modyfikować, ale nie możemy zwolnić powiązanej z nim pamięci. Jeżeli otrzymalibyśmy wskaźnik do obiektu, to czy po skorzystaniu z niego powinniśmy zwolnić pamięć zajmowaną przez ten obiekt? Zespół programistów może wprowadzić ustalenia w tej kwestii.

Metodologia pracy

Agile programming Metodologie lekkie (zwinne) - nadają się dla małych zespołów tworzących małe i średniej wielkości oprogramowanie, najczęściej dla biznesu (ważna szybkość dostarczania i dostosowanie do częstych zmian). Programowanie ekstremalne XP, Scrum, Crystal, Adaptive Software Development, DSDM, Feature Driven Development.

Programowanie ekstremalne (XP) Programowanie ekstremalne - to metodologia programowania spopularyzowana dzięki książce extreme Programming explained (Addison-Wesley, 1999). Składa się ona z zasad znajdujących zastosowanie we wszystkich fazach budowy oprogramowania. Główne zasady: ciągle planuj twórz niewielkie wersje nieustanie testuj. Napisz test jednostkowy przed napisaniem testowanego kodu. wykrywaj w czasie programowania sytuacje, kiedy refaktoryzacja przyniesie korzyści, i zrób ją właśnie wtedy. koduj w parach wspólna wizja i dzielenie się kodem. Należy unikać sytuacji, że tylko garstka osób ma całą wiedzę o projekcie.

Scrum Scrum - iteracyjna metodyka prowadzenia projektów. W metodyce tej rozwój produktu podzielony jest na mniejsze, trwające od tygodnia do miesiąca, iteracje zwane sprintami następującymi bezpośrednio po sobie. Po każdym sprincie zespół programistów posiada działającą wersję produktu.

Bugzilla Bugzilla oprogramowanie stworzone i używane przez Fundację Mozilla, umożliwiające szybkie tworzenie serwisu internetowego do raportowania błędów w dowolnym oprogramowaniu. Zgłoszeniom można nadawać różne statusy. Ponadto Bugzilla daje możliwość dodawania załączników i umieszczania własnych komentarzy. Kto z tego korzysta: Facebook, NASA, Mozilla, Ecplipse, Open Office, Apache, dystrybucje Linux i wiele innych.

Waga zgłoszenia Blocker zatrzymuje rozwój i/lub testy Critical wycieki pamięci, utraty danych, crashe Major duża utrata funkcjonalności Normal standardowy błąd, lekka utrata funkcjonalności Minor pomniejsza utrata funkcjonalności i proste błędy Trivial drobne błędy jak literówki itd.. Enhancement ulepszenia i porady

Koniec