Тактическое и оперативное планирование разработки интернет-приложения

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 21.02.2016
Размер файла 199,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

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

3.2.3 Политика управления сложностью при проектировании ПО

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

Управление сложностью -- самый важный технический аспект разработки ПО.

Сложность -- не новинка в мире разработки ПО. Один из пионеров информатики Эдсгер Дейкстра обращал внимание на то, что компьютерные технологии -- единственная отрасль, заставляющая человеческий разум охватывать диапазон, простирающийся от отдельных битов до нескольких сотен мегабайт информации, что соответствует отношению 1 к 109, или разнице в девять порядков. Такое гигантское отношение просто ошеломляет. Дейкстра выразил это так: “По сравнению с числом семантических уровней средняя математическая теория кажется почти плоской. Создавая потребность в глубоких концептуальных иерархиях, компьютерные технологии бросают нам абсолютно новый интеллектуальный вызов, не имеющий прецедентов в истории”. Разумеется, за прошедшее с 1989 г. время сложность ПО только выросла, и сегодня отношение Дейкстры вполне может характеризоваться 15 порядками.

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

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

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

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

· сложное решение простой проблемы;

· простое, но неверное решение сложной проблемы;

· неадекватное сложное решение сложной проблемы.

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

· стараться свести к минимуму объем существенной сложности, с которым придется работать в каждый конкретный момент времени;

· сдерживать необязательный рост несущественной сложности.

Такая политика управления сложностью при разработке обычно выражается аббревиатурами KISS & DRY, которые переводятся как “Делай короче и проще” (Keep It Short and Simple) и “Не повторяй себя” (Don't Repeat Yourself).

Все остальные аспекты проектирования ПО вторичны, по отношению к управлению сложностью.

3.2.4 Политика отслеживания и исправления ошибок

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

· Подробное описание шагов, необходимых для воспроизведения ошибки

· Ожидаемое поведение

· Наблюдаемое (неправильное) поведение

· Кому поручено исправить

· Исправлена ошибка или нет

Политика “Zero bugs” (ноль дефектов) которая была впервые внедрена Microsoft, теперь повсеместно используется во всех успешных компаниях создающих программное обеспечение, в том числе и для веб. Согласно этой политике, в любой момент времени наиболее важным является устранение ошибок до написания нового кода. И вот почему. В общем случае, чем больше компания тянет с исправлением ошибки, тем дороже (во временном и денежном измерении) ей это обойдётся. Например, если в коде приложения есть ошибка, которая обнаруживается при первом запуске, её можно тут же исправить, так как код ещё свеж в вашей памяти. Если ошибка обнаруживается в коде, который был написан несколько дней назад, потребуется какое-то время, чтобы отследить её, но если перечитать свой код, можно всё вспомнить и исправить ошибку в разумные сроки. Но если вы обнаружили ошибку в коде, который написан несколько месяцев назад, то вы скорее всего уже многое в нём забыли, и исправить её будет гораздо сложнее. Может случиться так, что вам придётся исправлять чужой код, автор которого отдыхает на Карибских островах. В этом случае поиск ошибки -- целая наука: приходится долго, методично и тщательно искать, и неизвестно, сколько времени это займёт. А если ошибка обнаруживается в продукте, который уже продаётся, компания понесёт невероятные расходы, чтобы её исправить.

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

3.2.5 Политика поддержки актуальности требований и документации

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

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

IV. Обзор подходов к планированию в рамках различных моделей и методологий разработки

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

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

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

4.1 Водопад - классическая модель разработки

Модель водопада -- модель процесса разработки ПО, в которой этапы разработки проходят в строгой последовательности, процесс разработки выглядит как поток, последовательно проходящий фазы анализа требований, проектирования, реализации, тестирования, интеграции и поддержки. Автором модели является У. У. Ройс, опубликовавший модель в 1970 году.

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

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

4.2 Итеративная модель разработки

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

Итеративный подход имеет целый ряд преимуществ, перед моделью водопада, среди них:

· Снижение риска не учесть какое-либо требование, всегда можно добавить требование на следующей итерации;

· Более равномерная загрузка участников проекта;

· Возможность работать только над самыми приоритетными направлениями;

· Использование накопленного опыта на последующих итерациях;

· Возможность использовать обратную связь с клиентами и вводить обновления реально отвечающие текущим желаниям потребителей;

· Реальная оценка текущего состояния проекта, большая уверенность в его успешном завершении - проект всегда в рабочем состоянии, и разработка лишь добавляет новые возможности приложению;

Пример реализации итеративного подхода -- методология Rational Unified Process.

4.3 Методология RUP

Rational Unified Process (RUP) -- итеративная методология разработки программного обеспечения, созданная компанией Rational Software.

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

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

В основе RUP лежат следующие принципы:

· Итеративная разработка

· Контроль за изменениями

· Управление требованиями (требования должны определяться пользователями)

· Использование компонентов (сложный проект должен быть разделен на простые части)

· Визуальное моделирование (использование визуальных схем и диаграмм упрощает постановку задачи)

· Контроль качества (постоянное тестирование основных частей проекта)

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

4.4 Гибкая методология разработки (Agile)

Agile -- целое семейство методологий разработки, а не единственный подход в разработке программного обеспечения, оно определяется Agile Manifesto http://agilemanifesto.org/.

Agile методологии во многом похожи на RUP. Разработка сводится к набору итераций, которые обычно длятся две-три недели. Каждая итерация выглядит как программный проект в миниатюре, и включает все задачи, необходимые для выдачи мини-прироста по функциональности. Хотя отдельная итерация, как правило, недостаточна для выпуска новой версии продукта, подразумевается, что гибкий программный проект готов к выпуску в конце каждой итерации. По окончании каждой итерации, команда выполняет переоценку приоритетов разработки.

Ключевым отличием гибкой методологии является то, что основной метрикой agile-методов является рабочий продукт. Отдавая предпочтение непосредственному общению, agile-методы уменьшают объем письменной документации, по сравнению с другими методами. Это привело к критике этих методов, как недисциплинированных.

Основные идеи http://en.wikipedia.org/wiki/Agile_software_development#Principles:

§ Личности и их взаимодействия важнее, чем процессы и инструменты;

§ Работающее программное обеспечение важнее, чем полная документация;

§ Главное -- удовлетворить клиента и предоставить ему продукт как можно скорее;

§ Реакция на изменения важнее, чем следование плану;

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

4.4.1 Экстремальное программирование (XP)

Методология XP, разработанная Kent Beck, Ward Cunningham, и Ron Jeffries, на сегодня является наиболее известной из гибких методологий. На русском языке издано уже несколько книг, посвященных этой методологии. XP это упрощенный, ориентированный на кодирование процесс, для небольших проектов. Также как и RUP, эта технология основана на итерациях, объединяющих некоторые приемы, такие как небольшие релизы, простое проектирование, тестирование и постоянная интеграция. XP предлагает несколько подходов, которые эффективны для соответствующих проектов и обстоятельств, но содержит неочевидные предположения, работы и роли. RUP и XP исходят из различных философских основ. RUP - это система процессов, методов и техник, которые вы можно применить в любом конкретном программном проекте. Предполагается, что пользователь будет адаптировать RUP. С другой стороны XP - более ограниченный процесс, требующий дополнений для того, чтобы соответствовать полному циклу разработки проекта. Эта разница объясняет предпочтения в сообществе разработчиков программного обеспечения. Разработчики крупных систем рассматривают RUP в качестве решения своих проблем, в то время как сообщество разработчиков малых систем решение своих проблем видит в XP. XP описывается как 12 практик: игра в планирование, короткие релизы, метафоры, простой дизайн, переработки кода, разработка «тестами вперед», парное программирование, коллективное владение кодом, 40-часовая рабочая неделя, постоянное присутствие заказчика и стандарты кода.

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

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

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

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

4.4.2 Crystal Clear

Crystal Алистер К. Быстрая разработка программного обеспечения. М.: «Лори», 2002 -- семейство методологий, определяющих необходимую степень формализации процесса разработки в зависимости от количества участников и критичности задач.

Crystal уступает XP по производительности, зато максимально проста в использовании. Требует минимальных усилий для внедрения, так как ориентирована на человеческие привычки. Считается, что она описывает тот естественный порядок разработки ПО, который устанавливается в достаточно квалифицированных коллективах, если в них не занимаются целенаправленным внедрением другой методологии.

Основные характеристики методологии:

§ Итеративная инкрементная разработка;

§ Автоматическое регрессионное тестирование;

§ Привлечение пользователей к активному участию в проекте;

§ Состав документации определяется участниками проекта;

§ Как правило, используются средства контроля версий кода.

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

4.5 Другие методологии, общая схема тактического и оперативного планирования разработки приложения

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

В общем виде, схема оперативного и тактического планирования интернет приложения выглядит так:

Заключение

Ежедневно создаются интернет стартапы, из них вырастают такие известные как Facebook, Google, Yahoo, Mail.ru, Вконтакте и менее известные, как приложение “Счастливый фермер”, сервис moedelo.ru, insales.ru, ecwid.com. Успех новых интернет приложений во многом предопределен самой идеей, без хорошей идеи, заложенной в основу, проект никогда не станет успешным. Однако из множества проектов с очень хорошими идеями, лишь немногие добиваются успеха. Достижение успеха с хорошей идеей, в среде, где долгосрочное планирование невозможно, обусловлено грамотны тактическим и оперативным планированием разработки, перетекающими в качественный процесс конструирования приложения.

В работе определены проблемы разработки интернет приложений и поэтапно описан процесс по созданию жизнеспособных и эффективных планов разработки интернет приложений.

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

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

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

Список литературы

1. Винокуров В.А. Организация стратегического управления на предприятии. - М.: Центр экономики и маркетинга, 2010.

2. С. Макконнелл Совершенный код. Мастер-класс. Электронное издание. - 2010.

3. Т. Линус Just for Fun - история создания Linux. Электронное издание. - 2010.

4. Афитов Э.А. Планирование на предприятии: Учеб. Пособие. - Мн.: Выш. шк., 2001.

5. Ильин А.И., Синица Л.М. Планирование на предприятии: Учеб. пособие. В 2 ч. Ч. 2. Тактическое планирование. - Мн.: ООО «Новое знание», 2010.

6. Грибанова Н.Н., Солодков В.Т. Планирование и прогнозирование деятельности предприятия. - М.: Иркутск: Изд-во ИГЭА, 2009.

7. Royce, Winston (1970), Managing the Development of Large Software Systems. Электронное издание.

8. Арчибальд Р. Управление высокотехнологичными программами и проектами - М.: Компания АйТи; ДМК Пресс, 2014.

9. Виханский О.С., Наумов А.И. Менеджмент. М: Гардарика, 1998.

10. Алистер К. Быстрая разработка программного обеспечения. М.: «Лори», 2012

Размещено на Allbest.ru


Подобные документы

  • Задачи, которые решают интернет-ресурсы. Классификация интернет-рекламы. Обзор существующих Web-технологий. Язык разработки сценариев PHP. Технология построения интерактивных документов DHTML. Средства и технологии для разработки интернет-ресурса.

    дипломная работа [1,5 M], добавлен 22.11.2015

  • Анализ функционирования интернет-сайтов по предоставлению услуг. Обзор методологий проектирования интернет-представительства. Инструментальные средства разработки и реализации системы управления сайтом. Разработка интерфейса пользователя и web-сайта.

    дипломная работа [1,2 M], добавлен 03.08.2014

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

    дипломная работа [2,8 M], добавлен 03.07.2017

  • Факторы, влияющие на пропускную способность в беспроводных сетях. Использование скриптового языка программирования PHP для разработки базы данных интернет-магазина, его основные преимущества. Современные методы и средства тестирования web-приложений.

    дипломная работа [3,5 M], добавлен 10.07.2015

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

    курсовая работа [1,1 M], добавлен 11.01.2017

  • Изучение предметной области и выявление основных задач Интернет-магазинов. Выбор средств разработки системы, базы данных, инфологической и даталогической моделей. Разработка программного приложения, программных модулей, представленных экранными формами.

    дипломная работа [4,2 M], добавлен 22.04.2015

  • Основные технологии разработки ресурсов Интернет. Процесс разработки веб-сайта. Понятие Web-сайта и классификация Web-сайтов. Основные этапы разработки Web-сайта. Использование HTML, CSS, JavaScript, FLASH, PHP и реляционной базы данных MySQL.

    презентация [1,3 M], добавлен 28.11.2015

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

    курсовая работа [2,0 M], добавлен 02.10.2013

  • Современные подходы к дистанционному образованию. Применение новых образовательных технологий. Анализ подходов к созданию обучающих интернет-ресурсов и выбор среды разработки. Эффективность создания интернет-ресурса с использованием cms-системы ucoz.

    дипломная работа [317,4 K], добавлен 26.11.2010

  • Интернет-магазин – программное обеспечение для удобства покупок и продаж с веб-сайта. Характеристика существующих средств проектирования и разработки информационных систем. Описание особенностей интерфейса разрабатываемого программного приложения.

    курсовая работа [703,3 K], добавлен 07.05.2019

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.