Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lecture13.doc
Скачиваний:
3
Добавлен:
27.11.2019
Размер:
91.14 Кб
Скачать

Резюме по курсу

Основной вопрос программной инженерии – как проектировать и строить программные системы, являющиеся надежным, документированным и сопровождаемым продуктом, укладываясь при этом в бюджет и сроки.

Различают три вида промышленного производства: индивидуальное (А), сборочное (B) и обрабатывающее (C) – в порядке возрастания производительности, качества продуктов, возможностей автоматизации и мобильности (гибкости). (Например, A - космическое приборостроение, B – автомобилестроение, С – нефтехимия.

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

Переходу к сборочному производству способствуют принципы современного промышленного производства ПП:

  • Модульность - от библиотек подпрограмм через библиотеки классов до компонентов, загружаемых по Сети

  • Стандартизация:

  • компонентов – для их повторной используемости

  • интерфейсов – для сопрягаемости ПП

  • языков реализации (C++, Java, VB) – для совместимости и переносимости ПП

  • языков проектирования (UML) – для унификации языка передачи знания (языка графического – для визуализации абстракций)

  • Разделение труда / специализация разработчиков: модели команд

  • Автоматизация: CASE для всего жизненного цикла ПП

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

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

Вопросы для обсуждения и контроля

  1. Что должна делать система, если в схеме дублирования (рис. 13-1,а) возник сигнал ошибки ?

  2. Предложите схему четырехкратного модульного резервирования.

  3. Группа N битов дополняется битом четности. Сколько он позволяет обнаружить искаженных битов и сколько – восстановить потерянных битов ? Тот же вопрос – о контрольной сумме группы битов.

  4. Каковы должны быть модули программного резервирования ? – копии одной и той же программы ? Если нет, то что ?

  5. К какому виду резервирования относится резервное копирование (back-up copying) – популярное средство в редакторах и других программах обработки данных ?

  6. Какой из четырех видов резервирования пригоден для противостояния сбоям, но бесполезен при устойчивых отказах ?

  7. В протоколах TCP/IP реализовано циклическое кодирование блоков передаваемых данных с переспросом непринятых или сильно искаженных блоков. Каким видам резервирования это соответствует ?

  8. Какие отказы дисков являются невосстанавливаемыми (fatal) при каждой из четырех описанных схем RAID ?

  9. Почему сделано такое исключение для личных файлов ?

7

Соседние файлы в предмете Информатика