Модераторы: Се ля ви
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проектирование приложений. 
V
    Опции темы
boostcoder
Дата 10.7.2011, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


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

Репутация: нет
Всего: 110



всем доброго дня.

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

в данной теме хочу вывести:
1. критерии становления требований к проектированию в целом.
2. обеспечение/доказательство требований.
3. разбиение требований и объединение в категории и вывод общих требований для формирования теоретической основы.
4. принципы и аргументацию разбиения требований/условий на отдельные задачи для реализации(на С++).
5. тестирование каждой задачи и обеспечение повторяемости кода.

первый вопрос: для всего этого нужно представить задачу. непростую. чем более емкая задача, тем больше деталей и мелочей в ней. и как следствие, более детальная проработка приведенных выше пунктов.
и так, предлагаем задачи/проекты/идеи.

зы
огромная просьба к тем, кто не уверен в надобности запостить в эту тему - не постьте. сильно благодарен.

всем огромное спасибо за понимание и желание помочь в этом сложном вопросе.

Up.
конечная реализация любой идеи - не цель. можно вообще ничего не реализовывать. смысл-то в другом.

Это сообщение отредактировал(а) boostcoder - 11.7.2011, 22:52
PM WWW   Вверх
boostcoder
Дата 10.7.2011, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


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

Репутация: нет
Всего: 110



.....

Это сообщение отредактировал(а) boostcoder - 11.7.2011, 22:51
PM WWW   Вверх
voral
Дата 10.7.2011, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



как всегда в все упирается в полноту составления ТЗ.  И на этом этапе нужно вытягивать из заказчика или того, кто будет с этим работать максимум информации. Потому, что частенько выливается примерно в следующий диалог:
Заказчик (З) : На  данном этапе программа должна выполнять 2+2
Исполнитель (И): Вообще всегда, без всяких условий?
З: Да.
И: Но вот я слышал, что у вас есть какято там поправка на ветер
З: Ааа... Ну есть конешно.... Но это очень редко бывает....
И: Но может быть
З: Ну в принципе может...... 
И после этого идет разворачивание это го сложения в 100500 условий.

Короче изначально надо объяснять заказчику, что проект завтра не стартует. И пока не выяснятся все такие случаи (которые 1 на 10000) даже не стоит начинать.

Далее. Нужно добиваться объяснения зачем нужна каждая цифра. Тоже ситуация распространеная:
З: Здесь мне нужно получить значение C, а здесь значение B. (это могут быть достаточно ресурсоемкие алгоритмы)

Потом выясняется, что эти два значения в общем то нужны лишь для получения значения R.....    И, в общемто, если сразу искать значение R в итоге требуется меньше ресурсов.

Бывало и такое: есть некий протокол для клиент серверной технологии. Задача написать клиента. (Сама цель: связь по этому протоколу). Есть эмулятор и все дела.... Вроде сдавать. Полевые испытания..... Оппааа.... А на том конце тоже клиент......

Короче, прежде чем начинать, что то писать, нужно выесть весь мозг и себе и заказчику.... smile

Надеюсь я правильно понял вопрос.
PM MAIL WWW   Вверх
borisbn
Дата 10.7.2011, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: нет
Всего: 135



deleted by TS's request smile

Это сообщение отредактировал(а) borisbn - 12.7.2011, 06:20


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
afiskon
Дата 11.7.2011, 08:03 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Есть две школы. Под старой школой я подразумиваю каскадную модель разработки, когда заказачик приходит с задачей, формулируются требования, проектируется система, пишется, тестируется, сдается. Так, вот - каскадная модель не работает. Причина элементарная - любой заказчик меняет требования в ходе проекта. Если только это не сферический заказчик в вакууме. Забудьте про каскадную модель. Навсегда.

Новая школа - это итерационная модель и всевозможные гибкие разработки, Scrum и экстремальное программирование. Смысл в том, что мы должны смириться с постоянной переменой требований, если хотим довести проект до конца. Некоторые методики (кажется, XP) предлагает чуть ли не отказаться от всякой документации, а сразу приступать к кодированию. То есть в понедельник показываем заказчику прототип - только формочки с кнопочками, которые ничего не делаем. Совещаемся, что будем делать на этой неделе. Со вторника по четверг кодим и отлаживаем. Нужно получить грязный код, главное в котором - чтобы он работал. В пятницу производим рефакторинг. Вся документация - в JUnit или Doxygen, тесты пишем параллельно с кодированием, а иногда - до кодирования (TDD).

Что интересно, не обязательно, чтобы начальство знало об используемой вами методологии. Главное, чтобы был сервер с багтрекером и системой контроля версий.
PM MAIL WWW   Вверх
borisbn
Дата 11.7.2011, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: нет
Всего: 135



afiskon, какую-то страшную картину Вы описали во втором методе... Думаю, всё-таки, нужно пытаться искать золотую середину: и не проводить полугодовые исследования с перебором всех возможных требований и вариантов, и не кодить без единой мысли о проектировании...


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
1000000dollars
Дата 11.7.2011, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Сразу скажу тут вопрос не только в проектировании, а ещё и в аналитике. То есть по-хорошему, решаются две задачи:
1) аналитическая - анализ предметной области, выяснение требований, их систематизация, проверка на адекватность решаемой задаче и непротиворечивость здравому смыслу и техническим возможностям.
2) архитектурная - выделение слабосвязных компонентов системы, разделение и балансировка функциональной и информационной нагрузки между ними, определение интерфейсов этих компонентов и разработка протоколов взаимодействия между ними.

Когда преподавал студентам проектирование ПО, кроме методов проектирования (которые, кстати, не более чем инструменты, применение которых должно быть обосновано) пытался донести мысль о том, что любая система - это множество каких-то сущностей, которые между собой взаимодействуют по определённым правилам.

Так как приходится делать работу и аналитика и проектировщика - придётся разобраться в предметной области. После того как начали понимать чем заказчик занимается мы можем получить только словесное описание необходимой системы, которое нужно воплотить в код. Сам переход осуществляется одновременно с проверкой требований примерно так:
существительные - это объекты системы
прилагательные - это свойства объектов
глаголы - это методы объектов

Следовательно заказчику (а по-хорошему, аналитику) надо задавать вопросы "Что это?" "Какое оно?" и "Что оно делает?".

PS:
На работе сейчас та же фигня. Основная причина - информационный голод в котором меня держат. Поэтому за последний месяц архитектуру проекта менял трижды. По мере возникновения дополнительных требований. В такой ситуации я просто предупредил, что если информационный голод продолжится - работа будет выполняться долго и плохо. Заказчика такой расклад устроил...
PM MAIL   Вверх
boostcoder
Дата 11.7.2011, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


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

Репутация: нет
Всего: 110



.............

Это сообщение отредактировал(а) boostcoder - 14.7.2011, 18:31
PM WWW   Вверх
voral
Дата 11.7.2011, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(boostcoder @  11.7.2011,  22:50 Найти цитируемый пост)
процесс "понимания" заказчика и того что он хочет - конечно важен. но я не ставил это целью. честно признаться, мне вообще это не интересно, ибо контора в которой работаю, пишет ПО для себя, и исключительно для себя. возможно, в будущем, будем писать еще и под заказ, но пока что на это даже нет намека.

Какая разница то? С мысли о том, что "пишу для себя и понимаю как должно быть" и начинается геморрой. Даже если вы лично сами для себя в одиночку пишите проработка деталей облегчит вам будущее.


Впрочем ладно, раз мое мнение для вас бесполезно, я не против удаления поста. Может быть я просто не понял, чего вы хотите.
PM MAIL WWW   Вверх
boostcoder
Дата 11.7.2011, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


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

Репутация: нет
Всего: 110



Добавлено @ 23:14
Цитата(voral @  11.7.2011,  23:09 Найти цитируемый пост)
раз мое мнение для вас бесполезно

ваше мнение не бесполезно. я благодарен за то, что вы обратили внимание на топик. и хотелось бы видеть вас в этом топике и дальше ;)

Это сообщение отредактировал(а) boostcoder - 14.7.2011, 18:31
PM WWW   Вверх
afiskon
Дата 12.7.2011, 04:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



boostcoder, яма та самая, о которой вы спрашиваете. Я тоже работаю над внутренними проектами. Просто под "заказчиком" нужно понимать человека, выполняющего его роль. Это не обязательно должен быть дядька со стороны, в нашем с тобой случае это начальник отдела, к примеру. 

borisbn, да это описание одной из наиболее радикальных методологий. Вообще-то не стоит слепо следовать одной из них. Например, я пишу тесты после написания кода, таким образом я не следую TDD (хотя, не повредило бы). Также иногда полезно задокументировать требования заказчика на ранних этапах. Но обычно эту документацию бесполезно пытаться поддерживать в актуальном состоянии. Пока скорректируешь, требования уже могут поменяться. С другой стороны, схему БД, автоматически генерируемые из кода диаграммы классов, описание каких-нибудь API документировать совсем не повредит.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Системный анализ, проектирование и UML"
Се ля ви

Форум "Системный анализ, проектирование и UML" предназначен для обсуждения вопросов, так или иначе связанных с этапами жизненного цикла автоматизированных (программных, информационных, автоматических) систем:

• предпроектные обследования объектов автоматизации;

• разработка концепции создания систем;

• моделирование бизнес-процессов (в т.ч. на UML);

• проектирование архитектуры систем;

• управление проектами;

• управление качеством;

• CASE-средства;

• реинжиниринг.


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

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


 




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


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

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