powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как не сделать "вонючий" проект?
25 сообщений из 100, страница 1 из 4
Как не сделать "вонючий" проект?
    #32419346
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тов Р.К. Мартин в одной из своих книг определил несколько признаков плохого проекта.
"Диагноз ""Загнивания"" программы устанавливается в случае обнаружения одного из следующих признаков плохого проекта.
1. Закрепощенность: система с трудом поддается изменениям, поскольку любое минимальное изменение вызывает эффект ""Снежного комма"", затрагивающие другие компоненты системы.
2. Неустойчивость: в результате осуществляемых изменений система разрушается в тех местах, которые не имеют непостредственного отношения к изменяемуму компоненту
3. Неподвижность:достаточно трудно разделить систему на компоненты, которые могли бы повторно использоваться в других системах
4. Вязкость:сделать что-то правильно намного сложнее, чем выполнить некорректные действия
5. Неоправденная сложность: проект включает инфраструктуру, применение которой не влечет непостредственной выгоды
6. Неоправданные повторения: проект включает повторяющиеся структуры, которые могут унифицироваться с применение простой абстракции
7. Неопределенность : проект трудно читать и понимать. Недостаточно четко выражено содержимое проекта."
Прочел, короче,я это, и , как герой Д.К. Джерома, обнаружил, что все эти признаки имели и имеют место.
Не даст ли кто оригинальных рекомендаций, как не сделать вонючий проект, а сделать нечто красивое?
...
Рейтинг: 0 / 0
Как не сделать "вонючий" проект?
    #32419692
bas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это все написано про идеал, кот. даже у Тов Р.К. Мартина нет. Все описано в принципе правильно, но к сожалению этот идел не достяжим, при проектировании/реализации проекта приходиться чем то жертовать по ряду причин: сроки поджимают, нет достаточной квалификации, нет возможности что-то приобрести(например всю линейку ALM Rational или др. фирм) и т.д. и т.п. А универсального рецепта нет, надо просто при проектировании/реализации/конторль иметь в виду все 7 пунктов и к ним стремиться
...
Рейтинг: 0 / 0
Как не сделать "вонючий" проект?
    #32420205
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Применительно к проектированию БД. Без претензий на отточенные формулировки и истину в последней инстанции.

1. При проектировании надо сразу четко делить программу на самостоятельные модули. Миниально бывает: модуль бизнес-логики на сервере, модуль ввода и модуль отчетов. Плюс проектирование строго сверху-вниз.
2. Модули должны взаимодействовать друг с другом через постоянные и неизменяемые интерфейсы.
3. См. 1 и 2
4. Ошибочные действия юзера должны блокироваться на всех уровнях. Все, что можно сделать программно - нужно делать програмно. Юзер должен делать только то, что невозможно реализовать на основании имеющейся информации, как содержащейся в базе, так описаной в бизнес-процессах.
5. Поэтапное пректирование. Сначало делается ядро, выполняющее основные функции программы, а уж затем привешиваются всякие фенечки.
6. Нормализовать надо таблицы.
7. С этим не согласен. Проект пишут не для чтения. Четко выраженное содержимое проекта уже является программой. Да и четко выразить можно полную муру.
...
Рейтинг: 0 / 0
Как не сделать "вонючий" проект?
    #32420319
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Существенное замечание по поводу первого пункта:
В любом проекте существуют подводные камни, которые не видны
в самом начале проектирования.
Считаю самым правильным, как только такие проблемы обнаружены,
как можно раньше вернуться назад, к этапу перепроектирования,
в противном случае, действительно получится "снежный ком".
Вывод: нужно иметь мужество признавать собственные ошибки.
...
Рейтинг: 0 / 0
Как не сделать "вонючий" проект?
    #32420426
Фотография Jimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Cat2
7. С этим не согласен. Проект пишут не для чтения. Четко выраженное содержимое проекта уже является программой. Да и четко выразить можно полную муру.

Не согласен? А зря.
Проект должен иметь вменяемое ТЗ , которое однозначно трактуется сторонами (Заказчик и Исполнитель). Иначе - будут большие проблемы при сдаче проекта в эксплуатацию.
Кроме того, при изменении состава проектной команды, нужно минимизировать время адаптации нового работника. Это тоже - проектная документация.
А вот "четко выразить полную муру" - сложно. Т.к. будет видно невооруженным глазом, что это - мура, и как раз не стоит того, чтобы продолжать и тратить бабки на ее реализацию (конечно, если нет "отката" Заказчику).
Зато "полную муру" можно легко получить , когда нет нормального ТЗ.
...
Рейтинг: 0 / 0
Как не сделать "вонючий" проект?
    #32420443
Фотография Jimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 gardeman

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


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

Вывод: нужно иметь мужество и деньги , чтобы признавать собственные ошибки в коммерческих проектах.

ЗЫ Не призываю к замалчиванию ошибок, ни в коем разе! Просто уточнил высказывание.
...
Рейтинг: 0 / 0
Как не сделать "вонючий" проект?
    #32420486
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jimmyвот "четко выразить полную муру" - сложно.
Зато "полную муру" можно легко получить, когда нет нормального ТЗ.
Двумя руками за!
Вспомнился мой семенарист по физике. Умный был дядька... Когда студенты ему что-то пытались на словах да на пальцах объяснить, он всегда повторял "Вы пишите, пишите... Глупость, написанная на бумаге, становится явной."

авторВывод: нужно иметь мужество признавать собственные ошибки.
Такой вариант возможен, конечно, если ты не подписан под сроки и деньги.
Да хоть бы и подписан. Если сроки еще не жмут - лучше иметь мужество.
Безжалостным рефакторингом ударим по ошибкам молодости.
Если сроки закончились, а у тебя еще куча ошибок - то лучше иметь деньги :).
...
Рейтинг: 0 / 0
Как не сделать "вонючий" проект?
    #32420583
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На вскидку вопрос: у кого сколько времени занимает собственно проектирование (процентная доля) от всего процесса разработки?
Признаюсь честно: у меня на то, чтобы нарисовать структуру
таблиц+индексы+триггеры+процедуры - это примерно 70% времени
и трудностей от проекта. Остальные 30 -написание клиентского приложения
+ доводка/отладка.
...
Рейтинг: 0 / 0
Как не сделать "вонючий" проект?
    #32420668
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenman , а анализ требований к программному проекту отношения не имеет?
Может пример и не такого высокого уровня, но зато искренне.
Если делать небольшое приложение БД, 70% времени - выяснение собственно требований и прогнозирование вариантов их изменений, а 30% - все остальное.
...
Рейтинг: 0 / 0
Как не сделать "вонючий" проект?
    #32420737
d'n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
d'n
Гость
ИМХО чтобы не сделать ошибок и не наступать на грабли - пользоваться проверенными методами, к примеру RUP. можно и не тратиться на дорогой инструментал, методика доступна и проверена.
...
Рейтинг: 0 / 0
Как не сделать "вонючий" проект?
    #32420827
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
применение RUP ничего не гарантирует, это методология, а не готовое техническое решение.

ну ка, знатоки RUP, давайте-ка попробуйте ответить на пункты автора топика:

1. Закрепощенность: система с трудом поддается изменениям, поскольку любое минимальное изменение вызывает эффект ""Снежного комма"", затрагивающие другие компоненты системы.
проектирование только сверху вниз приводит к подобному эффекту быстрее всего

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

3. Неподвижность:достаточно трудно разделить систему на компоненты, которые могли бы повторно использоваться в других системах
Для того, чтобы компоненты можно было использовать повторно, они должны быть заранее спроектированы с учетом последующего повторного использования. Обычно это означает дополнительные трудозатраты по реализации дополнительной функциональности сверх предписанной в рамках конкретной системы (иногда плюс 50%-100% работы, что окупается только в случае заведомого нацеливания на повторное применение).
Кстати, мне очень импонирует компонентный подход в разработке. К изолированному компоненту можно применять самостоятельно стоящий RUP, компонент необходимо разрабатывать вне рамок какой-то системы, а именно как самодостаточный имеющий простой интерфейс модуль .

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

5. Неоправденная сложность: проект включает инфраструктуру, применение которой не влечет непостредственной выгоды
Можно поспорить, особенно если система заведомо спроектирована с учетом расширений и масштабирования. В какой-то момент эта сложность будет неправдана, но ситуация может поменяться и эта сложность всех спасет.

6. Неоправданные повторения: проект включает повторяющиеся структуры, которые могут унифицироваться с применение простой абстракции
Опять же, речь о том, чтобы не проектировать тупо сверху вниз, а создавать и нарабатывать библиотеки, типовые интерфейсы объектов и реализовать типовые операции в них. Далее при проектировании необходимо не столько разрабатывать каждую сущность с 0-ля и смотреть что получится, сколько смотреть - а что уже есть, и пытаться "подгонять" целевую систему под некоторые наработки. (почти всегда это идет на пользу любой прикладной системе)

7. Неопределенность : проект трудно читать и понимать. Недостаточно четко выражено содержимое проекта."
Это зависит от организации и артефактов. Тут может помочь применение хоть какой-нибудь методологии или же просто здравого смысла.

Не даст ли кто оригинальных рекомендаций, как не сделать вонючий проект, а сделать нечто красивое?
Надо ставить производство ПО на поток. Закладывать в компоненты больше, чем требуется в конкретном бизнесс-приложении, не жалеть времени на то самое среднее звено. Стремиться к максимальной простоте на самом верхнем уровне (т.е. если по смыслу надо сделать A=B+C, то желательно, чтобы в коде именно так и было, а не нечто типа:
- заблокировать А, обработать ошибки
- заблокировать B, опять обработать ошибки
- С...
- провести операцию
- записать в журнал
- снять блокировки
- и т.д. и т.п.)

Мне импонируют языки с возможностью переопределния операторов (С++, С#), ибо читабельность кода и намерения программистов наиболее наглядны в этом случае.
...
Рейтинг: 0 / 0
Как не сделать "вонючий" проект?
    #32420883
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdimas: >Закладывать в компоненты больше, чем требуется в конкретном бизнесс-приложении
Абсолютно не согласен. Ни когда не буду так делать. Наглядный пример такого подхода - MFC. Компоненты должны быть максимально просты в использовании.
Вот возможность расширения - это конечно нужно закладывать.
Краткость - сестра таланта
Все гениальное - просто
...
Рейтинг: 0 / 0
Как не сделать "вонючий" проект?
    #32420945
d'n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
d'n
Гость
2 vdimas:
я не проф в RUP, но мне кажется, что как раз те требования, что изложены, обеспечиваются в большой степени этой методологией (я и не говорил, что это технически готовое решение). Как раз советы Booch'а, как то:
1 Итеративная разработка
2 Управление требованиями
3 Использование модульных архитектур
4 Использование визуального моделирования
5 Проверка качества
6 Отслеживание изменений
, лежащие в основе метода позволяют делать многократно используемые, модульные и управляемые решения
...
Рейтинг: 0 / 0
Как не сделать "вонючий" проект?
    #32421004
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...вот начнется сечас игра словами - Rup, Extreem. Мне бы хотелось конкретных рекомендаций, из реального опыта. Вот совет vdimasa- делать компоненты с функционалом "про запас" - это я понять могу. И примеры, потверждающие полезность этого, даже из других областей, а не только из программирования, есть. А вот игра иностранными аббревиатурами мне не по душе.
d'n мне кажется приведенные вами 6 пунктов Буча в данный момент используются при любой методологии (или как там эта штука называется).
...
Рейтинг: 0 / 0
Как не сделать "вонючий" проект?
    #32421035
d'n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
d'n
Гость
2 Varan: как вам угодно, я привел как обобщение "конкретных примеров". это не игра словами, если этим пользоваться. vdimas на самом деле говорит о том же, только другими словами. ну а конкретных примеров, кода для ИС я вам не смогу привести, это ж все в комплексе строится
...
Рейтинг: 0 / 0
Как не сделать "вонючий" проект?
    #32421039
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Закладывать в компоненты больше, чем требуется в конкретном бизнесс-приложении

Так можно такое понаписать...
...
Рейтинг: 0 / 0
Как не сделать "вонючий" проект?
    #32421078
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
d'n А я подумал, вы сейчас начнете спорить, что круче RUP, XP или еще что-то на несколько листов :-)
...
Рейтинг: 0 / 0
Как не сделать "вонючий" проект?
    #32421132
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 funikovyuri

не надо передергивать

в момент работы программиста над компонентом увеличение числа функций на 50% приведет к увеличению потраченного времени дай бог на 10%-20%

если же тот же самый программист будет добавлять эти же ф-ии спустя пол-года, то ему потребуется время, сравнимое со временем первоначального написания оного

налицо экономия

опять же, повторюсь, речь идет только о той ситуации, когда производство ПО поставлено на поток и вопрос повторного использования - не праздный


-----------
в принципе, можно привести пример:

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

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

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

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

на написание "лишних" сигнатур ушло около часа... при возврате к этому вопросу позже мог бы уйти день... вот и кумекай
...
Рейтинг: 0 / 0
Как не сделать "вонючий" проект?
    #32421249
d'n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
d'n
Гость
да спорить, "что круче" толку нет. вот говоришь, что эти вещи буча везде - это ж и есть реальный опыт и работающая методика. ладно.. vdimas говорит, что надо ре-использование практиковать, так в RUP то же самое. как ни назови, оптимальные методы известны. просто Rational свела их в методологию, внятную и целостную. поэтому стоит присмотреться, чем велосипед изобретать.
...
Рейтинг: 0 / 0
Как не сделать "вонючий" проект?
    #32421286
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дим, да ты не волнуйся так - я не против повторного использования и компонентного подхода bla bla bla

Просто я за компромисы...
...
Рейтинг: 0 / 0
Как не сделать "вонючий" проект?
    #32421302
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
d'n
Ну ентот RUP в расчете на крупные которы. А меня в основном интересуют как маленький проектик (в котором 2-3 человека задействованы, не больше) красиво и качественно сделать, чтоб перед людями не стыдно было. Хотя, конечно, принципы оттуда определенные взять можно.
Я цитату из "быстрой разработки программ" Мартина не случайно привел. В принципе, там изложено самое то, что надо. Но вот главный пример оттуда меня что-то не очень впечатлил. Он в нем делает программу "Зарплата", попутно рассматривая вопросы шаблонов и.т.п, но про базу данных и SQL вспоминает в последнюю очередь. Вот у меня и зародилось сомнение - а разбирается ли он вообще в приложениях для БД. Поэтому и решил спросить у тех, кто реально с этим делом связан и задал вопрос в форум по проектированию БД, а не по программированию.
...
Рейтинг: 0 / 0
Как не сделать "вонючий" проект?
    #32421374
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Varan
Проектирование баз данных - это практически искуссво.
Я заметил, что никакая теория в этом процессе практически не помагает.
Главное - опыт. Опыт, который помагает правильно разложить модель
по таблицам, таким образом, чтоб все работало быстро и правильно,
и чтоб струтура действительно соответствовала тому, чего надо получить.
Это как раз и есть самое трудное.

Как бы кто не изголялся над клиентским приложением, но если структура
не соответствует - геморрой на всю жись (проекта) обеспечен.
...
Рейтинг: 0 / 0
Как не сделать "вонючий" проект?
    #32421461
Фотография Jimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО чтобы не сделать ошибок и не наступать на грабли - пользоваться проверенными методами, к примеру RUP. можно и не тратиться на дорогой инструментал, методика доступна и проверена.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Мартышка к старости слаба глазами стала;
     А у людей она слыхала,
   Что это зло еще не так большой руки:
     Лишь стоит завести Очки.
Очков с полдюжины себе она достала;
     Вертит Очками так и сяк:
То к темю их прижмет, то их на хвост нанижет,
   То их понюхает, то их полижет;
     Очки не действуют никак...

Фрагмент басни  "мартышка и очки"  И.Крылов

---------------
Данное сообщение содержит вирус!
...
Рейтинг: 0 / 0
Как не сделать "вонючий" проект?
    #32421489
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jimmy ,
Я упертая обезьяна. Рано или поздно очки будут там, где положено :-). По крайней мере я на это надеюсь.
...
Рейтинг: 0 / 0
Как не сделать "вонючий" проект?
    #32421582
Фотография Jimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Varan

Ну, так я же не имел ввиду никого из оппонентов!
Просто это - иллюстрация того, как можно испоганить любую, самую продвинутую и опробированную методику.

---------------
Данное сообщение содержит вирус!
...
Рейтинг: 0 / 0
25 сообщений из 100, страница 1 из 4
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как не сделать "вонючий" проект?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]