|
Создание ПО без доработки кода при внедрении
|
|||
---|---|---|---|
#18+
Бывало ли у кого-то такое, что постановка, ТЗ сделаны настолько близко к реальным нуждам заказчика, что после окончания кодирования и внутреннего тестирования - при внедрении, не требовалось бы вносить изменения в исходное ТЗ и соответственно переделывать код? PS. Речь идет конечно не о мелких утилитах или компиляторах :), а например об АРМ или чем-то посложнее, то есть из области автоматизации предприятий. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2006, 22:41 |
|
Создание ПО без доработки кода при внедрении
|
|||
---|---|---|---|
#18+
18-я веснаБывало ли у кого-то такое, что постановка, ТЗ сделаны настолько близко к реальным нуждам заказчика, что после окончания кодирования и внутреннего тестирования - при внедрении, не требовалось бы вносить изменения в исходное ТЗ и соответственно переделывать код? PS. Речь идет конечно не о мелких утилитах или компиляторах :), а например об АРМ или чем-то посложнее, то есть из области автоматизации предприятий. А что вы имеете ввиду под терминами "постановка" и "ТЗ"? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2006, 23:00 |
|
Создание ПО без доработки кода при внедрении
|
|||
---|---|---|---|
#18+
18-я веснато есть из области автоматизации предприятий. К сож. это из области фантастики. Прототипы с ног на голову иногда переворачиваются, что уж там про ТЗ говорить. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2006, 23:15 |
|
Создание ПО без доработки кода при внедрении
|
|||
---|---|---|---|
#18+
18-я веснаБывало ли у кого-то такое, что постановка, ТЗ сделаны настолько близко к реальным нуждам заказчика, что после окончания кодирования и внутреннего тестирования - при внедрении, не требовалось бы вносить изменения в исходное ТЗ и соответственно переделывать код? Хм. Вопрос опирается на предположение о том, что реальные нужды заказчика не меняются в ходе разработки, что малоправдоподобно. У меня нечто подобное было в одном проекте, со следующей спецификой: 1. Это программа для инженеров сотовой связи. Пользовалось ей довольно мало народа (один отдел), причем народа технического, четко знающего свои задачи и способного их сформулировать. 2. На этом проекте было "крайне растянутое внедрение". Значительную часть времени разработки свежие версии регулярно передавались в "неофициальную эксплуатацию". ТЗ не прописывалось сразу и до мельчайших деталей; ряд вопросов задавался тогда, когда приступали к реализации очередного модуля, и клиент отвечал на них, имея перед глазами текущую версию программы. 3. Программа таки была достаточно небольшой (меньше 100'000 строк). В итоге, переделок не было или практически не было (уже не помню). Было некоторое число дополнений, в основном косметического уровня. В ходе эксплуатации выяснилось, что один из модулей почти не используется - заказавший его человек уволился, а другие не особо смотрели в эту сторону. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2006, 23:27 |
|
Создание ПО без доработки кода при внедрении
|
|||
---|---|---|---|
#18+
byurА что вы имеете ввиду под терминами "постановка" и "ТЗ"? Ничего такого специального. Оформленные в любой форме требования к ПО. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2006, 00:31 |
|
Создание ПО без доработки кода при внедрении
|
|||
---|---|---|---|
#18+
softwarerХм. Вопрос опирается на предположение о том, что реальные нужды заказчика не меняются в ходе разработки, что малоправдоподобно. Почему же они должны поменяться? Может Вы их перепутали с озвученными требованиями? Эти да, могут меняться множество раз :) А реальные требования заказчик в большинстве случаев не способен сформулировать. У меня нечто подобное было в одном проекте, со следующей спецификой: 1. Это программа для инженеров сотовой связи. Пользовалось ей довольно мало народа (один отдел), причем народа технического, четко знающего свои задачи и способного их сформулировать. 2. На этом проекте было "крайне растянутое внедрение". Значительную часть времени разработки свежие версии регулярно передавались в "неофициальную эксплуатацию". ТЗ не прописывалось сразу и до мельчайших деталей; ряд вопросов задавался тогда, когда приступали к реализации очередного модуля, и клиент отвечал на них, имея перед глазами текущую версию программы. Это как раз мне кажется обратный случай - ТЗ писалось и кодирование шло по результатам внедрения :) Так что Ваш пример не подходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2006, 00:33 |
|
Создание ПО без доработки кода при внедрении
|
|||
---|---|---|---|
#18+
iscrafmК сож. это из области фантастики. Прототипы с ног на голову иногда переворачиваются, что уж там про ТЗ говорить. Ну у меня такое же мнение. Но оно основано на моем личном опыте, поэтому хотелось бы узнать как обстоят дела у других. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2006, 00:35 |
|
Создание ПО без доработки кода при внедрении
|
|||
---|---|---|---|
#18+
18-я веснаПочему же они должны поменяться? Почему они не должны меняться? 18-я веснаМожет Вы их перепутали с озвученными требованиями? Нет, это неинтересно. С озвученными требованиями все просто - если мы не смогли понять, что же на самом деле нужно клиенту, придется искать методом проб и ошибок (то есть перерабатывать софт). Вывод тоже понятен - улучшать работу на этом этапе. Трудно? Да. Но в целом ясно, кто виноват и что делать. А вот изменение реальных требований - процесс, который от нас практически не зависит 1 . Поэтому и изменения, которые в силу этого требуется внести, носят объективный характер. И пока мы не разберемся с ними, говорить "можем ли мы вообще избежать изменений" бессмысленно. 1 Изменение реальных требований зависит от нас в одном забавном аспекте: внедрение софта может стать тем фактором, который меняет работу клиента и в конечном итоге приводит к изменению требований к софту же. 18-я веснаА реальные требования заказчик в большинстве случаев не способен сформулировать. Из этого не следует, что они постоянны. Обратите внимание, в описанном мной случае они именно такими и были - поскольку опирались не гуманитарщину, а на физику. Легко изменить процесс продажи, гораздо труднее изменить хождение радиоволн :) 18-я веснаЭто как раз мне кажется обратный случай - ТЗ писалось и кодирование шло по результатам внедрения :) Не "писалось", а "детализировалось". Более формально - детальная спецификация составлялась не в начале проекта, а в начале работы над очередным модулем. Кстати, это вообще весьма уважаемый мной принцип - не делать работу заранее. Весьма помогает избегать ситуации "работа сделана напрасно и существенно не так, как надо". 18-я веснаТак что Ваш пример не подходит. Ну, это уже Вам виднее. Другого у меня нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2006, 00:57 |
|
Создание ПО без доработки кода при внедрении
|
|||
---|---|---|---|
#18+
Вот какие мысли у меня возникли при проектировании очередного проекта. Если заведомо известно, что все равно надо будет что-то переделывать, то надо проектировать код так, чтобы легко можно было вносить изменения (иногда существенные) в структуру кода. Другими словами это означает увеличение расходов на первоначальное проектирование, с целью снизить дальнейшие расходы на перепроектирование. Под расходами я здесь понимаю доп. время, доп. деньги, неудобства кодирования и прочее, во что может вылиться необходимость постоянно помнить о будущих переделках. Такая ситуация (итеративность дизайна) декларируется в экстремальном программировании, однако остается и классика - полное ТЗ + кодирование. Но если окажется, что и при классическом проектировании дефакто в каждом (в 100% случаев) проекте есть несколько итераций дизайна, то выходит, что в любом проекте надо готовиться к перепроектированию, т.е. разработать(или изучить) и внедрить специальные технические приемы для облегчения рефакторинга. В связи с этим и был задан исходный вопрос Вам. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2006, 01:00 |
|
Создание ПО без доработки кода при внедрении
|
|||
---|---|---|---|
#18+
softwarerА вот изменение реальных требований - процесс, который от нас практически не зависит 1 . Поэтому и изменения, которые в силу этого требуется внести, носят объективный характер. И пока мы не разберемся с ними, говорить "можем ли мы вообще избежать изменений" бессмысленно. Конечно же реальные требования могут меняться на протяжении разработки из-за различных внешних факторов (независящих от формулирования этих требований, типа изменения законодательства и пр.) , но все-таки это происходит не для каждого проекта, а переделывать приходится каждый :) [quot 1 Изменение реальных требований зависит от нас в одном забавном аспекте: внедрение софта может стать тем фактором, который меняет работу клиента и в конечном итоге приводит к изменению требований к софту же. [/quot] Согласен. Но здесь скорее всего все-таки возникают новые требования, а не меняются старые. Что-то типа "аппетит приходит во время еды" :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2006, 01:15 |
|
Создание ПО без доработки кода при внедрении
|
|||
---|---|---|---|
#18+
18-я веснаЕсли заведомо известно, что все равно надо будет что-то переделывать, Именно так. 18-я веснато надо проектировать код так, чтобы легко можно было вносить изменения (иногда существенные) в структуру кода. Полностью согласен. 18-я веснаДругими словами это означает увеличение расходов на первоначальное проектирование, В принципе можно было бы согласиться, но не соглашусь, причем по субъективным причинам. Их две. Во-первых, я полагаю, что дизайн, не отвечающий этому принципу, является плохим. То есть, во-первых так делать не надо ни в каком случае (это уже моя личная заморочка - не выпускать плохой продукт), во-вторых, озвученный Вами принцип не является чем-то особым, а просто случаем общего (можно дешево и плохо, можно дороже и хорошо). Во-вторых, я уверен, что при определенном опыте, "набитой руке" на соответствующие подходы, выработанном инструментарии такую "устойчивую к изменениям разработку" можно вести очень дешево, практически бесплатно относительно "обычной". [У меня как у мисс Марпл есть привычка по любому поводу вспоминать предыдущий опыт]. Так вот, в этом случае я вспоминаю систему, сделанную не мной на одной из предыдущих работ. В итоге она была внедрена у трех заказчиков - и дважды кардинально переделывалась. В то же время там есть модуль, который я разработал, и который внедрен никак не в меньшем количестве мест, наверняка в большем (не знаю точно, поскольку он жил после моего ухода, вполне вероятно живет и до сих пор). Этот модуль был спроектирован именно под адаптацию к конкретным заказчикам; первые пару адаптаций делал я, потом ушел - в итоге, года через три меня один раз попросили сделать то, что они не хотели трогать. Я сделал, за день. Обнаружив при этом кучу мелких доработок в целом в предусмотренных направлениях и практически неизменный код "ядра" - его настолько не требовалось трогать, что когда таки потребовалось, позвали меня. Я уверен, что этот модуль был разработан дешево. Почему? Потому что это была пятая (!) реализация этой задачи в рамках этой фирмы. Я знаю, сколько времени потребовали предыдущие, и я знаю, сколько времени это заняло у меня (само собой, опираясь на предыдущий опыт и часть унаследованного кода, но кардинально поменяв архитектуру и изменив все, что мне не нравилось). Почему он получился хорошо? Полагаю, большую роль сыграло то, что я долго уговаривал начальство это сделать и сделать именно так (фактически со времен выхода второй реализации. Третья и четвертая были сделаны в другом русле). Соответственно, у меня было время выносить идею, понять, как все это должно быть. 18-я веснаТакая ситуация (итеративность дизайна) декларируется в экстремальном программировании, однако остается и классика - полное ТЗ + кодирование. Из умных книг мне вспоминается слово waterfall, которое нынче дружно ругают. Как ни странно, современные работы по проектированию трогают меня довольно мало. Бывают любопытные мысли, но в целом читать их скучно, ощущение deja vu. Из тех факторов, которые я могу выделить как оказавшие на меня серьезное влияние, большую роль играет читанная в детстве старая книга http://www.libex.ru/detail/book59509.html В частности, когда я впервые читал про экстремальное программирование, изложение разделилось на две четких группы мыслей: "похоже на Йодана" и "бред какой-то" :) Так вот, среди явных и не очень явных идей этой книги была и следующая: при правильном подходе разработчик получает большую свободу в выборе технологии. Он может целиком спроектировать, поочередно реализовать, протестировать и сдать систему; он может ее целиком прототипировать, потом наполнить, он может реализовать отдельные модули, даже не начав проектировать другие, он может начать тестирование одновременно с разработкой, он может проектировать "сверху вниз", при этом тестируя "снизу вверх", и все это - в рамках единых принципов, единой структуры, единого подхода, так, что можно перейти от одного из этих вариантов к другому на ходу. И вот тут вступает в действие тот принцип, который я назвал чуть выше - не делать работу слишком рано. Я обычно описываю его так: задача - это огромный бутерброд, неимоверных размеров. Я вижу кусок, который могу откусить - и делаю это. Появляется следующий - делаю. В конце концов оказывается, что бутерброд съеден. Каждый раз я решаю задачу, время которой настало, с учетом как внутренних факторов - то есть состояния проекта, какую задачу уже сейчас можно решить хорошо, а какая пока не очень понятна, так и внешних - то есть пожеланий заказчика и прочих подобных. 18-я веснаНо если окажется, что и при классическом проектировании дефакто в каждом (в 100% случаев) проекте есть несколько итераций дизайна Практически в любом живом проекте. В самой что ни на есть классике таки предусматривается стадия сопровождения, которая по сути и есть итерирование дизайна. Отличие современных проектов в том, что такое итерирование чаще всего оказывается необходимым до сдачи в экспуатацию. Что вполне понятно - в "классические" времена задачи были много проще, а их постановка делалась относительно более тщательно (относительно - в смысле "потраченные силы" / "объем задачи"). ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2006, 02:05 |
|
Создание ПО без доработки кода при внедрении
|
|||
---|---|---|---|
#18+
18-я веснаСогласен. Но здесь скорее всего все-таки возникают новые требования, а не меняются старые. Что-то типа "аппетит приходит во время еды" :) "Аппетит приходит во время еды" - удачное описание для большинства изменений этого типа. И возникают новые, и меняются старые, но вопрос не в этом. Даже возникновение нового требования часто приводит к модификации старого кода. Не просто к созданию нового куска, но к изменению реализованного. Just for example, опять же из практики. В организации было множество складов, причем склады были нескольких типов (по смыслу и по операциям, которые там выполнялись). Большинство складов обслуживалось программой А, один тип складов обслуживался программой Б. Их СУБД реплицировались и были похожи, но не одинаковы (практически, в незапамятные времена текущую на тот момент версию программы А обкарнали, доработали напильником и сделали Б. Потом некоторые изменения из тех, что делались в А, вносили и в Б, опять же дорабатывая напильником). Изначально была поставлена задача написать программу В, работающую на той же БД, что и А, и обслуживающую некий тип склада (в итоге В должна была заменить А, это была первая итерация). Она была сделана и внедрена. В ходе работ была поставлена задача написать также программу Г для замены Б; эта задача также была решена, причем что вполне естественно, с максимальным использованием решений из В. После чего, полюбовавшись на неосторожно добавленные нами в Г "мощные" решения из В и вспомнив, как плохо все было в Б, нас спросили: а можно ли добавить в Г всю функциональность В, а заодно убрать ряд ограничений, которые разработчики Б выбили, чтобы облегчить себе жизнь? Как Вы понимаете, ответ был "можно". Но! То, что мы писали в В, мы писали для определенного типа склада и с ограничениями и заглушками, свойственными этому типу. И если бы мы не держали в уме, что В потребуется дорабатывать для других складов, если бы облегчили себе жизнь так же, как когда-то сделали разработчики Б - пришлось бы нам вносить баальшие изменения. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2006, 02:26 |
|
Создание ПО без доработки кода при внедрении
|
|||
---|---|---|---|
#18+
softwarer Just for example, опять же из практики. Блин, как все это до боли знакомо :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2006, 03:19 |
|
Создание ПО без доработки кода при внедрении
|
|||
---|---|---|---|
#18+
softwarerВо-первых, я полагаю, что дизайн, не отвечающий этому принципу, является плохим. То есть, во-первых так делать не надо ни в каком случае (это уже моя личная заморочка - не выпускать плохой продукт), во-вторых, озвученный Вами принцип не является чем-то особым, а просто случаем общего (можно дешево и плохо, можно дороже и хорошо). Во-вторых, я уверен, что при определенном опыте, "набитой руке" на соответствующие подходы, выработанном инструментарии такую "устойчивую к изменениям разработку" можно вести очень дешево, практически бесплатно относительно "обычной". Ну, опыт конечно никуда не деть, многие вещи на автомате делаются хорошо. Но см. ниже коммент. Почему он получился хорошо? Полагаю, большую роль сыграло то, что я долго уговаривал начальство это сделать и сделать именно так (фактически со времен выхода второй реализации. Сейчас как раз и занимаюсь уговорами, но мое начальство считает свой опыт единственно правильным :) Начальник решил подключиться к процессу дизайна. Причем в данном случае это агрессивный ламер. В итоге многие решения, которые у меня просто возникают на автомате, поскольку они проверены временем, мне ему приходится разжевывать и доказывать, что это оптимальное решение. Но к сожалению в этом проекте мне пока не удается навязать свое видение (касательно необходимости проектирования с учетом будущего редизайна). ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2006, 03:38 |
|
Создание ПО без доработки кода при внедрении
|
|||
---|---|---|---|
#18+
18-я веснаБывало ли у кого-то такое, что постановка, ТЗ сделаны настолько близко к реальным нуждам заказчика, что после окончания кодирования и внутреннего тестирования - при внедрении, не требовалось бы вносить изменения в исходное ТЗ и соответственно переделывать код? PS. Речь идет конечно не о мелких утилитах или компиляторах :), а например об АРМ или чем-то посложнее, то есть из области автоматизации предприятий. С некоторого времени (года 3-4 как...) - 100% так на всех "нормальных" проектах. Изменения, как правило, каксаются только удобства работы пользователя, ну или некоторых незначительных деталей, которые к сожалению были упущены на этапе проработки требований. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2006, 08:48 |
|
Создание ПО без доработки кода при внедрении
|
|||
---|---|---|---|
#18+
2 softwarer Практически со всем согласен. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2006, 08:55 |
|
Создание ПО без доработки кода при внедрении
|
|||
---|---|---|---|
#18+
asafreeС некоторого времени (года 3-4 как...) - 100% так на всех "нормальных" проектах. А дальнейшее развитие у этих проектов было? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2006, 12:13 |
|
Создание ПО без доработки кода при внедрении
|
|||
---|---|---|---|
#18+
18-я весна asafreeС некоторого времени (года 3-4 как...) - 100% так на всех "нормальных" проектах. А дальнейшее развитие у этих проектов было? Было и есть. Некоторые живут и развиваются по несколько лет. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2006, 12:22 |
|
Создание ПО без доработки кода при внедрении
|
|||
---|---|---|---|
#18+
18-я весна softwarer Just for example, опять же из практики. Блин, как все это до боли знакомо :) До боли или не до боли, но в тему поднятого вопроса можно добавить еще и следующее: Бывают несколько типов и стадий проектов (в целом). Пользователи и заказчики, на самом деле, все могут, при желании, но чаще у нас с ними просто нет... общего поля для работы(диагностики)... можно сказать - прецедентов. Потому довольно часть имеет место - проекты пилоты, не обязательно протитипы. Когда нужно сделать что-либо, в той или иной степени готовности (кое-как, в определенной степени), просто для набора опыта и создания предмета для дальнейшего развития. И тут никакие ТЗ не работают, успех в целом зависит от дара провидения сторон. Довольно неудачной формой как раз и является - сроки и бюджет ограничены, делаем две программы для двух типов складов и баста. А вот второй тип задач - он более интересен. К примеру - унификация складского ПО с целью его дальнейшего развития. С целью, к примеру, унификации номенклатурного прейскуранта, интеграции с блоком управления запасами, производством, планированием и т.д. и т.п. Вот тут уже вполне можно говорить о ТЗ и каких то принципах, критериях. Тем более, у разработчика уже есть определенный опыт, в той или иной степени сформировавшийся подход и инструментарий (сиречь FrameWork) Т.е. мы более менее четко можем представить себе и план здания в целом, и доступные строительные материалы и процесс постройки здания. И нам не нужно уже изобретать, к примеру, концепцию лифта уже после того, как достроен 11-ый этаж и начаты отделочные работы (как это происходит в подходе к проектам по принципу "откусывания бутерброда по частям"). ---- В любом случае можно даже привести разумное правило - к примеру, я уже практически не берусь за проекты "с нуля/чистого листа", предпочитая минимизировать риски недетерминированности требований. Тем более - сейчас это намного проще, та или иная степень автоматизации/информатизации на предприятиях уже присутствует, в отличии от ситуации "начала 90-х", когда на предприятиях ставилась задача: "Ну мы же компьютеры купили, и че ? Почему они не работают, почему персонал не сокращается и т.д. и т.п." ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2006, 14:21 |
|
Создание ПО без доработки кода при внедрении
|
|||
---|---|---|---|
#18+
asafree 18-я веснаА дальнейшее развитие у этих проектов было? Было и есть. Некоторые живут и развиваются по несколько лет. Т.е. для них тоже характерен итеративный дизайн. Только не в ходе внедрения, но и при эксплуатации, примерно как описывал Softwarer. Здесь я говорю только с технической точки зрения человека у которого на входе ТЗ и нужно произвести проектирование кода и который в общем случае не знает причины изменения ТЗ (по результатам внедрения или просто дальнейшее развитие). Несколько раз спроектированные мною системы, после передачи другому ведущему и прекращения моего курирования, при внесении изменений испытывали на себе то, что я называю эрозия дизайна. Это когда вместо редизайна производится quickfix, латание дыр. Такой процесс ведет к постепенному расширению мест кода, где нужно делать заплатки, в том числе и в модулях, которые не требуют модификации согласно новым требованиям, вплоть до полной потери надежной работоспособности системы. Хотелось бы по ходу обсуждения услышать, кто какие методы применяет для минимизации редизайна. Например: система плагинов, скриптовый язык, и т.д. Минимизация необходимости редизайна на мой взгляд позволяет разработчикам, менее компетентным чем первоначальный разработчик, развивать нормально проект, так как при этом принятие решения либо выносится из процесса кодирования (например саппорт просто выполняет настройку), либо существующий дизайн направляет к нужному решению. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2006, 14:22 |
|
Создание ПО без доработки кода при внедрении
|
|||
---|---|---|---|
#18+
softwarer И возникают новые, и меняются старые, но вопрос не в этом. Даже возникновение нового требования часто приводит к модификации старого кода. Не просто к созданию нового куска, но к изменению реализованного. Опять же, нужно оговаривать степень. Бывают задачи и изменения достижимые, бывают нет. В примере постройки здания - вполне разумным и достижимым требоваеним является: - поставить систему централизованного кондиционирования; - проложить централизованные сетевые коммуникации; - поставить дубовые панели вместо гипсокартонных. Т.е. мы просто _дополняем_ первоначальные требования, без ущерба общему концепту. А вот требования: - изначально фундамент был на 10-ть этажей, а нужно 25-ть, а еще подземный паркинг забыли; - потолки наверное нужны 3.5м, а вы реализовали только 3м, э... нет, нужно переделать --- Другое дело, что не все так страшно, и при должном навыке и опыте (профессионализме) разработчики поступают проще: долго и нужно реализуют концепции вида (при наличии терпения и понимания со стороны руководства): - динамически расширяемый фундамент - динамическая высота потолков и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2006, 14:28 |
|
Создание ПО без доработки кода при внедрении
|
|||
---|---|---|---|
#18+
18-я веснаХотелось бы по ходу обсуждения услышать, кто какие методы применяет для минимизации редизайна. Например: система плагинов, скриптовый язык, и т.д. Скорее минимизации последствий редизайна. "система плагинов, скриптовый язык" + компоновка из атомарных "кубиков", которые можно без пересборки всей системы на лету заменять и перепривязывать. Ситуация "вместо редизайна производится quickfix, латание дыр" - типовой путь к глюковатым монстрам. С этим нужно бороться любыми методами. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2006, 14:31 |
|
Создание ПО без доработки кода при внедрении
|
|||
---|---|---|---|
#18+
18-я весна Хотелось бы по ходу обсуждения услышать, кто какие методы применяет для минимизации редизайна. Например: система плагинов, скриптовый язык, и т.д. Редизайн в той или иной степени неизбежен. Плагины и скриптовый язык не решает этой проблемы. В целом - это лишь навык и опыт изначального проектирования под возможные дальнейшие расширения. И латки и дыры - также неизбежны. Вопрос лишь в том, что их нужно локализовывать (собирать в определенном месте), а не размазывать тонким слоем по всей архитектуре приложения/системы. К примеру: Реализуется абстрактный движок - финансовый модуль (в свою очередь построенный на концепции учетной машины). А вот потом из него строятся конкретные реализации: - банковский модуль - касса - векселя и т.д. И лишь на последнем этапе реализуется нечто подобное (гипотетическая тема ИРКЦ): - касса по приему платежей от физ. лиц за коммунальные услуги (вплоть - до - отделения №15, которому запрещено принимать платежи за электроэнергию) Другой вопрос, что объять необъятное - тоже невозможно. К примеру - данный финансовый модуль абсолютно не пригоден для банковской или какой трейдинговой задачи, где начинают фигурировать понятия Финансовый инструмент и т.д. (но не на уровне движка - Учетная машина, кстати ;))) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2006, 14:36 |
|
Создание ПО без доработки кода при внедрении
|
|||
---|---|---|---|
#18+
18-я веснаСейчас как раз и занимаюсь уговорами, но мое начальство считает свой опыт единственно правильным :) Начальник решил подключиться к процессу дизайна. Причем в данном случае это агрессивный ламер. Тяжелая ситуация. С другой стороны, хорошая тренировка для переговоров с клиентами. Когда мне было чуть больше двадцати, мой тогдашний начальник явно путал меня со своим четырнадцатилетним на тот момент сыном. В этой ситуации было довольно тяжело доказывать ему, что программировать можно и получше, нежели он привык. Собственно, тот пятикратно реализованный модуль, который я упоминал - как раз с той работы. 18-я веснаХотелось бы по ходу обсуждения услышать, кто какие методы применяет для минимизации редизайна. Например: система плагинов, скриптовый язык, и т.д. Названное вторично, если не третично, имхо. С моей точки зрения, главное - это удачное применение принципа модульности на всех уровнях. Удачная программа похожа на детский конструктор, и большинство изменений сводятся к простой и надежной перекомпоновке кирпичиков. Второй ключевой фактор - наглядность, очевидность решения. Вы совершенно справедливо отметили, что менее квалифицированные продолжатели без проблем испортят хорошую вещь. Я не готов сформулировать рецепт, но полагаю, чтобы избежать этого, необходимо, чтобы буквально бросалось в глаза: ЭТУ ЗАДАЧУ, ЕСЛИ ПОТРЕБУЕТСЯ, НУЖНО РЕШАТЬ ВОТ ЗДЕСЬ. В противном случае будет трудно избегать деградации. Система плагинов имеет свои плюсы и свои минусы. С точки зрения темы стоит отметить, что плагины неизбежно требуют определенного уровня модульности и вынуждают четко проектировать и поддерживать интерфейсы взаимодействия (также одна из ключевых мыслей Йодана). Кроме того, малоквалифицированные программисты легко могут испортить "цельную" программу, протянув "левые" связи между ее компонентами; с плагинами это намного сложнее. Скриптовые языки... к подобным вещам я отношусь весьма неодобрительно. С моей точки зрения, это отличный способ вбухать довольно много сил с крайне плохим результатом, либо вбухать еще намного больше сил с довольно средним результатом. Грешен, сам однажды сделал, но там были крайне слабые требования, и написать интерпретатор строк на сто было явно проще и удобнее других вариантов. Мне нравится следующий подход: 1. Изначально модули пишутся нормальным образом, с использованием обычного ЯП. 2. В нужных местах закладывается возможность конфигурирования. Сначала примитивного, так, чтобы хватило решить текущие задачи. Подчеркну: не "задумывается и реализовывается нечто глобальное", а "скромная задача решается так, чтобы по необходимости ее без проблем можно было развить в глобальную". 3. Со временем типовые решения дорастают до конфигурируемости, практически исключающей необходимость писать код для решения этой задачи. grexhideДругое дело, что не все так страшно, и при должном навыке и опыте (профессионализме) разработчики поступают проще: долго и нужно реализуют концепции вида (при наличии терпения и понимания со стороны руководства): Именно так и появляется продукты, нуждающиеся в переделке еще до завершения разработки. Сначала долго уговариваем подождать, потом долго работаем, не имея обратной связи, и наконец пытаемся уговорить, что сделанное - именно то, что требовалось. iscrafmСитуация "вместо редизайна производится quickfix, латание дыр" - типовой путь к глюковатым монстрам. С этим нужно бороться любыми методами. Воистину так. Можно говорить, что инженерная работа - непрерывный поиск компромиссов, но качество - та категория, где нет места компромиссам. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2006, 16:48 |
|
Создание ПО без доработки кода при внедрении
|
|||
---|---|---|---|
#18+
softwarer grexhideДругое дело, что не все так страшно, и при должном навыке и опыте (профессионализме) разработчики поступают проще: долго и нужно реализуют концепции вида (при наличии терпения и понимания со стороны руководства): Именно так и появляется продукты, нуждающиеся в переделке еще до завершения разработки. Сначала долго уговариваем подождать, потом долго работаем, не имея обратной связи, и наконец пытаемся уговорить, что сделанное - именно то, что требовалось. .... Можно говорить, что инженерная работа - непрерывный поиск компромиссов, но качество - та категория, где нет места компромиссам. Это одна из сторон медали. Как было замечено ранее, все поиск компромиса - это основополагающая область инженерной деятельности. Но и само понятие качество - оно относительно. Естественных ограничений для ПО будет куда меньше, чем для реального мира. И то, что в реальном мире просто бы "не поехало", "развалилось" и т.д. в практике ИС часто имеет место жить, и довольно продуктивно в конечном счете. Это и хорошо и плохо одновременно. С одной стороны - нам не нужно заниматься вещами из отряда: "во чтобы то не стало нужно поместить все в пространство 5 куб.м. и вложиться в массу 5 тонн. С другой стороны - современный софт и повсеместный "подпорочный" подход к его проектированию, разработке и сопровождения приводит к известной поговорке: "если бы программисты строили здания, то любой залетевший дятел разрушил бы цивилизацию". Потому как большинство разработчиков на местах не имеют ни малейшего представления о инженерной деятельности как таковой, часто действуя по принципу: "пишым, то что слышым". Формально, с точки зрения ТЗ, вполне укладываясь в требования и даже в сроки. И что самое парадоксальное - зачастую реализуя куда более удачные и удобные конечным пользователям... поделия, чем те самые тиражно-стандартные, самые правильные и профессионально-архитектурные, качественные и .... и пр.. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2006, 17:12 |
|
|
start [/forum/topic.php?fid=33&msg=33975735&tid=1549289]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
149ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
others: | 252ms |
total: | 513ms |
0 / 0 |