Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Czy znacie jakieś narzędzia/metodyki/zbiory reguł do testowania modeli obiektowych? Chodzi mi o wszystko związane z projektowaniem aplikacji w architekturze zorientowanej obiektowo, a w szczególności cześć dotycząca projektu w UML-u (lub innym abstrakcyjnym języku), czyli diagramy klas, obiektów, komponentów, pakietów itd.
W skrócie chodzi mi o wszystko związane z wykrywaniem błędów, odstępstw od standardów lub też np. potencjalnych zagrożeń w takich modelach, realizowane w jakikolwiek sposób: jako wtyczkę do aplikacji, zestaw reguł w napisanych języku naturalnym, zbiór wytycznych itd.
Pozdrawiam,
Contravene
Offline
Testy jednostkowe? Tyle, że do tego by się przydała chyba jednak jakaś implementacja.
Ostatnio edytowany przez kamikaze (2010-01-23 23:39:29)
Offline
Nie, unit testy nie.
Zobacz Umbrello dla KDE. Można sobie "rysować" diagramy klas, i potrafi on potem wygenerować z tego defnicje w kilku językach. Potafi chyba też czytać definicje klas i robić z nich diagramy. A co do ogólnego sprawdzania poprawności... Nie wiem. Może po prostu miej/miejcie (jeśli to projekt zespołowy) jakiś referencyjny diagram, do którego muszą być wprowadzane i zatwierdzanie wszystkie zmiany ZANIM ktokolwiek zmieni hierarchię w kodzie.
Osobiście diagramy robię po prostu na kartkach, i po prostu przykładam do nich dużo uwagi.
Offline
kamikaze napisał(-a):
Testy jednostkowe? Tyle, że do tego by się przydała chyba jednak jakaś implementacja.
Nie, nie testy jednostkowe. Chodzi mi o błędy na etapie projektowania.
harry666t napisał(-a):
Nie, unit testy nie.
Zobacz Umbrello dla KDE. Można sobie "rysować" diagramy klas, i potrafi on potem wygenerować z tego defnicje w kilku językach. Potafi chyba też czytać definicje klas i robić z nich diagramy. A co do ogólnego sprawdzania poprawności... Nie wiem. Może po prostu miej/miejcie (jeśli to projekt zespołowy) jakiś referencyjny diagram, do którego muszą być wprowadzane i zatwierdzanie wszystkie zmiany ZANIM ktokolwiek zmieni hierarchię w kodzie.
Osobiście diagramy robię po prostu na kartkach, i po prostu przykładam do nich dużo uwagi.
Myślę, że każdy stara się unikać błędów w modelu, ale chodzi o podniesienie ich wykrywalności wraz z konstrukcjami, które mogą w przyszłości stać się problematyczne. Sprawdziłaby się do tego jakaś aplikacja, która automatycznie wykrywałaby tego typu usterki. Inne wyjście to jakaś metoda, zestaw kroków lub punktów do sprawdzenia (albo jak napisałeś referencyjny diagram), które pozwolą osiągnąć to "manualnie" (chodzi też o błędy niespójności pomiędzy poszczególnymi diagramami). Na pewno sam przygotuję coś takiego, ale istnieje duża szansa, że coś pominę, a zależy mi, żeby metoda była jak najbardziej kompletna. Gdy już będę miał coś takiego, to odpowiednią wtyczkę do aplikacji zawsze można przygotować.
Offline
Mi się zdaje, że ciężko coś takiego sprawdzić. Program, który by to sprawdzał musiałby znać logikę, którą się kierowałeś. Posiadać jakąś inteligencje, a to wątpliwe. Bo pewnie zaprojektowany model obiektowy zawsze będzie poprawny, czemu miałby nie być to tylko projekt. Inna sprawa czy jest spójny i czy będzie uniwersalny. Tego chyba żaden automat nie jest w stanie określić.
Offline
kamikaze napisał(-a):
Mi się zdaje, że ciężko coś takiego sprawdzić. Program, który by to sprawdzał musiałby znać logikę, którą się kierowałeś. Posiadać jakąś inteligencje, a to wątpliwe. Bo pewnie zaprojektowany model obiektowy zawsze będzie poprawny, czemu miałby nie być to tylko projekt. Inna sprawa czy jest spójny i czy będzie uniwersalny. Tego chyba żaden automat nie jest w stanie określić.
Są pewne elementy, które można sprawdzić automatycznie, jak np. pętle zależności, zbyt duża ilość metod w klasie itd. to też jest coś, co chciałbym automatycznie wykryć. Tak samo konwencja nazewnictwa itd.
Offline
No nie wiem. Pętle zależności mogą być celowe, duża ilość metod w klasie na pierwszy rzut oka widać (projektant umie liczyć co najmniej do 10, a licząc palce u nóg to nawet do 20 ;]), konwencja nazewnictwa jest przecież dowolna. Są jakieś tam reguły, ale nikt niczego nie narzuca.
Offline
kamikaze napisał(-a):
No nie wiem. Pętle zależności mogą być celowe
Nie chodzi mi o automatyczne poprawienie, ale wyświetlenie warninga (czyt. wskazanie, że to może rodzić problemy).
kamikaze napisał(-a):
duża ilość metod w klasie na pierwszy rzut oka widać (projektant umie liczyć co najmniej do 10, a licząc palce u nóg to nawet do 20 ;]), konwencja nazewnictwa jest przecież dowolna. Są jakieś tam reguły, ale nikt niczego nie narzuca.
Chodzi właśnie o to, że trzeba spełnić jakieś reguły narzucone na projekt. A że różne projekty mają różne konwencje, stąd konieczność zautomatyzowania tego (chociaż bardziej chodzi mi tutaj o przygotowanie procedury i listy wytycznych, automatyzacja na dalszym planie).
Offline
Wszystko zależy od doświadczenia i umiejętności projektanta, nikt nie powinien narzucać na projekt konwencji typu 5 metod na klase bo to z deka głupota. Nie ważne ile metod ważne, że należą one do danego obiektu i są z nim spójne wykonując zadania przewidziane dla tego obiektu. A kto to najlepiej sprawdzi niż żywa ludzka inteligencja? Przygotowanie procedury i listy wytycznych to też rola projektanta, nie wyobrażam sobie żeby jakiś automat potrafił narzucić wytyczne. Masz różnego rodzaju wzorce projektowe, popularne metody postępowania. Znając je możesz zaprojektować aplikacje, jakby były do tego automaty, projektanci nie byliby potrzebni. Są automaty, które potrafią wygenerować podstawowy kod na podstawie modelu obiektowego, ale o generowaniu czy sprawdzaniu modeli obiektowych przez automat nie słyszałem. Wydaje mi się niezbyt możliwe zbudowanie czegoś takiego, ale kto wie.
Offline
kamikaze napisał(-a):
Wszystko zależy od doświadczenia i umiejętności projektanta, nikt nie powinien narzucać na projekt konwencji typu 5 metod na klase bo to z deka głupota. Nie ważne ile metod ważne, że należą one do danego obiektu i są z nim spójne wykonując zadania przewidziane dla tego obiektu. A kto to najlepiej sprawdzi niż żywa ludzka inteligencja? Przygotowanie procedury i listy wytycznych to też rola projektanta, nie wyobrażam sobie żeby jakiś automat potrafił narzucić wytyczne. Masz różnego rodzaju wzorce projektowe, popularne metody postępowania. Znając je możesz zaprojektować aplikacje, jakby były do tego automaty, projektanci nie byliby potrzebni. Są automaty, które potrafią wygenerować podstawowy kod na podstawie modelu obiektowego, ale o generowaniu czy sprawdzaniu modeli obiektowych przez automat nie słyszałem. Wydaje mi się niezbyt możliwe zbudowanie czegoś takiego, ale kto wie.
W żadnym wypadku nie chodzi o generowanie modelu. Właśnie o taką listę wytycznych (z tym, że bardziej uniwersalną) również mi chodzi.
Offline
Taka lista wytycznych będzie zależeć od języka, typu projektu. Może powiedz konkretnie o co chodzi. Bo uniwersalnych wytycznych raczej nie ma, języki są różne, niektóre nie nadają się do zrobienia rzeczy, do których nadają się inne. Więc takie gadanie w powietrzu jest bez sensu. Niektóre języki wprowadzają specyfikacje i konwencje, które być znajdziesz na stronie twórców języka. Przykładem może być konwencja pisania kodu Javy zamieszczona na stronie Suna - http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html.
Offline
kamikaze napisał(-a):
Taka lista wytycznych będzie zależeć od języka, typu projektu. Może powiedz konkretnie o co chodzi. Bo uniwersalnych wytycznych raczej nie ma, języki są różne, niektóre nie nadają się do zrobienia rzeczy, do których nadają się inne. Więc takie gadanie w powietrzu jest bez sensu. Niektóre języki wprowadzają specyfikacje i konwencje, które być znajdziesz na stronie twórców języka. Przykładem może być konwencja pisania kodu Javy zamieszczona na stronie Suna - http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html.
Nie chcę zagłębiać się do poziomu języka, ale pozostać w modelu. Na pewno nie będzie łatwo znaleźć uniwersalne reguły, ale mimo wszystko spróbuję. Umieszczę tutaj informację o wynikach.
Offline
Nie wiem co ty tworzysz ;] Mógłbyś się pochwalić? Ktoś ci kazał coś wymyśleć, nowe programowanie obiektowe? Imho przydałoby się żebyś jednak wział, któryś z językół obiektowych za wzór i dla niego szukać reguł. Bo obiektowość jest różna i być może części aspektów obiektowości nawet nie znasz. Jeśli np. twoje myślenie obiektowe skupia się wokół PHP, gdzie obiektowość jest mizerna. Poza tym jest kilka uniwersalnych reguł, np. utrzymanie wysokiej spójności obiektów, czy minimalizacja zależności między obiektami albo hermetyzacja. Możesz poszukać czegoś o dobrych praktykach programowania.
Offline
kamikaze napisał(-a):
Nie wiem co ty tworzysz ;] Mógłbyś się pochwalić? Ktoś ci kazał coś wymyśleć, nowe programowanie obiektowe? Imho przydałoby się żebyś jednak wział, któryś z językół obiektowych za wzór i dla niego szukać reguł. Bo obiektowość jest różna i być może części aspektów obiektowości nawet nie znasz. Jeśli np. twoje myślenie obiektowe skupia się wokół PHP, gdzie obiektowość jest mizerna. Poza tym jest kilka uniwersalnych reguł, np. utrzymanie wysokiej spójności obiektów, czy minimalizacja zależności między obiektami albo hermetyzacja. Możesz poszukać czegoś o dobrych praktykach programowania.
Tworzę dokładnie to, co napisałem ;) Szukam sposobu, który pozwoliłby na wykrywanie błędów i sytuacji mogących powodować błędy w modelach obiektowych. Dodatkowo metoda powinna się dawać łatwo dostosowywać do konkretnego projektu i być możliwie uniwersalna.
Offline
Powodzenia, pochwal się jak skończysz.
Offline
kamikaze napisał(-a):
Powodzenia, pochwal się jak skończysz.
Dzięki, nie omieszkam. Sam jestem ciekaw, co z tego wyniknie.
Offline