Автор работы: Пользователь скрыл имя, 09 Декабря 2012 в 10:21, курс лекций
Временем появления на Земле вида «человек разумный» вполне можно считать тот момент, когда представители этого вида стали собирать, осмысливать, обрабатывать, хранить и передавать разнообразную информацию. Таким образом, человечество (социум) постоянно имеет дело с информацией.
Строгого научного определения понятия «информация» нет. Существует более 300 толкований этого термина.
Миф: Для успешности проекта достаточно поставить работающую программу.
Реальность: Работающая программа является только одной из частей конфигурации программного средства, которая включает в себя программы, документы и данные. Документирование формирует основу для успешной разработки и, что более важно, обеспечивает руководство для задачи сопровождения программного средства.
Многие профессионалы
Процессы программного обеспечения находятся в фокусе внимания уже более десяти лет. Но что это такое - процессы программного обеспечения? Они, в определённом смысле, - основа для задач, решение которых необходимо для построения высококачественного программного средства. Процессы программного обеспечения определяют подход, который принимается, когда создаётся программное средство, но технология программирования, кроме того, охватывает технологии, которые заполняют эти процессы: технические методы и автоматические средства.
Кроме того, что быть может более важно, технология программирования осуществляется творческими, знающими людьми, которые должны работать в рамках определённых и зрелых процессов программного обеспечения. Цель этой лекции - дать общее представление о процессах программного обеспечения.
Согласно американскому
Технология программирования - это:
Технология программирования - это послойная технология (см. рис. 14.1). Любой инженерный подход, включая технологию программирования, обязан опираться на обязательства организации относительно качества. Общее управление качеством и подобные философии благоприятствуют непрерывной культуре улучшения процессов, которая в конце концов ведет к разработке все более зрелых подходов к технологии программирования. Основной принцип, который поддерживает технологию программирования, это фокусирование внимания на качестве.
Основание для технологии программирования - это слой процессов. Согласно международному стандарту ISO 12207, в общем случае, «процесс - множество взаимосвязанных видов деятельности, которые преобразуют входные данные в выходные» Естественно, это относится и к процессу технологии программирования.
Рис. 14.1. Слои технологии программирования
Во всей совокупности процессов принято выделять множество областей ключевых процессов. Ключевые или основные области процессов являются наиболее важными для разработки высококачественных программных продуктов. Они представляют базис для управления менеджерами программных проектов и устанавливают контекст, в котором применяются технические методы, производятся рабочие продукты (модели, документы, данные, отчёты, формы), устанавливаются этапы, обеспечивается качество, и надлежащим образом управляются изменения.
Методы технологии программирования обеспечивают техническое «как сделать» для построения программного средства. Методы охватывают широкое множество задач, которые включают анализ требований, проектирование, конструирование программ, испытания и сопровождение. Методы технологии программирования полагаются на множество базовых принципов, которые управляют каждой областью технологии и включают деятельности по моделированию и другие наглядные приёмы.
Средства технологии программирования обеспечивают автоматическую или полуавтоматическую поддержку процессов и методов. Когда средства объединены так, что информация, создаваемая одним из них, может быть использована другим, то говорят, что образована так называемая автоматизированная или поддерживаемая ЭВМ технология программирования (computer-aided software engineering - CASE). CASE объединяет программы, аппаратуру и базу данных технологии (архив, содержащий важную информацию об анализе, проектировании, конструировании программ и испытаниях) для создания среды технологии, которая является аналогом CAD/CAE (computer-aided design/engineering) для аппаратуры.
Инженерное дело - это анализ, проектирование, конструирование, верификация и менеджмент технических (или социальных) сущностей (объектов и процессов). Независимо от того, какая сущность должна быть создана, необходимо получить ответы на следующие вопросы:
Чтобы создать программное
Работа, связанная с технологией программирования, может быть рассмотрена как состоящая из трёх общих фаз, независимо от области приложения, размера проекта и сложности. Каждая из фаз рассматривает один или несколько из вышеприведённых вопросов.
Фаза определения фокусирует внимание на том, что может быть передано словом какой. В это время разработчик программного средства пытается установить, какая информация должна обрабатываться, какие функции и характеристики являются желательными, какое поведение системы ожидается, какими будут интерфейсы, какие существуют ограничения, и какие критерии подтверждения необходимы для определения успешности системы. При этом определяются ключевые требования к системе и её программному обеспечению. И хотя методы, применяемые в фазе определения, могут варьироваться в зависимости от применяемой парадигмы (или комбинации парадигм) технологии программирования, всегда будут присутствовать три основные задачи, представляемые в различных формах: системная и информационная инженерия, планирование программного проекта и анализ требований.
Фаза разработки фокусирует свое внимание на вопросе как. Здесь инженер программного обеспечения пытается определить, как должны быть структурированы данные, как должны быть реализованы функции в рамках архитектуры программы, как должны быть реализованы процедурные детали, как должны быть представлены интерфейсы, как проект будет переводиться на язык программирования (или непроцедурный язык), как будут осуществлены испытания. Методы, применяемые в фазе разработки, будут меняться, но всегда должны решаться следующие три технические задачи: проектирование программного средства, генерация кода и испытания программного средства.
Фаза сопровождения фокусирует свое внимание на изменениях, которые связаны с исправлениями ошибок, адаптациями, необходимыми, когда развивается среда программного средства, и изменениях ввиду модернизации программного средства из-за изменения требований заказчика. Фаза сопровождения заново применяет шаги определения и разработки, но делает это в контексте существующего программного средства. Встречается четыре типа изменений в фазе сопровождения:
Фазы и связанные с ними шаги, описанные в общем взгляде на технологию программирования, дополняются рядом охватывающих видов деятельности. Типичными из них являются:
Охватывающие виды деятельности применяются во всех процессах программного обеспечения.
Процессы программного обеспечения могут быть представлены так, как это показано на рис. 14. 2. Общая схема процессов устанавливается определением небольшого числа видов деятельности схемы, которые применимы ко всем проектам программного обеспечения, независимо от их размера или сложности. Ряд множеств задач - каждое из которых является набором инженерных рабочих задач, этапов проекта, программных рабочих продуктов и других компонентов поставки и вопросов обеспечения качества - даёт возможность видам деятельности схемы приспосабливаться к характеристикам программного проекта и требованиям команды проекта. И наконец, охватывающие активности - такие как обеспечение качества, управление конфигурацией программного средства и менеджмент - накладываются на модель процессов.
Рис. 14.2. Процессы программного обеспечения.
Для решения реальных задач в промышленной окружающей обстановке инженер программного обеспечения или бригада инженеров обязана объединить стратегию разработки, охватывающую слои процессов, методов и средств, На эту стратегию часто ссылаются как на модель процессов или парадигму технологии программирования Модель процессов для технологии программирования выбирается в зависимости от природы проекта и приложения, используемых методов и средств и необходимых управлении и поставок.
Все разработки программного обеспечения могут характеризоваться как циклы решения задач (рис. 14.З), в которых насчитывается четыре различных стадии:
Общие фазы технологии программирования легко проецируются на эти стадии.
Цикл решения задач, описанный выше, применим к работе технологии программирования на многих различных уровнях разрешения. Он может быть использован на макро уровне, когда рассматривается полное приложение; на среднем уровне, когда создаются компоненты программы: и даже на уровне строки кода. Тем самым рекурсивное представление может использоваться для обеспечения идеализированного взгляда на процесс.
Рис. 14.З. Фазы цикла решения задач.
На рис.14.4 каждая стадия в цикле решения задач содержит идентичные циклы решения задач. Каждый из них содержит ещё другой цикл решения задач (это продолжается до некоторой разумной границы, для программ, до уровня строк кода).
В реальности, трудно разделить деятельности так стройно, как это сделано на рис.14.4, поскольку возникают пересечения внутри и вне стадий. Кроме того, это упрощённое видение ведёт к очень важной мысли: независимо от выбранной для программного проекта модели, все эти стадии: текущее состояние, определение проблемы, техническая разработка и объединение решений, сосуществуют одновременно на некотором уровне детализации. Имея рекурсивную природу, четыре стадии, обсуждавшиеся выше одинаково применимы для анализа завершённого приложения и к генерации небольшого сегмента кода.
Рис. 14.4. Фазы внутри фаз цикла решения задач
Рис. 14.5 иллюстрирует линейную последовательную модель технологии программирования. Иногда называемая «классическим жизненным циклом» и «каскадной моделью», эта линейная последовательная модель предлагает систематический, последовательный подход к разработке программного обеспечения, которая начинается на системном уровне и проходит через анализ, проектирование, кодирование, испытания и сопровождение. Хотя первоначальная каскадная модель, предложенная Winston Royce (1970), обеспечивала циклы с обратными связями, громадное большинство организаций, которые применяют эту модель процессов, рассматривают ее как являющуюся строго линейной. Моделируемая после традиционного инженерного цикла эта линейная последовательная модель охватывает следующие виды деятельности.
Рис. 14.5. Линейная последовательная модель
Системная/информационная инженерия и моделирование. Поскольку программное обеспечение всегда является частью большей системы (или бизнеса), работа начинается с установления требований ко всем элементам системы, а затем назначения подмножества этих требований программному обеспечению. Эта системная точка зрения является существенной, когда программное обеспечение обязано взаимодействовать с другими элементами системы, такими как люди, оборудование и базы данных. Системная инженерия и анализ охватывают требования, собираемые на системном уровне в небольшой долей высокоуровневого анализа и проектирования. Информационная инженерия охватывает требования, собираемые на уровне стратегического бизнеса и на уровне областей бизнеса.
Анализ требований к программному обеспечению. Процесс сбора требований усиливается и сосредотачивается на программном обеспечении. Чтобы понять природу программы, которая должна быть разработана, программный инженер («аналитик») обязан понимать информационную область программного средства, а также необходимые функции, поведение, характеристики и взаимодействие с внешним миром. Требования как для системы, так и для её программного обеспечения документируются и затем проходят экспертизу у заказчика.