Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Новый проект, Когда начинаешь новый проект 
:(
    Опции темы
Platon
Дата 17.10.2007, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



Здравствуйте, уважаемые.

Хочу наконец сделать что-то серьезное, но не знаю с какого края подойти к разработке. Как вы поступаете когда не знаете с какого конца браться. Усугублено это клиент-серверной архитектурой.
Пробовал начать с дизайна. Писал на бумажках, потом терял, да и зачем они там, какие-то хилые, проще с ходу писать, я не в команде, т.е. даже и для себя то в лом писать UML. Что посоветуете, какой диагноз?

PS: Мудрость по поводу "Когда не знаешь за что браться - берись за ум" не предлагать.
PM MAIL ICQ   Вверх
v2v
Дата 17.10.2007, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: 8
Всего: 56



идеи.
начинать надо с идеи и желания чего то написать.
а дальше начинается жизненый цикл программного продукта


--------------------
PM   Вверх
AntonSaburov
Дата 17.10.2007, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Ну можно не на бумажке - файл тоже хорошо.

1. Описать варианты использования - UseCases. Сделать их подробными.
2. Под подробные UseCases сделать архитектуру классов
3. Реализовать классы
4. Параллельно писать Unit-tests - для удобства проверки
5. Завершить версию и начать улучшать в новой версии.

Все.
PM MAIL WWW ICQ   Вверх
Platon
Дата 18.10.2007, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



v2v, AntonSaburov, главное в нашем деле поддержка, спасибо, помогло, уже не боюсь браться.
В новом проекте - главное начать, в принципе как и везде.
+ еще сегодня решил заглянуть в соседскую тетрадку по университету. Про нисходящее проектирование. Так вот меня там зацепила фраза: "сначала система описывается в терминах обобщенной функции предметной области, каждая из функций делится на подфункции (выполняется уточняющий шаг), уточняющие шаги делаются до тех пор, пока не получится языка программирования."

в принципе это 2-й пункт в посте v2v

Цитата

2. Проектирование (техническое проектирование, логическое проектирование). Разработка в соответствии со сформулированными требованиями состава автоматизируемых функций (функциональная архитектура) и состава обеспечивающих подсистем [системная архитектура), оформление технического проекта ИС.

PM MAIL ICQ   Вверх
COVD
Дата 18.10.2007, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Цитата

Как вы поступаете когда не знаете с какого конца браться.
 

Надо начинать с поиска прототипа. Говорят, в интернете есть все. Найти и прикрутить. Так работают профессионалы.   smile 
PM MAIL   Вверх
Platon
Дата 18.10.2007, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



Прототип то однозначно есть всегда, и данный случай, естественно, не исключение.
PM MAIL ICQ   Вверх
dorogoyIV
Дата 20.10.2007, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 3
Всего: 46



Цитата(COVD @  18.10.2007,  19:38 Найти цитируемый пост)
 Найти и прикрутить.

самое выгодное решение. если это решение развить, то можно вообще ничего не делать - а просто найти  smile 
PM MAIL   Вверх
Platon
Дата 20.10.2007, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



Тут у меня настал кризис веры. Причиной тому высказывание:
Цитата(COVD @  17.10.2007,  16:27 Найти цитируемый пост)
А большинство программистов осваивают готовые решения J2EE. Так сказать, согласно лозунгам, быстро и на высоком профессиональном уровне удовлетворяют потребности индустрии.

+ поведение товарищей по локальной сети. Когда предлагаю затестить мой мини-шедевр, сначала с удовольствием соглашаются, но когда не запускается, спрашивают "что не так?" - я кидаю им jre-setup, многие отказываются от дальнейших процедур, потому что лень устанавливать.

В связи с этим размышления... начиная с Windows XP в поставку включен .NET, и разработчикам под эту технологию проще продвигать свою технологию, нежели Java. А каждое приложение, включающее в себя JRE - это издевательское отношение к целевому пользователю и плюс в пользу дотеров, которым не надо думать об этом.

Интересует перспектива desktop приложений, жива ли она и не загнется ли?
PM MAIL ICQ   Вверх
LSD
Дата 22.10.2007, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Да ладно smile 
Скачиваешь IzPack и делаешь им инсталятор, который сам поставит и программу и JRE.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
COVD
Дата 22.10.2007, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Цитата

Интересует перспектива desktop приложений, жива ли она и не загнется ли?


Sun предпринимает усилия для уменьшают размера JRE и упрощения процедуры установки. Некоторые производители (например, Dell) предустанавливают java на новые компьютеры. 

Цитата

Скачиваешь IzPack и делаешь им инсталятор, который сам поставит и программу и JRE


Установка JRE иногда представляет проблему для клиентов. У людей, далеких от компьютеров, не всегда это успешно получается. Прочитал отзывы на сайте IzPack, но так и не понял - он устанавливает JRE лучше, чем это делает Sun на своем сайте? 

Это сообщение отредактировал(а) COVD - 22.10.2007, 16:16
PM MAIL   Вверх
LSD
Дата 22.10.2007, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(COVD @  22.10.2007,  16:45 Найти цитируемый пост)
Установка JRE иногда представляет проблему для клиентов. У людей, далеких от компьютеров, не всегда это успешно получается.

Какую (если инсталяция происходит в silent режиме)?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
COVD
Дата 22.10.2007, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Я давно не инсталлировал, но по крайней мере раньше инсталляция состояла из нескольких нажатий кнопок. Опять же, пользователь должен иметь административные права на своем аккаунте. Короче, нам звонят в тех поддержку с этими проблемами.   Возможно, мы чего-то не так делаем (не используем IzPack). Но вот, что пишет авторитет (Брюс Эккель, http://www.adobe.com/devnet/flex/articles/...ng_java_04.html) :

Цитата

Installing the JRE requires the user to answer questions. To a techie, the answer to these questions is easy or obvious, but to the rest of the web users, questions frighten them during installation.....


ну и дальше сравнение с flash и т.д.

Это сообщение отредактировал(а) COVD - 22.10.2007, 17:15
PM MAIL   Вверх
LSD
Дата 22.10.2007, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(COVD @  22.10.2007,  17:57 Найти цитируемый пост)
Я давно не инсталлировал, но по крайней мере раньше инсталляция состояла из нескольких нажатий кнопок. Опять же, пользователь должен иметь административные права на своем аккаунте. Короче, нам звонят в тех поддержку за разьяснениями.

Ну тот же .NET ставится аналогично, и еще и перезагрузки требует (правда его скоро интегрируют в винду и ставить будет не надо). Ну а звонят иногда, чтобы узнать "Как распечатать документ с дискетки?".


Цитата(COVD @  22.10.2007,  17:57 Найти цитируемый пост)
И пока java отстает в простоте установке от, например, flash.

А на Flash можно писать Desktop приложения? Или ты про веб?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
COVD
Дата 22.10.2007, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Цитата

Ну а звонят иногда, чтобы узнать "Как распечатать документ с дискетки?".


Жалуются, что не работает. Потом выясняется, что JRE не установлена или как-то криво установлена (а я ставил smile ).  То есть это один из поводов для звонков, которого не было во времена использования встроенных в браузеры jvm. Брюс Эккель отмечал, что у флаша преимущество по этому пункту, т.е. это образец, как надо инсталяцию реализовывать, в одно нажатие кнопки. Может, Sun уже и продвинулся в этом направлении.

PM MAIL   Вверх
Platon
Дата 22.10.2007, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



Да, удивительно, но аплеты почти в сухую проиграли флешкам :(
Цитата(AntonSaburov @  17.10.2007,  18:18 Найти цитируемый пост)
4. Параллельно писать Unit-tests - для удобства проверки

Вот этот пункт интересный, гипотетически представляю что это и как, но, на практике что-то непонятно, как реализуется.
PM MAIL ICQ   Вверх
nornad
Дата 23.10.2007, 03:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(Platon @  22.10.2007,  23:10 Найти цитируемый пост)
Вот этот пункт интересный, гипотетически представляю что это и как, но, на практике что-то непонятно, как реализуется.

В смысле?.. Ты не в курсе, что такое юнит-тесты? smile 


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
AlexeyVorotnikov
Дата 23.10.2007, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 18.6.2007
Где: Москва

Репутация: 10
Всего: 18



Цитата(nornad @  23.10.2007,  04:49 Найти цитируемый пост)
Ты не в курсе, что такое юнит-тесты?

А что это такое?


--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
alex_nevolin
Дата 23.10.2007, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 13.8.2007

Репутация: 3
Всего: 4



Цитата(AlexeyVorotnikov @ 23.10.2007,  10:10)
Цитата(nornad @  23.10.2007,  04:49 Найти цитируемый пост)
Ты не в курсе, что такое юнит-тесты?

А что это такое?

Это фреймворк для написания тестов к разрабатываемым классам. Очень полезная вещь для разработки проектов в услових меняющихся требований и комадной разработки.
Junit

Добавлено через 3 минуты и 3 секунды
Учимся любить юнит тесты
PM MAIL   Вверх
pompei
Дата 23.10.2007, 11:19 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.9.2007

Репутация: 1
Всего: 6



О, братишка! Мне как раз надо кое-что спрограммисть а времени нет. Возьмёшся?

ЗЫ. Чтобы научиться писать программы надо написать хотябы одну.

Это сообщение отредактировал(а) pompei - 23.10.2007, 11:20
--------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап.
PM MAIL   Вверх
chief39
Дата 23.10.2007, 12:10 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 15
Всего: 77



Цитата(Platon @  17.10.2007,  17:42 Найти цитируемый пост)
Пробовал начать с дизайна. Писал на бумажках, потом терял, да и зачем они там, какие-то хилые, проще с ходу писать, я не в команде, т.е. даже и для себя то в лом писать UML. Что посоветуете, какой диагноз?

Бумажки(электронные или древесно-волокнистые) используй в любом случае!!!
Даже(тем более) если пишешь один.
Забудешь - не вернёшь. Пиши джавадоку, даже если там тупейший метод(только не пиши "тупейший метод", пиши по сути, как для несведущего соседа).
Ну и всегда пиши хоть маленькую, но бумажку по архитектуре. Себе же полезно будет. Ну а лучше не маленькую бумажку, а хорошую, но небольшую доку.


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
nornad
Дата 23.10.2007, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(alex_nevolin @  23.10.2007,  14:10 Найти цитируемый пост)
Это фреймворк для написания тестов к разрабатываемым классам.

Это больше чем фреймворк. JUnit - да, фреймворк, а юнит-тесты вообще - это технология. И юнит-тесты не привязаны только к Java, их можно использовать практически везде. Хотя, насчёт LISP я не уверен - не встречался с ним ни разу.
Если кратко, смысл юнит-тестов состоит в том, что сначала ты пишешь код тестирования своего кода (собственно, юнит-тесты), а уже затем пишешь сам рабочий код. Написал один-два юнит-теста - пишешь к ним код. Запускаешь. Добиваешься, чтобы всё отработало правильно (с точки зрения теста). Ничего нового и лишнего при этом в коде быть не должно. Только чтобы тест отработал. Затем придумываешь ещё один-два теста и добиваешься их отработки. Вот так, постепенно, твоя программа сама напишется за счёт "натягивания" её на юнит-тесты.
Честно скажу - впечатление незабываемое. smile

Добавлено через 4 минуты и 55 секунд
Цитата(Platon @  17.10.2007,  20:42 Найти цитируемый пост)
проще с ходу писать, я не в команде, т.е. даже и для себя то в лом писать UML

Согласен с chief39. Если ты не будешь стараться работать по уму, то в будущем не сможешь легко интегрироваться в команду разработчиков. Не думаю, что ты занялся программированием просто чтобы как-то развлечься. А писать до старости водиночку - реально, конечно, но только если денег тебе за это не требуется получать.  smile 


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Maksym
Дата 23.10.2007, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



Цитата(nornad @  23.10.2007,  12:47 Найти цитируемый пост)
Вот так, постепенно, твоя программа сама напишется за счёт "натягивания" её на юнит-тесты.

И в результате помимо своей системы получаешь еще тестировочный пакет, который может ее проверить вдоль и поперек.
PM MAIL   Вверх
AlexeyVorotnikov
Дата 23.10.2007, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 18.6.2007
Где: Москва

Репутация: 10
Всего: 18



Цитата(nornad @  23.10.2007,  13:47 Найти цитируемый пост)
Если кратко, смысл юнит-тестов состоит в том, что сначала ты пишешь код тестирования своего кода (собственно, юнит-тесты), а уже затем пишешь сам рабочий код. Написал один-два юнит-теста - пишешь к ним код. Запускаешь. Добиваешься, чтобы всё отработало правильно (с точки зрения теста). Ничего нового и лишнего при этом в коде быть не должно. Только чтобы тест отработал. Затем придумываешь ещё один-два теста и добиваешься их отработки. Вот так, постепенно, твоя программа сама напишется за счёт "натягивания" её на юнит-тесты.
Честно скажу - впечатление незабываемое

Юнит-тесты хороши, когда мы тестируем "боевого сферического коня в вакууме", т.е. метод, который складывает 2 и 2 (или обрезает расширение у имени файла) . А вот если метод читает-пишет файлы, работает с БД, с сетью или, не дай бог, с ПО стороннего производителя, вот тогда начинается веселье. :(

Выражение "натягивания" на юнит-тесты" -- это пять! smile))


--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
chief39
Дата 23.10.2007, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 15
Всего: 77



Цитата(AlexeyVorotnikov @  23.10.2007,  13:05 Найти цитируемый пост)
А вот если метод читает-пишет файлы, работает с БД, с сетью или, не дай бог, с ПО стороннего производителя, вот тогда начинается веселье. :(

Угу :( Если суть не в простой логике КА, а нужно протестить что-то сложное с "состояниями", причём очень сложными и разнесёнными по разным подсистемам.
"Хороший" юнит тест кэйс может быть размером с целую подсистему  smile  smile 
Кста, для этого ещё полезен dbunit.


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
Shaggie
Дата 23.10.2007, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: 4
Всего: 72



Так... а JMock или альтернативными вы как активно пользуетесь? Сегодня только начал читать и тестить, впечатлился возможностями, но в голове каша.


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
v2v
Дата 23.10.2007, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: 8
Всего: 56



ps в догонку сказанному на первой странице по поводу виртуальной машины. Когда надо было нести прогу в универ, где тоже нет явы.. я просто скопировал на флешку всю ЖРЕ\ директорию : работало на урА smile 


--------------------
PM   Вверх
Platon
Дата 23.10.2007, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



nornad, я не писал, что не знаю что это такое, я писал, что не понимаю с чем их едят smile

Цитата(nornad @  23.10.2007,  12:47 Найти цитируемый пост)
Если ты не будешь стараться работать по уму, то в будущем не сможешь легко интегрироваться в команду разработчиков. Не думаю, что ты занялся программированием просто чтобы как-то развлечься. А писать до старости водиночку - реально, конечно, но только если денег тебе за это не требуется получать.  


Денег, конечно, требуется!!!  Но, есть и другой путь, который, я почти полностью уверен, используется тучей программистов. Когда проект задумывается, простенький и без команды, программист не беспокоится о документации, архитектуре и прочей номенклатуре, он просто пишет код. Когда из зерна начинается проклёвываться росток (т.е. проект пошел в гору), программист начинает задумываться о привлечении команды в проект и только тогда берется за бумажки. Могу привести в пример игру Domestic Cat'а при ее написании он не шипко старался угодить всем стандартам, а просто писал.

ЗЫ: я тут как раз пишу тестовую систему. Т.е. грубо говоря на вход тестируемому модулю поступают данные и возвращается результат, который сравнивается с эталонным. И JUnit натолкнул меня на мысль, что может в качестве тестера мне как раз использовать JUnit? Т.е. есть набор тестов (50 штук к примеру) через них лупится, на первой же осечке выходит из теста. А также существуют ограничения по времени и по выделенной памяти.
ЗЗЫ: простите, что я не так часто появляюсь, просто меня из дома выгнали, щас доступ в инет проблематичен :(
PM MAIL ICQ   Вверх
nornad
Дата 23.10.2007, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(Shaggie @  23.10.2007,  16:52 Найти цитируемый пост)
Так... а JMock или альтернативными вы как активно пользуетесь?

Лично я даже не слышал о таком. Я и юнит-тестами мало пользуюсь. Потому как интерфейс ими вообще не проверишь, а писать мне больше приходится интерфейсного, чем расчётного. В последних моих программах доля расчётов, которые можно обложить тестами составляет процентов десять. Имхо, юнит-тесты в этом случае уже не так полезны. Хотя в критических местах (где есть сложности с расчётами) применить всё же можно и зачастую нужно.

Цитата(v2v @  23.10.2007,  17:39 Найти цитируемый пост)
я просто скопировал на флешку всю ЖРЕ\ директорию : работало на урА

Ну, на такую JRE другие программы (чужие) завязать сложнее. Хотя при желании тоже можно. В принципе, Java не требует непосредственной инсталляции в винде.

Добавлено через 7 минут и 2 секунды
Цитата(Platon @  23.10.2007,  22:40 Найти цитируемый пост)
Могу привести в пример игру Domestic Cat'а при ее написании он не шипко старался угодить всем стандартам, а просто писал.

Это пример проекта, который был создан ради развлечения и не предполагал ни передачи кода другим разработчикам, ни развития проекта в будущем.
Достаточно яркий пример написания "фор фан". Если так писать за деньги, то будешь не очень хорош в команде. На маленьких проектах - вполне нормально может получаться долгое время. Но в итоге всё равно на одном из проектов придёшь к стадии, когда надо передать кому-то код. С документацией. И вот тут-то о тебе и сложится антересное мнение окружающих коллег.  smile 

Цитата(Platon @  23.10.2007,  22:40 Найти цитируемый пост)
И JUnit натолкнул меня на мысль, что может в качестве тестера мне как раз использовать JUnit?

Ну да. Зачем писать своё такое же? smile
Только тесты в JUnit, кажется, все прогоняются, а не "по первой осечке". Хотя, я с JUnit не работал. Тесты писал больше на сях. На Java пока не требовалось. smile


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Platon
Дата 23.10.2007, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



Цитата(nornad @  23.10.2007,  20:14 Найти цитируемый пост)
Но в итоге всё равно на одном из проектов придёшь к стадии, когда надо передать кому-то код.

Вот, я как раз и описывал. Еще 1 аргумент. 2-3 энтузиаста собрались. А как мы знаем на голом энтузиазме далеко не уедешь, его хватает на 3-4 недели, а если ядреные энтузиасты то месяца на 3-4, не более. Так вот представьте, что это ценное время они стали тратить на написание документации и тестов. Пока они писали энтузиазм испарился в 2 раза быстрее + написанного целевого кода в 2 раза меньше. Итого в 4 раза меньше результата. !!! Я не говорю о том случае, когда ты работаешь в организации, и тебе не важно как долго, главное платят деньги. !!!

Но, зато, если у них появилась альфа версия, которую они смогут презентовать, уже можно подумывать о документировании и отладке системы, чтобы привлечь сотрудников со стороны.

Спасибо alex_nevolin за статью, описанное принято к сведению.
PM MAIL ICQ   Вверх
nornad
Дата 24.10.2007, 02:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(Platon @  23.10.2007,  23:49 Найти цитируемый пост)
Так вот представьте, что это ценное время они стали тратить на написание документации и тестов. Пока они писали энтузиазм испарился в 2 раза быстрее + написанного целевого кода в 2 раза меньше.

Не согласен. Писать проектную документацию не должны все скопом - это не только у голых энтузиастов потерпит поражение, но и у "одетых". Документирование же кода отнимает времени совсем немного, если производить его в процессе, а не после.

Цитата(Platon @  23.10.2007,  23:49 Найти цитируемый пост)
Я не говорю о том случае, когда ты работаешь в организации, и тебе не важно как долго, главное платят деньги. !!!

Покажи мне ту организацию, где платят хорошие деньги за "неважно как долго", я туда уже хочу. smile

Цитата(Platon @  23.10.2007,  23:49 Найти цитируемый пост)

Но, зато, если у них появилась альфа версия, которую они смогут презентовать

Хорошо, если альфа. Но скорее это будет вообще макет, код которого в будущем использовать не стоит. Голый энтузиазм и отсутствие нормального проектирования с закреплением решений на "бумаге" приведёт к тому, что код будет не прямо-таки смердить. Да и документирование у тебя будет в стиле "эте не баг, это фича".

А вообще это обсуждение корректнее уже вести в разделе "Управление проектами". Непосредственно к одной лишь Java отношения оно уже не имеет.


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Shaggie
Дата 24.10.2007, 08:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: 4
Всего: 72



Цитата(nornad @ 23.10.2007,  21:14)
Цитата(Shaggie @  23.10.2007,  16:52 Найти цитируемый пост)
Так... а JMock или альтернативными вы как активно пользуетесь?

Лично я даже не слышал о таком. Я и юнит-тестами мало пользуюсь. Потому как интерфейс ими вообще не проверишь, а писать мне больше приходится интерфейсного, чем расчётного. В последних моих программах доля расчётов, которые можно обложить тестами составляет процентов десять. Имхо, юнит-тесты в этом случае уже не так полезны. Хотя в критических местах (где есть сложности с расчётами) применить всё же можно и зачастую нужно.

Вот о том и речь... Mock - болванка, заглушка. Позволяет внутри unit теста очень быстро написать реализацию интерфейса (или класса) с требуемым тебе поведением. JMock полностью совместим с JUnit и дополняет его.

Пример использования.

Предположим, что у нас есть интерфейс ICollaborator с описанием единственного метода executeJob, возвращающего строковое значение:
Код

public interface ICollaborator {
    public abstract String executeJob();
}

И есть класс ServiceClass с единственным методом runService. В качестве аргумента метод принимает реализацию интерфейса ICollaborator и сравнивает возвращаемое методом executeJob строковое значение со строкой "success". В случае совпадения значений возвращается истина, иначе - ложь.
Код

public class ServiceClass {
    public boolean runService(ICollaborator collaborator) {
        if ("success".equals(collaborator.executeJob())) {
            return true;
        }
        else {
            return false;
        }
    }
}

Что делать, если нам необходимо протестировать класс ServiceClass, но при этом писать реализацию интерфейса ICollaborator рано? Вот в таком случае нам может пригодиться JMock.

Создадим тестовый класс, и перво-наперво надо с помощью аннотации org.junit.runner.RunWith указать, что тест будет запускаться с помощью класса JMock, полностью совместимого с JUnit4.
Код

import junit.framework.TestCase;
import org.junit.runner.RunWith;
import org.jmock.integration.junit4.JMock;

@RunWith(JMock.class)
public class ServiceClassTest extends TestCase {
    ...
}

Затем нужно создать фабрику - объект Mockery. Следующим этапом будет создание болванки, являющейся "как бы" реализацией интерфейса ICollaborator.
Код

    ...
    private Mockery mockery;
    private ICollaborator collaborator;

    @Test public void testRunService() {

        mockery = new JUnit4Mockery();
        collaborator = mockery.mock(ICollaborator.class);
        ....
    }
    ...

Далее необходимо настроить поведение болванки. Сначала дам код, потом только прокомментирую его
Код

        ...
        mockery.checking(new Expectations() {{
            one(collaborator).executeJob(); will(returnValue("success"));
            one(collaborator).executeJob(); will(returnValue("failure"));
        }});
        ...

Тут с непривычки можно рехнуться, если честно! Явадок на JMock подробными комментариями не радует, поэтому за консультацией отправляю на сайт www.jmock.org, где можно найти достаточно информации по синтаксису Expectations (ожиданий). Кстати, синтаксис "ожиданий" очень похож на конструкции языка программирования Perl, такое вот ИМХО...

Метод checking навешивает на болванки требуемые нами expectations - удачное, кстати, слово. Ожидания - это то поведение, которое мы ожидаем от новоиспечённых болванок.

Метод one() принимает объект - болванку и возвращает его (объекта) как бы настоящий класс, чьи методы теперь можно вызывать, чем мы и воспользуемся. Мы "ожидаем", что будет вызван метод executeJob(). Потом метод должен (will) вернуть (returnValue) строку "success". One() подразумевает, что метод executeJob будет вызван в ходе теста ровно один раз, не больше и не меньше.

Далее код повторяется с той лишь разницей, что возвращаемым значением будет строка "failure". Для чистоты эксперимента, так сказать.

Теперь болванку collaborator можно с чистой совестью применять в данном тесте. Ограничения - должно быть ровно два вызова executeJob(), они будут возвращать разные значения. Ограничения можно сделать и не такими жёсткими, возможности работы с JMock на самом деле очень велики, охватить все его возможности в одной статье не представляется возможным. Главное - понять предназначение библиотеки и её основные концепции, а там уже можно накручивать любые конструкции ожиданий, какие только представить можно!

Ну что, тест!
Код

import junit.framework.TestCase;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.jmock.integration.junit4.JMock;
import org.jmock.integration.junit4.JUnit4Mockery;


@RunWith(JMock.class)
public class ServiceClassTest extends TestCase {
    private ServiceClass serviceClass;
    private Mockery mockery;
    private ICollaborator collaborator;

    @Test public void testRunService() {

        mockery = new JUnit4Mockery();

        collaborator = mockery.mock(ICollaborator.class);
        
        mockery.checking(new Expectations() {{
            one(collaborator).executeJob(); will(returnValue("success"));
            one(collaborator).executeJob(); will(returnValue("failure"));
        }});

        serviceClass = new ServiceClass();

        // первый вызов - сравнение "success" и "success" вернёт истину
        boolean result = serviceClass.runService(collaborator);
        assertTrue(result);

        // второй вызов - сравнение "success" и "failire" вернёт ложь
        // конечно, два ассерта в одном тесте это непорядок. Просто для полноты картинки.
        result = serviceClass.runService(collaborator);
        assertFalse(result);
    }
}

Зелёная полоска - успех! Класс ServiceClass отработает с классами, реализующими интерфейс ICollaborator, именно так, как было задумано.

JMock позволяет создавать болванки не только для интерфейсов, но и для классов - в равной степени абстрактных и конкретных, прописывать им любое ожидаемое поведение и тестировать приложение в любых условиях (как говорится, максимально приближенных к боевым).

Пример теста взят с сайта www.ibm.com. Статья изрядно устарела - потребовалось немало поскрипеть мозгом, чтобы привести выложенный там код в рабочее состояние. Плюс ко всему, JMock уже позволяет тестировать реализации классов, не имеющих конструкторов с пустыми аргументами. Так что особой надобности в RMock, также описанном в статье, я не рассмотрел.

Вроде много написал... на ФАК, кажется, не тянет, хотя это на усмотрение модераторов.


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
nornad
Дата 24.10.2007, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(Shaggie @  24.10.2007,  11:03 Найти цитируемый пост)
Вот о том и речь... Mock - болванка, заглушка. Позволяет внутри unit теста очень быстро написать реализацию интерфейса (или класса) с требуемым тебе поведением

Под интерфейсом я имел в виду гуй. smile


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Shaggie
Дата 24.10.2007, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: 4
Всего: 72



Это я не догнал... smile 

Гуй тестить тяжко, согласен.


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0884 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.