Безусловно, совершенствование процессов жизненного цикла программного обеспечения абсолютно необходимо. Однако следует иметь в виду, что построение «более зрелого» процесса разработки не обязательно обеспечивает создание более качественного программного обеспечения. Это хотя и связанные, но совершенно различные процессы.

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


Контрольные вопросы

1. Дайте понятие программной инженерии.

2. Назовите дату зарождения программной инженерии как отдельной науки.

3. В чем отличие программной инженерии от информатики?

4. В чем отличие программной инженерии от системотехники?

5. Приведите примеры дисциплин информатики и программной инженерии (дисциплины не путать с учебными предметами).

6. Раскройте понятие «программное обеспечение».

7. Перечислите характеристики ПО по Бруксу и кратко охарактеризуйте каждую.

8. C какими иными видами человеческой деятельности соотносится создание ПО в данной главе?

9. Что понимают под термином «технология программирования»?

10. Что называют подходом и чем он отличается от метода?

11. Назовите основные периоды истории развития технологии программирования. Чем характеризуются эти периоды? Как изменялись основные подходы и используемые средства?

12. Дайте определение понятия «сложная иерархическая система». Какой подход используют при разработке таких систем? На каких характеристиках этих систем он основан? В чем особенность данного подхода при разработке программного обеспечения?

13. Что понимают под термином «жизненный цикл программного обеспечения»? Какие основные процессы включают в это понятие?

14. Назовите основные этапы разработки программного обеспечения. Какие основные задачи решаются на этих этапах?

15. Назовите основные модели жизненного цикла программного обеспечения. С чем связано появление новых моделей?

16. Какие технологии называют CASE-технологиями? Почему?

17. Назовите основные составляющие любой CASE-технологии.

18. Перечислите основные положения технологии RAD. Какие программные системы нельзя разрабатывать с использованием этой технологии?

19. Что понимают под моделями качества процессов разработки программного обеспечения? Для чего они разработаны? Что гарантирует сертификация качества процессов? Почему?

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


Задания

1. С помощью карт памяти максимально полно ответьте на вопрос: что такое программная инженерия (учитывая все измерения этого термина, мелкие и крупные детали)?

2. С помощью карт памяти нарисуйте взаимосвязи характеристик ПО по Бруксу, пользуясь надписями на дугах.

2. Процесс разработки программного обеспечения

Понятие процесса разработки ПО. Универсальный процесс. Текущий процесс. Конкретный процесс. Стандартный процесс. Совершенствование процесса. Pull/Push-стратегии. Фазы и виды деятельности. Классические модели процесса: водопадная модель, спиральная модель. Рабочий продукт. Дисциплина обязательств. Понятие проекта. Управление проектами.