Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как не сделать "вонючий" проект?
|
|||
|---|---|---|---|
|
#18+
Тов Р.К. Мартин в одной из своих книг определил несколько признаков плохого проекта. "Диагноз ""Загнивания"" программы устанавливается в случае обнаружения одного из следующих признаков плохого проекта. 1. Закрепощенность: система с трудом поддается изменениям, поскольку любое минимальное изменение вызывает эффект ""Снежного комма"", затрагивающие другие компоненты системы. 2. Неустойчивость: в результате осуществляемых изменений система разрушается в тех местах, которые не имеют непостредственного отношения к изменяемуму компоненту 3. Неподвижность:достаточно трудно разделить систему на компоненты, которые могли бы повторно использоваться в других системах 4. Вязкость:сделать что-то правильно намного сложнее, чем выполнить некорректные действия 5. Неоправденная сложность: проект включает инфраструктуру, применение которой не влечет непостредственной выгоды 6. Неоправданные повторения: проект включает повторяющиеся структуры, которые могут унифицироваться с применение простой абстракции 7. Неопределенность : проект трудно читать и понимать. Недостаточно четко выражено содержимое проекта." Прочел, короче,я это, и , как герой Д.К. Джерома, обнаружил, что все эти признаки имели и имеют место. Не даст ли кто оригинальных рекомендаций, как не сделать вонючий проект, а сделать нечто красивое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2004, 13:38 |
|
||
|
Как не сделать "вонючий" проект?
|
|||
|---|---|---|---|
|
#18+
Это все написано про идеал, кот. даже у Тов Р.К. Мартина нет. Все описано в принципе правильно, но к сожалению этот идел не достяжим, при проектировании/реализации проекта приходиться чем то жертовать по ряду причин: сроки поджимают, нет достаточной квалификации, нет возможности что-то приобрести(например всю линейку ALM Rational или др. фирм) и т.д. и т.п. А универсального рецепта нет, надо просто при проектировании/реализации/конторль иметь в виду все 7 пунктов и к ним стремиться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2004, 16:09 |
|
||
|
Как не сделать "вонючий" проект?
|
|||
|---|---|---|---|
|
#18+
Применительно к проектированию БД. Без претензий на отточенные формулировки и истину в последней инстанции. 1. При проектировании надо сразу четко делить программу на самостоятельные модули. Миниально бывает: модуль бизнес-логики на сервере, модуль ввода и модуль отчетов. Плюс проектирование строго сверху-вниз. 2. Модули должны взаимодействовать друг с другом через постоянные и неизменяемые интерфейсы. 3. См. 1 и 2 4. Ошибочные действия юзера должны блокироваться на всех уровнях. Все, что можно сделать программно - нужно делать програмно. Юзер должен делать только то, что невозможно реализовать на основании имеющейся информации, как содержащейся в базе, так описаной в бизнес-процессах. 5. Поэтапное пректирование. Сначало делается ядро, выполняющее основные функции программы, а уж затем привешиваются всякие фенечки. 6. Нормализовать надо таблицы. 7. С этим не согласен. Проект пишут не для чтения. Четко выраженное содержимое проекта уже является программой. Да и четко выразить можно полную муру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 07:17 |
|
||
|
Как не сделать "вонючий" проект?
|
|||
|---|---|---|---|
|
#18+
Существенное замечание по поводу первого пункта: В любом проекте существуют подводные камни, которые не видны в самом начале проектирования. Считаю самым правильным, как только такие проблемы обнаружены, как можно раньше вернуться назад, к этапу перепроектирования, в противном случае, действительно получится "снежный ком". Вывод: нужно иметь мужество признавать собственные ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 09:58 |
|
||
|
Как не сделать "вонючий" проект?
|
|||
|---|---|---|---|
|
#18+
2 Cat2 7. С этим не согласен. Проект пишут не для чтения. Четко выраженное содержимое проекта уже является программой. Да и четко выразить можно полную муру. Не согласен? А зря. Проект должен иметь вменяемое ТЗ , которое однозначно трактуется сторонами (Заказчик и Исполнитель). Иначе - будут большие проблемы при сдаче проекта в эксплуатацию. Кроме того, при изменении состава проектной команды, нужно минимизировать время адаптации нового работника. Это тоже - проектная документация. А вот "четко выразить полную муру" - сложно. Т.к. будет видно невооруженным глазом, что это - мура, и как раз не стоит того, чтобы продолжать и тратить бабки на ее реализацию (конечно, если нет "отката" Заказчику). Зато "полную муру" можно легко получить , когда нет нормального ТЗ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 11:08 |
|
||
|
Как не сделать "вонючий" проект?
|
|||
|---|---|---|---|
|
#18+
2 gardeman Считаю самым правильным, как только такие проблемы обнаружены, как можно раньше вернуться назад, к этапу перепроектирования, в противном случае, действительно получится "снежный ком". Вывод: нужно иметь мужество признавать собственные ошибки. Такой вариант возможен, конечно, если ты не подписан под сроки и деньги. Если подписан - то это - проблемы твои , а не Заказчика, т.к. ошибки этапа проектирования - твои ошибки. А это, в лучшем случае , денежный вопрос. Вывод: нужно иметь мужество и деньги , чтобы признавать собственные ошибки в коммерческих проектах. ЗЫ Не призываю к замалчиванию ошибок, ни в коем разе! Просто уточнил высказывание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 11:15 |
|
||
|
Как не сделать "вонючий" проект?
|
|||
|---|---|---|---|
|
#18+
Jimmyвот "четко выразить полную муру" - сложно. Зато "полную муру" можно легко получить, когда нет нормального ТЗ. Двумя руками за! Вспомнился мой семенарист по физике. Умный был дядька... Когда студенты ему что-то пытались на словах да на пальцах объяснить, он всегда повторял "Вы пишите, пишите... Глупость, написанная на бумаге, становится явной." авторВывод: нужно иметь мужество признавать собственные ошибки. Такой вариант возможен, конечно, если ты не подписан под сроки и деньги. Да хоть бы и подписан. Если сроки еще не жмут - лучше иметь мужество. Безжалостным рефакторингом ударим по ошибкам молодости. Если сроки закончились, а у тебя еще куча ошибок - то лучше иметь деньги :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 11:39 |
|
||
|
Как не сделать "вонючий" проект?
|
|||
|---|---|---|---|
|
#18+
На вскидку вопрос: у кого сколько времени занимает собственно проектирование (процентная доля) от всего процесса разработки? Признаюсь честно: у меня на то, чтобы нарисовать структуру таблиц+индексы+триггеры+процедуры - это примерно 70% времени и трудностей от проекта. Остальные 30 -написание клиентского приложения + доводка/отладка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 12:16 |
|
||
|
Как не сделать "вонючий" проект?
|
|||
|---|---|---|---|
|
#18+
gardenman , а анализ требований к программному проекту отношения не имеет? Может пример и не такого высокого уровня, но зато искренне. Если делать небольшое приложение БД, 70% времени - выяснение собственно требований и прогнозирование вариантов их изменений, а 30% - все остальное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 12:46 |
|
||
|
Как не сделать "вонючий" проект?
|
|||
|---|---|---|---|
|
#18+
ИМХО чтобы не сделать ошибок и не наступать на грабли - пользоваться проверенными методами, к примеру RUP. можно и не тратиться на дорогой инструментал, методика доступна и проверена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 13:17 |
|
||
|
Как не сделать "вонючий" проект?
|
|||
|---|---|---|---|
|
#18+
применение RUP ничего не гарантирует, это методология, а не готовое техническое решение. ну ка, знатоки RUP, давайте-ка попробуйте ответить на пункты автора топика: 1. Закрепощенность: система с трудом поддается изменениям, поскольку любое минимальное изменение вызывает эффект ""Снежного комма"", затрагивающие другие компоненты системы. проектирование только сверху вниз приводит к подобному эффекту быстрее всего 2. Неустойчивость: в результате осуществляемых изменений система разрушается в тех местах, которые не имеют непостредственного отношения к изменяемуму компоненту это следствие из пред.п. 3. Неподвижность:достаточно трудно разделить систему на компоненты, которые могли бы повторно использоваться в других системах Для того, чтобы компоненты можно было использовать повторно, они должны быть заранее спроектированы с учетом последующего повторного использования. Обычно это означает дополнительные трудозатраты по реализации дополнительной функциональности сверх предписанной в рамках конкретной системы (иногда плюс 50%-100% работы, что окупается только в случае заведомого нацеливания на повторное применение). Кстати, мне очень импонирует компонентный подход в разработке. К изолированному компоненту можно применять самостоятельно стоящий RUP, компонент необходимо разрабатывать вне рамок какой-то системы, а именно как самодостаточный имеющий простой интерфейс модуль . 4. Вязкость:сделать что-то правильно намного сложнее, чем выполнить некорректные действия В принципе, это последствия необходимости что-то постоянно менять после завершения разработки системы, постепенно можно прийти и к такому. Компонентный подход выручает и здесь. 5. Неоправденная сложность: проект включает инфраструктуру, применение которой не влечет непостредственной выгоды Можно поспорить, особенно если система заведомо спроектирована с учетом расширений и масштабирования. В какой-то момент эта сложность будет неправдана, но ситуация может поменяться и эта сложность всех спасет. 6. Неоправданные повторения: проект включает повторяющиеся структуры, которые могут унифицироваться с применение простой абстракции Опять же, речь о том, чтобы не проектировать тупо сверху вниз, а создавать и нарабатывать библиотеки, типовые интерфейсы объектов и реализовать типовые операции в них. Далее при проектировании необходимо не столько разрабатывать каждую сущность с 0-ля и смотреть что получится, сколько смотреть - а что уже есть, и пытаться "подгонять" целевую систему под некоторые наработки. (почти всегда это идет на пользу любой прикладной системе) 7. Неопределенность : проект трудно читать и понимать. Недостаточно четко выражено содержимое проекта." Это зависит от организации и артефактов. Тут может помочь применение хоть какой-нибудь методологии или же просто здравого смысла. Не даст ли кто оригинальных рекомендаций, как не сделать вонючий проект, а сделать нечто красивое? Надо ставить производство ПО на поток. Закладывать в компоненты больше, чем требуется в конкретном бизнесс-приложении, не жалеть времени на то самое среднее звено. Стремиться к максимальной простоте на самом верхнем уровне (т.е. если по смыслу надо сделать A=B+C, то желательно, чтобы в коде именно так и было, а не нечто типа: - заблокировать А, обработать ошибки - заблокировать B, опять обработать ошибки - С... - провести операцию - записать в журнал - снять блокировки - и т.д. и т.п.) Мне импонируют языки с возможностью переопределния операторов (С++, С#), ибо читабельность кода и намерения программистов наиболее наглядны в этом случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 13:57 |
|
||
|
Как не сделать "вонючий" проект?
|
|||
|---|---|---|---|
|
#18+
vdimas: >Закладывать в компоненты больше, чем требуется в конкретном бизнесс-приложении Абсолютно не согласен. Ни когда не буду так делать. Наглядный пример такого подхода - MFC. Компоненты должны быть максимально просты в использовании. Вот возможность расширения - это конечно нужно закладывать. Краткость - сестра таланта Все гениальное - просто ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 14:16 |
|
||
|
Как не сделать "вонючий" проект?
|
|||
|---|---|---|---|
|
#18+
2 vdimas: я не проф в RUP, но мне кажется, что как раз те требования, что изложены, обеспечиваются в большой степени этой методологией (я и не говорил, что это технически готовое решение). Как раз советы Booch'а, как то: 1 Итеративная разработка 2 Управление требованиями 3 Использование модульных архитектур 4 Использование визуального моделирования 5 Проверка качества 6 Отслеживание изменений , лежащие в основе метода позволяют делать многократно используемые, модульные и управляемые решения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 14:37 |
|
||
|
Как не сделать "вонючий" проект?
|
|||
|---|---|---|---|
|
#18+
...вот начнется сечас игра словами - Rup, Extreem. Мне бы хотелось конкретных рекомендаций, из реального опыта. Вот совет vdimasa- делать компоненты с функционалом "про запас" - это я понять могу. И примеры, потверждающие полезность этого, даже из других областей, а не только из программирования, есть. А вот игра иностранными аббревиатурами мне не по душе. d'n мне кажется приведенные вами 6 пунктов Буча в данный момент используются при любой методологии (или как там эта штука называется). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 14:53 |
|
||
|
Как не сделать "вонючий" проект?
|
|||
|---|---|---|---|
|
#18+
2 Varan: как вам угодно, я привел как обобщение "конкретных примеров". это не игра словами, если этим пользоваться. vdimas на самом деле говорит о том же, только другими словами. ну а конкретных примеров, кода для ИС я вам не смогу привести, это ж все в комплексе строится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 15:03 |
|
||
|
Как не сделать "вонючий" проект?
|
|||
|---|---|---|---|
|
#18+
Закладывать в компоненты больше, чем требуется в конкретном бизнесс-приложении Так можно такое понаписать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 15:04 |
|
||
|
Как не сделать "вонючий" проект?
|
|||
|---|---|---|---|
|
#18+
d'n А я подумал, вы сейчас начнете спорить, что круче RUP, XP или еще что-то на несколько листов :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 15:18 |
|
||
|
Как не сделать "вонючий" проект?
|
|||
|---|---|---|---|
|
#18+
2 funikovyuri не надо передергивать в момент работы программиста над компонентом увеличение числа функций на 50% приведет к увеличению потраченного времени дай бог на 10%-20% если же тот же самый программист будет добавлять эти же ф-ии спустя пол-года, то ему потребуется время, сравнимое со временем первоначального написания оного налицо экономия опять же, повторюсь, речь идет только о той ситуации, когда производство ПО поставлено на поток и вопрос повторного использования - не праздный ----------- в принципе, можно привести пример: в программе используется масса маленьких всплывающих диалогов, состав диалога - надпись и набор радио-кнопок для выбора было принято вполне разумное решение не плодить эти диалоги а написать нечто типа ф-ии, которая берет параметры (как аргумент или ссылку на структурку-описатель, тут мы используем перегрузку сигнатур), и возвращает результат. вполне грамотно... однако, сверх нормы добавили еще пару перезгрузок этой ф-ии, которая позволяет в этих диалогах (в виде baloon) добавлять еще и чек-боксы и иконку. вначале этого не требовалось... однако решено было сделать... а потом, разумеется, пригодилось и не раз на написание "лишних" сигнатур ушло около часа... при возврате к этому вопросу позже мог бы уйти день... вот и кумекай ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 15:37 |
|
||
|
Как не сделать "вонючий" проект?
|
|||
|---|---|---|---|
|
#18+
да спорить, "что круче" толку нет. вот говоришь, что эти вещи буча везде - это ж и есть реальный опыт и работающая методика. ладно.. vdimas говорит, что надо ре-использование практиковать, так в RUP то же самое. как ни назови, оптимальные методы известны. просто Rational свела их в методологию, внятную и целостную. поэтому стоит присмотреться, чем велосипед изобретать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 16:18 |
|
||
|
Как не сделать "вонючий" проект?
|
|||
|---|---|---|---|
|
#18+
Дим, да ты не волнуйся так - я не против повторного использования и компонентного подхода bla bla bla Просто я за компромисы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 16:30 |
|
||
|
Как не сделать "вонючий" проект?
|
|||
|---|---|---|---|
|
#18+
d'n Ну ентот RUP в расчете на крупные которы. А меня в основном интересуют как маленький проектик (в котором 2-3 человека задействованы, не больше) красиво и качественно сделать, чтоб перед людями не стыдно было. Хотя, конечно, принципы оттуда определенные взять можно. Я цитату из "быстрой разработки программ" Мартина не случайно привел. В принципе, там изложено самое то, что надо. Но вот главный пример оттуда меня что-то не очень впечатлил. Он в нем делает программу "Зарплата", попутно рассматривая вопросы шаблонов и.т.п, но про базу данных и SQL вспоминает в последнюю очередь. Вот у меня и зародилось сомнение - а разбирается ли он вообще в приложениях для БД. Поэтому и решил спросить у тех, кто реально с этим делом связан и задал вопрос в форум по проектированию БД, а не по программированию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 16:36 |
|
||
|
Как не сделать "вонючий" проект?
|
|||
|---|---|---|---|
|
#18+
2 Varan Проектирование баз данных - это практически искуссво. Я заметил, что никакая теория в этом процессе практически не помагает. Главное - опыт. Опыт, который помагает правильно разложить модель по таблицам, таким образом, чтоб все работало быстро и правильно, и чтоб струтура действительно соответствовала тому, чего надо получить. Это как раз и есть самое трудное. Как бы кто не изголялся над клиентским приложением, но если структура не соответствует - геморрой на всю жись (проекта) обеспечен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 17:03 |
|
||
|
Как не сделать "вонючий" проект?
|
|||
|---|---|---|---|
|
#18+
ИМХО чтобы не сделать ошибок и не наступать на грабли - пользоваться проверенными методами, к примеру RUP. можно и не тратиться на дорогой инструментал, методика доступна и проверена. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. --------------- Данное сообщение содержит вирус! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 17:54 |
|
||
|
Как не сделать "вонючий" проект?
|
|||
|---|---|---|---|
|
#18+
Jimmy , Я упертая обезьяна. Рано или поздно очки будут там, где положено :-). По крайней мере я на это надеюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 18:15 |
|
||
|
Как не сделать "вонючий" проект?
|
|||
|---|---|---|---|
|
#18+
2 Varan Ну, так я же не имел ввиду никого из оппонентов! Просто это - иллюстрация того, как можно испоганить любую, самую продвинутую и опробированную методику. --------------- Данное сообщение содержит вирус! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 19:12 |
|
||
|
|

start [/forum/topic.php?fid=32&startmsg=32419346&tid=1546521]: |
0ms |
get settings: |
5ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
144ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 465ms |

| 0 / 0 |
