Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВМИП. Уманский.docx
Скачиваний:
11
Добавлен:
21.11.2019
Размер:
41.58 Кб
Скачать

1. Проблемы разработки сложных программных систем

Факторы, увеличивающие сложность разработки:

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

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

- коллективная разработка. Как правило, из-за больших объемов проектов разработка ПО ведется коллективом специалистов. Целостность проекта обеспечивается за счёт взаимодействия специалистов, что при отсутствии удовлетворительных средств описания поведения сложных систем (см пункт 2) является весьма проблематичным. Чем больше коллектив разработчиков, тем сложнее организовать взаимодействие

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

2. Блочно-иерархический подход к созданию сложных систем

При разработке программы используют связи нескольких типов:

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

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

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

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

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

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

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

Лекция 3

Основные принципы блочно-иерархического подхода:

- непротиворечивость - контроль согласованности элементов между собой

- полнота - контроль на присутствие лишних элементов

- формализация - строгость методического подхода, точность математических моделей

- повторяемость - необходимость выделения уже существующих и разработанных блоков для удешевления и ускорения разработки

- локальная оптимизация - оптимизация в пределах одного уровня ( локализация данных, определение области видимости переменной, установление типов данных и другое)

- уровень проектирования - совокупность моделей, постановок задач, методов описаний некоторого уровня решаемых задач

Аспект проектирования предполагает различные взгляды на один и тот же лбъект с точки зрения различных критериев оценки

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

При структурном подходе БИП позволяет использовать отношение иерархии только целая часть, а объектный подход дополнительно "простое-сложное"

Жизненный цикл и этапы разработки ПО

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

В соответствии со стандартом структура процессов жизненного цикла включает три основные группы:

1. Основные процессы:

- приобретение

- поставка

- разработка

- эксплуатация

- сопровождение