konto usunięte

Temat: Wykorzystanie istniejących klas/bibliotek w procesie...

Czy jakieś procesy wytwarzania oprogramowania, jak np. RUP biorą pod uwagę filozofię re-use?

Zakładając np. że pewne funkcjonalności ktoś już zaimplementował (wewnętrz firmy albo na świecie) w formie pojedynczych komponentów lub całych bibliotek, to czy na którymś etapie procesu wytarzania oprogramowania jest wyraźnie zaznaczone jak uwzględnić wykorzystanie już istniejących komponentów?

Na przykład kiedy należy zidentyfikować jakie funkcjonalności mogą być zrealizowane przez coś, co już zostało zaimplementowane? W jakim momencie szukać tych funkcjonalności (np. przeszukiwać w SourceForge albo Merobase albo Google Code Search)? Na etapie określania wymagań, use casów, projektu architektury czy już przy samej implementacji, przez samego developera? Jak to jest definiowane np. w RUPie i jak to u Was wygląda w praktyce?Maciej Gawinecki edytował(a) ten post dnia 27.01.10 o godzinie 22:52
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Wykorzystanie istniejących klas/bibliotek w procesie...

Maciej Gawinecki:
Na przykład kiedy należy zidentyfikować jakie funkcjonalności mogą być zrealizowane przez coś, co już zostało zaimplementowane? W jakim momencie szukać tych funkcjonalności (np. przeszukiwać w SourceForge albo Merobase albo Google Code Search)? Na etapie określania wymagań, use casów, projektu architektury czy już przy samej implementacji, przez samego developera? Jak to jest definiowane np. w RUPie i jak to u Was wygląda w praktyce?

Na etapie analizy wymagań nie widzę możliwości korzystania z bibliotek. Na etapie projektowania raczej wzorce projektowe.Na etapie implementacji można myśleć o gotowych komponentach ale w kontekście czystej rentowności jako decyzja: albo gotowy cudzy komponent z dodatkowym czasem na jego rozpoznanie i ryzykiem "nieprzewidzianych zachowań" (należy go przetestować) czyli dodatkowe koszty i czas lub pisanie od zera albo własny moduł i koszt jego opracowania i implementacji.

Moim zdaniem wyższością wielu dedykowanych rozwiązań jest właśnie to, ze są dedykowane czyli program pod użytkownika a nie odwrotnie. Użycie gotowych komponentów niewiele się różni od gotowego parametryzowanego programu...

Ale powyższe dotyczy obszaru dziedzinowego. Powtórne użytkowanie ma moim zdaniem duży sens w obszarze wymagań pozafunkcjonalnych takich jak bezpieczeństwo, wydajność, dostęp do sprzętu itp...

ale powyższe co napisałem to ... frameworki i MVC - to takie moje subiektywne przemyślenia...

konto usunięte

Temat: Wykorzystanie istniejących klas/bibliotek w procesie...

Na etapie analizy wymagań nie widzę możliwości korzystania z bibliotek.

A wymagania niefunkcjonalne? Że na przykład w naszym środowisku wykorzystujemy tylko bazy danych (stary MySQL) nie obsługujące transakcji i w związku z tym należy to uwzględnić przy projektowaniu systemu.
Na etapie projektowania raczej wzorce projektowe.

Zgoda. Wzroce projektowe, gotowe architektury czy nawet zaprojektowane w innym projekcie struktury danych --- to tez reusability.
Na etapie implementacji można myśleć o gotowych komponentach ale w kontekście czystej rentowności jako decyzja: albo gotowy cudzy komponent z dodatkowym czasem na jego rozpoznanie i ryzykiem "nieprzewidzianych zachowań" (należy go przetestować) czyli dodatkowe koszty i czas lub pisanie od zera albo własny moduł i koszt jego opracowania i implementacji.

Jeśli istniejący komponent jest dobrej jakości (np. często używany, polecany przez kogoś), to budowa własnego rozwiązania może oznaczać nie tylko dodatkowe koszty, ale wyważanie drzwi (czytaj popełnienie błędów), które ktoś już wyważył (przetestował komponent). Trudność decyzji będzie raczej wydaje mi się polegała na ocenie jakości komponentu.
Moim zdaniem wyższością wielu dedykowanych rozwiązań jest właśnie to, ze są dedykowane czyli program pod użytkownika a nie odwrotnie. Użycie gotowych komponentów niewiele się różni od gotowego parametryzowanego programu...

Ale ja nie mówię tu o tym, że użytkownik ma się dostosować do istniejącego oprogramowania. Ponowne użycie komponentów zakłada nie tylko ich znalezienie, ale i taką modyfikację, żeby spełniały wymagane warunki. Więc może to być trudniejsze od parametryzowania, zwłaszcza jeśli będzie uwzględniało zrozumienie jak czyjś program działa.

Poza tym wybór i sklejenie gotowych komponentów to też sztuka. W końcu taki był też jeden z celów języków wysokiego poziomu, tzn. obiektowych. Budowa z klocków.
Ale powyższe dotyczy obszaru dziedzinowego. Powtórne użytkowanie ma moim zdaniem duży sens w obszarze wymagań pozafunkcjonalnych takich jak bezpieczeństwo, wydajność, dostęp do sprzętu itp...

Hmm... A jeśli tym komponentem ma być jakiś komponent który rysuje wykresy? Albo usługa zdalna (Web serwis) która przysyła mi stan giełdy? To wszystko mogą być komponenty, które realizują wymagania funkcjonalne, związane z dziedziną aplikacji.

Na pewno komponenty, które są niezależne od dziedziny (MVC, bazy danych, drivery, biblioteki matematyczne etc.) mogą być bardziej powszechne w użyciu, bo nie tylko w obrębie aplikacji z danej dziedziny (np. finansowej).

Potwierdza to zresztą tekst z 1993: "Repository evaluation of software reuse" (myślę, że się nie przedawniło): "The success of a program of software reuse depends upon the degree of commonality among the applications across which software is shared. Prior research distinguishes between reuse across vertical and horizontal domains. *Vertical reuse* can occur when the majority of the applications built by software developers are representative of a single kind of data processing activity, and many software objects that are employed by one can be shared among the others. *Horizontal reuse*, by contrast, occurs across a broad range of application areas. Horizontal reuse is more often employed and better understood than vertical reuse."
ale powyższe co napisałem to ... frameworki i MVC - to takie moje subiektywne przemyślenia...

Dziękuję za komentarz :-) Temat rozjaśnia mi się dzięki rozmowie.

Pytanie czy w oficjalnej specyfikacji RUPa, albo jakiejś inne metodologii określone są kryteria, które elementy aplikacji realizować za pomocą istniejących rozwiązań, jakie przyjąć kryteria wyszukiwania zewnętrznego komponentu, jak znaleziene komponenty adaptować/integrować z resztą aplikacji?Maciej Gawinecki edytował(a) ten post dnia 28.01.10 o godzinie 20:43
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Wykorzystanie istniejących klas/bibliotek w procesie...

Jest w tym wiele racji, z perspektywy czasu powiem tak:
- z jakiegoś powodu komponenty znane od dziesięciu lat nie zawojowały świata

- zgadzam się z tym, że pewne "standardowe" funkcje właśnie w rodzaju "rysowania", webserwisy, komunikacja itp.. to doskonały materiał na biblioteki czy komponenty (coś jak w każdym biurze można użyc standardowego edytora tekstu, pisanie go po raz drugi nie ma sensu - no chyba że byłby bardzo drogi)

- nadal uważam, że decyzję o tym czy pisać kod czy użyć gotowego powinien podejmować architekt/implementator, o ile znam RUP i inne metodyki właśnie etap implementacji to decyzje pisać czy użyć gotowych...

- z perspektywy analityka wiem jednak, że podobnie jak zastosowanie modeli referencyjnych jest raczej drogą donikąd to jednak głęboki sens mają dobre praktyki i wzorce projektowe

- moim zdaniem użycie cudzego gotowego kodu sprawdza się w przypadku frameworków, które sa niczym innym jak zbiorem gotowych bibliotek i komponentów

ale jak wspomniałem chętnie posłucham opinii developerów/koderów

konto usunięte

Temat: Wykorzystanie istniejących klas/bibliotek w procesie...

No ja właśnie tu przyszedłem żeby posłuchać praktykujących dewoloperów ;-)

Ja skonkretyzowania dyskusji dodam tylko, że: wykorzystywać można zasoby swoje (firmowe) lub zewnętrzne; wiele firm tworzy własne frameworki, lub rozwija oprogramowanie w ramach jednego projektu z myślą, że zostanie ona wykorzystane w podobnym, zwłaszcza jeśli firma pracuje w stabilnej branży.

Temat: Wykorzystanie istniejących klas/bibliotek w procesie...

Maciej Gawinecki:
Czy jakieś procesy wytwarzania oprogramowania, jak np. RUP biorą pod uwagę filozofię re-use?

Jedną z dobrych praktyk RUP jest wykorzystanie architektury opartej o komponenty co m.in. ma umożliwiać ich ponowne użycie i dostosowanie. Na etapie analizy i projektowania są opisane czynności związane z identyfikacją i włączeniem w projekt istniejących rozwiązań. Mamy tutaj przegląd frameworków, komponentów, bibliotek klas, istniejących podsystemów o podobnych interfejsach itp.Arkadiusz W. edytował(a) ten post dnia 30.01.10 o godzinie 23:29

konto usunięte

Temat: Wykorzystanie istniejących klas/bibliotek w procesie...

Arkadiusz W.:
Jedną z dobrych praktyk RUP jest wykorzystanie architektury opartej o komponenty co m.in. ma umożliwiać ich ponowne użycie i dostosowanie. Na etapie analizy i projektowania są opisane czynności związane z identyfikacją i włączeniem w projekt istniejących rozwiązań. Mamy tutaj przegląd frameworków, komponentów, bibliotek klas, istniejących podsystemów o podobnych interfejsach itp.

Dzięki Arkadiuszu! Możesz mi podać link do jakiegoś artykułu/książki który więcej traktuje o tych aspektach w RUPie?

Temat: Wykorzystanie istniejących klas/bibliotek w procesie...

Jeśli chodzi o literaturę związaną z RUP to znam pozycje:
P.Kruchten - "RUP od strony teoretycznej"
P.Kroll, P.Kruchten - "RUP od strony praktycznej"

Niestety bardzo ogólnie i krótko opisują temat ponownego użycia komponentów.

W książce L.Bass, P.Clements, R.Kazman "Architektura oprogramowania w praktyce" jest rozdział poświęcony budowie systemów z komponentów komercyjnych. Niestety nie jest to opisane w kontekście RUP.

Najlepiej byłoby dotrzeć do dokumentacji procesu. Z tego co się orientuje IBM darmowo jej nie rozpowszechnia. Metodyka jest dostarczana z narzędziem IBM Rational Method Composer, którego wersja trial jest dostępna na stronie firmy.
Nie ściągałem, więc nie mam pewności czy w wersji 30-dniowej jest pełny opis RUP.Arkadiusz W. edytował(a) ten post dnia 31.01.10 o godzinie 22:40

konto usunięte

Temat: Wykorzystanie istniejących klas/bibliotek w procesie...

Dziękuje!
Arkadiusz W.:
W książce L.Bass, P.Clements, R.Kazman "Architektura oprogramowania w praktyce" jest rozdział poświęcony budowie systemów z komponentów komercyjnych. Niestety nie jest to opisane w kontekście RUP.

Nie szkodzi. Ważne że jest tam to opisane z perspektywy praktycznej. Właśnie dorwałem ten rozdział (18.) w wersji angielskiej i o coś takiego mi właśnie chodziło. Będę szukał czegoś podobnego również w kontekście budowych systemów z istniejących Web serwisów.
Jeśli chodzi o literaturę związaną z RUP to znam pozycje:
P.Kruchten - "RUP od strony teoretycznej"
P.Kroll, P.Kruchten - "RUP od strony praktycznej"

Niestety bardzo ogólnie i krótko opisują temat ponownego użycia komponentów.
Najlepiej byłoby dotrzeć do dokumentacji procesu. Z tego co się orientuje IBM darmowo jej nie rozpowszechnia. Metodyka jest dostarczana z narzędziem IBM Rational Method Composer, którego wersja trial jest dostępna na stronie firmy.
Nie ściągałem, więc nie mam pewności czy w wersji 30-dniowej jest pełny opis RUP.

Do tych pozycji (książek i dokumentacji) wróce, jak wyczerpię temat (albo temat wyczerpie mnie) opisany w "Architektura oprogramowania w praktyce".Maciej Gawinecki edytował(a) ten post dnia 02.02.10 o godzinie 10:59

Następna dyskusja:

Szkolenie - doskonalenie pr...




Wyślij zaproszenie do