Жизненный цикл программного обеспечения
Управление жизненным циклом программного обеспечения и методологические стратегии развития проектов. Сопоставление жесткой и гибкой стратегий в методологиях программирования, их характерные черты и границы применимости. Модели процессов RUP, XP, MSF.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 13.10.2013 |
Размер файла | 695,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
· В процесс легко включаются специальные процедуры; могут модернизироваться и изменяться логические, проектные или другие аспекты процесса.
· В каждом проекте или отделе может использоваться собственная версия процесса.
Кто использует Rational Unified Process?
Телекоммуникация: Ericsson, Alcatel, MCI
Транспорт, авиационно-космическая отрасль, оборонная промышленность: Lockheed-Martin, British Aerospace
Промышленность: Xerox, Volvo, Intel
Финансы: Visa, Merrill Lynch, Schwab
Интеграторы систем: Ernst & Young, Oracle, Deloitte & Touche
Модель Rational Unified Process
Модель жизненного цикла RUP является довольно сложной, детально проработанной итеративно-инкрементной моделью с элементами каскада. В модели RUP выделяются 4 основные фазы, 9 видов деятельности (процессов). Кроме того, в модели описывается ряд практик, которые следует применять или руководствоваться для успешного выполнения проекта. RUP ориентирован на поэтапное моделирование создаваемого продукта с помощью языка UML (см. рис. 6.9).
Основными фазами RUP являются:
· Фаза начала проекта (Inception). Определяются основные цели проекта, бюджет проекта, основные средства его выполнения -- технологии, инструменты, ключевой персонал, составляются предварительные планы проекта. Основная цель этой фазы -- достичь компромисса между всеми заинтересованными лицами относительно задач проекта.
· Фаза проработки (Elaboration). Основная цель этой фазы -- на базе основных, наиболее существенных требований разработать стабильную базовую архитектуру продукта, которая позволяет решать поставленные перед системой задачи и в дальнейшем используется как основа разработки системы.
Рис. 6.9. Модель Rational Unified Process.
· Фаза построения (Construction). Основная цель этой фазы -- детальное прояснение требований и разработка системы, удовлетворяющей им, на основе спроектированной ранее архитектуры.
· Фаза передачи (Transition). Цель фазы -- сделать систему полностью доступной конечным пользователям. Здесь происходит окончательное развертывание системы в ее рабочей среде, подгонка мелких деталей под нужды пользователей.
В рамках каждой фазы возможно проведение нескольких итераций, количество которых определяется сложностью выполняемого проекта.
Деятельности (основные процессы) RUP делятся на пять рабочих и четыре поддерживающие. К рабочим деятельностям относятся:
· Моделирование предметной области (бизнес-моделирование, Business Modeling). Цели этой деятельности -- понять бизнес-контекст, в котором должна будет работать система (и убедиться, что все заинтересованные лица понимают его одинаково), понять возможные проблемы, оценить возможные их решения и их последствия для бизнеса организации, в которой будет работать система.
· Определение требований (Requirements). Цели -- понять, что должна делать система, определить границы системы и основу для планирования проекта и оценок ресурсозатрат в нем.
· Анализ и проектирование (Analysis and Design). Выработка архитектуры системы на основе ключевых требований, создание проектной модели, представленной в виде диаграмм UML, описывающих продукт с различных точек зрения.
· Реализация (Implementation). Разработка исходного кода, компонент системы, тестирование и интегрирование компонент.
· Тестирование (Test). Общая оценка дефектов продукта, его качество в целом; оценка степени соответствия исходным требованиям.
Поддерживающими деятельностями являются:
· Развертывание (Deployment). Цели -- развернуть систему в ее рабочем окружении и оценить ее работоспособность.
· Управление конфигурациями и изменениями (Configuration and Change Management). Определение элементов, подлежащих хранению и правил построения из них согласованных конфигураций, поддержание целостности текущего состояния системы, проверка согласованности вносимых изменений.
· Управление проектом (Project Management). Включает планирование, управление персоналом, обеспечения связей с другими заинтересованными лицами, управление рисками, отслеживание текущего состояния проекта.
· Управление средой проекта (Environment). Настройка процесса под конкретный проект, выбор и смена технологий и инструментов, используемых в проекте.
Основной причиной широкого распространения RUP является его системный характер. Это одна из немногих методологий, которая пытается дать ответ на основные вопросы реализации проекта, а именно кто выполняет? что выполняет? как выполняет? и когда, которые представлены в RUP четырьмя базовыми элементами моделирования:
· Исполнители: кто;
· Виды деятельность: как;
· Артефакты: что;
Технологические процессы: когда.
Однако за рамками модели остаются способы, с помощью которых можно было бы переходить к функциям от фаз жизненного цикла. Моделью не конкретизируются виды работ на этапах, время также довольно условно: рассмотрение отдельной функции дает представление о горизонтальном развитии событий (переходов от фазы к фазе), но в модели ничего не говорится о возможности совместного выполнения различных производственных функций.
Таким образом, стремление RUP к универсальности привело к необходимости использования лишь иллюстративной модели жизненного цикла, что, в свою очередь, привело к появлению инструментов и методов их применения, не связанных с моделью жизненного цикла, адекватной проекту. В результате все эти средства в какой бы то ни было CASE-системе, ориентированной на RUP, будут лишь коллекцией, а не комплексом поддержки процессов конкретных методологий. Это, однако, не означает отрицание инструментов CASE-систем RUP, которые оказываются очень полезными для реализации различных методологических подходов, чем во многом и объясняется их популярность.
4. Модель процессов MSF
Модель процессов MSF (MSF process model) представляет общую методологию разработки и внедрения IT_решений. Особенность этой модели состоит в том, что благодаря своей гибкости и отсутствию жестко навязываемых процедур она может быть применена при разработке весьма широкого круга программных проектов. Эта модель сочетает в себе свойства двух стандартных производственных моделей: каскадной и спиральной.
Стремясь достичь максимальной отдачи от IT_проектов, Майкрософт выпустил в свет пакет руководств по эффективному проектированию, разработке, внедрению и сопровождению решений, построенных на основе своих технологий. Эти знания базируются на опыте, полученном компанией при работе над большими проектами по разработке и сопровождению программного обеспечения, опыте консультантов Майкрософт, разрабатывавших проекты на предприятиях заказчиков, и лучшем из того, что накопила на данный момент индустрия разработки ПО. Все это представлено в виде двух связанных и хорошо дополняющих друг друга областей знаний: Microsoft Solutions Framework (MSF) и Microsoft Operations Framework (MOF).
Создание бизнес-решения в рамках отведенного времени и бюджета требует наличия испытанной методологической основы. MSF предлагает проверенные методики для планирования, проектирования, разработки и внедрения успешных IT-решений. Благодаря своей гибкости, масштабируемости и отсутствию жестких инструкций модель MSF способна удовлетворить нужды организации или проектной группы любого размера. Методология MSF состоит из принципов, моделей и дисциплин по управлению персоналом, процессами, технологическими элементами и связанными со всеми этими факторами вопросами, характерными для большинства проектов.
Одна из особенностей технологии MSF состоит в том, что она ориентирована не просто на создание программного продукта, удовлетворяющего определенному набору требований, а на поиск решения проблем, стоящих перед заказчиком. Различие состоит в том, что перечисляемые заказчиком требования являются проявлениями некоторых более глубоких проблем и неточность, неполнота, изменение требований в процессе разработки - следствие недопонимания этих проблем. Поэтому, в технологии MSF большое внимание уделяется анализу проблем заказчика и разработке вариантов системы для поиска их приемлемого решения
Являясь некоторым гибридом каскадной и спиральной моделей, модель жизненного цикла MSF сочетает простоту управления каскадной модели с гибкостью спиральной (см. рис. 6.10).
Каскадная модель Спиральная модель Модель жизненного цикла MSF
Рис. 6.10. Построение модели жизненного цикла MSF на базе каскадной и спиральной моделей.
Модель жизненного цикла MSF ориентирована на «вехи» (milestones) - ключевые точки проекта, характеризующие достижение какого-либо существенного результата. Этот результат может быть оценен и проанализирован. В модели предусматривается наличие основных вех (завершение главных фаз модели) и промежуточных, отражающих внутренние этапы главных фаз.
Базовые принципы MSF
Модель процессов MSF тесно связана со следующими четырьмя базовыми принципами:
Единое видение проекта
Успех коллективной работы над проектом немыслим без наличия у членов проектной группы и заказчика единого видения (shared vision), т.е. четкого, и, самое главное, одинакового, понимания целей и задач проекта. Как проектная группа, так и заказчик изначально имеют собственные предположения о том, что должно быть достигнуто в ходе работы над проектом. Лишь наличие единого видения способно внести ясность и обеспечить движение всех заинтересованных в проекте сторон к общей цели.
Формирование единого видения и последующее следование ему являются столь важными, что модель процессов MSF выделяет для этой цели специальную фазу (фаза “Выработка концепции”), которая заканчивается соответствующей вехой.
Проявляйте гибкость - будьте готовы к переменам
Традиционная дисциплина управления проектами и каскадная модель исходят из того, что все требования могут быть четко сформулированы в начале работы над проектом, и далее они не будут существенно изменяться. В противоположность этому MSF основывается на принципе непрерывной изменяемости условий проекта при неизменной эффективности управленческой деятельности.
Концентрируйтесь на бизнес-приоритетах
Независимо от того, нацелен ли разрабатываемый продукт на организации или индивидуумов, он должен удовлетворить определенные нужды потребителей и принести в некоторой форме выгоду или отдачу. В отношении индивидуумов это может означать, например, эмоциональное удовлетворение - как в случае компьютерных игр. Что же касается организаций, то неизменным целевым фактором продукта является бизнес_отдача (business value).
Обычно продукт не может приносить отдачу до того, как он полностью внедрен. Поэтому модель процессов MSF включает в свой жизненный цикл не только разработку продукта, но и его внедрение.
Поощряйте свободное общение
Исторически многие организации строили свою деятельность на основе сведения информированности сотрудников к минимуму, необходимому для исполнения работы (need_to_know). Зачастую такой подход приводит к недоразумениям и снижает шансы команды на достижение успеха.
Модель процессов MSF предполагает открытый и честный обмен информацией как внутри команды, так и с ключевыми заинтересованными лицами. Свободный обмен информацией не только сокращает риск возникновения недоразумений, недопонимания и неоправданных затрат, но и обеспечивает максимальный вклад всех участников проектной группы в снижение существующей в проекте неопределенности.
По этой причине модель процессов MSF предлагает проведение анализа хода работы над проектом в определенных временных точках. Документирование результатов делает ясным прогресс, достигнутый в работе над проектом - как для проектной команды, так и для заказчика и других заинтересованных в проекте сторон.
Основными фазами модели MSF являются:
· Создание общей картины приложения (Envisioning).На этом этапе решаются следующие основные задачи: оценка существующей ситуации; определение состава команды, структуры проекта, бизнес-целей, требований и профилей пользователей; разработка концепции решения и оценка риска. Устанавливаются две промежуточные вехи: «Организован костяк команды» и «Создана общая картина решения».
· Планирование (Panning). Включает планирование и проектирование продукта. На основе анализа требований разрабатывается проект и основные архитектурные решения, функциональные спецификации системы, планы и календарные графики, отбираются среды разработки, тестирования и пилотной эксплуатации. Этап состоит из трех стадий: концептуальное, логическое и физическое проектирование. На стадии концептуального проектирования задача рассматривается с точки зрения пользовательских и бизнес-требований и заканчивается определением набора сценариев использования системы. При логическом проектировании задача рассматривается с точки зрения проектной команды, решение представляется в виде набора сервисов. На стадии физического проектирования, где задача рассматривается с точки зрения программистов, уточняются используемые технологии и интерфейсы.
· Разработка (Developing). Создается вариант решения проблемы, в виде кода и документации очередного прототипа, включая спецификации и сценарии тестирования. Основная веха этапа - «Окончательное утверждение области действия проекта». Продукт готов к внешнему тестированию и стабилизации. Кроме того, заказчики, пользователи, сотрудники службы поддержки и сопровождения, а также ключевые участники проекта могут предварительно оценить продукт и указать все недостатки, которые нужно устранить до его поставки.
· Стабилизация (Stabilizing). Подготовка к выпуску окончательной версии продукта, доводка его до заданного уровня качества. Здесь выполняется комплекс работ по тестированию (обнаружение и устранение дефектов), проверяется сценарий развертывания продукта. Когда решение становится достаточно устойчивым, проводится его пилотная эксплуатация в тестовой среде с привлечением пользователей и применением реальных сценариев работы.
· Развертывание (Deploying). Выполняется установка решения и необходимых компонентов окружения, проводится его стабилизация в промышленных условиях и передача проекта в руки группы сопровождения. Кроме того, анализируется проект в целом на предмет уровня удовлетворенности заказчика.
К сожалению, авторы подхода MSF не совсем точны в своих оценках модели. Как и в случае с RUP, в этой модели очевидно стремление к универсальности, которое неизбежно приводит к огрублению ситуации в конкретных случаях и к необходимости словесного дополнения схемы. Недостатки моделей, основанных на раскручивающейся спирали, присущи ей в полной мере: невозможность отслеживания временных соотношений между сроками выполнения работ, трудности добавления специфичных этапов. К тому же ориентация на всеобщность лишает модель и тех преимуществ, которые демонстрирует, например, модель Боэма, снабженная конкретным механизмом интерпретации.
Изучение методологии, провозглашаемой MSF, позволяет сделать вывод о том, что ее авторы достаточно тщательно проработали процессы менеджмента, когда основой организации коллектива разработчиков считается проектная группа с рассредоточенными ролями. Но опять-таки в модели жизненного цикла это обстоятельство никак не отражено, что вполне объяснимо стремлением к всеобщности. Отсюда следует, что обсуждаемое предложение всегда в конкретных проектах должно адаптироваться. Сделать это проще, чем, к примеру, в случае RUP или других жестких схем, однако до уровня стратегии быстрого развития предложения MSF не доходят и занимают промежуточное положение между жесткими и гибкими методологиями.
Жизненный цикл в методологиях быстрого развития проектов
Как утверждают сторонники быстрого развития, их методологии не нуждаются в том, чтобы четко фиксировать этапы развития разработки программного проекта. Однако они понимают, что само понятие жизненного цикла полезно для представления процесса разработки в концептуальном плане. Что же касается деятельности менеджера, то в этом подходе в противовес жестким методологиям провозглашаются самодисциплина и сотрудничество вместо дисциплины и подчинения; планирование, контрольные и другие функции носят здесь такой характер, который позволяет менеджеру в большей мере сосредоточиться на руководстве командой, чем на управлении. В результате отслеживание процесса не требует, к примеру, специальных документов о достигнутых результатах и проблемах, для которых нужна специальная поддержка. По этой причине модели жизненного цикла быстрого развития не претендуют на инструментальность, и в таком ключе их рассматривать не имеет смысла. Тем не менее, понятия контрольных точек и контрольных мероприятий, распределения ресурсов, оценки остаются, хотя их содержание становится менее формализованным.
Жизненный цикл любой методологии быстрого развития можно описать следующим образом.
· Начальная фаза. Она выделена, поскольку приходится выполнять работы, которые не являются характерными для основного процесса.
· Серия максимально коротких итераций, состоящих из шагов:
o выбор реализуемых требований (в экстремальном программировании -- пользовательских историй);
o реализация только отобранных требований;
o передача результата для практического использования;
o короткий период оценки достигнутого (в зависимости от объема работ периода его можно назвать этапом или контрольным мероприятием).
· Фаза заключительной оценки разработки проекта.
Реальные быстрые методологии конкретизируют эту схему, дополняют ее теми или иными методиками.
До последнего времени быстрые процессы было не принято формализовывать настолько, чтобы их можно было предлагать в качестве стандарта. И сегодня не приходится говорить, например, о сертифицировании команды как «правильно» работающей по быстрой методологии, подобном тому, что требует CMM. Тем не менее, вопрос о сертификации быстрого процесса приобретает актуальность, так как он завоевывает все большую популярность. Существуют опасения, что стремление к сертификации может формализовать гибкие методологии до такой степени, что их нельзя уже будет называть гибкими.
Тем не менее, сегодня уже появилась компания, выполняющая проекты по методологии экстремального программирования, которая получила сертификат по одному из общепризнанных стандартов ISO 9001:2000, свидетельствующий об определенных гарантиях качества организации проектной деятельности и получаемых результатов. Это произошло весной 2003 года по прошествии примерно года с момента подачи заявки на сертификацию. Все, что для этого потребовалось сделать, свелось к приведению соответствия между процессами экстремального программирования и процессами, поддерживаемыми стандартом. В остальном процедура сертификации не нарушила процессы производства программ в компании. Не потребовалось никакой настройки процесса, доведения его до требований стандарта. Не претерпела изменений база данных, в которой сохранялись пользовательские истории со сведениями о работе с ними. Документация, предназначенная для пользователей, построенная на базе априорного тестирования, признана соответствующей требованиям качества и т.д.
5. Экстремальное программирование (ХР)
Экстремальное программирование (Extreme Programming или сокращённо ХР) является одним из направлений методологии быстрой разработки программного обеспечения. Представляет собой набор средств и методик для эффективного построения устойчивых и надёжных программ. Включает в себя поддержку изменчивости и противоречивости требований к разрабатываемым системам и тесные связи с заказчиком. Экстремальное программирование было анонсировано Кентом Беком в 1995 году в компании Chrysler. Является сравнительно новой методологией, но тем не менее хорошо зарекомендовавшей себя в кругах профессиональных разработчиков.
Экстремальное программирование применяется для создания программ коллективом от 2-х до 10 программистов при заранее заданных сроках сдачи проекта.
Тезисно суть экстремального программирования можно выразить следующим образом:
· все задание разбивается на формулировки подзадач, каждая формулировка должна иметь срок выполнения от 1 до 3-х недель, если больше, то - следует разделить, меньше - объединить;
· путем равновесия объема, времени, ресурсов и качества составляется структурный план выпуска версий программы на основании пользовательских формулировок;
· при выполнении очередной итерации проекта важно не добавлять функциональности раньше времени;
· перед началом новой итерации создается ее подробный план: формулировки разбиваются па задачи сроком от 1 до 3-х дней и сортируются по важности, добавляются задачи, которые не смогли пройти тест приемки;
· проводятся ежедневные утренние планерки, желательно стоя, чтобы не занимали слишком много времени;
· приветствуется простой дизайн проекта;
· создаваемым классам даются простые имена;
· осуществляется постоянный контакт с заказчиком;
· отслеживается качество исходных текстов;
· используется парное программирование - два программиста за одним компьютером;
· практикуется перемещение программистов на другие участки работы после завершения задачи;
· используется частая интеграция кода в общий проект для придания уверенности программистам в правильности их работы;
· решительно переделывается старый, работающий, но малоэффективный код;
· система оптимизируется в последнюю очередь;
· команда не работает сверх графика;
· используются тесты создаваемого «черного ящика» как можно чаще.
Методология ХР исходит из предположения, что в основе любого проекта лежат четыре переменные:
1. затраты;
2. время;
3. качество;
4. объем работ.
Принципы ХР относительно этих переменных:
затраты - чем больше денег, тем легче работать, однако слишком большое количество денег в начале проекта создает больше проблем, чем требуется решить;
время - с увеличением объема времени, выделяемого на проект, у вас появляется возможность повысить качество разрабатываемой программы и расширить объем работ, однако отзывы о системе, которая уже эксплуатируется в реальных условиях гораздо ценнее, чем любые другие отзывы;
качество - это переменная, которая контролируется хуже всего;
объем работ - сократив объем работ можно повысить качество и сократить время проекта.
Затраты являются наиболее ограничивающей переменной. Вы не можете напрямую менять деньги на качество, объем работ или скорость, с которой выпускаются промежуточные версии системы. В начале проекта вообще не существует возможности потратить слишком много денег. В начале работ инвестирование надо выполнять понемногу, а стечением времени увеличивать объемы вложений.
Ограничения, связанные со временем реализации проекта, как правило, появляются извне. Зачастую время не контролируется со стороны менеджеров проекта, его контролируют заказчики.
Настаивая на улучшении качества, вы можете завершить проект быстрее, чем запланировано. Или можете сделать больший объем работ за отведенное время. Существует зависимость между внутренним и внешним качеством. Измерением внешнего качества занимается заказчик, внутреннее качество оценивается программистами. Если вы намерены временно пожертвовать внутренним качеством для того, чтобы сократить время разработки, и при этом надеетесь на то, что внешнее качество не пострадает слишком сильно, то имейте в виду, что вы стремитесь к краткосрочной цели. Со временем количество внутренних проблем может увеличиться настолько, что разрабатываемую систему будет чрезвычайно сложно сопровождать и развивать. Кроме того, с качеством связан дополнительный человеческий фактор. Каждый хочет делать свою работу хорошо, и каждый работает существенно лучше, если он чувствует, что делает свою работу хорошо.
Одно из общепринятых фундаментальных правил, определяющих традиционную стратегию разработки ПО утверждает, что по мере работы на проектом стоимость внесения изменений в разрабатываемый программный продукт увеличивается экспоненциально (см. рис. 6.11-а).
Раньше (а)
Размещено на http://www.allbest.ru/
Сейчас (б)
Размещено на http://www.allbest.ru/
Рис. 6.11. Стоимость внесения изменений в разрабатываемый программный продукт по мере разработки.
В течение последних нескольких десятилетий сообщество людей, работающих в области разработки ПО, приложило огромные усилия для того, чтобы снизить стоимость внесения изменений: более совершенные языки программирования, улучшенные среды и инструменты разработки, более совершенные технологии баз данных (рис. 6.11-б).
Одно из основных предположений ХР: если стоимость внесения изменений растет медленно, вы можете откладывать решение важных задач на более поздние сроки. У вас есть возможность принимать важные решения настолько поздно, насколько это возможно. Это делается для того, чтобы уменьшить риск связанных с этим решением затрат и повысить вероятность того, что принятое вами решение является правильным. Другими словами, сегодня вы должны реализовать лишь то, без чего сегодня не обойтись, при этом вы можете рассчитывать на то, что проблемы, решение которых вы отложили до завтра перестанут быть актуальными.
Чтобы упростить модификацию программного кода даже спустя несколько лет после начала работы над проектом, необходимо учитывать следующие факторы:
· простой дизайн, в котором отсутствуют лишние элементы: никаких идей, которые в настоящий момент не используются, но предположительно, могут использоваться в будущем;
· автоматические тесты, благодаря которым можно узнать, что после внесения изменений в систему ее поведение изменилось;
· постоянная практика в деле модификации дизайна, поэтому когда приходит время внесения изменений в систему, вы не чувствуете страха перед этим.
В итоге разрабатывается подход к разработке ПО: каждое решение принимается быстро. Оно защищается с применением автоматических тестов. Команда готова менять дизайн системы в том случае, если понимает, что существует более удачный дизайн, чем тот, что реализован в настоящий момент.
Четыре ценности ХР
1. Коммуникации
2. Простота
3. Обратная связь
4. Храбрость
Коммуникация: проблемы, возникающие в процессе работы над проектом, почти всегда связаны с тем, что кто-то не сказал кому-то о чем-то важном. В рамках ХР существует специальное ответственное лицо - инструктор, который следит за тем, чтобы люди общались, когда это нужно.
Простота - это далеко не так просто. Программист боится, что завтра ему придется тратить массу усилий для исправления ошибок, которые он делает сегодня, поэтому зачастую он делает код более сложным. Подход ХР: лучше сделать простую вещь сегодня и затратить чуть больше завтра, для того, чтобы модифицировать ее, если в этом возникнет необходимость, чем разработать более сложный код сегодня, а потом узнать, что этот код никому не нужен.
Чем больше вы общаетесь, тем яснее становится понимание, что должно быть сделано, а чего делать не надо. Чем проще система, тем меньше тем для обсуждения, особенно если вы упрощаете систему до того, что для работы над ней требуется меньше программистов.
Обратная связь: тезис инструктора ХР «Не спрашивай у меня, спроси у системы» (т.е. напиши тестовый случай). Обратная связь обеспечивает точные и конкретные данные о состоянии системы. Оптимизм - это болезнь программирования, обратная связь - лекарство от этой болезни. Эксплуатация системы в реальных производственных условиях начинается как только система становится способной решать хотя бы небольшую часть возложенных на нее обязанностей. Необходимо поддерживать эксплуатацию системы в реальных условиях и одновременно развивать ее, разрабатывая новую функциональность.
Это обратная связь в масштабе недель и месяцев. Обратная связь в масштабе минут и дней обеспечивается написанием тестов.
Храбрость: в контексте первых трех ценностей необходимо действовать с максимально возможной скоростью. Для этого нужна храбрость. И прежде всего для отказа от ранее разработанного кода.
Базовые принципы ХР
Помогают нам выбирать между несколькими альтернативами. Основные принципы:
1. быстрая обратная связь;
2. приемлемая простота;
3. постепенное изменение;
4. приемлемое изменение;
5. качественная работа.
Быстрая обратная связь - время между воздействием и ответной реакцией имеет огромное значение, поэтому сведения о состоянии системы должны быть с максимальной быстротой переданы тем, кто в них заинтересован. Т.е. в рамках ХР необходимо обеспечить быстрое получение этих сведений, быструю их интерпретацию и быстрое внесение в систему модификаций на основе анализа этих сведений.
Приемлемая простота - необходимо решать каждую проблему так, как если бы ее можно было решить самым примитивно простым способом. Это противоречит основным установкам классического программирования, которые предполагают, что проектирование кода должно вестись с расчетом на его дальнейшее повторное использование. В рамках ХР программист должен думать только о решении сегодняшних проблем и он уверен в том, что завтра в случае необходимости имеющийся код можно с легкостью усовершенствовать так, как этого требует складывающаяся ситуация.
Постепенное изменение - объемные изменения, в рамках которых за один раз меняется абсолютно все не срабатывают, поэтому любая проблема решается при помощи серии небольших изменений, в результате которых достигается желаемый эффект.
Приемлемое изменение - лучшей стратегией является та, которая решает актуальную для вас проблему и при этом сохраняет для вас максимальную свободу дальнейших действий.
Качественная работа - никто не любит плохо работать. Каждый хочет выполнять свою работу на «отлично». Но качество не является свободно изменяемой переменной. Как говорит К. Бек, для качества есть только две оценки «превосходно» и «невероятно превосходно» и выбор в пользу первой может быть сделан только в том случае, если на карту поставлены человеческие жизни. Иначе члены коллектива теряют мотивацию, работа им не нравится, они начинают выполнять ее плохо и проект постепенно скатывается в категорию провальных.
Основные методики ХР
Игра в планирование (planning game)-- быстро определяет перечень задач (объем работ), которые необходимо реализовать в следующей версии продукта. Для этого рассматриваются бизнес-приоритеты и технические оценки. Если со временем план перестает соответствовать действительности, происходит обновление плана.
Небольшие версии (small releases) -- самая первая упрощенная версия системы быстро вводится в эксплуатацию, после этого через относительно короткие промежутки времени происходит выпуск версии за версией.
Метафора (metaphor) -- эта простая общедоступная и общеизвестная история, которая коротко описывает, как работает вся система. Эта история управляет всем процессом разработки.
Простой дизайн (simple design) -- в каждый момент времени система должна быть спроектирована так просто, как это возможно. Чрезмерная сложность устраняется, как только ее обнаруживают.
Тестирование (testing) -- программисты постоянно пишут тесты для модулей. Для того чтобы разработка продолжалась, все тесты должны срабатывать. Заказчики пишут тесты, которые демонстрируют работоспособность и завершенность той или иной возможности системы.
Переработка (refactoring) -- программисты реструктурируют систему, не изменяя при этом ее поведения. При этом они устраняют дублирование кода, улучшают коммуникацию, упрощают код и повышают его гибкость.
Программирование парами (pair programming) -- весь разрабатываемый код пишется двумя программистами на одном компьютере.
Коллективное владение (collective ownership) -- в любой момент времени любой член команды может изменить любой код в любом месте системы.
Непрерывная интеграция (continuous integration) -- система интегрируется и собирается множество раз в день. Это происходит каждый раз, когда завершается решение очередной задачи.
40-часовая_неделя (40-hour week) -- программисты работают не более 40 часов в неделю. Это правило. Никогда нельзя работать сверхурочно две недели подряд.
Заказчик па месте разработки (on-site customer) -- в состав команды входит реальный живой пользователь системы. Он доступен в течение всего рабочего дня и способен отвечать на вопросы о системе.
Стандарты кодирования (coding standards) -- программисты пишут весь код в соответствии с правилами, которые обеспечивают коммуникацию при помощи кода
Методология экстремального программирования является характерным примером сочетания итеративного наращивания возможностей с прототипированием. И как всякая другая модель жизненного цикла, основанная на этих принципах, она имеет свои ограничения на область применения, о которых следует помнить, принимая решение в пользу выбора методологии ХР для использования в конкретном проекте.
Литература
1. Аалдерс Роб. ИТ аутсорсинг. Практическое руководство. Альпина Бизнес Букс, 2004 г. 300 стр.
2. Агафонов В.Н. Спецификация программ: понятийные средства и их организация. -- Новосибирск: Наука, 2007. -- 240 с.
3.Агафонов В.А. Анализ стратегий и разработка комплексных программ.- М.: Наука, 2000.- 216с.
4. Аджиев В. Объектная ориентация: философия и футурология. Открытые системы, N 06 2006 г.
5. Аджиев В. MS: корпоративная культура разработки ПО. Открытые системы, N 01 2008 г.
6. Альпина Паблишер. Управление проектом по созданию интернет-сайта. Альпина Паблишер, 2001 г. 337 стр.
7. Андон Ф.И., Коваль Г.И., Коротун Т.М., Суслов В.Ю.; [Отв. ред. И.В. Сергиенко]. Основы инженерии качества программных систем / НАН Украины. Ин-т прогр. систем. -- К.: Изд. дом «Академпериодика», 2002. -- 502 с.: ил., табл.
8. Ансофф Игорь. Новая корпоративная стратегия. Серия: Теория и практика менеджмента. Издательство: Питер, 2009 г. 416 стр.
9. Армстронг М., Барон А. Performance Management. Управление эффективностью работы. Performance Management: The New Realities. Серия: Developing Practice. Издательство: Hippo, 2005 г.- 384 стр.
10. Арчибальд Р.Д. Управление высокотехнологичными программами и проектами / Пер. с анг. Мамонтова Е.В.; под ред. Баженова А.Д., Арсеньева О.А. ДМК Пресс; АйТи, 2004.- 463 с
11. Ауэр Кент, Миллер Рой. Экстремальное программирование: постановка процесса. С первых шагов и до победного конца Planning Extreme Programming. Серия: Библиотека программиста. Издательство: Питер, 2003 г. -- 368 стр.
12. Ахмед Х.З. Разработка корпоративных Java приложений с помощью J2EE и UML/ Пеp. с англ. А.В. Высоцкого.- М.: Вильямс, 2002.- 267 с.
Размещено на Allbest.ru
...Подобные документы
Реализация задачи использования методики SDLC (управление жизненным циклом разработки программного обеспечения) при внедрении реальной системы информационных технологий. Описание проекта внедрения системы автоматической регистрации участников выставок.
реферат [585,1 K], добавлен 10.09.2010Понятие технологии разработки программы. Основа проектирования программного обеспечения. Модели жизненного цикла, возникшие исторически в ходе развития теории проектирования программного обеспечения. Спиральная (spiral), каскадная и итерационная модели.
презентация [1,0 M], добавлен 11.05.2015Жизненный цикл программного обеспечения - непрерывный процесс, который начинается с принятия решения о необходимости создания ПО и заканчивается при полном изъятия его из эксплуатации. Подход к определению жизненного цикла ПО Райли, по Леману и по Боэму.
реферат [39,1 K], добавлен 11.01.2009Схемы взаимодействия между заказчиком и разработчиком программного обеспечения. Качество программного обеспечения и определение основных критериев его оценка на современном этапе, особенности управления на стадиях жизненного цикла, анализ достаточности.
презентация [114,7 K], добавлен 14.08.2013Основные международные стандарты в области информационных технологий. Международный стандарт ISO/IEC 9126. Качество и жизненный цикл. Характеристика внутренних и внешних атрибутов качества. Анализ функциональных возможностей программного обеспечения.
доклад [94,4 K], добавлен 13.06.2017Общая характеристика основных моделей жизненного цикла: каскадная, инкрементная, спиральная. Стадия как часть процесса создания программного обеспечения, ограниченная определенными временными рамками и заканчивающаяся выпуском конкретного продукта.
презентация [159,1 K], добавлен 27.12.2013Требования к технологии проектирования программного обеспечения (ПО). Состав и описание стадий полного жизненного цикла ПО. Классификация моделей жизненного цикла ПО, их особенности. Методологии разработки ПО, приёмы экстремальный программирование.
презентация [874,4 K], добавлен 19.09.2016Базовые основы разработки программного обеспечения: его классический жизненный цикл, макетирование, стратегии конструирования, модели качества процессов разработки. Применение параллельных алгоритмов и CASE-системы, критерии оценки их эффективности.
курсовая работа [179,5 K], добавлен 07.04.2015Цели и задачи программной инженерии. Понятие программного обеспечения. Шесть принципов эффективного использования программного обеспечения. Виды программного обеспечения: общесистемное, сетевое и прикладное. Принципы построения программного обеспечения.
курсовая работа [30,4 K], добавлен 29.06.2010Понятие программного обеспечения, вопросы его разработки и использования. Общая характеристика системного программного обеспечения и работа операционной системы. Специфика процесса управления разработкой программного обеспечения и его особенности.
курсовая работа [636,2 K], добавлен 23.08.2011Современные инструменты разработки программного обеспечения для СУТП. Универсальные языки программирования и сравнение их со SCADA-системами. Разработка программного обеспечения с использованием многоканальных измерительных преобразователей Ш9327.
дипломная работа [2,3 M], добавлен 13.07.2011Процессы Oracle CDM. Стадии и этапы выполнения работ по созданию автоматизированной системы (АС). Основные модели жизненного цикла ПО. Требования к содержанию документов. Основная проблема спирального цикла. Работы, выполняемые при разработке проекта.
презентация [194,1 K], добавлен 14.10.2013Информатизация России. Рынок программных средств. Основные задачи стандартизации, сертификации и лицензирования в сфере информатизации. Совокупность инженерных методов и средств создания программного обеспечения. Жизненный цикл программного обеспечения.
лекция [352,8 K], добавлен 09.03.2009Жизненный цикл программного обеспечения. Основные этапы разработки информационной системы (ИС), методики ее внедрения. Модели жизненного цикла ИС, традиционные и альтернативные модели ее создания. Разработка стратегии автоматизации. Проекты создания ИС.
презентация [105,5 K], добавлен 27.04.2013Изучение основных видов угроз программного обеспечения. Выявление наиболее эффективных средств и методов защиты программного обеспечения. Анализ их достоинств и недостатков. Описания особенностей лицензирования и патентования программного обеспечения.
курсовая работа [67,9 K], добавлен 29.05.2013Возможности среды программирования delphi при разработке приложения с визуальным интерфейсом. Отладка программных модулей с использованием специализированных программных средств. Тестирование программного обеспечения. Оптимизация программного кода.
курсовая работа [974,0 K], добавлен 21.12.2016Оценка финансовой, стратегической ценности и уровня рисков проекта. Классификация проектов: "свой" заказчик, продукт под заказ, тиражируемый продукт, аутсорсинг. Организация процесса разработки программного обеспечения, методологии его проектирования.
презентация [82,8 K], добавлен 07.12.2013Возможности среды программирования delphi при разработке приложения с визуальным интерфейсом. Разработка спецификации программного обеспечения и на ее основе кода программного продукта. Отладка программы "трассировкой", ее тестирование и оптимизация.
курсовая работа [501,4 K], добавлен 07.12.2016Использование моделирования в программной инженерии в процессе разработки программного обеспечения. Основные этапы процесса разработки программного обеспечения, их характеристика. Моделирование процессов, их определение фазами и видами деятельности.
реферат [2,2 M], добавлен 25.12.2017Проблема надежности программного обеспечения, ее показатели и факторы обеспечения. Методы контроля процесса разработки программ и документации, предупреждение ошибок. Этапы процесса отладки ПО, приемы структурного программирования и принцип модульности.
презентация [379,5 K], добавлен 30.04.2014