TRUDNOŚCI W IMPLEMENTACJI WZORCÓW PROJEKTOWYCH W MAŁYCH ZESPOŁACH PROGRAMISTYCZNYCH
|
|
- Amalia Kania
- 7 lat temu
- Przeglądów:
Transkrypt
1 TRUDNOŚCI W IMPLEMENTACJI WZORCÓW PROJEKTOWYCH W MAŁYCH ZESPOŁACH PROGRAMISTYCZNYCH Rafał Wojszczyk 1 Piotr Ratuszniak 2 Streszczenie Na rynku IT występuje wiele małych przedsiębiorstw tworzących własne, autorskie oprogramowanie lub wykonujące usługi dla firm trzecich. Małe zespoły często pracują według tzw. zwinnych metodyk wytwórczych, w których ograniczona jest ilość dokumentacji projektowej, a większość procedur znacznie uproszczona. Jednakże małe zespoły nie rezygnują ze stosowania dobrych praktyk, w tym wzorców projektowych. Celem artykułu jest przybliżenie wybranych trudności, z którymi borykają się małe zespoły programistyczne przy implementacji wzorców projektowych, oraz przedstawienie autorskiej metody wspomagającej wzrost jakości implementacji wzorców projektowych. Słowa kluczowe: manifest Agile, SCRUM, wytwarzanie oprogramowania, wzorce projektowe. 1. Wprowadzenie Badania oraz rozwój w dziedzinie inżynierii oprogramowaniu mają na celu ulepszanie wszystkiego co związane z oprogramowaniem. Wzorce projektowe są tylko jednym z wielu rozwiązań, które pozwalają ulepszyć oprogramowanie, mimo to są ważnym, modnym i pożądanym rozwiązaniem przez społeczność branży IT. Wystąpienie wzorca projektowego w kodzie programu nie jest równoznaczne z poprawną implementacją, a tym bardziej nie oznacza to, że wzorzec został właściwie dobrany. Z takimi trudnościami spotykają się zarówno bardziej, jak też mniej doświadczeni programiści. Klasyczne modele jakości oprogramowania nie znajdują zastosowania do implementacji wzorców projektowych. Sytuacja wygląda podobnie w przypadku popularnych metryk programowania obiektowego. Trudność potęguje 1, 2 Politechnika Koszalińska, Wydział Elektroniki i Informatyki/Koszalin University of Technology, Department of Electronics and Computer Science. DOI: /reme
2 190 Rafał Wojszczyk, Piotr Ratuszniak pominięcie wzorców w sztywnych metodykach wytwórczych, natomiast w zwinnych metodykach przeszkodą jest zbyt luźne podejście do wykorzystania wzorców oraz niechęć do porzucania dotychczasowych przyzwyczajeń. Popularne narzędzia oraz środowiska programistyczne zapewniają jedynie podstawowe wsparcie dla wybranych wzorców. Ostatecznie wykorzystanie wzorców projektowych komplikuje brak standaryzacji, spowodowany w dużym stopniu różnorodnością implementacji. Istnieje zatem potrzeba opracowania nowej metody oceny jakości implementacji wzorców projektowych, która rozwiąże wymienione trudności. Metoda powinna być przede wszystkim przeznaczona do wzorców projektowych, bazować na paradygmacie programowania obiektowego, oraz powinna być kompatybilna z istniejącymi modelami jakości lub testowania oprogramowania, aby nie zabierać zbyt wiele czasu w codziennej pracy, w uzyskaniu odpowiedzi na pytanie czy dana implementacja wzorca spełnia wymaganą jakość?. Celem publikacji jest przedstawienie metody oceny jakości implementacji wzorców projektowych, która dostarcza wyniki niezbędne do odpowiedzi na w/w pytanie. Na podstawie w/w pytania w rozdziale drugim sformułowano problem badawczy. W rozdziale trzecim i czwartym omówiono kolejno jakość oprogramowania, wzorce projektowe oraz zwinne metodyki wytwórcze. Następnie w rozdziale piątym został szerzej przedstawiony kontekst problemu i proponowane rozwiązanie. Ostatni, szósty rozdział stanowi podsumowanie pracy. 2. Sformułowanie problemu Dany jest zbiór wzorców projektowych, dokładniej szablonów implementacji opisanych w postaci zgodnej z paradygmatem programowania obiektowego. Dany jest zbiór metryk odwzorowujących elementy wzorców projektowych w wartości liczbowe, zgodnie z wybranymi aspektami implementacji. Jednocześnie dany jest bazodanowy program komputerowy klasy ERP, który stanowi przedmiot umowy pomiędzy odbiorcą a dostawcą, w umowie określony jest minimalny poziom jakości. Dostępny jest kod źródłowy lub pośredni tego programu, w którym zaimplementowane są wyłącznie niewizualne warstwy aplikacji (tj. logika biznesowa, dziedzina, warstwy sterujące). W kodzie programu występują implementacje wzorców projektowych, dla każdego wystąpienia wzorca znane jest miejsce wystąpienia (tzw. rdzeń wzorca), wariant oraz kontekst implementacji. Dany jest również zbiór dopuszczalnych wyników metryk. Niezależnie od punktu widzenia, dostawcy czy też odbiorcy, problem sprowadza się do odpowiedzi na pytanie: Czy dana implementacja wzorców projektowych spełnia wymagany poziom jakości w wybranych aspektach? Odpowiedź na to pytanie jest istotna dla dostawcy oprogramowania jak również odbiorcy. Odbiorca często nie otrzymuje kodu źródłowego lub informacji o wykorzystanych rozwiązaniach w zamawianym produkcie, w takiej sytuacji nie ma możliwości sprawdzenia czy w produkcie zostały zaimplementowane pożądane rozwiązania. Zatem konieczne jest określenie w kontrakcie pewnego, wymagane- Przedsiębiorstwo we współczesnej gospodarce / Research on enterprise in modern economy
3 Trudności w implementacji wzorców projektowych w małych zespołach programistycznych 191 go poziomu jakości, co pomoże odbiorcy zweryfikować czy otrzymuje zamówiony produkt oraz ułatwi egzekwowanie roszczeń w przypadku różnic. Z perspektywy dostawcy jakość może być wykorzystana przez pracowników na wielu szczeblach przedsiębiorstwa: programiści oceniają czy wykonana przez nich praca spełnia wymagany poziom jakości, kierownicy decydują czy kolejny fragment oprogramowania może zostać oddany do klienta, natomiast menadżerowie oceniają czy projekt można już zakończyć. 3. Jakość oprogramowania i wzorce projektowe 3.1. Klasyczne metryki i modele jakości oprogramowania Badania nad wyznaczeniem jakości przedmiotów są prowadzone od wielu lat. W przypadku przedmiotów materialnych sytuacja wydaje się być prostsza, ponieważ podstawowe właściwości fizyczne łatwo zmierzyć. Oprogramowanie jest tworem niematerialnym, co przyczynia się do wzrostu trudności pomiarów oprogramowania (Pressman, 2004). W wielu źródłach jako najpopularniejszą definicję jakości oprogramowania wymieniane jest brak defektów w produkcie (Kan, 2006). To stwierdzenie dotyczy wyłącznie wąskiego zakresu własności oprogramowania. Mnogość trudno mierzalnych własności oprogramowania (np. złożoność, funkcjonalność) sprawia, iż wspomniana definicja jest stanowczo niewystarczająca aby współcześnie ją zastosować. Wychodząc od aksjomatu, za (Hołodnik-Janczura, 2007): jakość nie jest wielkością bezpośrednio mierzalną oraz jest właściwością zbiorczą, należałoby wskazać odpowiednie miary, które są niezbędne do wyznaczenia jakości. Pierwsze miary oprogramowania, wprowadzone w latach 60. XX wieku, dotyczyły łatwo mierzalnych cech np. ilość wierszy kodu LOC (ang. line of code). W kolejnych latach pojawiły się nowe, bardziej abstrakcyjne miary niż LOC, np.: liczba punktów funkcyjnych, złożoność cyklomatyczna (Kan, 2006). Rosnąca popularność paradygmatu programowania obiektowego spowodowała, że miary, które powstały w drugiej połowie XX wieku dla oprogramowania strukturalnego, stały się nieefektywne. Uzupełnieniem powstającej luki było opracowanie metryk oprogramowania obiektowego (Wojszczyk, 2013), które opierają się na statycznej analizie kodu źródłowego (inaczej metryki statyczne, w odróżnieniu metryki dynamiczne opierają się na uruchomionym programie komputerowym). Metryki oprogramowania obiektowego uwzględniają m.in.: dziedziczenie, hermetyzację, polimorfizm oraz abstrakcję. Szacuje się, że istnieje około 500 metryk oprogramowania obiektowego, jednak za najpopularniejsze uważane są metryki: Shyama R. Chidambera i Chrisa F. Kemerera (w skrócie CK); Metrics of Object Oriented Design (w skrócie MOOD); Roberta C. Martina. Metryki oprogramowania obiektowego są stosowane do wzorców projektowych, np. (Hernandez, 2011), jednakże należy pamiętać, że wspominane metryki są Quarterly Journal No 2/2017 (21)
4 192 Rafał Wojszczyk, Piotr Ratuszniak przeznaczone do badania kodu całych programów. Wzorce projektowe to fragmenty programów komputerowych, zatem wynik metryk zastosowanych do wzorców projektowych może być zaburzony w stosunku do zastosowana zgodnego z przeznaczeniem (Khaer, 2007). Stąd wykorzystanie metryk do wzorców projektowych wiąże się z modyfikacją lub odpowiednią nadinterpretacją wyników (Wojszczyk, 2013). Ewolucja paradygmatów programowania, zastosowania oprogramowania, dodatkowo badania nad jakością oprogramowania, doprowadziły do opracowania całościowych modeli jakości oprogramowania: CUMPRIMDA stworzone przez IBM oraz FRUPS stworzone przez Hewlett-Packard (Kan, 2006). Oba modele pozwalają na wyrażenie jakości oprogramowania w kilku kategoriach. Kategorii często nie można zmierzyć bezpośrednio, dlatego na wyrażenie każdej z nich składa się kilka charakterystyk, które są wyznaczane na podstawie wartości odpowiednich miar. Charakterystyki zawarte w w/w modelach obejmują szeroki zakres własności oprogramowania, jest to m.in.: funkcjonalność oprogramowania, łatwość instalacji, użytkowania, zarządzania oraz wydajność i niezawodność. Miary skojarzone z wymienionymi charakterystykami dotyczą walorów użytkowych oprogramowania, które nie wynikają bezpośrednio z wykorzystania wzorców projektowych, zatem nie powinny być stosowane do oceny implementacji wzorców projektowych. Obszerność wymienionych modeli jakości wiąże się z dużym nakładem pracy (kosztem), aby je skutecznie wykorzystać, na co nie mogą sobie pozwolić małe zespoły wytwórcze Liczbowe wyrażenie jakości Charakterystyki w klasycznych modelach jakości i metrykach oprogramowania są abstrakcyjne, wieloznaczne i możliwe do przedstawienia wyłącznie w sposób opisowy. Metryki, które uszczegóławiają charakterystyki powinny być jednoznaczne i obiektywne (Hołodnik-Janczura, 2007) (Kobyliński, 2003), aby to osiągnąć konieczne jest wyrażenie wyników metryk w postaci liczbowej (tzw. jakość techniczna (Bielawa, 2011)). Następnie na podstawie metryk można wyznaczyć jakość charakterystyk. Jakość wyrażona w postaci liczbowej umożliwia porównywanie produktów (w tym oprogramowania), co pozwala odróżnić od siebie pozornie jednakowe produkty (Durczak, 2011). Poprzez porównanie produktów można utworzyć listę rankingową, która jest często podstawą do podejmowania decyzji (np. o zakupie konkretnego oprogramowania użytkowego). Właściwy wybór przyczynia się do zminimalizowania skutków nietrafionej decyzji. Badana prowadzone nad liczbowym wyrażeniem wybranych własności wzorców projektowych dotyczą głównie zliczania liczby wystąpień wzorców (Grzanek, 2008), (Rasool, 2010), (Tsantalis, 2006). Liczba wystąpień w danym fragmencie kodu programu jest nie wystarczają informacją, aby uznać to za znamiona jakości implementacji wzorców (świadczy to jedynie o danym fragmencie kodu, a nie o wzorcach w nim zawartych). Przedsiębiorstwo we współczesnej gospodarce / Research on enterprise in modern economy
5 Trudności w implementacji wzorców projektowych w małych zespołach programistycznych Wzorce projektowe Christopher Alexander nazywany jest ojcem wzorców w budownictwie (Alexander, 2008), podobnie tzw. Banda Czterech, czyli E. Gamma, R. Helm, R. Johnson, J. Vlissides, autorzy (Gamma, 1995) nazywani są ojcami wzorców projektowych w programowaniu. Wzorce projektowe przedstawione w (Gamma, 1995) to za (McConnell, 2010): szkielety gotowych mechanizmów, które można wykorzystywać przy rozwiązywaniu typowych problemów projektowania i programowania. Bazując na różnych poziomach abstrakcji można wyróżnić następujący podział wzorców (Wojszczyk, 2017): architektury np. MVC, MVP), projektowe (w tym (Gamma, 1995)), implementacyjne (tzw. idiomy). Niezależnie od podziału wzorce są w pewnym sensie językiem komunikacji (Alexander, 2008) pomiędzy programistami, umożliwiają dzielenie się wiedzą, dokumentowanie projektu oraz kodu źródłowego. Wystąpienie przynajmniej nazwy wzorca w dowolnym artefakcie oprogramowania wskazuje, czego należy oczekiwać od tego artefaktu. Pozwala przewidzieć budowę, możliwości artefaktu oraz pomaga w wyszukiwaniu innych elementów skojarzonych z tym wzorcem. Znajomość i stosowanie wzorców w programowaniu jest niewątpliwą zaletą, która spotyka się z dużym uznaniem w społeczeństwie programistów. Badania (Czyczyn-Egird, 2016) wykazują, że wzorce projektowe są znacznie bardziej popularne w stosunku do wzorców architektury. Wykorzystanie wzorców projektowych pomaga uniknąć typowych, powtarzających się błędów (Gamma, 1995). Zatem powołując się na stwierdzenie, iż o jakości oprogramowania świadczy ilość błędów, można wywnioskować, że występowanie wzorców projektowych wpływa na wyższą jakość oprogramowania (w uproszczeniu im mniej błędów tym wyższa jakość). Szczegółowego wpływu wzorców projektowych na jakość oprogramowania można doszukiwać się dla każdego wzorca z osobna, ponieważ z każdym wzorcem projektowym skojarzony jest konkretny cel zastosowania (Fowler, 2005). Realizacja każdego celu wnosi do oprogramowania pewne korzyści, związane głównie z jakością wewnętrzną oprogramowania, tj. kodu źródłowego. Cele wzorców projektowych w uogólnionym ujęciu prowadzą m.in. do (Gamma, 1995): powtórnego wykorzystania fragmentów kodu, zmniejszenia pracochłonności potrzebnej na konserwację, rozbudowę oraz modyfikację oprogramowania, dodatkowo poprawiają łatwość zrozumienia i czytelność kodu źródłowego. Wymienione cele pokrywają się z charakterystykami trzeciej części normy ISO 9126 (Kobyliński, 2003). W procesie implementacji wzorców projektowych przyjęło się, że programista bazując na informacjach przedstawionych w literaturze powinien przy każdej implementacji danego wzorca wzbogacić wytwarzany przez siebie kod o wiele elementów związanych m.in. z nazewnictwem czy również z logiką biznesową, aby lepiej dopasować implementację wzorca do kontekstu programu. Te czynniki zwiększają złożoność i różnorodność implementacji wzorców, czego efektem jest występowanie wielu wariantów implementacji. Nieliczne metody (Nicholson, 2013) (Mehlitz, Quarterly Journal No 2/2017 (21)
6 194 Rafał Wojszczyk, Piotr Ratuszniak 2003) mają za cel wspomagać pracę programistów poprzez weryfikację implementacji wzorców (tj. wykazanie zgodności kodu z ogólnymi szablonami wzorców). Niestety, te metody nie są odporne na wspomnianą różnorodność implementacji oraz wymagają kompletnej dokumentacji projektowej, która najczęściej nie jest tworzona w zwinnych zespołach. 4. Zwinne metodyki wytwórcze 4.1. Manifest Agile W procesie wytwarzania oprogramowania powszechnie przyjęło się występowanie kilku faz (Roman, 2015): zbieranie wymagań, projektowanie systemu, implementacja, testowanie oraz konserwacja. Wymienione fazy zostały uporządkowane oraz zdekomponowane w różnych metodykach wytwórczych. Jedną z najbardziej rozbudowanych jest metodyka RUP (od ang. Rational Unified Process), w której zostały szczegółowo opisane: role udziałowców, wytwarzane artefakty (np. dokumentację, testy, kod źródłowy i inne), względną pracochłonność każdej fazy oraz wytyczne (np. implementację programu można rozpocząć dopiero, gdy zostanie zaprojektowane 90% przypadków użycia). Według badań (Forrester, 2009) 21% pracowników branży IT (ang. Information Technology) pracuje według tzw. sztywnych metodyk, do których należy RUP. Wzorce projektowe bardzo często wiązane są wyłącznie z etapem projektowania oprogramowania, a nie bezpośrednio z wytwarzaniem kodu źródłowego (Kerievsky, 2005). Jest to wąski punkt widzenia, ponieważ wzorce bardzo często wykorzystywane są w procesie refaktoryzacji kodu źródłowego (inaczej ulepszaniu) do wzorców projektowych (Kerievsky, 2005) (Fowler, 2011), oraz podczas naprawy i rozbudowy oprogramowania. Wymienione działania bez wątpienia są związane z wytwarzaniem bądź modyfikowaniem kodu źródłowego, podczas czego dokumentacja może być niedostępna lub przynajmniej nieaktualna po wykonanych zmianach. Ograniczona ilość dokumentacji jest cechą charakterystyczną zwinnych metodyk wytwórczych (Martin, 2008), ponieważ jeden z postulatów manifestu Agile stanowi, że ważniejszy jest działający program od szczegółowej dokumentacji. Manifest Agile to dokument opracowany w 2001 roku przez grupę ekspertów z branży IT (m.in. Martin Fowler, Robert C. Martin, Kent Beck). Dokument ma celu popularyzację wytwarzania oprogramowania, jest to alternatywa dla sztywnych metodyk. Popularyzowane wartości zostały spisane w postaci następujących postulatów: ludzie i interakcje ponad procesy i narzędzia, współpraca z klientem ponad negocjację umów, reagowanie na zmiany ponad realizację założonego planu oraz wspomniane działające oprogramowanie ponad szczegółową dokumentację. Z badań (Forrester, 2009) wynika, że 35% pracowników branży IT pracuje według metodyk zwinnych, jest to najliczniejsza grupa w przytoczonym badaniu. Przedsiębiorstwo we współczesnej gospodarce / Research on enterprise in modern economy
7 Trudności w implementacji wzorców projektowych w małych zespołach programistycznych Metodyka SCRUM Metodyka SCRUM jest najpopularniejsza pośród metodyk zwinnych. Wytwarzanie według metodyki Scrum składa się z tzw. sprintów, czyli przebiegów trwających od dwóch do czterech tygodni, realizowanych przez zespoły liczące od pięciu do dziewięciu osób. W ramach każdego przebiegu realizowany jest backlog sprintu, jest to lista prac nad produktem. Każdy dzień pracy członkowie zespołu Scrum rozpoczynają od krótkiego spotkania, podczas którego rozdzielane są zadania z backlogu sprintu oraz każdy z członków odpowiada na trzy pytania: co robiłeś do tej pory? Co będziesz robił? Jakie miałeś problemy?. Zadania dopierane są w taki sposób, aby mogły zostać wykonane w trakcie jednego roboczodnia. Dobrą praktyką jest, gdy wykonane zadanie zakończy się wydaniem potencjalnie gotowego fragmentu oprogramowania. Następnie przygotowany fragment wymaga przeprowadzenia podstawowych testów, z którymi równoważna może być ocena implementacji wzorców projektowych, zostało to zaznaczone na rys. 1. Codzienny Scrum 24 godzinny Testowanie oraz ocena implementacji wzorców projektowych Backlog Zadania Sprint 30 dni Potencjalnie gotowy produkt lub jego części Rys 1. Ogólny model metodyki Scrum Źródło: opracowanie własne 4.3. Trudności w implementacji wzorców projektowych Badania mające na celu zidentyfikowanie trudności z jakimi borykają się małe zespoły wytwórcze w implementacji wzorców projektowych zostały przeprowadzone na podstawie obserwacji z perspektywy Scrum Mastera (osoba odpowiedzialna za zgodność z zasadami metodyki Scrum), trwającej łącznie 3 lata w dwóch różnych zespołach oraz na podstawie wywiadów przeprowadzonych z niezależnymi członka- Quarterly Journal No 2/2017 (21)
8 196 Rafał Wojszczyk, Piotr Ratuszniak mi różnych zespołów. Wnioski wyciągnięte z badań uwidoczniły następujące trudności: decyzje o rozwiązaniu napotkanego problemu programistycznego poprzez implementację wzorca projektowego są podejmowane na szybko podczas porannych spotkań, następnie praca nad implementacją jest oddelegowana do jednego z członków zespołu (Wojszczyk, 2016); jedna osoba odpowiada za wiele różnych zagadnień, zatem jej umiejętności mogą być niewystarczające w zależności od powierzonego zadania (Mazur, 2010), a umiejętności w zakresie implementacji wzorców mogą być również ograniczone; programista chcąc poznać lub odświeżyć informacje o danym wzorcu projektowym zagląda do przykładowego kodu przedstawionego w jednym z katalogów, np. (Gamma, 1995), a następnie przystępuje do implementacji tego wzorca, bez skrupulatnego przemyślenia lub konsultacji z innymi członkami zespołu (Kerievsky, 2005); członkowie zespołu wytwórczego wybierają rozwiązania według swoich przyzwyczajeń oraz posiadanego stanu wiedzy, zamiast poznać nowe rozwiązania. Wyrażają szczególną niechęć do przyswajania wiedzy o innych paradygmatach lub językach programowania niż wykorzystywany przez nich (Wojszczyk, 2016); pozostawanie ciągle przy znanych rozwiązaniach oraz ograniczona ilość dokumentacji prowadzi do uwsteczniania się członków zespołu w zakresie implementacji rzadziej stosowanych wzorców projektowych oraz trudności w rozumieniu kompletnej dokumentacji projektowej, w tym zapominania elementów notacji UML. Skutkiem wymienionych sytuacji są różne usterki w oprogramowaniu, a w tym w implementacji wzorców projektowych oraz tzw. pozorna implementacja wzorców. Oprogramowanie zawierające pozornie zaimplementowane wzorce może działać prawidłowo oraz przechodzić wymagane testy, jednakże implementacja danego wzorca będzie niezgodna z zaleceniami i nie będzie spełniała postawionego celu. Problemy wynikające z tego faktu będą najbardziej zauważalne dopiero po pewnym czasie, np. przy próbie rozbudowy lub modyfikacji danego fragmentu oprogramowania. Istniejące metody zliczania wystąpień i weryfikacji implementacji wzorców projektowych nie sprawdzą się w rozwiązaniu wymienionych trudności. Jest to spowodowane w dużej mierze brakiem kompletnej dokumentacji w małych zespołach wytwórczych, jak również niską dokładnością tychże metod oraz brakiem wariantów (różnorodności implementacji, która wykraczałyby poza aktualny stan wiedzy programisty). Dodatkowo uzasadnia to pracochłonność potrzeba na wykorzystanie dodatkowych metod oraz konieczność przyswojenia odmiennego paradygmatu. Przedsiębiorstwo we współczesnej gospodarce / Research on enterprise in modern economy
9 Trudności w implementacji wzorców projektowych w małych zespołach programistycznych Przykład implementacji wzorca Singleton 5.1. Kontekst problemu Oprogramowanie zmienia się w czasie (Fowler, 2011), co powoduje konieczność refaktoryzacji. Na proces refaktorazacji składają się różne przekształcenia kodu źródłowego, m.in. usuwanie powtórzeń, upraszczanie złożonych elementów logiki, porządkowanie mało przejrzystego kodu oraz refaktoryzacja do wzorców projektowych. Prezentowany w dalszej części przykład refaktoryzacji został oparty na kodzie źródłowym programu komputerowego przeznaczonego do obsługi sprzętowych interfejsów kontrolno-pomiarowych, napisany jest w języku C# zgodnie z wzorcem architektury MVP, składa się z 158 klas. Program został wykonany przez jeden z obserwowanych zespołów wytwórczych, zatem można uznać ten program za odpowiedni materiał badawczy. Listing 1 (w tabeli 1) przedstawia fragment kodu źródłowego klasy odpowiedzialnej za komunikację z urządzeniem podłączonym do interfejsu szeregowego RS- 232 (tzw. port COM). Klienty tworzą egzemplarz tej klasy a następnie uzyskują dane poprzez metodę GetData. Przedstawiony kod działa prawidłowo, zdaje poprawnie testy jednostkowe (ang. unit tests) a wyniki wymienionych wcześniej metryk (zastosowanych zgodnie z przeznaczeniem) mieszczą się w zakresie dopuszczalnych wartości (Wojszczyk, 2013). Niestety, taka implementacja stwarza pewne zagrożenia: 1. Spadek wydajności w sytuacji częstych odczytów danych. Jest to spowodowane koniecznością utworzenia egzemplarza klasy i inicjalizacji połączenia z urządzeniem (urządzenie potrzebuje kilku sekund na start i wykonanie wewnętrznych testów). 2. Zablokowanie urządzenia w sytuacji niesynchronicznego utworzenia obiektu (np. z różnych wątków aplikacji), co może spowodować również przekłamania w zwracanych danych. Istnieje przynajmniej kilka rozwiązań, które mogą wyeliminować powyższe zagrożenia oraz ryzyko zwiększonych kosztów po stronie odbiorcy i dostawcy systemu. Jednym z zalecanych rozwiązań jest refaktoryzacja kodu z listingu 1 do wzorca projektowego Singleton (Fowler, 2011), listing 2 przedstawia kod po refaktoryzacji. Wzorzec Singleton zapewnia, że klasa będzie miała tylko jeden egzemplarz, który będzie dostępny globalnie. To ograniczenie jest wystarczające aby rozwiązać wymienione zagrożenia. Przedstawiony kod z listingu 2 działa prawidłowo i pozytywnie zdaje testy jednostkowe. Niestety również w tym przypadku występuje drobna pomyłka, która wynika z przeoczenia programisty. Pomyłka to pomięcie modyfikatora dostępu przy właściwości zwracającej instancję obiektu Singleton (wiersz static RS232Reader Instance na listingu 2). W języku C# brak modyfikatora dostępu równoważny jest modyfikatorowi internal, który zawęża zakres widoczności danego elementu. Taka, z pozoru drobna pomyłka, może spowodować znaczące i kosztowne utrudnienia Quarterly Journal No 2/2017 (21)
10 198 Rafał Wojszczyk, Piotr Ratuszniak w przyszłości, tj. po zakończeniu prac nad danym fragmentem programu, który zostanie zamknięty w postaci osobnej biblioteki.dll. Obserwacje pokazują, że wraz z upływem czasu kod źródłowy nie zawsze jest dostępny, nawet w obrębie tej samej organizacji. Występująca pomyłka uniemożliwi ponowne wykorzystanie tej biblioteki z jednoczesną rozbudową w nowym programie, tzn. instancja Singletonu nie jest dostępna dla innych bibliotek (w tym programów exe). Naprawa tej pomyłki na etapie tworzenia kodu pozwoli uniknąć dodatkowych kosztów. Tabela 1. Fragmenty kodu źródłowego programu Listing 1 Listing 2 public class RS232Reader { public RS232Reader) { this.initialize(); } private void Initialize() {... } public byte[] GetData() {... } } Listing 3 fragment... public static RS232DeviceReader Instance... Źródło: opracowanie własne public class RS232Reader { private RS232Reader instance; private RS232Reader() { this.initialize(); } static RS232Reader Instance { get { if (instance == null) instance = new RS232Reader(); return instance; } } private void Initialize() { } public byte[] GetData() { } } Przedstawiona pomyłka jest trudna do wykrycia w sposób automatyczny. Różnice pomiędzy wynikiem metryk dla listingu 2 i 3 (poprawiona pomyłka, widoczny jest wyłącznie jeden wiersz kodu z zaznaczoną zmianą) są pomijalne i w obu przypadkach mieszczą się w zakresie zalecanych wartości. Dedykowane metody zliczające ilość wystąpień wzorców projektowych w obu przypadkach wykryją to samo, dokładnie jedno, wystąpienie wzorca Singleton, natomiast metody weryfikacji implementacji wzorców projektowych wykażą zgodność implementacji z dopuszczalnymi rozwiązaniami. Przedsiębiorstwo we współczesnej gospodarce / Research on enterprise in modern economy
11 Trudności w implementacji wzorców projektowych w małych zespołach programistycznych Proponowane rozwiązanie problemu Listingi 2 i 3 prezentują dwa, pozornie podobne fragmenty kodu. Jak zostało już wspomniane, aby porównać dwa podobne elementy należy wyznaczyć jakość tych elementów (Durczak, 2011). Następnie dysponując jakością wyrażoną w postaci liczbowej można ocenić, który element jest lepszy w zadanym kontekście i stanowi właściwe rozwiązanie, oraz który z elementów spełnia wymagany poziom jakości. W celu wyrażenia jakości w sposób liczbowy konieczne jest wskazanie odpowiednich metryk. Aby uwidocznić opisaną wcześniej pomyłkę należy wykorzystać metrykę m 1 M wyrażoną wzorem (1). Metryka ta kwantyfikuje modyfikator dostępu instancji obiektu Singleton. Tabela 2 przedstawia interpretacje możliwych wyników w przyjętym kontekście (udostępnianie globalnego zasobu), zalecany wynik to 2 (modyfikator publiczny). 0,gdy private f(x) = { 1,gdy internal lub domyślny (1) 2,gdy public gdzie x to element składowy udostępniający instancję obiektu Singleton, tzn. pole, metoda lub właściwość. Tabela 2. Wyniki oraz interpretacja metryki m 1. Modyfikator dostępu Wynik metryki Interpretacja public 2 Internal lub domyślny 1 private 0 Źródło: opracowanie własne Zalecane, udostępnia instancję Singletonu wszystkim klasom, nie ogranicza wykorzystania. Dopuszczalne, jednakże ogranicza zasięg widoczność wyłącznie do biblioteki. Może powodować problemy przy próbie integracji z oprogramowanie zawierającym wystąpienie wzorca. Niedopuszczalne, uniemożliwi dostęp do instancji, wzorzec nie będzie spełniał swojego przeznaczenia. Wynik metryki m 1 dla listingu 2 (dokładniej dla właściwości udostępniającej obiekt) to y = 1, natomiast dla listingu 3 z = 2. Z tabeli 1 wynika, że zalecany jest najwyższy wynik metryki, zatem MAX(y, z) = z. Implementacja z listingu 3 zagwarantuje wzrost jakości w przyjętym kontekście. Quarterly Journal No 2/2017 (21)
12 200 Rafał Wojszczyk, Piotr Ratuszniak 6. Podsumowanie W pracy zostały przedstawione wybrane zagadnienia związane z implementacją wzorców projektowych przez małe zespoły wytwórcze, pracujące według metodyk zwinnych. Zostały przedstawione również trudności związane z implementacją wzorców projektowych oraz zastosowanie autorskiej metody, która wspomaga rozwiązanie tych trudności. Zaletą metody jest wykorzystanie elementów bazujących bazowych programowania obiektowego oraz wyrażenie jakości implementacji wzorców projektowych w postaci liczbowej. Dalsze badania przewidują doszczegółowienie metryk dla wybranych wzorców projektowych, a następnie przeprowadzenie praktycznego eksperymentu z udziałem zespołu programistów pracującego według metodyki Scrum. Bibliografia 1. Alexander C. (2008) Język wzorców. Miasta, budynki, konstrukcja. GWP, Gdańsk. 2. Bielawa A. (2011) Postrzeganie i rozumienie jakości przegląd definicji jakości, w: Studia i Prace Wydziału Nauk Ekonomicznych i Zarządzania, nr Czyczyn-Egird D., Wojszczyk R. (2016) Determining the popularity of design patterns used by programmers based on the analysis of questions and answers on stackoverflow.com Social Network, w: Communications in Computer and Information Science, vol. 608, s Durczak K. (2011) System oceny jakości maszyn rolniczych, Rozprawa naukowa nr 418, Wydawnictwo Uniwersytetu Przyrodniczego w Poznaniu. 5. Fowler M. i inni (2005) Architektura systemów zarządzania przedsiębiorstwem Wzorce projektowe. Helion, Gliwice. 6. Fowler M. i inni (2011) Refaktoryzacja. Ulepszanie struktury istniejącego kodu. Helion, Gliwice. 7. Gamma E. i inni (1995) WZORCE PROJEKTOWE Elementy oprogramowania wielokrotnego użytku. Helion, Gliwice. 8. Grzanek K. (2008) Realizacja systemu wyszukiwania wystąpień wzorców projektowych w oprogramowaniu przy zastosowaniu metod analizy statycznej kodu źródłowego, Dysertacja doktorska, Politechnika Częstochowska, Łódź. 9. Hernandez J. i inni (2011) Selection of Metrics for Predicting the Appropriate Application of design patterns, 2 nd Asian Conference on Pattern Languages of Programs. 10. Hołodnik-Janczura G. (2007) Badanie jakości produktu informatycznego metodą wartościowania. Badania Operacyjne i Decyzje, Oficyna Wydawnicza Politechniki Wrocławskiej, s Kan S. H. (2006) Metryki i modele w inżynierii jakości oprogramowania. PWN SA, Warszawa. 12. Kerievsky J. (2005) Refaktoryzacja do wzorców projektowych. Helion, Gliwice. 13. Khaer Md. A. i in. (2007) An Empirical Analysis of Software Systems for Measurement of Design Quality Level Based on Design Patterns, Computer and Information Technology, 10th international conference on Computer and Information Technology, p. 1 6, Dhaka. Przedsiębiorstwo we współczesnej gospodarce / Research on enterprise in modern economy
13 Trudności w implementacji wzorców projektowych w małych zespołach programistycznych Kobyliński A. (2003) ISO/IEC 9126 analiza modelu jakości produktów programowych, w: Systemy Wspomagania Organizacji Martin R., Martin M (2008): Agile. Programowanie zwinne: zasady, wzorce i praktyki zwinnego wytwarzania oprogramowania w C#. Helion, Gliwice. 16. Mazur Zygmunt i inni (2010) Kontrola jakości wewnętrznej i kwalifikacje zespołu projektowego a jakość systemu baz danych, w: Studia Informatica, vol. 31, nr 2B. 17. Mehlitz P.C., Penix J. (2003) Design for Verification Using Design Patterns to Build Reliable Systems, 6th Workshop on Component-Based Software Eng. 18. McConnell S. (2010) Kod Doskonały. Helion, Gliwice. 19. Nicholson J. et al. (2013) Automated verification of desing patterns: A case study [w:] Science of Computer Programing, Vol. 80, Part B, p , Elsevier 20. Pressman R.S. (2004) Inżynieria oprogramowania, praktyczne podejście do inżynierii oprogramowania. WNT, Warszawa. 21. Rasool G. (2010) Customizable Feature based Design Pattern Recognition Integrating Multiple Techniques, Dysertacja Doktorska, Technische Universitat Ilmenau, Ilmenau. 22. Roman A. (2015) Testowanie i jakość oprogramowania. Metody, narzędzia, techniki. Wydawnictwo Naukowe PWN, Warszawa. 23. Tsantalis N. et al. (2006) Design Pattern Detection Using Similarity Scoring w IEEE Transactions on Software Engineering, vol. 32, Issue: 11, s Wojszczyk R. (2013) Zestawienie metryk oprogramowania obiektowego opartych na statycznej analizie kodu źródłowego, w: Zarządzanie projektami i modelowanie procesów, s Wojszczyk R., Khadzhynov W. (2017) The Process of Verifying the Implementation of Design Patterns Used Data Models, w: Advances in Intelligent Systems and Computing, vol. 521, s DIFFICULTIES IN IMPLEMENTATION OF DESIGN PATTERN IN SMALL DEVELOPERS TEAM Abstract There are many small businesses create their own, original software or performing services for third parties, in IT market. Small teams often work by the so-called. agile methodologies, which are limited by the amount of project documentation, and most of the procedures considerably simplified. However, small teams not reject good practice, including design patterns. The aim of the article is to present some difficulties faced by small development teams in the implementation of design patterns, and to present the author s method of supporting an increase in the quality of implementation of design patterns. Key words: Agile Manifesto, SCRUM, software development, design patterns. Quarterly Journal No 2/2017 (21)
Model oceny jakości implementacji wzorców projektowych
Model oceny jakości implementacji wzorców projektowych mgr inż. Rafał Wojszczyk Promotor: prof. dr hab. inż. Volodymyr Khadzhynov Promotor pomocniczy: dr inż. Piotr Ratuszniak Politechnika Koszalińska
Model oceny jakości implementacji wzorców projektowych
Model oceny jakości implementacji wzorców projektowych mgr inż. Rafał Wojszczyk Promotor: prof. dr hab. inż. Volodymyr Khadzhynov Promotor pomocniczy: dr inż. Piotr Ratuszniak Politechnika Koszalińska
MODEL OCENY JAKOŚCI IMPLEMENTACJI WZORCÓW PROJEKTOWYCH W OPROGRAMOWANIU
MODEL OCENY JAKOŚCI IMPLEMENTACJI WZORCÓW PROJEKTOWYCH W OPROGRAMOWANIU Rafał WOJSZCZYK Streszczenie: Istnieje wiele metod i dobrych praktyk mających na celu zapewnienie jakości wytwarzanego oprogramowania,
Programowanie obiektowe
Programowanie obiektowe Laboratorium 11 - przegląd wybranych wzorców mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 24 maja 2017 1 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe Wzorce
Koncepcja hybrydowej metody do oceny jakości zaimplementowanych wzorców projektowych
Rafał Wojszczyk Wydział Elektroniki i Informatyki Politechnika Koszalińska rafal.wojszczyk@tu.koszalin.pl Koncepcja hybrydowej metody do oceny jakości zaimplementowanych wzorców projektowych Słowa kluczowe:
Wzorce projektowe i refaktoryzacja
Wzorce projektowe i refaktoryzacja Paweł Kozioł p.koziol@students.mimuw.edu.pl 18.01.2005 Moja praca magisterska Narzędzie dla środowiska Eclipse wspierające stosowanie wzorców projektowych J2EE Prowadzący:
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, 2004 Zofia Kruczkiewicz 1. Przedstaw znaczenie oprogramowania we współczesnym świecie x 1 2. Jaki wpływ na ludzi, komunikację
Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton
Dzisiejszy wykład Wzorce projektowe Visitor Client-Server Factory Singleton 1 Wzorzec projektowy Wzorzec nazwana generalizacja opisująca elementy i relacje rozwiązania powszechnie występującego problemu
Błędy procesu tworzenia oprogramowania (Badania firmy Rational Software Corporation)
Błędy procesu tworzenia oprogramowania (Badania firmy Rational Software Corporation) Zarządzanie wymaganiami Ad hoc (najczęściej brak zarządzania nimi) Niejednoznaczna, nieprecyzyjna komunikacja Architektura
Programowanie Zespołowe
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
Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32
Analiza i projektowanie oprogramowania Analiza i projektowanie oprogramowania 1/32 Analiza i projektowanie oprogramowania 2/32 Cel analizy Celem fazy określania wymagań jest udzielenie odpowiedzi na pytanie:
Opis metodyki i procesu produkcji oprogramowania
Opis metodyki i procesu produkcji oprogramowania Rational Unified Process Rational Unified Process (RUP) to iteracyjny proces wytwarzania oprogramowania opracowany przez firmę Rational Software, a obecnie
Analiza i projektowanie obiektowe w UML Kod przedmiotu
Analiza i owanie obiektowe w UML - opis przedmiotu Informacje ogólne Nazwa przedmiotu Analiza i owanie obiektowe w UML Kod przedmiotu 11.3-WK-MATP-UML-W-S14_pNadGen5M44E Wydział Kierunek Wydział Matematyki,
Wykorzystanie modeli danych do weryfikacji implementacji wzorców projektowych
Rafał Wojszczyk Zakład Podstaw Zarządzania i Informatyki Wydział Elektroniki i Informatyki Politechnika Koszalińska rafal.wojszczyk@tu.koszalin.pl Włodzimierz Khadzhynov Katedra Inżynierii Komputerowej
Wykład 1 Inżynieria Oprogramowania
Wykład 1 Inżynieria Oprogramowania Wstęp do inżynierii oprogramowania. Cykle rozwoju oprogramowaniaiteracyjno-rozwojowy cykl oprogramowania Autor: Zofia Kruczkiewicz System Informacyjny =Techniczny SI
Etapy życia oprogramowania
Modele cyklu życia projektu informatycznego Organizacja i Zarządzanie Projektem Informatycznym Jarosław Francik marzec 23 w prezentacji wykorzystano również materiały przygotowane przez Michała Kolano
Wskazówki projektowe. Programowanie Obiektowe Mateusz Cicheński
Wskazówki projektowe Programowanie Obiektowe Mateusz Cicheński Przydatne zasady SOLID Wzorce struktury aplikacji MVC MVP MVVM Metody wytwarzania oprogramowania Manifest Zwinnego Wytwarzania Oprogramowania
Ogólne określenie wymagań. Ogólny projekt. Budowa systemu. Ocena systemu. Nie. Tak. System poprawny. Wdrożenie. Określenie.
Inżynieria I Andrzej Jaszkiewicz Kontakt Andrzej Jaszkiewicz p. 8, CW Berdychowo tel. 66 52 933 ajaszkiewicz@cs.put.poznan.pl Rynek 2008 Świat 304 miliardy $ (451 miliardów 2013F) Bez wytwarzanego na własne
Inżynieria oprogramowania. Jan Magott
Inżynieria oprogramowania Jan Magott Literatura do języka UML G. Booch, J. Rumbaugh, I. Jacobson, UML przewodnik użytkownika, Seria Inżynieria oprogramowania, WNT, 2001, 2002. M. Fowler, UML w kropelce,
KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Inżynieria oprogramowania, C12
KARTA PRZEDMIOTU 1. Informacje ogólne Nazwa przedmiotu i kod (wg planu studiów): Nazwa przedmiotu (j. ang.): Kierunek studiów: Specjalność/specjalizacja: Poziom kształcenia: Profil kształcenia: Forma studiów:
Feature Driven Development
Feature Driven Development lekka metodyka tworzenia oprogramowania Kasprzyk Andrzej IS II Wstęp Feature Driven Development (FDD) to metodyka tworzenia oprogramowania, która wspomaga zarządzanie fazami
Projektowanie obiektowe Wzorce projektowe. Wprowadzenie do wzorców projektowych
Projektowanie obiektowe Wzorce projektowe Wprowadzenie do wzorców projektowych 1 Zagadnienia Katalog wzorców projektowych wg Gang of Four Zasady projektowania obiektowego S O L I D MVC - Model-Widok-Kontroler
PRZEWODNIK PO PRZEDMIOCIE
Nazwa przedmiotu: Kierunek: Inżynieria Biomedyczna Rodzaj przedmiotu: obowiązkowy moduł specjalności informatyka medyczna Rodzaj zajęć: wykład, laboratorium PROGRAMOWANIE OBIEKTOWE Object-Oriented Programming
12) Wadą modelu kaskadowego jest: Zagadnienia obowiązujące na egzaminie z inżynierii oprogramowania: 13) Wadą modelu opartego na prototypowaniu jest:
Zagadnienia obowiązujące na egzaminie z inżynierii oprogramowania: 1) Oprogramowanie to: 2) Produkty oprogramowania w inżynierii oprogramowania można podzielić na: 3) W procesie wytwarzania oprogramowania
Wprowadzenie do programowania aplikacji mobilnych
Wprowadzenie do programowania aplikacji mobilnych dr Przemysław Juszczuk dr Przemysław Juszczuk Trochę historii Idea wzorców projektowych wywodzi się jeszcze z wczesnych lat osiemdziesiątych ubiegłego
Etapy życia oprogramowania. Modele cyklu życia projektu. Etapy życia oprogramowania. Etapy życia oprogramowania
Etapy życia oprogramowania Modele cyklu życia projektu informatycznego Organizacja i Zarządzanie Projektem Informatycznym Jarosław Francik marzec 23 Określenie wymagań Testowanie Pielęgnacja Faza strategiczna
Akademia ADB Wykład I Praca w grupie i jakość kodu
Akademia ADB Wykład I Praca w grupie i jakość kodu Ale zanim zaczniemy... https://www.adbglobal.com/adb-tech-talk/ Wtorek, 24 X 2017, 18:00 w Filharmonii Zielonogórskiej Kto pracuje nad projektem? Nad
Rysunkowy tutorial Możesz swobodnie dystrybuować ten plik jeśli pozostawisz go w nietkniętym stanie. Możesz także cytować jego fragmenty umieszczając w tekście odnośnik http://mbartyzel.blogspot.com Jak
Egzamin / zaliczenie na ocenę*
WYDZIAŁ PODSTAWOWYCH PROBLEMÓW TECHNIKI Zał. nr 4 do ZW33/01 KARTA PRZEDMIOTU Nazwa w języku polskim : INŻYNIERIA OPROGRAMOWANIA Nazwa w języku angielskim: SOFTWARE ENGINEERING Kierunek studiów (jeśli
Podstawy modelowania programów Kod przedmiotu
Podstawy modelowania programów - opis przedmiotu Informacje ogólne Nazwa przedmiotu Podstawy modelowania programów Kod przedmiotu 11.3-WI-INFP-PMP Wydział Kierunek Wydział Informatyki, Elektrotechniki
Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2011/2012
1/5 Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2011/2012 Nazwa przedmiotu: Analiza i projektowanie systemów informatycznych Kierunek: Specjalność: Tryb studiów: INFORMATYKA Kod/nr Dzienne
Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki 2011. Promotor dr inż. Paweł Figat
Grzegorz Ruciński Warszawska Wyższa Szkoła Informatyki 2011 Promotor dr inż. Paweł Figat Cel i hipoteza pracy Wprowadzenie do tematu Przedstawienie porównywanych rozwiązań Przedstawienie zalet i wad porównywanych
PYTANIA PRÓBNE DO EGZAMINU NA CERTYFIKAT ZAAWANSOWANY REQB KLUCZ ODPOWIEDZI. Część DODATEK
KLUCZ ODPOWIEDZI Część DODATEK 8.1 9.4 PYTANIA PRÓBNE DO EGZAMINU NA CERTYFIKAT ZAAWANSOWANY REQB Na podstawie: Syllabus REQB Certified Professional for Requirements Engineering, Advanced Level, Requirements
Nazwa przedmiotu: MODELOWANIE I ANALIZA SYSTEMÓW INFORMATYCZNYCH. Modeling and analysis of computer systems Forma studiów: Stacjonarne
Nazwa przedmiotu: MODELOWANIE I ANALIZA SYSTEMÓW INFORMATYCZNYCH Kierunek: Informatyka Modeling and analysis of computer systems Forma studiów: Stacjonarne Rodzaj przedmiotu: obowiązkowy w ramach specjalności:
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, 2004 Zofia Kruczkiewicz 1. Przedstaw znaczenie oprogramowania we współczesnym świecie. x 3 2. Jaki wpływ na ludzi, komunikację
PRZEWODNIK PO PRZEDMIOCIE
Nazwa przedmiotu: MODELOWANIE I ANALIZA SYSTEMÓW INFORMATYCZNYCH Modeling and analysis of computer systems Kierunek: Informatyka Forma studiów: Stacjonarne Rodzaj przedmiotu: Poziom kwalifikacji: obowiązkowy
Programowanie obiektowe - 1.
Programowanie obiektowe - 1 Mariusz.Masewicz@cs.put.poznan.pl Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która
Programowanie zespołowe
Programowanie zespołowe Laboratorium 4 - modele tworzenia oprogramowania, manifest Agile i wstęp do Scruma mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 14 marca 2017 1 / 21 mgr inż. Krzysztof
Projektowanie systemów informatycznych. wykład 6
Projektowanie systemów informatycznych wykład 6 Iteracyjno-przyrostowy proces projektowania systemów Metodyka (ang. methodology) tworzenia systemów informatycznych (TSI) stanowi spójny, logicznie uporządkowany
Podejście tradycyjne. plan wykonanie sekwencyjna natura wykonywanych zadań
Metodyka Scrum Podejście tradycyjne plan wykonanie sekwencyjna natura wykonywanych zadań analiza i definiowanie wymagań projektowanie rozwiązań kodowanie rozwiązań testowanie odstępstwo od planu jest kosztowne
Wzorce projektowe Michał Węgorek
Wzorce projektowe Michał Węgorek Wzorce projektowe Plan prezentacji Co to jest i po co to jest? Podział Najczęściej spotykane wzorce Bibliografia Co to jest i po co to jest? Wzorzec projektowy (ang. Design
Podstawy Programowania Obiektowego
Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja
Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl
Komputerowe Systemy Przemysłowe: Modelowanie - UML Arkadiusz Banasik arkadiusz.banasik@polsl.pl Plan prezentacji Wprowadzenie UML Diagram przypadków użycia Diagram klas Podsumowanie Wprowadzenie Języki
Jarosław Kuchta Jakość Systemów Informatycznych Jakość Oprogramowania. Pomiary w inżynierii oprogramowania
Jarosław Kuchta Jakość Systemów Informatycznych Jakość Oprogramowania Pomiary w inżynierii oprogramowania Cel pomiarów ocena jakości produktu ocena procesów (produktywności ludzi) stworzenie podstawy dla
Web frameworks do budowy aplikacji zgodnych z J2EE
Web frameworks do budowy aplikacji zgodnych z J2EE Jacek Panachida promotor: dr Dariusz Król Przypomnienie Celem pracy jest porównanie wybranych szkieletów programistycznych o otwartym kodzie źródłowym
Organizacja procesu projektowania, rozwoju i serwisowania systemu wspomagającego zarzadzanie uczelnią
Organizacja procesu projektowania, rozwoju i serwisowania systemu wspomagającego zarzadzanie uczelnią Marek Bieniasz Sławomir Umpirowicz Piotr Miszewski Kraków, 10 13 września 2012 Plan prezentacji Informacje
Zasady organizacji projektów informatycznych
Zasady organizacji projektów informatycznych Systemy informatyczne w zarządzaniu dr hab. inż. Joanna Józefowska, prof. PP Plan Definicja projektu informatycznego Fazy realizacji projektów informatycznych
Technologie obiektowe
WYKŁAD dr inż. Paweł Jarosz Instytut Informatyki Politechnika Krakowska mail: pjarosz@pk.edu.pl LABORATORIUM dr inż. Paweł Jarosz (3 grupy) mgr inż. Piotr Szuster (3 grupy) warunki zaliczenia Obecność
Usługa: Audyt kodu źródłowego
Usługa: Audyt kodu źródłowego Audyt kodu źródłowego jest kompleksową usługą, której głównym celem jest weryfikacja jakości analizowanego kodu, jego skalowalności, łatwości utrzymania, poprawności i stabilności
Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego
Inżynieria oprogramowania (Software Engineering) Wykład 1
Inżynieria oprogramowania (Software Engineering) Wykład 1 Wprowadzenie do inżynierii oprogramowania Zarządzanie przedmiotem Wydział: WEiI Katedra: KIK Web site: http://moskit.weii.tu.koszalin.pl/~swalover/
Wzorce projektowe ArrayList. Aplikacja i zdarzenia. Paweł Chodkiewicz
Wzorce projektowe ArrayList DataGridView Aplikacja i zdarzenia Paweł Chodkiewicz Wzorzec uniwersalne rozwiązanie często powtarzających się problemów. Wzorzec opisuje problem, który powtarza się wielokrotnie
Analiza i projektowanie aplikacji Java
Analiza i projektowanie aplikacji Java Modele analityczne a projektowe Modele analityczne (konceptualne) pokazują dziedzinę problemu. Modele projektowe (fizyczne) pokazują system informatyczny. Utrzymanie
SYSTEMY INFORMATYCZNE ćwiczenia praktyczne
SYSTEMY INFORMATYCZNE ćwiczenia praktyczne 12.03.2019 Piotr Łukasik p. 373 email: plukasik@agh.edu.pl / lukasik.pio@gmail.com www.lukasikpiotr.com Zakres tematyczny implementacji projektu informatycznego
Technologie obiektowe Object-oriented technologies. Informatyka II stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny)
Załącznik nr 7 do Zarządzenia Rektora nr 10/12 z dnia 21 lutego 2012r. KARTA MODUŁU / KARTA PRZEDMIOTU Kod modułu Nazwa modułu Nazwa modułu w języku angielskim Obowiązuje od roku akademickiego 2012/13
Modelowanie diagramów klas w języku UML. Łukasz Gorzel 244631@stud.umk.pl 7 marca 2014
Modelowanie diagramów klas w języku UML Łukasz Gorzel 244631@stud.umk.pl 7 marca 2014 Czym jest UML - Unified Modeling Language - Rodzina języków modelowania graficznego - Powstanie na przełomie lat 80
Spis treúci. 1. Wprowadzenie... 13
Księgarnia PWN: W. Dąbrowski, A. Stasiak, M. Wolski - Modelowanie systemów informatycznych w języku UML 2.1 Spis treúci 1. Wprowadzenie... 13 2. Modelowanie cele i metody... 15 2.1. Przegląd rozdziału...
Lekkie metodyki. tworzenia oprogramowania
Lekkie metodyki tworzenia oprogramowania Programowanie zwinne ( Agile software development) grupa metodyk wytwarzania oprogramowania opartego o programowanie iteracyjne (model przyrostowy). Wymagania oraz
Zakres wykładu. Podstawy InŜynierii Oprogramowania
Zakres wykładu Pojęcia podstawowe InŜynierii Oprogramowania Proces wytwarzania oprogramowania Artefakty procesu wytwarzania i ich modele Jakość oprogramowania Literatura: [1] Sacha K., InŜynieria oprogramowania,
problem w określonym kontekście siły istotę jego rozwiązania
Wzorzec projektowy Christopher Alexander: Wzorzec to sprawdzona koncepcja, która opisuje problem powtarzający się wielokrotnie w określonym kontekście, działające na niego siły, oraz podaje istotę jego
KARTA MODUŁU KSZTAŁCENIA
KARTA MODUŁU KSZTAŁCENIA I. Informacje ogólne 1 Nazwa modułu kształcenia Inżynieria 2 Nazwa jednostki prowadzącej moduł Instytut Informatyki, Zakład Informatyki Stosowanej 3 Kod modułu (wypełnia koordynator
Narzędzia CASE dla.net. Łukasz Popiel
Narzędzia CASE dla.net Autor: Łukasz Popiel 2 Czym jest CASE? - definicja CASE (ang. Computer-Aided Software/Systems Engineering) g) oprogramowanie używane do komputerowego wspomagania projektowania oprogramowania
Zaawansowane programowanie w C++ (PCP)
Zaawansowane programowanie w C++ (PCP) Wykład 4 - wzorce projektowe. dr inż. Robert Nowak - p. 1/18 Powtórzenie klasy autonomiczne tworzenie nowych typów: dziedziczenie i agregacja dziedziczenie: przedefiniowywanie
Programowanie obiektowe
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.
Model referencyjny doboru narzędzi Open Source dla zarządzania wymaganiami
Politechnika Gdańska Wydział Zarządzania i Ekonomii Katedra Zastosowań Informatyki w Zarządzaniu Zakład Zarządzania Technologiami Informatycznymi Model referencyjny Open Source dla dr hab. inż. Cezary
INŻYNIERIA OPROGRAMOWANIA
INSTYTUT INFORMATYKI STOSOWANEJ 2013 INŻYNIERIA OPROGRAMOWANIA Inżynieria Oprogramowania Proces ukierunkowany na wytworzenie oprogramowania Jak? Kto? Kiedy? Co? W jaki sposób? Metodyka Zespół Narzędzia
Maciej Oleksy Zenon Matuszyk
Maciej Oleksy Zenon Matuszyk Jest to proces związany z wytwarzaniem oprogramowania. Jest on jednym z procesów kontroli jakości oprogramowania. Weryfikacja oprogramowania - testowanie zgodności systemu
Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2017
Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2017 1 Wzorce podstawowe 1.1 Interface vs Abstract class class InterfaceAbstractClass
1. WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI
KARTA PRZEDMIOTU przedmiotu Stopień studiów i forma Rodzaj przedmiotu Grupa kursów Zaawansowane techniki analizy systemowej oparte na modelowaniu warsztaty Studia podyplomowe Obowiązkowy NIE Wykład Ćwiczenia
PRZEWODNIK PO PRZEDMIOCIE
Nazwa przedmiotu: PROJEKTOWANIE SYSTEMÓW INFORMATYCZNYCH I KARTA PRZEDMIOTU CEL PRZEDMIOTU PRZEWODNIK PO PRZEDMIOCIE C1. Podniesienie poziomu wiedzy studentów z inżynierii oprogramowania w zakresie C.
tel. (+48 81) 538 47 21/22 fax (+48 81) 538 45 80 Wykład 30 21 Ćwiczenia Laboratorium 30 21 Projekt
0-618 Lublin tel. (+8 81) 58 7 1/ fax (+8 81) 58 5 80 Przedmiot: Rok: INF I Inżynieria Semestr: V Rodzaj zajęć i liczba godzin: Studia stacjonarne Studia niestacjonarne Wykład 0 1 Ćwiczenia Laboratorium
Modelowanie i Programowanie Obiektowe
Modelowanie i Programowanie Obiektowe Wykład I: Wstęp 20 październik 2012 Programowanie obiektowe Metodyka wytwarzania oprogramowania Metodyka Metodyka ustandaryzowane dla wybranego obszaru podejście do
Autor: mgr inż. DANIEL CZYCZYN-EGIRD Opiekun naukowy: dr hab. inż. profesor PK ADAM SŁOWIK
Autor: mgr inż. DANIEL CZYCZYN-EGIRD Opiekun naukowy: dr hab. inż. profesor PK ADAM SŁOWIK Politechnika Koszalińska 2017 1. Zapewnienie jakości w inżynierii oprogramowania 2. Modele predykcji defektów
Efekt kształcenia. Ma uporządkowaną, podbudowaną teoretycznie wiedzę ogólną w zakresie algorytmów i ich złożoności obliczeniowej.
Efekty dla studiów pierwszego stopnia profil ogólnoakademicki na kierunku Informatyka w języku polskim i w języku angielskim (Computer Science) na Wydziale Matematyki i Nauk Informacyjnych, gdzie: * Odniesienie-
Wykład VII. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej
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
Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1
Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1 Zofia Kruczkiewicz 1 Zunifikowany iteracyjno- przyrostowy proces tworzenia oprogramowania kiedy? Przepływ działań Modelowanie przedsiębiorstwa
Mariusz Trzaska Modelowanie i implementacja systemów informatycznych
Mariusz Trzaska Modelowanie i implementacja systemów informatycznych Notka biograficzna Dr inż. Mariusz Trzaska jest adiunktem w Polsko-Japońskiej Wyższej Szkole Technik Komputerowych, gdzie zajmuje się
Problemy projektowania obiektowego. Czy podobne problemy można rozwiązywac w podobny sposób?
Problemy projektowania obiektowego Czy podobne problemy można rozwiązywac w podobny sposób? Czy te problemy można przedstawić w abstrakcyjny sposób, tak aby były pomocne w tworzeniu rozwiązań w różnych
Rok akademicki: 2014/2015 Kod: IEL s Punkty ECTS: 5. Poziom studiów: Studia I stopnia Forma i tryb studiów: -
Nazwa modułu: Programowanie obiektowe Rok akademicki: 2014/2015 Kod: IEL-1-408-s Punkty ECTS: 5 Wydział: Informatyki, Elektroniki i Telekomunikacji Kierunek: Elektronika Specjalność: - Poziom studiów:
Główne założenia XP. Prostota (Simplicity) Komunikacja (Communication) Sprzężenie zwrotne (Feedback) Odwaga (Agressiveness)
Extreme programming Główne założenia XP Prostota (Simplicity) Komunikacja (Communication) Sprzężenie zwrotne (Feedback) Odwaga (Agressiveness) Praktyki Planowanie: Planowanie releasu Planowanie iteracji
Programowanie obiektowe
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 03 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas abstrakcyjnych i interfejsów. Wprowadzenie
Programowanie obiektowe
Laboratorium z przedmiotu - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia. Wprowadzenie teoretyczne.
Analiza i projektowanie obiektowe 2016/2017. Wykład 11: Zaawansowane wzorce projektowe (1)
Analiza i projektowanie obiektowe 2016/2017 Wykład 11: Zaawansowane wzorce projektowe (1) Jacek Marciniak Wydział Matematyki i Informatyki Uniwersytet im. Adama Mickiewicza 1 Plan wykładu 1. Wzorce projektowe
REFERAT PRACY DYPLOMOWEJ
REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i implementacja środowiska do automatyzacji przeprowadzania testów aplikacji internetowych w oparciu o metodykę Behavior Driven Development. Autor: Stepowany
Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, 2004. Zofia Kruczkiewicz
Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, 2004 Zofia Kruczkiewicz 1. Przedstaw znaczenie oprogramowania we współczesnym świecie 2. Jaki wpływ na ludzi, komunikację
E-ID1S-08-s5. Informatyka. I stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny)
KARTA MODUŁU / KARTA PRZEDMIOTU Kod modułu E-ID1S-08-s5 Nazwa modułu Nazwa modułu w języku angielskim Załącznik nr 7 do Zarządzenia Rektora nr 10/12 z dnia 21 lutego 2012r. Podstawy Inżynierii Programowania
Diagramy ERD. Model struktury danych jest najczęściej tworzony z wykorzystaniem diagramów pojęciowych (konceptualnych). Najpopularniejszym
Diagramy ERD. Model struktury danych jest najczęściej tworzony z wykorzystaniem diagramów pojęciowych (konceptualnych). Najpopularniejszym konceptualnym modelem danych jest tzw. model związków encji (ERM
Programowanie obiektowe
Laboratorium z przedmiotu - zestaw 03 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas abstrakcyjnych i interfejsów. Wprowadzenie teoretyczne. Rozważana
Projektowanie oprogramowania. Wykład Weryfikacja i Zatwierdzanie Inżynieria Oprogramowania Kazimierz Michalik
Projektowanie oprogramowania Wykład Weryfikacja i Zatwierdzanie Inżynieria Oprogramowania Kazimierz Michalik Agenda Weryfikacja i zatwierdzanie Testowanie oprogramowania Zarządzanie Zarządzanie personelem
Technologia programowania
Wykład 1 2 październik 2018 Cel kursu Znacie język programowania oraz umiecie tworzyć proste aplikacje. Nie macie doświadczenia w tworzeniu dużych i złożonych systemów. Aby stworzyć duży system należy:
Metodyka projektowania komputerowych systemów sterowania
Metodyka projektowania komputerowych systemów sterowania Andrzej URBANIAK Metodyka projektowania KSS (1) 1 Projektowanie KSS Analiza wymagań Opracowanie sprzętu Projektowanie systemu Opracowanie oprogramowania
Projektowanie systemów informatycznych. Roman Simiński programowanie.siminskionline.pl. Cykl życia systemu informatycznego
systemów informatycznych Roman Simiński roman.siminski@us.edu.pl programowanie.siminskionline.pl Cykl życia systemu informatycznego Trochę wprowadzenia... engineering co to oznacza? Oprogramowanie w sensie
Rozdział 5: Zarządzanie testowaniem. Pytanie 1
Pytanie 1 Dlaczego niezależne testowanie jest ważne: A) Niezależne testowanie jest w zasadzie tańsze niż testowanie własnej pracy B) Niezależne testowanie jest bardziej efektywne w znajdywaniu defektów
Oferta szkoleń firmy Code Sprinters
Oferta szkoleń firmy Code Sprinters Code Sprinters sp z o.o. Królewska 2/2 Kraków Telefon +48 12 379 34 14 Fax +48 12 379 34 11 info@codesprinters.com www.codesprinters.com Jako liderzy na rynku szkoleń
UML w Visual Studio. Michał Ciećwierz
UML w Visual Studio Michał Ciećwierz UNIFIED MODELING LANGUAGE (Zunifikowany język modelowania) Pozwala tworzyć wiele systemów (np. informatycznych) Pozwala obrazować, specyfikować, tworzyć i dokumentować
Zaawansowane programowanie w języku C++
Kod szkolenia: Tytuł szkolenia: C/ADV Zaawansowane programowanie w języku C++ Dni: 3 Opis: Uczestnicy szkolenia zapoznają się z metodami wytwarzania oprogramowania z użyciem zaawansowanych mechanizmów
Podstawy programowania III WYKŁAD 4
Podstawy programowania III WYKŁAD 4 Jan Kazimirski 1 Podstawy UML-a 2 UML UML Unified Modeling Language formalny język modelowania systemu informatycznego. Aktualna wersja 2.3 Stosuje paradygmat obiektowy.
PHP 5 język obiektowy
PHP 5 język obiektowy Wprowadzenie Klasa w PHP jest traktowana jak zbiór, rodzaj różnych typów danych. Stanowi przepis jak stworzyć konkretne obiekty (instancje klasy), jest definicją obiektów. Klasa reprezentuje
Bezpieczeństwo systemów komputerowych
Bezpieczeństwo systemów komputerowych Jak pisać poprawne programy? Aleksy Schubert (Marcin Peczarski) Instytut Informatyki Uniwersytetu Warszawskiego 6 listopada 2018 Na podstawie: David A. Wheeler Secure
Kod doskonały : jak tworzyć oprogramowanie pozbawione błędów / Steve McConnell. Gliwice, cop Spis treści. Wstęp 15.
Kod doskonały : jak tworzyć oprogramowanie pozbawione błędów / Steve McConnell. Gliwice, cop. 2017 Spis treści Wstęp 15 Podziękowania 23 Listy kontrolne 25 Tabele 27 Rysunki 29 Część I Proces budowy oprogramowania