|
Значение процесса проектирования информационных систем
|
|||
---|---|---|---|
#18+
По многолетним наблюдениям организации проектирования программно-аппаратных систем в ИТ компаниях и крупных компаниях, организующих внутреннюю разработку, проектирование чаще рассматривается как часть процесса документирования систем. Часто используются развитые средства проектирования, тип Sparx Enterprise Architect (средство проектирования с использованием UML, BPMN и ряда неформальных нотаций), но в основном для «иллюстраций» проектной документации. Это, конечно, неплохо, но теряется главная идея систематического проектирования с использованием стандартных инструментов и нотаций – само проектирование систем – поддержка творческого процесса проектирования техническими средствами, коллективный творческий процесс. К сожалению, в последнее время, многие разработчики программно-аппаратных систем, воспринимающие Agile методологию «буквально», стараются избегать процесс проектирования вообще, полагаясь на «быстрое» кодирование, демонстрацию системы овнеру и коррекцию требований к системе. Проблема в том, что проектирование – объективный, неизбежный процесс при разработке программно-аппаратных систем. Разница в подходах: • Системный подход, основанный на знаниях по разным аспектам проектирования. Моделирование является частью систематического подхода. • Несистемный подход. Часто «в уме», в «разговорах», как правило не основывается на знаниях в областях проектирования. Очень нравиться «начинающим» программистам – они считают, что, научившись кодировать они уже достигли всего, никаких новых знаний и умений уже не надо (принцип, если я чего-то не знаю, то это не нужно и вредно). По сути, проектирование систем, очень соответствует Agile концепции (если не относиться к некоторым методологиям «буквально»). Проектирование (может быть итеративным – «релизным») дает «быстрое» представление о будущей системе для различных групп заинтересованных лиц (заказчики, руководители проектов (спонсоры), аналитики, архитекторы, программисты, тестировщики, специалисты по внедрению, …). Обратная связь (корректирующая информация) приводит к уточнению модели системы, как следствие сокращение количества итераций по разработке (в частности программированию) системы. Учитывая, что проектирование системы – существенно более дешевый и быстрый процесс чем разработка (включая программирование), проектирование приводит к удешевлению и ускорению общего процесса разработки системы. Много приходилось участвовать в проектировании систем с конца 1990х до настоящего времени. Сначала это был Oracle Designer 2000, потом Rational Rose (UML), средства проектирования IDEF, сейчас, в основном, Sparx Enterprise Architect (UML, BPMN, …). Проектирование включает много аспектов (соответственно роли проектировщиков), например: • Бизнес анализ; • Системный анализ; • Архитектура; • Дизайн программно-аппаратных компонентов; • Сценарии тестирования. Взаимосвязь моделей по всем аспектам проектирования является одной из основополагающих концепций наиболее распространенной методологии проектирования TOGAF (IBM, Oracle, Мин обороны США, NASA, …). В терминах TOGAF это понятие Enterprise Continuum. Бизнес анализ включает описание бизнес-процессов, бизнес-объекты данных, роли участников бизнес-процессов, и.т.д.. Сценарии бизнес-процессов, взаимосвязи сценариев бизнес-процессов, трансформация бизнес-объектов (входящие, промежуточные, исходящие) в рамках сценариев бизнес-процессов, связь между ролями участников бизнес-процессов и бизнес-процессами – все это трудно представить без корректной бизнес-модели. Если для незначительной по размерам бизнес области обойтись мез модели можно (но трудно), то для средней и большой бизнес области это практически невозможно (хотя на практике встречал «гениальных» людей, перемножающих 7 значные числа «на лету»). По результатам бизнес-анализа выявляются проблемы и потребности бизнеса, которые могут служить входной информацией для следующего этапа проектирования – системного анализа. Модели бизнес-анализа позволяют отслеживать связи между бизнес-проблемами (потребностями) и другими аспектами бизнес проектирования (бизнес-процессами, бизнес-объектами, ролями, …), не позволяя им «подвисать» (не понятно откуда и для чего). Проектирование требований к системе (систематическое или «умозрительное» бессистемное) без этапа бизнес анализа возможно если бизнес область хорошо известна разработчику. В противном случае на этапе системного анализа возникают большие риски: • Разработчики системы не охватывают существенных проблем и потребностей бизнеса; • Разрабатываемая система не «укладывается» в текущую или изменяемую (планируемую) бизнес среду (бизнес-процессы, бизнес объекты, роли, …). В процессе системного анализа необходимо контролировать взаимосвязь (термин «трассируемость») между требованиями к разрабатываемой системе, проблемами/потребностями и другими объектами бизнес-анализа (бизнес-процессы, бизнес объекты, роли, …). Без моделирования требований к системе и объектов бизнес анализа отследить «трассируемость» сложно (для небольших систем) или невозможно (для больших). Требования к системе, формируемые на стадии системного анализа, кроме «трассируемости» на объекты бизнес анализа должны учитывать другие существенные аспекты: • Полнота требований. Должно быть ясно, откуда и как система получает исходные данные, как обрабатывает, куда и как передает. Не должно быть «темных пятен». • Непротиворечивость требований; • Отсутствие дублирования требований (прямое и косвенное); • Однозначность требований; • «Трассируемость» требований разных типов, разных уровней иерархии (функциональные, нефункциональные, ограничения проектирования, требования к объектам данных, роли пользователей, …). Значению связи между функциональными и нефункциональными требованиями большое значение придается в сервисно-ориентированной ИТ методологии ITIL (международный стандарт), в частности аспект QoS (качество ИТ сервиса). Без «понятного» моделирования требований обеспечить вышеуказанные аспекты системного анализа сложно или невозможно. Отсутствие моделирования приведет к высокому риску ошибок проектирования, как следствие большим издержкам на стадии разработки системы в виде переработок. Далее процесс разработки архитектуры системы. Для начала, необходимо контролировать «трассируемость» между объектами архитектуры (модули, компоненты (программные и аппаратные), алгоритмы, интерфейсы, фреймворки, …) и объектами системного анализа (требования (функциональные и нефункциональные), информационные сущности, роли, …). В противном случае система не решит поставленных задач (или решит «неудовлетворительно»). Опять-таки, без моделей отследить такую «трассируемость» сложно или невозможно. Другие существенные аспекты архитектуры: • Инфраструктура системы; • Разбиение системы на компоненты. Выбор программной (фреймворки) и аппаратной инфраструктуры системы «сильно» зависит от нефункциональных требований к системе и характера используемых компонент (программных и аппаратных). Необходимо внимательно контролировать эту зависимость. Разбиение системы на компоненты (программные и аппаратные) имеет следующие аспекты: • Максимизация повторного использования компонент существенно сокращает стоимость и срок разработки системы, повышает качество системы; • Широкое использование стандартных («готовых») компонент; • Горизонтальная и вертикальная компонентизация. При горизонтальной компонентизации, компоненты выполняют разные функции и мало взаимодействуют друг с другом. При вертикальной компонентизации, компоненты верхнего уровня используют компоненты более низких уровней (Типичный архитектурный шаблон – «архитектурные слои», например, слой пользовательского представления, бизнес логики, стандартных алгоритмов и общесистемных функций, внешних интерфейсов, данных, …). Разбиение системы на компоненты, кроме возможности повторного использования компонент имеет другое, не менее важное значение – сокращение сложности, а следовательно стоимости и времени разработки системы, а также стоимости сопровождения и развития системы. Одна из наиболее распространенных моделей оценки сложности систем – COCOMO оценивает сложность системы, в частности, по количеству строк кода. Между сложностью (стоимость и время разработки) и количеством строк кода – степенная зависимость (количество строк в степени > 1). Тенденция к компонентизации систем привело некоторое время назад к «модной» парадигме – микро-сервисная архитектура . Спроектировать эффективную по структуре компонентную систему без использования моделей сложно (хотя есть и особо «гениальные» разработчики). Необходимо видеть эти компоненты, распределение функций между компонентами, связи компоненты, и.т.д. О влиянии проектирования на стоимость, время разработки и качество программных систем, а также стоимость внедрения, сопровождения и развития систем можно обсуждать много. Не возражаю, что для небольших «коленочных» систем, мелких доработок, проектирование можно не проводить. Для средних и больших систем, «урезание» процесса проектирования, по многолетнему опыту во многих организациях, это путь к «провалу». ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 11:34 |
|
Значение процесса проектирования информационных систем
|
|||
---|---|---|---|
#18+
Дмитрий Морочко О влиянии проектирования на стоимость, время разработки и качество программных систем, а также стоимость внедрения, сопровождения и развития систем можно обсуждать много. Не возражаю, что для небольших «коленочных» систем, мелких доработок, проектирование можно не проводить. Для средних и больших систем, «урезание» процесса проектирования, по многолетнему опыту во многих организациях, это путь к «провалу». Стоимость проектирования и стоимость прототипирования почти одинаковая. Но прототип уже работает здесь и сейчас, а проектную документацию еще надо в код превратить. Т.к. на данный момент в ИТ нет методик и стандартов 100% гарантирующих, что проект переведенный в код будет 100% удовлетворять требованиям заказчика, то зачем тратить деньги? Когда можно выкатить MVP (прототип), а потом допиливать напильником. Очень грубо говоря, agile это и есть проектирование. Только вместо красивых схем пишут код ;-) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 12:08 |
|
Значение процесса проектирования информационных систем
|
|||
---|---|---|---|
#18+
Дмитрий Морочко, Чего вы там спроектировать хотите, если неизвестно, что будет завтра? Да и сегодня не всем понятно. Окромя великой идеи и набросков зачастую ничего нет :) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 12:33 |
|
Значение процесса проектирования информационных систем
|
|||
---|---|---|---|
#18+
mad_nazgul Очень грубо говоря, agile это и есть проектирование. Только вместо красивых схем пишут код ;-) Теоретически agile это движение к цели, к продукту через серию проверяемых маленьких инкрементов. Можно потратить тысячи человеко-часов, нарисовать 100500 схем и пару томов ТЗ, а оно не только не взлетит, но и влетит в крупную копеечку. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 12:35 |
|
Значение процесса проектирования информационных систем
|
|||
---|---|---|---|
#18+
hVostt mad_nazgul Очень грубо говоря, agile это и есть проектирование. Только вместо красивых схем пишут код ;-) Теоретически agile это движение к цели, к продукту через серию проверяемых маленьких инкрементов. Можно потратить тысячи человеко-часов, нарисовать 100500 схем и пару томов ТЗ, а оно не только не взлетит, но и влетит в крупную копеечку. В любом случае, что через предварительное проектирование, что через мелкие итерации мы идем к цели. Вопрос только в стоимости. Например, при строительстве дешевле потратиться на предварительное проектирование и расчеты для постройки многоэтажного дома. Чем пытаться в начале построить будку, а потом последовательными итерациями переделать ее в многоэтажный дом. В ИТ это совсем не так. Практика показала, что дешевле сделать небольшой прототип, который потом можно "вырастить" до крупного приложения. Вот когда стоимость машино-часа была очень дорогой. Тогда да. Разумнее было потратиться на "проектирование", а потом перевод в код. Сейчас, когда в кармане мы носим вычислительные мощности, которые в прошлом веке даже и не снились, экономить машино-часы глупо. А вот экономить человеко-часы разумно. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 13:08 |
|
Значение процесса проектирования информационных систем
|
|||
---|---|---|---|
#18+
mad_nazgul Практика показала, что дешевле сделать небольшой прототип, который потом можно "вырастить" до крупного приложения. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 13:53 |
|
Значение процесса проектирования информационных систем
|
|||
---|---|---|---|
#18+
Zmeelov2 Практика показала, что плохо спроектированный небольшой прототип надо выкинуть и начать проект с самого начала. это нормально. первый прототип всегда идет по сути в мусорное ведро. либо целиком сразу после показа и выслушивания заказчика с "я не это имел ввиду" или "по сути" в процессе рефакторинга и выстраивания архитектуры ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 14:02 |
|
Значение процесса проектирования информационных систем
|
|||
---|---|---|---|
#18+
МодальноеОкно это нормально. первый прототип всегда идет по сути в мусорное ведро. В разработке пришел к четырем постулатам: 0. Документация (постановка, правила обработки данных) ценнее кода. (Принцип правила первичны) 1. Делать надо только то, что нужно в данный момент. (Принцип минимальных усилий) 2. Любой блок надо делать максимально изолированным от остальных, предусматривать возможную замену. (Принцип черного ящика) 3. Расширение ведется в основном заменой блоков кода (Принцип расширения через замену) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 14:38 |
|
Значение процесса проектирования информационных систем
|
|||
---|---|---|---|
#18+
Zmeelov2 2. Любой блок надо делать максимально изолированным от остальных, предусматривать возможную замену. (Принцип черного ящика) 3. Расширение ведется в основном заменой блоков кода (Принцип расширения через замену) в ООП для этого вводили концепцию SOLID ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 14:53 |
|
Значение процесса проектирования информационных систем
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 15:00 |
|
Значение процесса проектирования информационных систем
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 17:33 |
|
Значение процесса проектирования информационных систем
|
|||
---|---|---|---|
#18+
hVostt концепцию сложное слово? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 17:37 |
|
Значение процесса проектирования информационных систем
|
|||
---|---|---|---|
#18+
Zmeelov2 0. Документация (постановка, правила обработки данных) ценнее кода. (Принцип правила первичны) Если будет использовать именно так, как звучит -- don't work. Если будет использоваться не так, как звучит -- тем более don't work. Zmeelov2 1. Делать надо только то, что нужно в данный момент. (Принцип минимальных усилий) Читай, либо из говна и палок на коленке, либо нужно потратить время на такое проектирование, чтобы потом не пришлось ничего переписывать, но при этом усилия должны быть минимальны. По сравнению с чем? Соберём колл, обсудим варианты? Эхх.. не жизнь, а масленница. Zmeelov2 2. Любой блок надо делать максимально изолированным от остальных, предусматривать возможную замену. (Принцип черного ящика) Да ладно, не стесняйтесь, микросервисы only! Даётся ли это бесплатно? Аххахах (слёзы), ну канешна парниш! Халява сыр! Zmeelov2 3. Расширение ведется в основном заменой блоков кода (Принцип расширения через замену) См. п.2, об одном и том же в профиль, в анфас, извините, сзади, много можно сказать. Но это сути не меняет. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 17:39 |
|
Значение процесса проектирования информационных систем
|
|||
---|---|---|---|
#18+
МодальноеОкно hVostt концепцию сложное слово? Знатные у вас выдумки и фантазии. Чего курите? Или не курите, о SOLID в пол уха слышали? ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 17:40 |
|
Значение процесса проектирования информационных систем
|
|||
---|---|---|---|
#18+
Zmeelov2 МодальноеОкно это нормально. первый прототип всегда идет по сути в мусорное ведро. В разработке пришел к четырем постулатам: 0. Документация (постановка, правила обработки данных) ценнее кода. (Принцип правила первичны) 1. Делать надо только то, что нужно в данный момент. (Принцип минимальных усилий) 2. Любой блок надо делать максимально изолированным от остальных, предусматривать возможную замену. (Принцип черного ящика) 3. Расширение ведется в основном заменой блоков кода (Принцип расширения через замену) Вся проблема в 1 пункте, т.к. обычно (на моей практике всегда) документация мало соответствует действительности. Соответственно остальные пункты делают не то и не так. Для этого как раз MVP нормальный подход. Вместо того, чтобы делать бред, по документации мы делаем что-то что заказчик может потрогать и сказать свое "ФУ". Далее идут уточнения. Хорошо если мы исходя из горячечного бреда заказчика сможем сразу боле-менее правильно сделать прототип. Если нет, то прототип на свалку, благо на него потратили не более двух недель. Переписываем и идем дальше. Если из-за выбранных технологий или по каким-то другим причинам MVP сделать нельзя, то хорошо помогают картинки с интерфейсом (не диаграммы UML). По которым заказчику показывается как будет выглядеть приложение, и как ого будет реагировать на те или иные действия. Но все равно при этом "промахнуться" проще чем при MVP. Если же менеджер/аналитик любит UML и показывает заказчику "веселые картинки", то 100% что будет все сделано не то и не так. Главное получать как можно быстрее обратную связь от заказчика. Был на одном проекте, где почти год потратили на аналитику и составление ТЗ. А когда написали первую версию и показали клиенту, то оказалось, что БП описан не правильно и упущено куча моментов, которые для заказчика были само-собой разумеещимися, а аналитики просто про это не знали. Хотя опыт у них был в проекте с той же предметной областью. Но БП оказались довольно сильно отличающиеся в деталях. Так что, по моему опыту, если мне приносят кучу "веселых картинок" из UML, это значит, что ТЗ как минимум не полное, как максимум просто бред. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 06:05 |
|
Значение процесса проектирования информационных систем
|
|||
---|---|---|---|
#18+
mad_nazgul Вся проблема в 1 пункте, т.к. обычно (на моей практике всегда) документация мало соответствует действительности. mad_nazgul когда написали первую версию и показали клиенту, то оказалось, что БП описан не правильно и упущено куча моментов, которые для заказчика были само-собой разумеещимися, а аналитики просто про это не знали. mad_nazgul Главное получать как можно быстрее обратную связь от заказчика. mad_nazgul если мне приносят кучу "веселых картинок" из UML, это значит, что ТЗ как минимум не полное, как максимум просто бред. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 06:25 |
|
Значение процесса проектирования информационных систем
|
|||
---|---|---|---|
#18+
hVostt МодальноеОкно пропущено... сложное слово? Знатные у вас выдумки и фантазии. Чего курите? Или не курите, о SOLID в пол уха слышали? ))) вася, твое место в буфете ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 10:13 |
|
Значение процесса проектирования информационных систем
|
|||
---|---|---|---|
#18+
hVostt Если будет использовать именно так, как звучит -- don't work. Если будет использоваться не так, как звучит -- тем более don't work. вы кличко речи не пишите? очень похоже ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 10:15 |
|
Значение процесса проектирования информационных систем
|
|||
---|---|---|---|
#18+
mad_nazgul Был на одном проекте, где почти год потратили на аналитику и составление ТЗ. А когда написали первую версию и показали клиенту, то оказалось, что БП описан не правильно и упущено куча моментов, которые для заказчика были само-собой разумеещимися, а аналитики просто про это не знали. Хотя опыт у них был в проекте с той же предметной областью. Но БП оказались довольно сильно отличающиеся в деталях. по другому не бывает. особенно если аналитики деревянные по пояс - кроме правильного, без искажений, записывания ответа нужен еще правильный вопрос. а для правильных вопросов нужны мозги и опыт ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 10:18 |
|
Значение процесса проектирования информационных систем
|
|||
---|---|---|---|
#18+
МодальноеОкно вася, твое место в буфете А, забыл, вы представитель местной быдлоты. Ясно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 11:14 |
|
Значение процесса проектирования информационных систем
|
|||
---|---|---|---|
#18+
От вас кроме соплежуйства и откровенного быдлячества, видимо ничего по сути не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 11:15 |
|
Значение процесса проектирования информационных систем
|
|||
---|---|---|---|
#18+
Zmeelov2 mad_nazgul Вся проблема в 1 пункте, т.к. обычно (на моей практике всегда) документация мало соответствует действительности. ТЗ как раз было не кривое. Оно просто описывало другое. Повторю аналитики уже делали такой же проект с такой же предметной областью. Просто оказалось, что заказчик очень своеобразно трактует стандарты. Да и сами стандарты, скажем так имеют логические дыры. Поэтому БП в прошлом проекте были не совсем такие как в новом. А заказчик просто с умным видом читал гору литературы, которую нагенерили аналитики и подписывал. "В общем все верно, в частностях все не верно" выяснилось только когда выкатили приложение на предпрод и реальные пользователи с ним стали работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 14:03 |
|
Значение процесса проектирования информационных систем
|
|||
---|---|---|---|
#18+
МодальноеОкно по другому не бывает. особенно если аналитики деревянные по пояс - кроме правильного, без искажений, записывания ответа нужен еще правильный вопрос. а для правильных вопросов нужны мозги и опыт Вопросы задавали правильные, но только потом, когда поняли что "Все врут". А так до этого да большой проект, но подобный уже делали (масштабом поменьше). Аналитики да молодые и возможно опыта не много (года три вроде) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 14:11 |
|
Значение процесса проектирования информационных систем
|
|||
---|---|---|---|
#18+
mad_nazgul "В общем все верно, в частностях все не верно" выяснилось только когда выкатили приложение на предпрод и реальные пользователи с ним стали работать. Заказчик должен увидеть куски прототипа как можно раньше. Тогда будут наводящие вопросы и еще можно быстро и беспроблемно исправить. И нестрашно, что многое там еще не дописано. Можно на словах добавить, что и где будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 14:41 |
|
|
start [/forum/topic.php?fid=33&msg=39914322&tid=1547128]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
others: | 306ms |
total: | 466ms |
0 / 0 |