- •Введение. Этапы развития трпо;
- •Основные понятия. Классификация программного обеспечения. Системное по. Пакеты прикладных программ. Среды разработки по;
- •Проблемы проектирования по. Оценка стоимости некачественного проектирования;
- •Требования к по. Особенности формирования;
- •Проблемы корректности требований к по;
- •Оценка качества разработки. Стандарты, критерии.
- •Сертификация по;
- •Жизненный цикл по. Модели жизненного цикла по;
- •Анализ требований к программным продуктам;
- •Архитектура программного обеспечения;
- •11. Структура и формат данных. Классификация;
- •12. Простые и статические структуры данных;
- •13. Полустатические и динамические структуры данных;
- •14. Модульное программирование. Методические основы;
- •15. Модульное программирование. Прочность и сцепление модулей;
- •16. Модульное программирование. Прочность и сцепление модулей;
- •17. Модульное программирование. Рутинность и связность модулей;
- •18. Методы разработки при модульном программировании. Классификация;
- •19. Восходящая модульная разработка. Архитектурный подход;
- •20. Нисходящая модульная разработка. Конструктивный подход;
- •21. Спецификации и требования при структурном подходе;
- •22. Схематическое представление алгоритмов. Блок схемы;
- •23. Схематическое представление алгоритмов. Псевдокоды и Flow – формы;
- •24. Диаграммы Насси-Шнейдермана. Словарь терминов;
- •25. Диаграммы переходов состояний;
- •26. Функциональные диаграммы;
- •27. Диаграммы потоков данных. Нотации Йордана и Гейна – Сарсона;
- •28. Диаграммы сущность – связь. Примеры er – диаграмм. Понятие сущности. Типы связей между сущностями;
- •29. Анализ требований и определение спецификаций при объектном подходе;
- •30. Унифицированный язык моделирования uml. Основные понятия;
- •31. Определение прецедентов при объектном подходе. Диаграммы вариантов использования;
- •32. Построение концептуальной модели при объектном подходе;
- •33. Объектный подход. Классы. Диаграммы классов;
- •34. Объектный подход.. Атрибуты и операции класса. Экземпляр класса;
- •35. Описание поведение системы. Диаграммы последовательностей;
- •36. Описание поведение системы. Диаграммы деятельности и состояний;
- •37. Технологии программирования. Концепции программирования;
- •38. Объектно – ориентированное программирование. Принципы;
- •39. Платформы java и net. Web - программирование;
- •40. Тестирование и отладка программного обеспечения. Уровни тестирования. Принципы разработки тестов. Автоматизация тестирования;
- •41. Тестирование и отладка программного обеспечения. Модульное тестирование;
- •42. Тестирование и отладка программного обеспечения. Интеграционное тестирование;
- •43. Технологии разработки. Выбор языка программирования;
- •44. Технологии разработки. Среды программирования;
- •45. Тестирование и отладка программного обеспечения. Системное тестирование;
- •46. Сопровождение программного обеспечения. Основные проблемы и пути решения.
37. Технологии программирования. Концепции программирования;
38. Объектно – ориентированное программирование. Принципы;
Рассмотрим сначала, как появилось объектно-ориентированное программирование. Ключевое понятие, помогающее при программировании, — это абстракция. Она позволяет лучше понять сущность программированного объекта или среду. Пусть нужно совершить поездку в Мурманск. Возникают вопросы: «Каким образом это сделать? какой транспорт использовать? сколько это будет стоить?» и т. д. Нужно выделить главное и отбросить лишнее. Тут главным будет вид транспорта. Эту абстракцию и проще всего назвать классом при программировании. У транспорта есть данные (скорость, количество двигателей и др.) и методы (взлет, посадка для самолета). Класс группирует данные и методы в единую сущность. Данные обычно закрыты, и их изменение, как правило, производится посредством методов, т. е. они защищены корректной работой методов. Первое использование классов как объектов произошло в 1967 г.: Бьерн Страуструп применил язык Simula в своей диссертации для программы, моделирующей компьютерные системы. Этот язык очень выразителен и позволяет работать с высоким уровнем абстракций. Однако при запуске программы оказалось, что у нее очень низкая производительность и выполнить работу в срок не удастся, поэтому пришлось переписать программу на языке Си. В Си классов нет. Страуструп их добавил, и появился язык C++ [40]
Несколько лет назад в журнале Byte появилась статья «Объектно-ориентированное программирование умерло?». В ней говорилось о том, что объекты не оправдали возложенные на них надежды. Достичь главной цели — повторного использования кода — с помощью объектов сложно, хотя сам процесс программирования они упростили. В этот же период Microsoft создает Visual Basic. Главным нововведением в нем является возможность вставки управляющих элементов (кнопок, полей ввода) на форму. К каждому элементу можно добавить кусок кода для описания его деятельности. Оказалось очень удобно, и вскоре были созданы тысячи новых элементов — появилось расширение VBX (Visual Basic Extention). Статья Byte описала управляющие элементы VBX как наиболее успешную реализацию мечты о повторном использовании кода. У многих поклонников ООП статья вызвала недовольство. Элементы VBX не являются объектно-ориентированными. В них нет даже концепции метода, нет наследования и полиморфизма. Тем не менее VBX может рассматриваться как пример программного компонента. Это часть бинарного кода, который может быть легко вставлен в различные приложения. VBX — это любопытная, но тупиковая ветвь эволюции технологии программирования. Однако она сыграла свою роль. Как же развивалась эволюция программирования? Первоначально существовали статические библиотеки. Такие библиотеки компоновались в выполняемый файл, т. е. каждая программа содержала код библиотеки. Их легко представить в виде перфокарт, которые вставляли программисты в свои программы в «далекие времена». Для того чтобы снизить затраты памяти, были созданы динамически компонуемые библиотеки DLL. При их применении несколькими приложениями в память загружалась только одна копия библиотеки, и все приложения использовали эту копию. Другое полезное свойство DLL — компоновка в процессе выполнения, т. е. новая версия DLL может быть использована без перестройки приложения. Если новая версия библиотеки совместима со старой, то код может оказаться эффективнее (если улучшены алгоритмы в библиотеки или исправлены ошибки), если нет, приложение может оказаться неработоспособным. Второй случай называется DLL HELL.