Особенности функционирования сложной системы
Введение По данным американских исследователей, в 80-е только 14% проектов по созданию ПО завершались успешно. Но и сегодня - после нескольких десятилетий эволюции языков программирования, инструментальных средств разработки, при практически неограниченном (по сравнению с 70-ми и 80-ми) машинном времени - процент успешно завершенных проектов составляет всего 26%. В СССР достижения в области производства ПО были значительно лучшими. Тому способствовали следующие объективные предпосылки: плановая организация производства оптимально сочеталась с каскадной моделью разработки ПО;
Существуют различные определения технологии разработки программного обеспечения. К наиболее распространенным относятся следующие. Технология разработки программного обеспечения (ТРПО) – это совокупность процессов и методов создания программного продукта. Технология разработки программного обеспечения – это система инженерных принципов для создания экономичного ПО, которое надежно и эффективно работает в реальных компьютерах. Данное определение имеет частный характер, поскольку учитывает только две из шести характеристик качества ПО – надежность и эффективность. С учетом этого можно сформулировать более общее определение. Технология разработки программного обеспечения – это система инженерных принципов для создания экономичного ПО с заданными характеристиками качества.
Любая технология разработки ПО базируется на некоторой методологии. Сам русский термин «технология программирования» был введен русским академиком Андреем Петровичем Ершовым. Он трактовал термин «программирование» в обобщенном виде и подразумевал все виды деятельности, выполняемые в ходе создания программных систем. Сейчас обобщённый термин, применимый к созданию программных средств, обозначают как «разработка» или «конструирование». Справедлива формула: разработка = анализ + проектирование + программирование (кодирование) + тестирование + отладка Иногда сюда также включают “сопровождение”. Чтобы подчеркнуть промышленно-производственный аспект, говорят о “технологии разработки” или “технологии конструирования”.
1.1. Методы проектирования
Если приложения проектируются таким образом, что различные их части могут быть использованы многократно, то в конечном итоге это приводит к уменьшению стоимости разработки приложений. Однако, чтобы это было возможным, приложения должны быть модульными. Модульность приложения, собственно, и означает, что оно состоит из легко идентифицируемых и заменяемых частей. По этой причине при правильном проектировании программного продукта особое внимание должно уделяться модульности, особенно на стадии разработки архитектуры. К формальным методам проектирования относятся те методы, которые основаны на математике. Формальные методы помогают решить задачи обеспечения надежности программ. Они могут быть применены как при анализе требований для обеспечения точности формулировки требований, так и в процессе реализации для обеспечения соответствия кода программы сформулированным требованиям. Как правило формальные методы используют математику в ее логическом аспекте. В вычислительном же аспекте математика задействована в связи с использованием метрик.
Из методологий и технологий, получивших определенное признание на данный момент, можно назвать следующие: Datarun, CMM, Microsoft Solution Framework (MSF), Oracle Method, Rational Unified Process (RUP), SADT (IDEFx). Особое место в этом списке занимает технология компании Rational Software. В ее методологии применен наиболее современный процессноориентированный подход: так как разработка ПО является производством, то, как и на всяком производстве, при выявлении проблем в продукции (симптомов) необходимо корректировать процесс (устранять причины). Особенностью этой технологии является то, что в ее создании участвуют ведущие методисты в области разработки ПО, внесшие весомый вклад в теорию и практику разработки современного ПО. Кроме того, следует заметить, что эта технология развивалась и проходила проверку с участием военного ведомства США. Несмотря на появление новых тенденций, основные этапы разработки ПО остались неизменными: - Определение процесса разработки ПО; - -Управление проектом разработки; - Описание целевого программного продукта; - Проектирование продукта; - Разработка продукта; - Тестирование частей; - Интеграция частей и тестирование продукта в целом; -Сопровождение продукта. Система разработки ПО включает в себя 4 “П” (Персонал, процесс, проект, продукт) Персонал – те, кем это делается. Команда разработчиков наилучшим образом работает, если каждый участник знает, что он должен делать, и имеет определенные обязанности. Другая сторона аспекта персонала – это заинтересованные в проекте лица: заказчиками, пользователи и инвесторы. Процесс – способ, которым это делается. Выделяют: водопадный процесс, итеративный процесс,. Индивидуальный процесс разработки (Personal Software Process), командный процесс разработки (Team Software Process). Модель зрелости возможностей (Capability Maturity Model) для оценки возможностей команды разработчиков.
Проект – совокупность действий, необходимая для создания артефакта. Проект включает контакт с заказчиком, написание документации, проектирование, написание кода и тестирование продукта. Продукт – это не только программное обеспечение, но и все составляющие его артефакты. Под артефактами понимается объектные модули, исходный код, документация, результаты тестов и измерений продуктивности. Качество – приложения должны удовлетворять заранее определенному уровню качества. Для достижения требуемого уровня качества применяются следующие методы: - инспектирование (процесс проверки качества, ориентированный на команды разработчиков. Он применяется на всех этапах разработки); - формальные методы (доказательство правильности – математическое или логическое); -тестирование; - методы управления проектом Инструментарий технологии программирования – совокупность программ и программных комплексов, обеспечивающих технологию разработки, отладки и внедрения создаваемых программных продуктов. Средства для создания приложений – локальные средства, обеспечивающие выполнение отдельных видов работ по созданию программ, делятся на: -языки и системы программирования; - -инструментальная среда пользователя. Язык программирования – формализованный язык для описания алгоритма решения задачи на компьютере. Они делятся на классы: -машинные языки – языки программирования, воспринимаемые аппаратной частью компьютера (машинные коды); -машинно-ориентированные языки – языки программирования, которые отражают структуру конкретного типа компьютера (ассемблеры); -алгоритмические языки – не зависящие от архитектуры компьютера языки программирования для отражения структуры алгоритма (Паскаль, бейсик, Фортран и др.); - процедурно–ориентированные языки – языки программирования, где имеется возможность описания программы как совокупности процедур (подпрограмм). - проблемно–ориентированные языки – предназначены для решения задач определенного класса (Lisp);
Системы программирования включают: - компилятор (транслятор); - интегрированную среду разработки программ (не всегда); - -отладчик; - - средства оптимизации кода программ; - набор библиотек; - -редактор связей; - сервисные средства (утилиты) (для работы с библиотеками, текстовыми и двоичными файлами); - справочные системы; - систему поддержки и управления продуктами программного комплекса. 1.Сложная система. Признаки сложной системы. Наиболее существенными признаками сложной системы являются: 1 Наличие общей задачи 2 Большое количество взаимодействующих компонентов 3 Возможность декомпозиции системы, (т.е. ее разбиение на взаимодействующие подсистемы, решающие автономные функциональные задачи). 4 Иерархическая архитектура системы и иерархия критериев качества 5 Сложность поведения системы, связанная со случайным характером внешних воздействий и большим количеством обратных связей внутри нее. 6 Устойчивость системы по отношению к внешним воздействиям. Наличие самоорганизации и самоадаптации при различных возмущениях. 7 Высокая надежность системы в целом при абсолютной надежности ее компонентов. Особенности функционирования сложной системы 1 Работа в режиме реального времени является одним из наиболее сложных режимов функционирования ПО, поскольку от реального времени зависят не только моменты выполнения отдельных задач, но и получаемые результаты. В сложных системах реальное время является одним из наиболее сложных параметров. Его искажение может нарушить временную связь, что может привести к полному отказу системы. 2 Настраиваемость ПО. Один и т.ж. программный комплекс может быть использован для работы с несколькими разнотипными объектами, при этом он сам являясь объектом управления для системы более высокого уровня. Изменение характеристик или состава обрабатываемых объектов не вызывает фундаментальной переработки программы, поскольку возможность подобных изменений закладывается на этапе разработки. 3 Cтрогая последовательность решения задач не может быть заранее определена. из за большого количества функциональных задач, решаемых за небольшой промежуток времени из-за сложности связей внутри системы и возможности обмена информацией с большим количеством внешних абонентов(сообщения от абонентов могут поступать в произвольные моменты времени). 4 Надежность функционирования при искажениях информации, сбоях и частичных отказах аппаратуры. Для обеспечения необходимой степени надежности широко применяются различные методы контроля, параллельное решение задач, работа в многопроцессорном режиме и т. д.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|