- •Составные части технологии программирования (тп). Отличие тп от методологии программирования и программной инженерии.
- •Технология быстрой разработки приложений (rad). Основные принципы и особенности.
- •Иерархия понятий в технологии программирования.
- •Определение понятия «предметная область». В чем заключается принцип концептуализации предметной области.
- •Особенности современных программных систем как объектов разработки. Проблемы разработки сложных программных систем.
- •Общие принципы разработки сложных программных систем. Признаки сложных программных систем.
- •Показатели качества программных систем.
- •Основные подходы к созданию сложных программных систем (структурный и объектный).
- •Структурный подход к разработке программных систем.
- •2) Объектный подход к разработке программных систем.
- •Основные этапы жц: Требования к по.
- •Основные этапы жц: Проектирование по.
- •Основные этапы жц: Конструирование по.
- •Основные этапы жц: Тестирование по.
- •Основные этапы жц: Сопровождение по.
- •1. Технические вопросы:
- •Жизненный цикл (жц) программных систем: определение, стандарты и проблемы.
- •Основные процессы жизненного цикла по.
- •Модель жизненного цикла по: Каскадная модель разработки по.
- •Модель жизненного цикла по: Спиральная модель разработки по.
- •Другие типы моделей жизненного цикла (V-образная, инкрементная, быстрого прототипирования).
- •Модели организации команд: Административная модель. Модель хаоса. Модель открытой архитектуры.
- •Модель проектной группы msf for Agile Software Development: Основные принципы построения команды.
- •Модель проектной группы msf. Ролевые группы и роли.
Общие принципы разработки сложных программных систем. Признаки сложных программных систем.
Разработка программного обеспечения имеет ряд специфических особенностей:
- Прежде всего, следует отметить некоторое противостояние: неформальный характер требований к ПС (постановка задачи) и понятия ошибки в нем, но формализованный основной объект разработки - программы ПС. Тем самым разработка ПС содержит определенные этапы формализации, а переход от неформального к формальному существенно неформален.
- Разработка ПС носит творческий характер (на каждом шаге приходится делать какой-либо выбор, принимать какое-либо решение), а не сводится к выполнению какой-либо последовательности регламентированных действий (хотя регламент в работе больших коллективов разработчиков необходимо соблюдать). Несмотря на то что ПС относятся к промышленным программным продуктам, процесс разработки ПС ближе к процессу проектирования каких-либо сложных устройств, но никак не к их массовому производству. Этот творческий характер разработки ПС сохраняется до самого ее конца.
- Программная система представляет собой некоторую совокупность текстов (т.е. статических объектов), смысл же (семантика) этих текстов выражается процессами обработки данных и действиями пользователей, запускающих эти процессы (т.е. является динамическим). Это предопределяет выбор разработчиком ряда специфичных приемов, методов и средств.
- Программная система при своей эксплуатации не расходуется и не расходует используемых ресурсов.
Признаки сложных программных систем:
1. «Сложные системы часто являются иерархическими и состоят из взаимозависимых подсистем, которые, в свою очередь, также могут быть разделены на подсистемы, и т.д., вплоть до самого низкого уровня».
2. «Выбор, какие компоненты в данной системе считаются элементарными, относительно произволен и в большой степени оставляется на усмотрение исследователя. Низший уровень для одного наблюдателя может оказаться достаточно высоким для другого».
3. «Внутрикомпонентная связь обычно сильнее, чем связь между компонентами. Это обстоятельство позволяет отделять «высокочастотные» взаимодействия внутри компонентов от «низкочастотной» динамики взаимодействия между компонентами».
4. «Иерархические системы обычно состоят из немногих типов подсистем, по-разному скомбинированных и организованных».
5. «Любая работающая сложная система является результатом развития работавшей более простой системы... Сложная система, спроектированная «с нуля», никогда не заработает. Следует начинать с работающей простой системы».
Показатели качества программных систем.
В общем случае под качеством (quality) программ понимается то, насколько они соответствуют установленным для них требованиям – спецификациям и насколько высоко установлена планка этих требований. Эти характеристики ПС влияют на ее способность удовлетворять заданные потребности пользователей.
Наиболее важные показатели качества и связанные с ними подходы к программированию:
Корректность (correctness). Программа должна правильно работать. (это свойство статическое и учитывает в первую очередь структуру программы).
Надежность (reliability) – это способность ПС выполнять возложенные на нее функции при поступлении требований на их выполнение( динамическое св-во).
Надежность ПО включает в себя такие составные свойства:
отказоустойчивость – возможность восстановления программы и данных в случае сбоев в работе;
безопасность – сбои в работе программы не должны приводить к опасным последствиям (авариям);
защищенность от случайных или преднамеренных внешних воздействий («защита от дурака», вирусов, спама т.п.).
Эффективность (efficiency) – это отношение уровня услуг, предоставляемых ПС пользователю при заданных условиях, к объему используемых ресурсов (по памяти, быстродействию, оборудованию).
Сопровождаемость (maintainability) и адаптируемость (adaptability) – это характеристики ПС, которые позволяют минимизировать усилия по внесению изменений при нахождении ошибок для их устранения (на этапе эксплуатации). Модификация ПО с целью адаптации для пользователя.
Тестируемость (testability) и корректируемость. Тестируемость – это свойство ПО, которое говорит о приспособленности его к проведению тестирования.
Отлаживаемость (debuggability) – это приспособленность ПО к локализации ошибки с целью последующего ее устранения.
Переносимость (portability) – это способность ПО работать на разных машинах (в том числе и на разных платформах).
Удобочитаемость (readability) и понятность программ.
Удобство использования (usability). ПС должна быть легкой в использовании, причем именно теми пользователями, на которых рассчитана.
Полезность (validity) – это способность ПО удовлетворять потребностям пользователя.
