Лекции по "Информатике"

Автор работы: Пользователь скрыл имя, 09 Декабря 2012 в 10:21, курс лекций

Описание работы

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

Файлы: 1 файл

Лекции по Информатике.doc

— 2.85 Мб (Скачать файл)

Миф: Для успешности проекта достаточно поставить работающую программу.

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

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

Лекция 14: Основные понятия технологии программирования

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

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

Согласно американскому стандарту ANSI/IEEE 610.12-1990:

Технология программирования - это:

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

Технология программирования - это  послойная технология (см. рис. 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. Линейная последовательная модель

 

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

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

Информация о работе Лекции по "Информатике"