Refaktoryzacja Robert Pająk.

Slides:



Advertisements
Podobne prezentacje
Programowanie Ekstemalne
Advertisements

Inżynieria Oprogramowania
Zarządzanie konfiguracją oprogramowania
Opis metodyki i procesu produkcji oprogramowania
1 / 47 WARSZAWA 2005 Przemysław Siekierko Stanisław Andraszek Rational Unified Process.
FIT Środowisko Testów Integracyjnych
Projektowanie Aplikacji Komputerowych
EXtreme Programming » Magdalena Tchorzewska.
Metodologia XP Husaria.
Co UML może zrobić dla Twojego projektu?
Wprowadzenie do inżynierii oprogramowania
Zwinne metodyki programowania Copyright, 2006 © Jerzy R. Nawrocki Inżynieria oprogramowania.
Refaktoryzacja czyli odświeżanie kodu
Zaawansowane techniki obiektowe
Jarosław Kuchta Jakość Systemów Informatycznych
Wymagania jakości w Agile Programming
Programowanie obiektowe Andrzej Ziółkowski Wykład 7.
Metodyki Lekkie Agile Methodologies
Rational Unified Process
Projekt zaliczeniowy z przedmiotu "Inżynieria oprogramowania"
Jeden z języków programowania, który powinieneś znać
Projektowanie - wprowadzenie
Dalsze elementy metodologii projektowania. Naszym celem jest...
Analiza, projekt i częściowa implementacja systemu obsługi kina
Wykład 2 Cykl życia systemu informacyjnego
C.d. wstępu do tematyki RUP
© Victo Testowanie dla menedżerów Wersja TDM Slajd 1 (27) Testowanie oprogramowania dla menedżerów Co menedżerowie i kierownicy naprawdę potrzebują
Rozwój aplikacji przy wykorzystaniu ASP.NET
Projektowanie obiektowe
Continuous Integration
UML 2.x Robert Pająk.
Kontrola spójności modeli UML za pomocą modelu przestrzennego DOD
Model przestrzenny Diagramu Obiegu Dokumentów
Wykład 1 – część pierwsza
Kompleksowe zarządzanie jakością informacji (TIQM)
System wspierający obsługę przedmiotów projektowych
Inż. Łukasz Antoniak Promotor: dr inż. Piotr Gawrysiak Politechnika Warszawska, Wydział Elektroniki i Technik Informacyjnych, 2010.
IBM mainframe jest optymalnym serwerem, o ile … (czy musi być tak drogo?)
Witold Bołt m.
Programowanie obiektowe
Projektowanie obiektowe
Projektowanie obiektowe
Rational Unified Process Implementacja Aleksandra Reiman, gr. I-52.
Unified Modeling Language - Zunifikowany Język Modelowania
Metodyki wytwarzania i utrzymywania aplikacji
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
Wykład 6 Informatyka MPDI 3 semestr JavaScript cd.
Metodologia CASE. Przyczyny użycia narzędzi CASE Główną przesłanką użycia narzędzi CASE jest zwiększenie produktywności i jakości produkowanych systemów.
ŁUKASZ DZWONKOWSKI Modele zwinne i ekstremalne. Podejście tradycyjne
Copyright © Jerzy R. Nawrocki Team Software Process Inżynieria oprogramowania II Wykład.
Komponentowe systemy rozproszone Wprowadzenie. Komponent... jest to podstawowa jednostka oprogramowania z kontraktowo (deklaratywnie) opisanymi interfejsami,
Bartosz Baliś, 2006 Wstęp do Inżynierii Oprogramowania Bartosz Baliś.
7/1/ Projektowanie Aplikacji Komputerowych Piotr Górczyński Cykl życia systemu.
Zarządzanie wdrożeniem oprogramowania w organizacji w oparciu o metodykę ITIL Michał Majewski s4440 Praca magisterska napisana pod kierunkiem dr inż. Tomasza.
Wstęp do systemów informatycznych Model przypadków użycia.
T ESTY JEDNOSTKOWE W C# Alicja Majka, A GENDA Wprowadzenie do środowiska Czym są testy jednostkowe i po co je stosować? XUnit, NUnit Pokrycie.
Architektura Rafał Hryniów. Architektura Wizja projektu systemu, którą dzielą twórcy Struktura komponentów systemu, ich powiązań oraz zasad i reguł określających.
Testy jednostkowe. „Test jednostkowy (unit test) to fragment kodu, który sprawdza inny fragment kodu”
Innowacyjne metody zarządzania jakością oprogramowania Przeglądy oprogramowania i standard IEEE 1028 Bartosz Michalik
Komponentowe systemy rozproszone Komponenty i zależności.
InMoST Wielkopolska sieć współpracy w zakresie innowacyjnych metod wytwarzania oprogramowania Termin realizacji: – Innowacyjne metody.
TWOJA CYFROWA PRZYSZŁOŚĆ. JUŻ DZISIAJ. Marcin Parczewski © 2016 Software AG. All rights reserved. For internal use only.
Agile Programming a jakość
Wykład 1 – część pierwsza
Zaawansowane techniki obiektowe
Dynamiczny serwer aplikacyjny w C++ platforma LEFTHAND
Modelowanie i analiza systemów informatycznych
Refaktoryzacja czyli odświeżanie kodu
Zapis prezentacji:

Refaktoryzacja Robert Pająk

Plan Wprowadzenie Demo Podsumowanie, czyli trochę teorii

Definicja Refaktoryzacja - zmiana wewnętrznej struktury oprogramowania, sprawiająca, że kod staje się łatwiejszy do zrozumienia i tańszy w utrzymaniu. Zmiana ta nie wpływa na obserwowalne zachowanie programu. Refaktoryzacja to sprzątanie Lepiej pracuje się w przygotowanym środowisku pracy

Czym powinna być refaktoryzacja Ta sama funkcjonalność Lepsza struktura Ryzyka (przy złej refaktoryzacji): Wprowadzenie trudno wykrywalnych błędów Można się zapędzić i utknąć w czarnej dziurze Strata czasu

DEMO Case: Wypożyczalnia filmów Obliczanie i wyświetlanie kosztów za wypożyczenia. Program pobiera dane na temat wybranych filmów i czasu, w którym zostały wypożyczone. Istnieją trzy typu filmów. Poza opłatą system wyznacza punkty stałego klienta.

Case: Wypożyczalnia filmów (1/2) Przed zmianą Po ekstrakcji metod

Case: Wypożyczalnia filmów (2/2) Przed zmianą Po dodaniu funkcjonalności

Dlaczego refaktoryzacja jest ważna Ulepszenie projektu Poprawa czytelność Identyfikacja błędów Przyspieszenie programowania Ułatwia wprowadzanie kolejnych zmian

Jak refaktoryzować Metafora 2 kapeluszy Solidny pakiet samosprawdzalnych testów Krokowo (testowanie -> mała zmiana) Zgodnie z zasadami OOAD (np. SOLID) Wykorzystanie wzorców projektowych „Czyszczenie” kodu Single responsibility principle the notion that an object should have only a single responsibility. Open/closed principle the notion that “software entities … should be open for extension, but closed for modification”. Liskov substitution principle the notion that “objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program”. See also design by contract. Interface segregation principle the notion that “many client specific interfaces are better than one general purpose interface.” Dependency inversion principle the notion that one should “Depend upon Abstractions. Do not depend upon concretions.” Dependency injection is one method of following this principle.

Kiedy refaktoryzować Zasada do trzech razy sztuka Przed dodaniem nowej funkcjonalności Po wykryciu błędu Podczas inspekcji kodu (ang. code review) Projektowanie a Refaktoryzacja Wydajność a Refaktoryzacja Problemy z refaktoryzacją Bazy danych Zmiany interfejsu Wydajność dopiero na końcu. Optymalizacja często zaciemnia kod. Zasada 90/10. Korzystanie narzędzi profilujących, w celu krytycznych ścieżek

Literatura http://martinfowler.com/refactoring/ „Refaktoryzacja. Ulepszanie struktury istniejącego kodu”, Martin Fowler, Kent Beck… „Kod doskonały. Jak tworzyć oprogramowanie pozbawione błędów. Wydanie II”, Steve McConnell „Czysty kod. Podręcznik dobrego programisty”, Robert C. Martin „Wzorce projektowe. Elementy oprogramowania obiektowego wielokrotnego użytku”, GoF „UML i wzorce projektowe. Analiza i projektowanie obiektowe oraz iteracyjny model wytwarzania aplikacji. Wydanie III”, Craig Larman

Pytania? robert.pajak@hotmail.com