-
Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: Andrzej Jarzabek <a...@g...com>
Newsgroups: pl.comp.programming
Subject: Re: ilu jest programistow na swiecie?
Date: Sat, 21 May 2011 01:39:24 +0100
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 133
Message-ID: <ir71js$dc4$1@inews.gazeta.pl>
References: <iqjp8e$led$1@inews.gazeta.pl> <iqqt7m$qi0$1@news.onet.pl>
<iqqtpa$gt3$1@node2.news.atman.pl> <iqr4u7$qpo$1@news.onet.pl>
<iqr7pi$r95$1@node2.news.atman.pl> <iqrujs$b8$1@news.onet.pl>
<iqs0o4$85o$1@news.onet.pl> <1...@l...localdomain>
<iqtglc$5c5$1@news.onet.pl> <iqthln$9gp$1@news.onet.pl>
<iqtirb$9kr$1@news.onet.pl> <iqtj7p$fel$1@news.onet.pl>
<c...@w...googlegroups.com>
<iqtpbn$80t$1@news.onet.pl>
<7...@t...googlegroups.com>
<0...@1...googlegroups.com>
<iqu14k$9ee$1@news.onet.pl>
<6...@g...googlegroups.com>
<iqucfc$jta$1@news.onet.pl> <iquoqb$ijm$1@inews.gazeta.pl>
<ir1765$sji$1@news.onet.pl>
<9...@n...googlegroups.com>
<ir2r6p$gmn$1@solani.org> <ir2sv6$899$1@news.onet.pl>
<a...@n...gazeta.pl>
<ir55ji$ist$1@news.onet.pl>
NNTP-Posting-Host: 5acd7098.bb.sky.com
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: inews.gazeta.pl 1305938364 13700 90.205.112.152 (21 May 2011 00:39:24 GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Sat, 21 May 2011 00:39:24 +0000 (UTC)
X-User: septi
In-Reply-To: <ir55ji$ist$1@news.onet.pl>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.17)
Gecko/20110414 Thunderbird/3.1.10
Xref: news-archive.icm.edu.pl pl.comp.programming:190538
[ ukryj nagłówki ]On 20/05/2011 08:35, Michal Kleczek wrote:
> Andrzej Jarzabek wrote:
>
>> Oczywiście, że każda iteracja jest testowana od A do Z. Automatycznie.
>
> Sek w tym, ze to jest tylko _udawanie_ testowania. Nie da sie _dobrze_
> przetestowac niebanalnego oprogramowania w czasie jednej iteracji (o
> dlugosci proponowanej przez "agile").
Dlatego testuje się przez _wszystkie_ iteracje. Np. jeśli masz release
po trzech miesiącach od rozpoczęcia kodowania, to to, co masz w tym
release jest już testowane od trzech miesięcy.
Problem z testowaniem "od A do Z" polega na tym, że metaforycznie masz
swoje A, swoje Z i jakieś literki pomiędzy, ale nie wiesz ile w ogóle
jest literek w alfabecie. W dodatku alfabet zmienia się w miarę rozwoju
oprogramowania. Dlatego też wszystkie literki, o których wiesz,
testujesz automatycznie za każdą iteracją, a może nawet codziennie, ale
cały czas masz równolegle tesowanie ręczne polegające na szukaniu, czy
są jeszcze jakieś literki między A i Z, o których się nie pomyślało.
> Co wiecej - trzeba sobie zdac sprawe z tego, ze _prawdziwe_ testowanie b.
> duzo kosztuje (nie tylko ze wzgledu na czas, lecz takze ze wzgledu na
> zasoby, ktore sa potrzebne do tego).
Jasne.
> I dalej - ze wzgledu na te koszty nie
> mozna sobie pozwolic na to, zeby robic to zbyt czesto
Jak się robi porządnie, to się ma przeznaczone zasoby tylko do
testowania danego produktu. Jak go nie testujesz, to te zasoby leżą
odłogiem i kosztują z grubsza tyle samo.
> - stad stosuje sie metody pozwalajace _unikac_ bledow (a nie je wykrywac i
> poprawiac) - to jest po prostu tansze i - co wiecej - pozwala osiagnac
> jakosc, ktorej nie da sie osiagnac testujac/poprawiajac.
Jak najbardziej. Z tym że jednak wykrywać i poprawiać należy również.
Ale w Agile jak najbardziej zwraca się bardzo dużą uwagę na praktyki
pozwalające na unikanie błędów: coding standards, refactoring, simple
design itd.
> Tyle, ze te metody prowadza - mniej lub bardziej - do modelu kaskadowego
Właśnie niekoniecznie.
> (ew. do powaznego wydluzenia iteracji).
Też niekoniecznie. Shore&Warden proponują iteracjęę trwającą tydzieeń i
rygoorystyczne trzymanie się tego.
> Np. unikanie bledow w rozpoznaniu wymagan polega na _dokladniejszym_
> wyspecyfikowaniu tych wymagan i _dokladniejszej_ weryfikacji specyfikacji
Agile proponuje dokładniejszą specyfikację uzyskać w ten sposób, że
programista jak nie wie co dalej robić, to rozmawia z customerem (lub
analitykiem) i on mu to specyfikuje. Jako metodę dokładniejszej
weryfikacji proponuje się pokazanie customerowi działającego prototypu i
spytanie czy właśnie o to chodziło.
> - nie oplaca sie robic oprogramowania _zanim_ sie skonczy specyfikacje,
> bo to strata czasu i pieniedzy na robienie czegos, co potencjalnie
nie jest
> nikomu potrzebne.
Przecież to, co jest w specyfikacji też potencjalnie nie jest nikomu
potrzebne. Na szybko z co najmniej dwóch powodów:
a) było potrzebne w momencie tworzenia specyfikacji, ale już nie jest
b) nigdy nie było potrzebne, ale analityk popełnił błąd i wpisał, bo
uznał że potrzebne.
W agile masz tę zaletę, że najdalej na początku danej iteracji, w której
to coś jest implementowane, customer potwierdził że tak, na pewno jest
potrzebne, a co więcej jest to jedna z najważniejszych rzeczy, jakie
zostały do zrobienia.
> I to, ze w ramach analizy wymagan robi sie prototypy, nie powoduje
> automatycznie, ze te prototypy staja sie gotowym produktem
Co to znaczy "stają się"? Że są w takiej postaci releasowane? Nikt tego
nie postuluje. Staje się, w sensie że jest wykorzystywany do tworzenia
produktu, owszem. Przy wszystkich krytykach do agilee, że to czy tamto
jest wyrzucaniem pieniędzy, to pisanie działającego programu, który robi
to co trzeba, po to, żeby go wyrzucić i napisać to samo od nowa też jest
jednak marnowaniem pieniędzy.
> - a to znowu z
> tego powodu, ze prototypy robi sie najtaniej jak mozna i ich jakosc jest
> daleka od jakosci oczekiwanej od produktu koncowego. Nie ma tez sensu nawet
Tu jest trochę fałszywe założenie, że taniej jest pisać kod niższej
jakości od kodu wysokiej jakości. Może być tańsze tylko o tyle, że
możesz do tego wykorzystywać słabszych programistów którym gorzej
płacisz, ale to raczej nie jest szczególnie dobre podejście do agile.
Poza tym do wyrównywania (w górę) poziomu kodu masz takie praktyki jak
coding standards, collective code ownership i pair programming (lub code
review).
Są też co prawda sytuacje, gdzie ma sens pisanie throwaway code, bo z
jakichś tam powodów łatwo jest zrobić jakiś prototyp, a trudno go
będziee wcielić do produktu końcowego (bo jest np. wykonany w jakiejś
niekompatybilnej technologii). I metodologie agile przecież też tego nie
zabraniają, co najwyżej lekko zniechęcają (na zasadzie jeśli nie masz
realnych problemów, żeby zrobić inaczej, to zrób raczej tak, żeby się
nadawało do produkcji albo przynajmniej do refaktoryzacji).
> probowac, by te prototypy mialy konstrukcje i jakosc produktu koncowego, bo
Oczywiście, że nie. Po to masz refactoring.
> U podstaw "metodyk agile" lezy (mniej lub bardziej jawne) zalozenie, ze da
> sie tak robic oprogramowanie, ze koszt jego modyfikacji nie wzrasta w miare
> jego rozrastania sie. Co jest zalozeniem po prostu absurdalnym - jezeli np.
> na poczatku podejmiemy decyzje o tworzeniu tego oprogramowania dajmy na to w
> C# (bo zespol uznal, ze tak najlepiej) a potem okaze sie, ze klient
> zapomnial nam powiedziec o tym, ze to ma dzialac na Solarisie (z jakichs tam
> powodow), to jak niby mamy zrobic "refaktoring" nie przepisujac tego
> oprogramowania w calosci???
No moment, ale pracujemy przecież cały czas z klientem. Czyli jest
powiedzmy wczesne zebranie zespołu, na którym siedzi customer
representative, i jest rozmowa o tym, w jakiej technologii wykonać.
Jeśli pada propozycja C#, to raczej padnie pytanie, czy można na pewno
założyć, że produkt będzie pod .NET, a .NET jest tylko pod Windows
(istnienie Mono na potrzeby dyskusji pominiemy). Od przedstawiciela
klienta raczej będzie się w tym momencie wymagało potwierdzenia, że
można takie założenie poczynić no i oczywiście trafia to do bieżącej
dokumentacji projektu. Jeśli klient potem zmieni zdanie, to mu można w
tej sytuacji powiedzieć, że nie zrobimy albo że trzeba będzie to z
punktu widzenia terminów i kosztóww potraktować jako robienie od nowa.
Następne wpisy z tego wątku
- 21.05.11 06:51 Michal Kleczek
- 21.05.11 07:27 Rafal\(sxat\)
- 21.05.11 08:46 yassek
- 21.05.11 08:39 Zenek1234
- 21.05.11 09:19 Maciej Sobczak
- 21.05.11 09:46 Zenek1234
- 21.05.11 09:51 Zenek1234
- 21.05.11 12:00 Andrzej Jarzabek
- 21.05.11 12:19 Paweł Kierski
- 21.05.11 12:32 Andrzej Jarzabek
- 21.05.11 13:03 Andrzej Jarzabek
- 21.05.11 13:33 Andrzej Jarzabek
- 22.05.11 05:49 Paweł Kierski
- 22.05.11 08:10 Andrzej Jarzabek
- 22.05.11 11:47 Maciej Sobczak
Najnowsze wątki z tej grupy
- Alg. kompresji LZW
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 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??
Najnowsze wątki
- 2025-02-21 Warszawa => Key Account Manager IT <=
- 2025-02-21 Warszawa => Data Engineer (Tech Lead) <=
- 2025-02-21 Aliexpress zaczął oszukiwać na bezczelnego.
- 2025-02-21 Warszawa => System Architect (Java background) <=
- 2025-02-21 Kula w łeb
- 2025-02-21 Warszawa => System Architect (background deweloperski w Java) <=
- 2025-02-21 Warszawa => Solution Architect (Java background) <=
- 2025-02-21 Lublin => JavaScript / Node / Fullstack Developer <=
- 2025-02-21 Pawel S
- 2025-02-21 Warszawa => Key Account Manager (Usługi HR) <=
- 2025-02-21 Katowice => Senior Field Sales (system ERP) <=
- 2025-02-21 Chrzanów => Programista NodeJS <=
- 2025-02-21 Wrocław => Konsultant wdrożeniowy Comarch XL/Optima (Księgowość i
- 2025-02-21 Warszawa => Administrator Systemów Windows IT <=
- 2025-02-21 Wrocław => Specjalista ds. Sprzedaży (transport drogowy) <=