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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2010-01-23 18:05:57

  Contravene - Użytkownik

Contravene
Użytkownik
Zarejestrowany: 2006-08-07

Testowanie modeli obiektowych

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

 

#2  2010-01-23 23:27:06

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: Testowanie modeli obiektowych

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

 

#3  2010-01-24 16:34:24

  harry666t - Członek DUG

harry666t
Członek DUG
Zarejestrowany: 2007-01-28

Re: Testowanie modeli obiektowych

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.


[ /\/\/\ o_0 ----->>>       Ascii Art Userbar User ]

"steal and steal and steal some more and give it to all your friends and keep on stealin'"
- Reznor

Offline

 

#4  2010-01-25 09:01:03

  Contravene - Użytkownik

Contravene
Użytkownik
Zarejestrowany: 2006-08-07

Re: Testowanie modeli obiektowych

[quote=kamikaze]Testy jednostkowe? Tyle, że do tego by się przydała chyba jednak jakaś implementacja.[/quote]
Nie, nie testy jednostkowe. Chodzi mi o błędy na etapie projektowania.

[quote=harry666t]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.[/quote]
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

 

#5  2010-01-25 09:48:51

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: Testowanie modeli obiektowych

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

 

#6  2010-01-25 14:58:54

  Contravene - Użytkownik

Contravene
Użytkownik
Zarejestrowany: 2006-08-07

Re: Testowanie modeli obiektowych

[quote=kamikaze]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ć.[/quote]
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

 

#7  2010-01-25 15:37:02

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: Testowanie modeli obiektowych

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

 

#8  2010-01-25 16:01:14

  Contravene - Użytkownik

Contravene
Użytkownik
Zarejestrowany: 2006-08-07

Re: Testowanie modeli obiektowych

[quote=kamikaze]No nie wiem. Pętle zależności mogą być celowe[/quote]
Nie chodzi mi o automatyczne poprawienie, ale wyświetlenie warninga (czyt. wskazanie, że to może rodzić problemy).

[quote=kamikaze]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.[/quote]
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

 

#9  2010-01-26 08:14:28

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: Testowanie modeli obiektowych

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

 

#10  2010-01-26 08:44:21

  Contravene - Użytkownik

Contravene
Użytkownik
Zarejestrowany: 2006-08-07

Re: Testowanie modeli obiektowych

[quote=kamikaze]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.[/quote]
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

 

#11  2010-01-26 10:08:31

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: Testowanie modeli obiektowych

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

 

#12  2010-01-26 12:11:43

  Contravene - Użytkownik

Contravene
Użytkownik
Zarejestrowany: 2006-08-07

Re: Testowanie modeli obiektowych

[quote=kamikaze]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.[/quote]
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

 

#13  2010-01-26 15:42:25

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: Testowanie modeli obiektowych

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

 

#14  2010-01-27 08:55:57

  Contravene - Użytkownik

Contravene
Użytkownik
Zarejestrowany: 2006-08-07

Re: Testowanie modeli obiektowych

[quote=kamikaze]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.[/quote]
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

 

#15  2010-01-27 09:36:56

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: Testowanie modeli obiektowych

Powodzenia, pochwal się jak skończysz.

Offline

 

#16  2010-01-27 09:54:55

  Contravene - Użytkownik

Contravene
Użytkownik
Zarejestrowany: 2006-08-07

Re: Testowanie modeli obiektowych

[quote=kamikaze]Powodzenia, pochwal się jak skończysz.[/quote]
Dzięki, nie omieszkam. Sam jestem ciekaw, co z tego wyniknie.

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)

[ Generated in 0.019 seconds, 14 queries executed ]

Informacje debugowania

Time (s) Query
0.00017 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00129 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='44.200.40.97' WHERE u.id=1
0.00125 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '44.200.40.97', 1711615101)
0.00065 SELECT * FROM punbb_online WHERE logged<1711614801
0.00109 DELETE FROM punbb_online WHERE ident='54.36.148.107'
0.00088 DELETE FROM punbb_online WHERE ident='54.36.148.111'
0.00338 DELETE FROM punbb_online WHERE ident='54.36.148.197'
0.00096 SELECT topic_id FROM punbb_posts WHERE id=139327
0.00219 SELECT id FROM punbb_posts WHERE topic_id=15989 ORDER BY posted
0.00089 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=15989 AND t.moved_to IS NULL
0.00008 SELECT search_for, replace_with FROM punbb_censoring
0.00126 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=15989 ORDER BY p.id LIMIT 0,25
0.00112 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=15989
Total query time: 0.01525 s