Programowanie Zespołowe

Podobne dokumenty
Wskazówki projektowe. Programowanie Obiektowe Mateusz Cicheński

Wykład 4. Projektowanie. MIS n Inżynieria oprogramowania Październik 2014

Wzorce projektowe. dr inż. Marcin Pietroo

Programowanie zorientowane obiektowo. Mateusz Kołecki

Program szkolenia: Zaawansowane programowanie w C++

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

Programowanie obiektowe

Wzorce projektowe i refaktoryzacja

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

Program szkolenia: Wzorce projektowe w C++

Wprowadzenie do programowania aplikacji mobilnych

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

Programowanie zespołowe

Adaptywny kod : zwinne programowanie, wzorce projektowe i SOLID-ne zasady / Gary McLean Hall. Gliwice, cop Spis treści

SYSTEMY INFORMATYCZNE ćwiczenia praktyczne

Wzorce projektowe Michał Węgorek

Lekkie metodyki. tworzenia oprogramowania

Podstawy modelowania programów Kod przedmiotu

Praca z kodem legacy : strategie, naprawa błędów, refaktoryzacja oraz

Feature Driven Development

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

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

Programowanie Zespołowe

Programowanie zespołowe

Zaawansowane programowanie w C++ (PCP)

Michał Olejnik. 22 grudnia 2009

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

Dobry start do profesjonalnego programowania w C++ dla. początkujących programistów

Metodyki programowania. Tomasz Kaszuba 2015

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

REFERAT PRACY DYPLOMOWEJ

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

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

Programowanie Zespołowe

Wstęp [2/2] Wbrew częstemu przekonaniu, nie są one gotowymi rozwiązaniami, to tylko półprodukty rozwiązania.

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

PRZEWODNIK PO PRZEDMIOCIE

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2011/2012

Akademia ADB Wykład I Praca w grupie i jakość kodu

Wykład 1 Inżynieria Oprogramowania

Wzorce projektowe. dr inż. Marcin Pietroo

PRZEWODNIK PO PRZEDMIOCIE

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

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

Zasady organizacji projektów informatycznych

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

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

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

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

Zaawansowane programowanie w języku C++

SOLIDnie śmierdzący kod.

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

E-ID1S-08-s5. Informatyka. I stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny)

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

Wprowadzenie do Behaviordriven

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

Modelowanie i Programowanie Obiektowe

Zagadnienia. Inżynieria Oprogramowania

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 1

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Projektowanie obiektowe oprogramowania Wykład 4 - SOLID GRASP Wiktor Zychla 2012

Spring Framework - wprowadzenie i zagadnienia zaawansowane

Metody wytwarzania oprogramowania. Metody wytwarzania oprogramowania 1/31

Technologia programowania

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

INŻYNIERIA OPROGRAMOWANIA

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

Test-driven development na przykładzie funkcji matematycznej

E-1IZ3-06-s6. Inżynieria Programowania. Informatyka. I stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny)

Język programowania. Andrzej Bobyk

Oceny z prezentacji INKU011S. Zofia Kruczkiewicz

Testowanie oprogramowania Wzorce projektowe

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

Model oceny jakości implementacji wzorców projektowych

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

Programowanie obiektowe

Projektowanie obiektowe Wzorce projektowe. Wprowadzenie do wzorców projektowych

Continuous Integration i jakość kodu. Michał Prajs

Egzamin / zaliczenie na ocenę*

X-DRIVEN DESIGN, Y-DRIVEN DEVELOPMENT NICZEGO NIE ZMIENIĄ

Program szkolenia: Test Driven Development (TDD) using Spock or JUnit 5

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

Programowanie kontraktowe w Javie

Techniki komputerowe w robotyce

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

INŻYNIERIA OPROGRAMOWANIA

Czym są zasady SOLID?

Programowanie w Javie nazwa przedmiotu SYLABUS A. Informacje ogólne

Tworzenie gier na urządzenia mobilne

Narzędzia CASE dla.net. Łukasz Popiel

Paweł Rajba

Program szkolenia: Wzorce projektowe i architektoniczne oraz efektywne techniki Object Oriented Design dla projektantów systemów

Wzorce projektowe ArrayList. Aplikacja i zdarzenia. Paweł Chodkiewicz

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

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 2

Projektowanie zwinne

Transkrypt:

Programowanie Zespołowe Dobre Praktyki dr Rafał Skinderowicz mgr inż. Michał Maliszewski

Parafrazując klasyka: Jeśli piszesz w Javie pisz w Javie - Rafał Ciepiela Principal Software Developer Cadence Design Systems

Czysty Kod Ułatwia utrzymanie i poprawianie błędów Ułatwia przepływ wiedzy między zespołem programistów Nie posiada długu technicznego Jest wspierany przez testy jednostkowe i automatyczne Posiada aktualną dokumentację Nie zawiera duplikatów Jasno wyraża intencje programisty Zawiera minimalną ilość klas i metod Przestrzega ogólnie przyjętych zasad i reguł

Jakość kodu Jakość kodu podnoszą: Wzorce projektowe (OOP) Jasna i prosta architektura systemu DoD (Definition of Done) Code Review Testy jednostkowe Agile Software Development Narzędzia do sprawdzania jakości kodu (Sonar, PMD, FindBugs itp.)

Code Review Czynność polegająca na sprawdzeniu kodu (jego formy, wyglądu i sposobu rozwiązania problemu) przez kogoś poza twórcą. Jeden z najważniejszych elementów metodyk wytwarzania oprogramowania Podstawa programowania ekstremalnego Jedno z głównych założeń Feature Driven Development Wykonywana przed włączeniem kodu do systemu kontroli wersji Wykonywana przed przekazaniem kodu do testowania

Programowanie parami Jedną z form Code Review Pierwotnie część XP (extreme Programming) Programiści piszą w parach: jedna osoba pisze kod, druga obserwuje pierwszą, zgłasza poprawki i zadaje pytania Programiści zamieniają się rolami Wzajemna nauka Przepływ wiedzy Zwiększona jakość kodu

TDD Test-driven development jest techniką tworzenia oprogramowania z grupy metodyk zwinnych. Programowanie techniką TDD wyróżnia się tym, że najpierw pisane są testy jednostkowe funkcjonalności, która jeszcze nie istnieje. Wielokrotne powtarzane są kroki: Napisz test jednostkowy sprawdzający dodawaną funkcjonalność (test w tym momencie nie powinien się udać) Zaimplementuj funkcjonalność (test powinien się udać) Zrefaktoryzuj napisany kod do ogólnie przyjętych standardów (OOP, DoD itd.)

Stosunek czasu spędzonego na czytaniu kodu w porównaniu do czasu pisania wynosi ponad 10 do 1, dlatego tworzenie czytelnego kodu ułatwia pisanie Robert C. Martin, Czysty Kod

Czytelność kodu

Pierwszą zasadą każdej funkcji jest, że powinna być mała Robert C. Martin, Czysty Kod

Czytelność kodu

SOLID Za jedne z podstawowych zasad zachowania czystości w kodzie zorientowanym obiektowo uchodzą zasady SOLID, zaproponowane przez Roberta C. Martina. Mnemonik można rozpisać jako: S Single responsibility principle (zasada jednej odpowiedzialności) klasa powinna mieć tylko jedną odpowiedzialność (nigdy nie powinien istnieć więcej niż jeden powód do modyfikacji klasy) O Open/closed principle (zasad otwarte-zamknięte) Klasa powinna być otwarta na rozszerzenie, ale zamknięta na modyfikacje

SOLID c.d. L Liskov substitution principle (zasada podstawienia Liskov) korzystanie z funkcji klasy bazowej musi być możliwe również w przypadku podstawienia instancji klas pochodnych I Interface segregation principle (zasada segregacji interfejsów) Klienci nie powinni zależeć od interfejsów, których nie używają D Dependency inversion principle (zasada odwrócenia zależności) wysokopoziomowe moduły nie powinny zależeć od modułów niskopoziomowych zależności między nimi powinny wynikać z abstrakcji

Wzorce projektowe Uniwersalne, sprawdzone w praktyce rozwiązania często pojawiających się problemów z zakresu inżynierii oprogramowania (OOP). Wyróżniamy 3 rodzaje wzorców: Kreacyjne (fabryka abstrakcyjna, singleton) Strukturalne (adapter, dekorator, most, fasada) Czynnościowe (obserwator, strategia, stan, metoda szablonowa)

Fabryka Abstrakcyjna

Adapter

Dekorator

Obserwator

Strategia

Ćwiczenie 1

Ćwiczenie 2

Ćwiczenie 3 Pracując w parach napiszcie program, który wyświetli zadany tekst w postaci kodu Morse a. Język programowania oraz sposób implementacji jest dowolny. Pierwsza osoba pisze kod przez 3 minuty Druga osoba przygląda się tworzeniu, zgłasza poprawki i zadaje pytania Następuje zamiana ról.

Dziękuję za uwagę