Процесс разработки программного обеспечения. Проектирование программного обеспечения

Сегодня процесс создания сложных программных приложений невозможно представить без разделения на этапы жизненного цикла. Под жизненным циклом программы будем понимать совокупность этапов:

  • Анализ предметной области и создание ТЗ (взаимодействия с заказчиком)
  • Проектирование структуры программы
  • Кодирование (набор программного кода согласно проектной документации)
  • Тестирование и отладка
  • Внедрение программы
  • Сопровождение программы
  • Утилизация
Остановимся детально на процессе проектирования. В ходе проектирования архитектором или опытным программистом создается проектная документация, включающая текстовые описания, диаграммы, модели будущей программы. В этом нелегком деле нам поможет язык UML.

UML - является графическим языком для визуализации, описания параметров, конструирования и документирования различных систем (программ в частности). Диаграммы создаются с помощью специальных CASE средств, например Rational Rose (http://www-01.ibm.com/software/rational/) и Enterprise Architect (http://www.sparxsystems.com.au/). На основе технологии UML строится единая информационная модель. Приведенные выше CASE средства способны генерировать код на различных объектно-ориентированных языках, а так же обладают очень полезной функцией реверсивного инжиниринга. (Реверсивный инжиниринг позволяет создать графическую модель из имеющегося программного кода и комментариев к нему.)

Рассмотрим типы диаграмм для визуализации модели (это must have, хотя типов гораздо больше):

Существуют ли какие-либо преимущества для создания приложений в «коротких сегментах»?

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

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

Диаграмма вариантов использования (use case diagram)

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

Диаграмма классов (class diagram)

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


Каковы советы пользователей?

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

Тогда как сначала начать Спринт

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

Сколько времени требуется для создания первой версии программного обеспечения?

Через месяц у нас была первая версия программного обеспечения. Если это время будет намного дольше, неплохо подготовить прототип, который позволит пользователям оценить предлагаемое решение. В таком прототипе некоторые функции не будут работать, но пользователи смогут сформулировать первые оценки.

Диаграмма состояний (statechart diagram)

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


Что важно в хорошем сотрудничестве при разработке программного обеспечения?

Обратная связь важна. Без него гибкая методология перестает работать. Не получая информацию, мы должны создать программное обеспечение, угадывая, понравится ли нам то, что мы делаем. К счастью, наши клиенты очень заинтересованы в общении, и это помогает.

Трудно сказать, сколько будет стоить весь проект, поэтому вам нужно заранее подготовить очень подробную спецификацию. Однако стоимость создания такой спецификации часто больше, чем ошибка оценки стоимости в вялом проекте. Как и в любом бизнесе, для укрепления доверия требуется не только бизнес. Поставщик должен работать на них. Трудно предположить, что вы получите их бесплатно, особенно если у клиента плохой опыт работы с другими компаниями. У нас были ситуации, когда мы начали сотрудничество с очень ограниченным доверием, но по мере того, как обещания росли.

Диаграмма последовательности (sequence diagram)

Для моделирования взаимодействия объектов в языке UML используются соответствующие диаграммы взаимодействия. Взаимодействия объектов можно рассматривать во времени, и тогда для представления временных особенностей передачи и приема сообщений между объектами используется диаграмма последовательности. Взаимодействующие объекты обмениваются между собой некоторой информацией. При этом информация принимает форму законченных сообщений. Другими словами, хотя сообщение и имеет информационное содержание, оно приобретает дополнительное свойство оказывать направленное влияние на своего получателя.

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

Если ваши продукты производятся таким образом, у вас есть время их протестировать?

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

Диаграмма кооперации (collaboration diagram)

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

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

Диаграмма компонентов (component diagram)

Диаграмма компонентов, в отличие от ранее рассмотренных диаграмм, описывает особенности физического представления системы. Диаграмма компонентов позволяет определить архитектуру разрабатываемой системы, установив зависимости между программными компонентами, в роли которых может выступать исходный, бинарный и исполняемый код. Во многих средах разработки модуль или компонент соответствует файлу. Пунктирные стрелки, соединяющие модули, показывают отношения взаимозависимости, аналогичные тем, которые имеют место при компиляции исходных текстов программ. Основными графическими элементами диаграммы компонентов являются компоненты, интерфейсы и зависимости между ними.


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

Диаграмма развертывания (deployment diagram)

Диаграмма развертывания предназначена для визуализации элементов и компонентов программы, существующих лишь на этапе ее исполнения (runtime). При этом представляются только компоненты-экземпляры программы, являющиеся исполнимыми файлами или динамическими библиотеками. Те компоненты, которые не используются на этапе исполнения, на диаграмме развертывания не показываются.
Диаграмма развертывания содержит графические изображения процессоров, устройств, процессов и связей между ними. В отличие от диаграмм логического представления, диаграмма развертывания является единой для системы в целом, поскольку должна всецело отражать особенности ее реализации. Эта диаграмма, по сути, завершает процесс ООАП для конкретной программной системы и ее разработка, как правило, является последним этапом спецификации модели.

Разработка настольных и серверных программ

Прикладное программирование основано на строгих стандартах кодирования и принципах «наилучшего доказательства», что гарантирует превосходный код и архитектуру. Когда вашему приложению требуется высокая вычислительная мощность или приложения, которые должны использовать ресурсы, хранящиеся на локальном компьютере, необходимо выбрать специализированное приложение, которое выполняется в локальной операционной системе, а не в Интернете.

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

На этом закончим обзорный экскурс по диаграммам в частности и проектированию в общем. Стоит отметить, что процесс проектирования уже давно стал стандартом разработки ПО, но часто приходится сталкиваться с великолепно написанной программой, которая из за отсутствия нормальной документации обрастает ненужным побочным функционалом, костылями, становится громоздкой и теряет былое качество. =(

Запуск приложений с консоли

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

ПО для управления базами данных

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

Я убежден, что программист в первую очередь это кодер – он НЕ должен общаться с заказчиком, НЕ должен задумываться об архитектуре системы, не должен изобретать интерфейс к программе, он только должен кодировать – реализовывать алгоритмы, функционал, внешний вид, юзабилити, но не более…. Проектировщик же должен начиная от абстрактных диаграмм (описывающих предметную область) до диаграмм представляющих структуру данных, классов и процессов их взаимодействия, детально шаг за шагом все расписать. То есть сложность работы и зарплата проектировщика должна быть на порядок выше чем у программиста == кодера. Простите за крамолу....

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

Разработка программного продукта знает много достойных методологий - иначе говоря, устоявшихся best practices. Выбор зависит от специфики проекта, системы бюджетирования, субъективных предпочтений и даже темперамента руководителя. В статье описаны методологии, с которыми мы регулярно сталкиваемся в Эдисоне .

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

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

1. «Waterfall Model» (каскадная модель или «водопад»)



Одна из самых старых, подразумевает последовательное прохождение стадий, каждая из которых должна завершиться полностью до начала следующей. В модели Waterfall легко управлять проектом. Благодаря её жесткости, разработка проходит быстро, стоимость и срок заранее определены. Но это палка о двух концах. Каскадная модель будет давать отличный результат только в проектах с четко и заранее определенными требованиями и способами их реализации. Нет возможности сделать шаг назад, тестирование начинается только после того, как разработка завершена или почти завершена. Продукты, разработанные по данной модели без обоснованного ее выбора, могут иметь недочеты (список требований нельзя скорректировать в любой момент), о которых становится известно лишь в конце из-за строгой последовательности действий. Стоимость внесения изменений высока, так как для ее инициализации приходится ждать завершения всего проекта. Тем не менее, фиксированная стоимость часто перевешивает минусы подхода. Исправление осознанных в процессе создания недостатков возможно, и, по нашему опыту, требует от одного до трех дополнительных соглашений к контракту с небольшим ТЗ.

Разработка программного обеспечения: основные этапы

Анализ проекта разработки программного обеспечения

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

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

С помощью каскадной модели мы создали множество проектов «с нуля», включая разработку только ТЗ. Проекты, о которых написано на Хабре: средний - , мелкий - .

Когда использовать каскадную методологию?

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

2. «V-Model»



Унаследовала структуру «шаг за шагом» от каскадной модели. V-образная модель применима к системам, которым особенно важно бесперебойное функционирование. Например, прикладные программы в клиниках для наблюдения за пациентами, интегрированное ПО для механизмов управления аварийными подушками безопасности в транспортных средствах и так далее. Особенностью модели можно считать то, что она направлена на тщательную проверку и тестирование продукта , находящегося уже на первоначальных стадиях проектирования. Стадия тестирования проводится одновременно с соответствующей стадией разработки, например, во время кодирования пишутся модульные тесты.

Создание диаграммы проекта

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

Настройка и настройка вашего программного приложения

Настройка и настройка выполняются в тестовой среде клиента.

Доставка, установка и настройка приложения в производственной среде

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

Обучение пользователей и администраторов

Тренировочные занятия направлены на приобретение навыков использования и управления поставляемым приложением.

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

Мы планируем учебные занятия вместе с клиентом, в зависимости от команд, которые необходимо будет обучить. Учебные материалы будут включать конкретные потоки получателя в соответствии с документом «Технические характеристики проекта». Процесс обучения заканчивается «Учебными минутами».

Вступление в производство заявки

В этот момент приложение запускается. Вступление в производство отмечается путем подписания записи о вводе в производство или записи в ежедневные рабочие минуты.

Дополнительная помощь при вступлении в производство

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

Когда использовать V-модель?

  • Если требуется тщательное тестирование продукта, то V-модель оправдает заложенную в себя идею: validation and verification.
  • Для малых и средних проектов, где требования четко определены и фиксированы.
  • В условиях доступности инженеров необходимой квалификации, особенно тестировщиков.

3. «Incremental Model» (инкрементная модель)

В инкрементной модели полные требования к системе делятся на различные сборки. Терминология часто используется для описания поэтапной сборки ПО. Имеют место несколько циклов разработки, и вместе они составляют жизненный цикл «мульти-водопад». Цикл разделен на более мелкие легко создаваемые модули. Каждый модуль проходит через фазы определения требований, проектирования, кодирования, внедрения и тестирования. Процедура разработки по инкрементной модели предполагает выпуск на первом большом этапе продукта в базовой функциональности, а затем уже последовательное добавление новых функций, так называемых «инкрементов». Процесс продолжается до тех пор, пока не будет создана полная система.


Инкрементные модели используются там, где отдельные запросы на изменение ясны, могут быть легко формализованы и реализованы. В наших проектах мы применяли ее для создания читалки DefView, а следом и сети электронных библиотек Vivaldi.

Как пример опишем cуть одного инкремента. пришла на смену DefView. DefView подключалась к одному серверу документов, а теперь может подключаться ко многим. На площадку учреждения, желающего транслировать свой контент определенной аудитории, устанавливается сервер хранения, который напрямую обращается к документам и преобразует их в нужный формат. Появился корневой элемент архитектуры - центральный сервер Vivaldi, выступающий в роли единой поисковой системы по всем серверам хранения, установленным в различных учреждениях.

Когда использовать инкрементную модель?

  • Когда основные требования к системе четко определены и понятны. В то же время некоторые детали могут дорабатываться с течением времени.
  • Требуется ранний вывод продукта на рынок.
  • Есть несколько рисковых фич или целей.

4. «RAD Model» (rapid application development model или быстрая разработка приложений)

RAD-модель - разновидность инкрементной модели. В RAD-модели компоненты или функции разрабатываются несколькими высококвалифицированными командами параллельно, будто несколько мини-проектов. Временные рамки одного цикла жестко ограничены. Созданные модули затем интегрируются в один рабочий прототип. Синергия позволяет очень быстро предоставить клиенту для обозрения что-то рабочее с целью получения обратной связи и внесения изменений.


Модель быстрой разработки приложений включает следующие фазы:

  • Бизнес-моделирование: определение списка информационных потоков между различными подразделениями.
  • Моделирование данных: информация, собранная на предыдущем этапе, используется для определения объектов и иных сущностей, необходимых для циркуляции информации.
  • Моделирование процесса: информационные потоки связывают объекты для достижения целей разработки.
  • Сборка приложения: используются средства автоматической сборки для преобразования моделей системы автоматического проектирования в код.
  • Тестирование: тестируются новые компоненты и интерфейсы.
Когда используется RAD-модель?

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

5. «Agile Model» (гибкая методология разработки)



В «гибкой» методологии разработки после каждой итерации заказчик может наблюдать результат и понимать, удовлетворяет он его или нет. Это одно из преимуществ гибкой модели. К ее недостаткам относят то, что из-за отсутствия конкретных формулировок результатов сложно оценить трудозатраты и стоимость, требуемые на разработку. Экстремальное программирование (XP) является одним из наиболее известных применений гибкой модели на практике.

В основе такого типа - непродолжительные ежедневные встречи - «Scrum» и регулярно повторяющиеся собрания (раз в неделю, раз в две недели или раз в месяц), которые называются «Sprint». На ежедневных совещаниях участники команды обсуждают:

  • отчёт о проделанной работе с момента последнего Scrum’a;
  • список задач, которые сотрудник должен выполнить до следующего собрания;
  • затруднения, возникшие в ходе работы.
Методология подходит для больших или нацеленных на длительный жизненный цикл проектов, постоянно адаптируемых к условиям рынка. Соответственно, в процессе реализации требования изменяются. Стоит вспомнить класс творческих людей, которым свойственно генерировать, выдавать и опробовать новые идеи еженедельно или даже ежедневно. Гибкая разработка лучше всего подходит для этого психотипа руководителей. Внутренние стартапы компании мы разрабатываем по Agile. Примером клиентских проектов является Электронная Система Медицинских Осмотров , созданная для проведения массовых медосмотров в считанные минуты. Во втором абзаце этого отзыва , наши американские партнеры описали очень важную вещь, принципиальную для успеха на Agile.

Когда использовать Agile?

  • Когда потребности пользователей постоянно меняются в динамическом бизнесе.
  • Изменения на Agile реализуются за меньшую цену из-за частых инкрементов.
  • В отличие от модели водопада, в гибкой модели для старта проекта достаточно лишь небольшого планирования.

6. «Iterative Model» (итеративная или итерационная модель)

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


На диаграмме показана итерационная «разработка» Мона Лизы. Как видно, в первой итерации есть лишь набросок Джоконды, во второй - появляются цвета, а третья итерация добавляет деталей, насыщенности и завершает процесс. В инкрементной же модели функционал продукта наращивается по кусочкам, продукт составляется из частей. В отличие от итерационной модели, каждый кусочек представляет собой целостный элемент.

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

Когда оптимально использовать итеративную модель?

  • Требования к конечной системе заранее четко определены и понятны.
  • Проект большой или очень большой.
  • Основная задача должна быть определена, но детали реализации могут эволюционировать с течением времени.

7. «Spiral Model» (спиральная модель)



«Спиральная модель» похожа на инкрементную, но с акцентом на анализ рисков. Она хорошо работает для решения критически важных бизнес-задач, когда неудача несовместима с деятельностью компании, в условиях выпуска новых продуктовых линеек, при необходимости научных исследований и практической апробации.

Спиральная модель предполагает 4 этапа для каждого витка:

  1. планирование;
  2. анализ рисков;
  3. конструирование;
  4. оценка результата и при удовлетворительном качестве переход к новому витку.
Эта модель не подойдет для малых проектов, она резонна для сложных и дорогих, например, таких, как разработка системы документооборота для банка, когда каждый следующий шаг требует большего анализа для оценки последствий, чем программирование. На проекте по разработке СЭД для ОДУ Сибири СО ЕЭС два совещания об изменении кодификации разделов электронного архива занимают в 10 раз больше времени, чем объединение двух папок программистом. Государственные проекты, в которых мы участвовали, начинались с подготовки экспертным сообществом дорогостоящей концепции, которая отнюдь не всегда бесполезна, поскольку окупается в масштабах страны.

Подытожим



На слайде продемонстрированы различия двух наиболее распространенных методологий.

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

О технологиях разработки:
.
.
.
.

Какие методологии используете вы?