Программная инженерия в жизненном цикле программных средств

Автор работы: Пользователь скрыл имя, 25 Октября 2012 в 00:26, лекция

Краткое описание

ПЛАН
Основы жизненного цикла программных средств
Роль системотехники в программной инженерии
Системные основы современных технологий программной инженерии
1. Основы жизненного цикла программных средств
Термином жизненный цикл (ЖЦ) принято отражать совокупность процессов и этапов развития организмов живой природы, технических систем, продуктов производства от моментов зарождения или появления потребности их создания и использования до прекращения функционирования или применения. Это соответствует всеобщему закону развития любых изделий, событий или процессов между их началом и концом, которые определяют цикл их создания, существования и применения. Программы для вычислительных машин обычно являются компонентами жизненного цикла технических систем, но по своей природе значительно отличаются от аппаратурных, технических изделий, поэтому их жизненный цикл имеет характерные особенности по сравнению с другими техническими объектами. Программы и данные в системах и вычислительных машинах являются наиболее гибкими компонентами программной инженерии и подвержены изменениям в течение всего их ЖЦ.

Содержимое работы - 1 файл

ЛЕКЦИЯ 1.doc

— 146.00 Кб (Скачать файл)

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

— необходимо обеспечивать эффективное использование ресурсов в ЖЦ системы и минимизировать интегральные затраты на обработку данных в типовых режимах ее функционирования с учетом эксплуатационных затрат и капитальных вложений в создание системы и программного продукта;

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

— для обеспечения перспективы  развития жизненного цикла системы и комплекса программ целесообразно предусматривать возможность интеграции гетерогенных вычислительных компонентов и возможность переноса ПС и БД на различные аппаратные и операционные платформы на основе концепции и стандартов открытых систем;

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

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

2. Роль системотехники  в программной инженерии

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

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

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

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

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

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

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

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

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

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

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

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

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

3. Системные  основы современных технологий программной инженерии

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

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

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

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

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

Информация о работе Программная инженерия в жизненном цикле программных средств