-
Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: Andrzej Jarzabek <a...@g...com>
Newsgroups: pl.comp.programming
Subject: Re: Porównanie różnych języków
Date: Sun, 18 Dec 2011 01:36:16 +0000
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 140
Message-ID: <jcjg2f$jss$1@inews.gazeta.pl>
References: <jbv8dl$fdd$1@news.icm.edu.pl>
<p...@4...com>
<jc04l3$a15$1@inews.gazeta.pl>
<6...@y...googlegroups.com>
<jc0bd7$1or$1@inews.gazeta.pl>
<9...@y...googlegroups.com>
<jc0j9q$pnt$1@inews.gazeta.pl>
<0...@o...googlegroups.com>
<jc0qek$gis$1@inews.gazeta.pl>
<p...@4...com>
<a...@i...googlegroups.com>
<4...@o...googlegroups.com>
<6...@h...googlegroups.com>
<jcie6v$du3$1@inews.gazeta.pl>
<3...@i...googlegroups.com>
<jcipih$igb$1@inews.gazeta.pl>
<4...@q...googlegroups.com>
NNTP-Posting-Host: 5ac53ca3.bb.sky.com
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-2; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: inews.gazeta.pl 1324172176 20380 90.197.60.163 (18 Dec 2011 01:36:16 GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Sun, 18 Dec 2011 01:36:16 +0000 (UTC)
X-User: septi
In-Reply-To: <4...@q...googlegroups.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20111105
Thunderbird/8.0
Xref: news-archive.icm.edu.pl pl.comp.programming:194226
[ ukryj nagłówki ]On 17/12/2011 20:02, Roman W wrote:
> On Dec 17, 7:12 pm, Andrzej Jarzabek<a...@g...com>
> wrote:
>>
>>> A co jest rezultatem tej rozmowy? Notatki pisane olowkiem na serwetce,
>>> watem mailowy w firmowym Outlooku, czy cos bardziej
>>> ustrukturyzowanego?
>>
>> Przede wszystkim rezultatem tej rozmowy jest to, że programista wie, co
>> jest prawidłowym zachowaniem budowanego systemu.
>
> Systemu jako calosci? Czyli jednak dokumentacja.
Systemu jako całości lub danego kawałka. Wiedza to nie jest to samo, co
dokumentacja.
>> Jeśli chodzi o
>> artefakty, to może to być "user story" (czy inny "change control ticket)
>> - jeśli objaśnienie się kwalifikuje, będzie to prawdopodobnie jeden lub
>> kilka testów (acceptance test, unit tests),
>
> Ale to opisuje wycinek systemu.
Łącznie wszystkie te opisy opisują cały system. Tak samo jak z
dokumentacją wymagań zresztą: składa się zwykle z jakichś rozdziałów,
które opisują wycinki systemu.
>> no i przede wszystkim będzie
>> to działający kod, który robi właśnie to, co trzeba.
>
> Nie, bedzie to kod przechodzacy kilka testow. To nie to samo.
Jednak nie tylko przechodzący kilka testów, bo jego forma się bierze
stąd, że programista _rozumie_ co program ma robić, a nie z tego, że
widział kod testów i dostaje zadanie napisania kodu je przechodzącego.
To, że 100% gwarancji na poprawność kodu nie ma, to osobna sprawa -
dokumentacja też przecież takiej gwarancji nie daje.
>>> Czy uwazasz, ze 100% funkcjonalnosci mozna udokumentowac w formie
>>> testu?
>>
>> Nawet jeśli można udokumentować 99%, to praktycznie różnica jest niewielka.
>
> Czyli uwazasz, ze osiagalne jest "99%" (czyli prawie kompletny opis)?
> Tak/nie.
Ostrożnie powiem, że to zależy od dziedziny, a ja się na wielu
dziedzinach nie znam. Ale na ogół uważam, że tak właśnie jest - między
odpowiednio ekspresywnie napisanymi testami a odpowiednio ekspresywnie
napisanym kodem da się wyrazić to, co zazwyczaj się wyraża w
dokumentacji - równie dobrze jak w dokumentacji.
>>> Zalozmy, ze projekt zawiera biblioteke numeryczna. Czy wystarczy
>>> "acceptance test", czy nie nalezy rowniez udokumentowac algorytmow,
>>> ktore biblioteka ma implementowac?
>>
>> Nie wiem konkretnie jak jest z bibliotekami numerycznymi.
>
> Jest tak, ze nie wystarczy wiedziec, ze biblioteka przechodzi X
> testow, zeby ocenic, czy design jest poprawny czy nie. Testy moga
> sprawdzic skonczona liczbe przypadkow, ale wymagania stawiane
> bibliotekom numerycznym jest ciezko zawrzec calkowicie w formie
> testow.
> Np. wymaganie moze brzmiec "procedura X ma implementowac algorytm
> calkujacy Grubiediewa". Jak to sprawdzisz unit testem?
Po pierwsze - tak w ogóle - testy to nie tylko unit testy.
Po drugie w innych działkach, i przypuszczam, że tutaj tak samo, wybór
algorytmu wynika z pewnym właściwości całkowania tym algorytmem, które
są rzeczywistym wymaganiem. I te właściwości można jak najbardziej testować.
Poza sprawdzeniem obserwowalnych właściwości zachowania programu,
istotne właściwości implementacji zamiast zapisywać w dokumentacji można
często zapisać w kodzie. Trochę żartobliwie mogę powiedzieć, że to, co
napisałeś da się zapisać tak:
double X (args) {
return calkujAlgortymemGrubiediewa(args);
}
>> Jeśli chodzi o
>> to, że wykorzystujesz jakieś algorytmy z literatury i chcesz
>> udokumentować fakt, że stosujesz algorytm Kamionnego-Łomonosowa z
>> artykułu "Zastosowanie metod numerycznych przy wykopywaniu ziemniaków"
>> publikowanego w miesięczniku Kołchoźnik nr 8/51? No to może faktycznie
>> należy dać przypis w komentarzu.
>
> A jesli algorytm nie zostal nigdzie opublikowany?
To co napiszesz w dokumencie? Że funkcja całkuje algorytmem, który nie
został nigdzie opublikowany? Takie coś to można napisać w komentarzu.
Jeśli chodzi o opis działania samego algorytmu, to programiści dysponują
znakomitym narzędziem właśnie do tego, jakim są wysokopoziomowe języki
programowania.
Oczywiście jeśli masz taką sytuację, że wymyślasz własny algorytm i
musisz np. formalnie udowodnić jego poprawność, to może i najlepiej to
zrobić w postaci dokumentu. Ale jak często zdarzają się tak naprawdę
takie sytuacje?
>>> A jezeli zmieni dzialanie programu w aspekcie nie objetym testami?
>>
>> To dobrze, że przynajmniej zdaje sobie sprawę, że zmieni.
>
> Skad ma zdawac sobie sprawe? Przeciez nie ma dokumentacji, moze uznac,
> ze zmiana w kodzie nie zmieni istotnych aspektow dzialania programu,
> bo... unit testy przechodza.
Po pierwsze może się po prostu wziąć z analizy "jakie będą konsekwencje
jeśli zmienię program w ten sposób". Jeśli programiście mylnie się
wydaje, że zachowanie programu się nie zmieni, to dokumentacja w niczym
tu nie pomoże. Jeśli programista jest w stanie stwierdzić, że zachowanie
programu się zmieni, to powinien być też w stanie stwierdzić, że nie ma
testów testujących aspekt który się zmieni, więc jest w stanie uruchomić
całą procedurę "dlaczego nie ma na to testów".
Po drugie tak w ogóle ten scenariusz nie różni się za bardzo od
sytuacji, kiedy zmiany wprowadzone przez programistę powodują zmianę
działania programu w aspekcie nie objętym dokumentacją.
>> sytuacji, skoro aspekt nie jest objęty testami, to prawdopowodnie należy
>> go objąć testami. No chyba że OSCR powie, że ten aspekt jest nieistotny,
>> to wtedy nie ma problemu.
>
> Ale skad programista ma *wiedziec*, ze zmiana ktora chce wprowadzic w
> kodzie jest istotna i powinna byc skonsultowana z OSCR, skoro nie ma
> dokumentacji? Ma trzymac OSCR non-stop przy sobie? A jesli nad
> projektem pracuje wiecej niz 1 programista, to ile osob ze strony
> klienta ma je nadzorowac?
Zakłada się, że programista ma jakąś inteligencję i powinien na
podstawie rozmów z OSCR nabyć wiedzy i rozumienia na temat tego, jak
program ma działać i dlaczego właśnie tak.
Poza tym dąży się do tego, żeby zmiany funkcjonalne praktycznie zawsze
były objęte istniejącymi testami. Jeśli coś nie jest objęte testem, a
może być istotne, to się testy dodaje i potem one już są.
Następne wpisy z tego wątku
- 18.12.11 01:46 Andrzej Jarzabek
- 18.12.11 02:16 Roman W
- 18.12.11 02:24 Roman W
- 18.12.11 02:25 Roman W
- 18.12.11 02:58 A.L.
- 18.12.11 02:59 A.L.
- 18.12.11 10:27 Andrzej Jarzabek
- 18.12.11 10:41 Andrzej Jarzabek
- 18.12.11 10:50 Andrzej Jarzabek
- 18.12.11 11:04 Andrzej Jarzabek
- 18.12.11 11:45 Roman W
- 18.12.11 11:44 Roman W
- 18.12.11 11:52 Andrzej Jarzabek
- 18.12.11 12:14 Andrzej Jarzabek
- 18.12.11 12:18 Andrzej Jarzabek
Najnowsze wątki z tej grupy
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-12-03 Re: Tani dodatkowy sim do smartwacha
- 2024-12-03 Wróblewo => Analityk finansowy <=
- 2024-12-03 Praktyczny test GPS...
- 2024-12-02 Tak się sprzedają elektryczne woldzwageny ;-)
- 2024-12-02 Akumulator do Hyundai
- 2024-12-02 Olsztyn => Sales Specialist <=
- 2024-12-02 Poznań => Technical Artist <=
- 2024-12-02 Bieruń => Regionalny Kierownik Sprzedaży (OZE) <=
- 2024-12-02 Kraków => Business Development Manager - Dział Sieci i Bezpieczeńst
- 2024-12-02 Chrzanów => Team Lead / Tribe Lead FrontEnd <=
- 2024-12-02 Białystok => Delphi Programmer <=
- 2024-12-02 Poznań => Dyspozytor Międzynarodowy <=
- 2024-12-02 Szczecin => Key Account Manager (ERP) <=
- 2024-12-02 Poznań => Senior PHP Developer <=
- 2024-12-03 Usiłuję zapłacić za energetyzację...