| 
			| 
					
						| Igel | 
								|  | «  : 07-09-2006 14:16 »  |  | 
 
 Начало см. тему "Паттерны проектирования". Значит вопросы касаются пока написания тестов. Просто не представляю как писать, хотя особенно и не думал.   Тут возникают вопросы :   Писать-ли для каждой процедуры или для задачи? Или разбивать на некие куски и создавать тесты для них?   Тем более если нет четкого представления о решаемой задаче, как можно создать тест? Тут я в тупике, сказывается отсутствие опыта. |  
						| 
								|  |  
								|  |  Записан | 
 
 Ёжики, это не только ценные шкурки... |  |  | 
	| 
			| 
					
						| Alf 
								Гость
 | 
								|  | « Ответ #1 :  07-09-2006 14:33 »   |  | 
 
 Тем более если нет четкого представления о решаемой задаче, как можно создать тест? А что тестировать, если нет четкого представления о задаче? Как можно разработать программу, считающую неизвестно что?  Задача теста - попытаться обнаружить ошибки в программе. Чем больше ошибок обнаружено, тем успешнее было проведено тестирование. Это значит, что есть возможность исправить их до передачи заказчику и не ронять свой престиж как разработчика. Если ты не представляешь, каким образом можно оценить решение задачи, значит, бесполезно браться за программирование, нужно продолжать (начинать?) анализ. Так же бесполезно что-то тестировать в этои случае. Программа выдает какие-то цифры, а ты не знаешь, правильны они или нет. Разве что проверить, что не вылетает по ошибке, но этого маловато, чтобы судить о качестве. Тут на самом деле два больших вопроса: 1. Что  и как  тестировать? 2. Чем  тестировать? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Igel | 
								|  | « Ответ #2 : 07-09-2006 14:55 »  |  | 
 
 Alf, ты прав. Это я с текущего положения так неудачно выскзался.По поводу оценки решения задачи. Реализаций этой задачи может быть несколько. Оценить можно пока только со своего опыта.
 Одна из идей, вычитанная - это возможность на этапе составления тестов уточнить спецификацию задачи или элемента.
 Ясно понятно, что без анализа никуда.
 По поводу вопросов присоединяюсь с уточнениями.
 1. Как определить, что тестировать? Какие рекоммендации для начального уровня?
 2. Есть-ли инструменты по созданию тестов ? (В книжке упоминалось, но не конкретно)
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Ёжики, это не только ценные шкурки... |  |  | 
	| 
			| 
					
						| Антон (LogRus) | 
								|  | « Ответ #3 : 07-09-2006 17:49 »  |  | 
 
 Igel, относись к тестам, как к проектированию на этапе написания теста ты решаешь каким будет поведение системы, т.е. фактически дополнительно документируешь   такая у нас политика партии на предприятии   пишешь тест проектируешь пишешь код проектируешь дорабатываешь тест снова проектируешь код постоянно перерабатывается и это хорошо сплошной не прекразающийся цикл разработки: рефакторинга и тестов тесты нужно писать и на каждую функции(unit-test) и на функционал отдельно в идеале функциональный тест должен уметь получать тестовые данные из вне, такми образом ты разгружаешь службу тестирования котороя может загнать в автотест свои тестовые данные и вместо много часового тестирования у тебя будет 3 минутный тест который можно запускать чуть ли не каждый час после нахождения ошибки которую не покрыл тест имеет смысл его дополнить. при написание тестов я использую заглушки вместо внешних классов по отношению к тестируемому функционалу в качестве заглушек в зависимоти от особенностей реализации используются или наследники интерфесов или стратегии шаблонов библотеку boost::test XML сериализацию boost::serialize для загрузки тестовых данных в функциональных тестах |  
						| 
								|  |  
								| « Последнее редактирование: 07-09-2006 17:50 от LogRus » |  Записан | 
 
 Странно всё это.... |  |  | 
	| 
			| 
					
						| ysv_ 
								Помогающий    Offline | 
								|  | « Ответ #4 : 07-09-2006 18:45 »  |  | 
 
 LogRus, а можно поподробнее про функциональное тестирование? Unit-тесты пользую давно и очень нравятся, а вот как пишут функциональные тесты и есть ли смысл их писать, если проги пишутся в одиночку? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Alf 
								Гость
 | 
								|  | « Ответ #5 : 07-09-2006 22:57 »  |  | 
 
 По поводу вопросов присоединяюсь с уточнениями.1. Как определить, что тестировать? Какие рекоммендации для начального уровня?
 2. Есть-ли инструменты по созданию тестов ? (В книжке упоминалось, но не конкретно)
 Сразу на оба не отвечу, слишком объемно. Давай начнем с первого - что тестируем? Давай начнем с примера. Простенького до нелепости даже. Потому как реальные задачи обрастают массой деталей, которые только запутают дело. Предположим, что я заказал тебе написать функцию вычисления площади прямоугольника по известным длине и ширине. Первым делом ты берешься за анализ проблемы. Если ты не знаешь, как считается площадь прямоугольника, то и программу не напишешь никогда. Поэтому мы берем учебник геометрии и обнаруживаем, что найти площадь можно, перемножив его длину и ширину. И тут же задаем себе вопрос: как мы проверим правильность нашей функции? Для меня очевиден следующий набор тестов (и предполагаемых результатов): 1. X = -1, Y = -1 - ошибка. 2. X = 0, Y = -1 - ошибка. 3. X = -1, Y = 0 - ошибка. 4. X = 1, Y = -1 - ошибка. 5. X = -1, Y = 1 - ошибка. 6. X = 0, Y = 1 - 0. 7. X = 1, Y = 0 - 0. 8. X = 1, Y = 1 - 1. 9. X = 2, Y = 1 - 2. 10. X = 1, Y = 2 - 2. Я думаю, идея хорошо прослеживается. Я попытался проверить все возможные случаи - когда обе размерности отрицательны; когда одна из них отрицательна, а другая равна нулю; когда одна отрицательна, а другая положительна; когда обе положительны и равны между собой; когда обе положительны и не равны. Кроме того, я заранее определился, какой результат ожидаю получить в каждом случае, чтобы иметь возможность оценить каждый тест. Иначе тестирование превращается в пустую забаву. Конечно, на все случаи жизни тестов не напасешься. Внутри функции какой-нибудь гений может написать что-то вроде: if ((X = 7.25) AND (Y = 3.14)) then Area = 10000.0;, и попробуй найти ошибку подобными тестами черного ящика, не имея перед глазами исходного кода. В данном случае, если тестируется готовый код, лучше проанализировать текст, найти все точки ветвления и постараться построить такой набор тестов, который покроет все варианты. Строго говоря, все варианты покрыть возможно далеко не всегда, но можно разбить их на классы эквивалентности и протестировать каждый из них (собственно, именно это я и проделал, разбив каждую размерность на 3 класса - отрицательное значение, нуль, положительное значение). А вот если ты решил исповедовать XP, то можно сразу написать тесты (пока опускаем вопрос - как имменно), а потом писать код, который позволит им выполниться без ошибок. Например: if ((X < 0) OR (Y < 0))сгенерировать ошибку "недопустимый аргумент";
 if ((X = 0) OR (Y = 0))
 return 0;
 return X * Y;
 
Можно писать такой сложный код не сразу целиком, а частями, и тут же прогонять тесты. Например, после того, как введены первые две строчки, должны успешно завершиться тесты с 1-го по 5-й. Разумеется, второе сравнение с нулем в данном случае излишне, но в общем желательно проверять подобные особые случаи. Если с первым вопросом - что тестировать - появилась ясность, переходим дальше - чем тестировать, и как написать эти самые тесты. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Igel | 
								|  | « Ответ #6 : 08-09-2006 04:05 »  |  | 
 
 Alf, сразу вопросы,по организации.1. Т.е. на одну задачу набор тестов? А не может один тест - контролировать набор параметров?
 2. А вот как сделать проверку автоматизированной? Есть решения готовые?
 Т.е. написание теста можно разделить на этапы:
 - анализ задачи - изучение предметной области
 - определение критериев теста
 - Написание теста
 - Включения теста в систему проверки.
 
 Но получается нужно тест делать связанным с программным кодом? А потом для интеграции нужно код отрывать от теста?
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Ёжики, это не только ценные шкурки... |  |  | 
	| 
			| 
					
						| Igel | 
								|  | « Ответ #7 : 08-09-2006 04:06 »  |  | 
 
 А про Unit-тесты где можно глянуть? |  
						| 
								|  |  
								|  |  Записан | 
 
 Ёжики, это не только ценные шкурки... |  |  | 
	| 
			| 
					
						| Антон (LogRus) | 
								|  | « Ответ #8 : 08-09-2006 05:43 »  |  | 
 
 ysv_, смысл есть.    правльно написанный функциональный тест, снимит нагрузку с тестеров и даст им возможность дополнять тесты, если будут найдены ошибки в будующем, пропущенные автотестом. Я считаю, что все тесты лучше прикрутить к автосборке(на www.gnu.org  есть готовый проект), которая ночью собирёт проекты и запустит тесты, результаты посмотрите утром, вдруг чей-то код сломал связанный объект. как уже говорил, в тех функциональных тестах, что мне приходилось видеть(делать) тестовый случай представлен ввиде структуры со всеми входными и выходными данными, далее берём входные данные(из упомянутой структуры) отдаём в тестируемый функционал, результат сравниваем с эталоном. Один раз требовалось вводить дополнительные флаги, на вроде зачистки данных перед тестом, если тестируется интелектуальный контейнер и тестовые случае связанны в цепочки. все тестовые случаи это вектор, тестовые случаи загружаются из файла через XML сериализацию boost. Еще у есть такой подход написания теста к готовому коду(со своими недостатками и не везде подходит): берём и генерируем(в каком-нибуть цикле) все возможные варианты входных данных. отдаём данные в функцию результаты считаем эталоном и записываем в файл(предпологается что коду уже оттестирован) далее опять проводим генерацию данных, тест и результаты сравниваем уже с эталонными данными НО есть минусы код должен быть оттестирован и очень сложно понять какого почему тест выдаёт ошибку(поиск ошибок функционала значительно усложняется) |  
						| 
								|  |  
								| « Последнее редактирование: 08-09-2006 05:51 от LogRus » |  Записан | 
 
 Странно всё это.... |  |  | 
	| 
			| 
					
						| Alf 
								Гость
 | 
								|  | « Ответ #9 : 08-09-2006 06:52 »  |  | 
 
 Alf, сразу вопросы,по организации.1. Т.е. на одну задачу набор тестов?
 Я сейчас говорил о unit-тестировании, которое лежит в основе XP, рефакторинга, да и вообще более-менее профессионального программирования в целом. Здесь на одну задачу даже не набор тестов, а набор наборов. Конкретнее - на каждую более-менее нетривиальную функцию должен быть набор тестов, которые проверяют как правильность работы в допустимых условиях, так и правильную реакцию в недопустимых. Например, я проверял вычисление площади не только в допустимом диапазоне значений, но и при бессмысленных параметрах - отрицательная длина стороны. Вообще будь морально готов к тому, что объем тестового кода в 2-3 раза превысит объем самой программы. А не может один тест - контролировать набор параметров? Не понял вопрос. Проясни, пожалуйста, как ты это видишь. 2. А вот как сделать проверку автоматизированной? Есть решения готовые? К счастью - есть. Если по составу тестов вопросов больше нет, переходим к этому. Но получается нужно тест делать связанным с программным кодом? Связанным физически (в смысле должен находиться в том же файле) или логически (содержимое теста зависит от конкретного кода)? А потом для интеграции нужно код отрывать от теста? Что есть интеграция? Непонятно. А про Unit-тесты где можно глянуть? Если читаешь по-английски, могу прислать хорошую книгу "Pragmatic Unit Testing". Она посвящена тестированию в среде NUnit для C#. Хороша она тем, что не сводится к банальному "в меню X выберите опцию Y, появится окно...", а описывает методологию unit-тестирования как такового. Есть ее вариант для Java, если тебе он подойдет больше, поищи в сети. И все-таки давай не смешивать. Сначала до конца разберемся с тем, какими должны быть тесты. А уже потом перейдем к конкретным инструментам, которые дают возможность их разрабатывать и выполнять. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Igel | 
								|  | « Ответ #10 : 08-09-2006 12:27 »  |  | 
 
 А не может один тест - контролировать набор параметров? Не понял вопрос. Проясни, пожалуйста, как ты это видишь.Сам плохо понимаю.    Это вопрос скорее определения - что есть тест! 2. А вот как сделать проверку автоматизированной? Есть решения готовые? К счастью - есть. Если по составу тестов вопросов больше нет, переходим к этому.А мы говорили о составах? Пока я понял, что контролируются выходные параметры, а если программа не только выходные параметры выдает, но и производит какие-то изменения в смежных задачах. Но получается нужно тест делать связанным с программным кодом? Связанным физически (в смысле должен находиться в том же файле) или логически (содержимое теста зависит от конкретного кода)?Про логическое понятно. Думаю что это может применяться, а для некоторых задач и не применяться.  Имелась ввиду именно физическая связь. А потом для интеграции нужно код отрывать от теста? Что есть интеграция? Непонятно.Т.е. несколько разработчиков решают разные задачи проекта, создают тесты, пишут код. Но наверняка нужно потом необходимо собрать, например в некий модуль. Т.е. я неверное слово вставил    не интеграция, а КОМПОНОВКА. А про Unit-тесты где можно глянуть? И все-таки давай не смешивать. Сначала до конца разберемся с тем, какими должны быть тесты. А уже потом перейдем к конкретным инструментам, которые дают возможность их разрабатывать и выполнять.Согласен!  Обоими руками за. А вот за книжку спасибо, но с англицким у меня туго..   |  
						| 
								|  |  
								|  |  Записан | 
 
 Ёжики, это не только ценные шкурки... |  |  | 
	| 
			| 
					
						| Alf 
								Гость
 | 
								|  | « Ответ #11 : 08-09-2006 13:01 »  |  | 
 
 Это вопрос скорее определения - что есть тест! Не претендую на энциклопедическую точность, но попробую сформулировать. Тест в моем понимании - это некое контрольное задание, цель которого - обнаружить наличие дефектов в программе. Те тесты, которые я предложил, имели целью не только проверить правильность расчета при правильных входных данных, но и спровоцировать крах программы неправильными. Тесты бывают разные Раз уж речь зашла об экстремальном программировании, прежде всего в центре внимания должны быть unit-тесты, т.е. тесты, которые относятся к отдельному, вырванному из контекста модулю. А мы говорили о составах? Лично я - говорил, когда перечислил возможные тесты для несложной функции. Перед тем, как писать тесты, ты должен решить, какие имемнно потребуются. Это и есть пока тема разговора. Пока я понял, что контролируются выходные параметры, а если программа не только выходные параметры выдает, но и производит какие-то изменения в смежных задачах. Эту фразу я не понял. Как выглядят изменения в смежных программах? Ведь не изменения же их кода имеется в виду. Имелась ввиду именно физическая связь. Это мы обсудим, когда доберемся до физического воплощения тестов в кодах. Сейчас главное уяснить одно - какой набор тестов следует построить перед тем, как писать подуль согласно XP. Предложи нтересную для тебя, не слишком громоздкую задачу. Попробуем построить набор тестов для нее. Кодирование тестов - несложная механическая задача, намного проще, чем выбор набора тестов. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Igel | 
								|  | « Ответ #12 : 13-09-2006 15:53 »  |  | 
 
 Всем привет! Вырубили инет, только починили. Тесты бывают разные Раз уж речь зашла об экстремальном программировании, прежде всего в центре внимания должны быть unit-тесты, т.е. тесты, которые относятся к отдельному, вырванному из контекста модулю.
 ДОговорились. Думаю вопросы будем решать по мере их возникновения. Пока я понял, что контролируются выходные параметры, а если программа не только выходные параметры выдает, но и производит какие-то изменения в смежных задачах. Эту фразу я не понял. Как выглядят изменения в смежных программах? Ведь не изменения же их кода имеется в виду.Ну-у, например одна из функциональных задач - прописать что-то в реестре и подключить какой-то сервис и пр. Т.е что не связано непосредственно с разработкой, но играет значение на функционирование. Одним словом тестировать задачи, не имеющие явных выходных параметров.  С другой стороны это можно проверять в приемочных теста на систему. Предложи нтересную для тебя, не слишком громоздкую задачу. Попробуем построить набор тестов для нее. Кодирование тестов - несложная механическая задача, намного проще, чем выбор набора тестов.
 На вскидку что-то не идет в голову... Подумаю, сформулирую, завтра постараюсь ответить...   |  
						| 
								|  |  
								|  |  Записан | 
 
 Ёжики, это не только ценные шкурки... |  |  | 
	| 
			| 
					
						| Hooter | 
								|  | « Ответ #13 : 13-09-2006 23:48 »  |  | 
 
 Ну-у, например одна из функциональных задач - прописать что-то в реестре и подключить какой-то сервис и пр. Т.е что не связано непосредственно с разработкой, но играет значение на функционирование. Одним словом тестировать задачи, не имеющие явных выходных параметров. 
 Имхо, нужно ввести не только определение теста модуля, но и определение вход-выходных параметров. Например, это - набор условий, при выполнении которых можно сказать, что тест выполнен успешно (я тут своими словами, так что звиняйте, если что...    ). В приведенном примере:  1. выходной параметр - запись в реестре; условие выполнения - действительное наличие этой самой записи в реестре по окончании работы юнита. 2. выходной параметр - подключение службы; условие выполнения - проверка того, что служба действительно подключена по окончании работы юнита. и т.д. То есть, выходные параметры - это не обязательно какие-то расчетные значения, возвращаемые функциями. Выходными параметрами могут быть также и состояние операционной системы, и состояние других модулей (если модуль по какой-то причине взаимодействует с ними и меняет их состояние) и т. п. То есть, всё то, на что влияет модуль в процессе своего выполнения. |  
						| 
								|  |  
								| « Последнее редактирование: 14-09-2006 00:10 от Hooter » |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sel 
								ЗлобныйАдминистратор    Offline | 
								|  | « Ответ #14 : 23-10-2006 13:35 »  |  | 
 
 Igel, на какой стадии проект? |  
						| 
								|  |  
								|  |  Записан | 
 
 Слово не воробей. Всё не воробей, кроме воробья. |  |  | 
	| 
			| 
					
						| Igel | 
								|  | « Ответ #15 : 23-10-2006 13:42 »  |  | 
 
 Igel, на какой стадии проект?
 На стадии УЖАС.   На самом деле меня не устраивает существующая методика разработки. Поэтому изучал различные и остановился на ХР. На текущей стадии внедрять ХР в проект не вижу смысла. Но есть уже задумки на модернизацию и изменения. Осложнено все тем, что заниматься этим буду пока один. Поэтому хочу понять и начать с тестов. Прикину структуру, спроектирую костяк и хочу попробовать сделать для первой задачи тесты, пока только в свободное время. Которого пока мало.   |  
						| 
								|  |  
								|  |  Записан | 
 
 Ёжики, это не только ценные шкурки... |  |  | 
	| 
			| 
					
						| Sel 
								ЗлобныйАдминистратор    Offline | 
								|  | « Ответ #16 : 23-10-2006 14:12 »  |  | 
 
 Хм. Думаю, тебе стОит попробовать выложить свои задумки и разработки сюда. Найдется кто-то, кто поможет. А? По поводу времени... Его у всех мало, не так ли. Так что давай начинай действовать, пока идея совсем не забылась.   |  
						| 
								|  |  
								|  |  Записан | 
 
 Слово не воробей. Всё не воробей, кроме воробья. |  |  | 
	| 
			| 
					
						| Igel | 
								|  | « Ответ #17 : 23-10-2006 14:16 »  |  | 
 
 Sel, Тут проблема с косноязыкостью. Думаю трудно мне будет изложить задумки, но я попробую. Но это пока оффтоп.  Или я не прав?
 А если ложить, то в отдельную тему - аля дневничок идей и задумок?
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Ёжики, это не только ценные шкурки... |  |  | 
	| 
			| 
					
						| Sel 
								ЗлобныйАдминистратор    Offline | 
								|  | « Ответ #18 : 23-10-2006 14:38 »  |  | 
 
 Sel, Тут проблема с косноязыкостью. Думаю трудно мне будет изложить задумки, но я попробую. Но это пока оффтоп.  Или я не прав?
 
 А я думаю, что если ты взялся за что-то, то надо вводить народ в курс твоих разработок.    Тем более, когда работаешь один и не против привлечь помощников.  А если ложить, то в отдельную тему - аля дневничок идей и задумок?
 Дневник - это хорошо, конечно... но... В названии ветки заявлено нечто иное... Или я не права? Время идет, дело стоИт. Или -таки что-то делается?   |  
						| 
								|  |  
								|  |  Записан | 
 
 Слово не воробей. Всё не воробей, кроме воробья. |  |  | 
	| 
			| 
					
						| Артем 
								Опытный    Offline 
								Пол:   
								Beware the wolf in sheep's clothing.
								
								
								
								
								
							 | 
								|  | « Ответ #19 : 23-10-2006 14:56 »  |  | 
 
 Igel, на какой стадии проект?
 На стадии УЖАС.   На самом деле меня не устраивает существующая методика разработки. Поэтому изучал различные и остановился на ХР. "...та же фигня, Ромео" (с)   Существующая  (у нас на предприятии)  методика разработки меня тоже совсем не устраивает.   Вот только XP как-то не приглянулось, я больше рыл в сторону более глубокого проектирования, до начало кодирования, т.е. чтоб к моменту, когда я запускаю Студию вся программа уже была "написана" (ну, хотя бы очень глубоко продумана и как-то отображена на "бумаге"). Это я все к тому, что тоже готов обсуждать/критиковать/предоставлять различные "задумки", насчет методики разработки ПО. Впрочем, это действительно далековато от заявленной темы  а насчет XP, первое (и, пожалуй, основное) что мне не очень понравилось -- это, то что заказчик не будет знать, что  получит, пока это  не получит   |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Igel | 
								|  | « Ответ #20 : 23-10-2006 15:22 »  |  | 
 
 А я думаю, что если ты взялся за что-то, то надо вводить народ в курс твоих разработок.    Тем более, когда работаешь один и не против привлечь помощников. В принципе не против.  Время идет, дело стоИт. Или -таки что-то делается?  В основном идеи роятся... а работается пока только на работе. |  
						| 
								|  |  
								|  |  Записан | 
 
 Ёжики, это не только ценные шкурки... |  |  | 
	| 
			| 
					
						| Igel | 
								|  | « Ответ #21 : 23-10-2006 15:30 »  |  | 
 
 я больше рыл в сторону более глубокого проектирования, до начало кодирования, т.е. чтоб к моменту, когда я запускаю Студию вся программа уже была "написана" (ну, хотя бы очень глубоко продумана и как-то отображена на "бумаге").
 Та-же фигня была. Хотелось научиться детально анализировать и описывать процессы. То-ли ввиду природной лени, недостатка времени или загруженности - но ничего у меня не получилось. Не скажу, что это не нужно, но на моем уровне это не приводило к сдвигам в разработке. Все приходилось десятки раз переделывать. Мне приглянулся один существенный аспект - система предварительных тестов (заколебался совмещать несовместимое и выдумывать черт знает что). что мне не очень понравилось -- это, то что заказчик не будет знать, что  получит, пока это  не получит  По идее он с самого начала будет знать что ему нужно. А то, что ты говоришь - это и есть классическа разработка. Как бы детально не было проработано ТЗ - получится то, что смог сделать разработчик. В ХР подразумевается, что заказчик участвует в проекте - по этому знает о проекте все с точностью, которая и не снилась. |  
						| 
								|  |  
								|  |  Записан | 
 
 Ёжики, это не только ценные шкурки... |  |  | 
	| 
			| 
					
						| Dimka 
								ДеятельМодератор    Offline 
								Пол:    | 
								|  | « Ответ #22 : 23-10-2006 19:07 »  |  | 
 
 а насчет XP, первое (и, пожалуй, основное) что мне не очень понравилось -- это, то что заказчик не будет знать, что  получит, пока это  не получит Это почему? Поподробней, пожалуйста. Сколь мне известно, такое возможно лишь в случае, когда заказчик сам не знает, чего хочет получить. Вот что мне не нравится в XP, так это неприменимость понятия "сопровождение" к разработанным системам. Но не ко всяким, а к тем, которые работают 7х24 с краткими техническими перерывами или используют общие хранилища данных. Не могу я, например, БД предприятия "рефакторить" при появлении новых требований к системе - это гигантские риски положить всю систему и остановить работу всего предприятия. Часто даже не риски а гарантированные последствия, поскольку экземпляры desktop-приложений раскиданы по разным рабочим местам, и одномоментно обновить их весьма проблематично, а разные версии умеют работать лишь с соответствующими им версиями БД. Выкручиваемся при помощи многоуровневых архитектур и при помощи так называемого "эволюционного программирования"    Когда новая версия "прорастает" из старой, и в какой-то момент в системе функции дублируются их новой и старой версиями. |  
						| 
								|  |  
								|  |  Записан | 
 
 Программировать - значит понимать (К. Нюгард)Невывернутое лучше, чем вправленное (М. Аврелий)
 Многие готовы скорее умереть, чем подумать (Б. Рассел)
 |  |  | 
	| 
			| 
					
						| Артем 
								Опытный    Offline 
								Пол:   
								Beware the wolf in sheep's clothing.
								
								
								
								
								
							 | 
								|  | « Ответ #23 : 24-10-2006 07:57 »  |  | 
 
 Случай когда заказчик всё время сидит рядом с программистом -- это идеальный случай. У нас так не бывает (к сожалению). а насчет XP, первое (и, пожалуй, основное) что мне не очень понравилось -- это, то что заказчик не будет знать, что  получит, пока это  не получит Это почему? Поподробней, пожалуйста. Сколь мне известно, такое возможно лишь в случае, когда заказчик сам не знает, чего хочет получить.До сих пор у нас заказчик узнавал о том, что он получит из ТЗ. Но даже фразу "ввести число от 1 до 100" можно реализовать очень различными способами (начиная от ввода в "EditBox" и заканчивая рисованием числа мышкой как в paint).   Согласен, есть тех. поректы и/или экскизные, но они у нас получаются настолько объемными и сложными, что даже разработчики этих документов с трудом в них ориентируются, а уж заказчик и подавно => заказчик их не читает (а если читает, то не осознает) => заказчик ориентируется только на ТЗ.  А в ТЗ, например, не всякий сценарий "впихнешь", не говоря уж о цвете "четвертой во втором ряду круглой кнопки". А хотелось бы, чтобы заказчик (ну, и как побочный эффект -- порграммист    ) до  начала кодирования в деталях знал что получит, а не так "программа которая делает то-то и то-то".   |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Антон (LogRus) | 
								|  | « Ответ #24 : 24-10-2006 09:08 »  |  | 
 
 Артем, при отсутсвии заказчика ввиде физического лица рядом с программистами(по ряду объективных причин), XP предлагает выделить человека который будет выполнят роль заказчика из числа сотрудников.
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Странно всё это.... |  |  | 
	|  |