
- •Общие сведения
- •Средства разработки
- •Структура программы
- •Алфавит
- •Лексемы
- •1.2. Переменные. Типы данных
- •Простые типы данных
- •Структурированные типы данных
- •1.3. Константы
- •1.4. Операции Арифметические
- •Присваивание
- •1.5. Операторы ветвления и цикла
- •1.6. Функции Описание и вызов
- •Неявно заданные параметры функции
- •Рекурсия
- •Механизм вызова функций, подставляемые функции
- •Перегрузка функций. Параметры по умолчанию
- •1.7. Указатели. Массивы. Строки Обзор
- •Приведение типов
- •Типизированные и нетипизированные указатели
- •Операции над указателями
- •Массивы
- •Многомерные массивы
- •Указатели в качестве параметров функций
- •Указатель на функцию
- •Функции работы с указателями и памятью
- •Строки.
- •1.8. Организация ввода-вывода
- •Форматированный ввод-вывод
- •1.9. Директивы препроцессора
- •1.10. Метки. Безусловный переход
- •1.11. Время жизни и область видимости переменных
- •1. 12. Многофайловые проекты
- •1.13. Введение в объектно-ориентированное программирование
- •2.3. Проблемы разработки сложных программных систем
- •2.4. Жизненный цикл программного продукта
- •Модели жц.
- •Экстремальное программирование
- •2.5. Оценка качества процессов создания программного обеспечения
- •2.6. Проектирование надёжного программного средства
- •2.7. Процессы проектирования
- •2.8. Требования, цели
- •2.9. Внешнее проектирование
- •Диаграммы потоков данных (Data Flow Diagrams).
- •Диаграммы переходов состояний (State Transition Diagrams). Функциональные диаграммы.
- •Описание структур данных
- •2.10. Проектирование архитектуры
- •2.11. Проектирование модульной структуры. Модуль
- •Внешнее проектирование модулей
- •Модульная декомпозиция
- •2.12. Кодирование.
- •2.13. Тестирование
- •2.14. Документирование
- •2.15. Проектирование пользовательского интерфейса
- •Реализация многомерных массивов
- •Очередь и стек
- •Ассоциативные массивы
- •3.3. Упорядоченные структуры данных.
- •Сортировка методом пузырька
- •Быстрая сортировка
- •3.4. Деревья
- •Бинарное дерево
- •Обход дерева
- •3.5. Множества, графы Множества
- •3.6. Строки Константные строки
- •Списковое представление строк
- •Представление массива строк
- •3.7. Библиотека stl
- •3.8. Реализация некоторых структур данных Реализация двусвязанного списка.
- •Реализация массива переменного размера:
- •Примеры программ
- •Список литературы
2.9. Внешнее проектирование
Составляется детальное описание каждой функции пользователя:
- описание входных данных;
- описание выходных данных и их функциональной связи с входными;
- изменения системы под воздействием входных данных;
- характеристики надёжности;
- эффективность (по расходу памяти и по быстродействию);
- замечания по программированию.
Проверка:
- контроль «плюс-минус один» – эскизный проект контролируется исполнителями предыдущего и следующего этапов;
- контроль со стороны пользователя;
- таблицы решений;
- ручная/терминальная имитация – один человек по внешним спецификациям эмулирует поведение системы, другой человек выполняет роль пользователя.
Также при структурном подходе на этапе внешнего проектирования составляют следующие схемы.
Диаграммы потоков данных (Data Flow Diagrams).
Внешняя сущность – материальный объект или физическое лицо, выступающие в качестве источника или приёмника информации.
Процесс – преобразование входных потоков данных в выходные.
Хранилище данных – абстрактное устройство для хранения информации.
Поток данных – процесс передачи информации.
Рис
2.3 - элементы диаграммы потоков данных
в нотации Гейна-Сарсона (слева направо:
внешняя сущность, процесс, хранилище
данных, поток данных)
Диаграммы переходов состояний (State Transition Diagrams). Функциональные диаграммы.
Представлены в виде множества прямоугольников, связанных между собой, грани прямоугольников определяют назначение связи: слева – вход, справа – выход, сверху – управление, снизу – механизм.
Описание структур данных
Абстрактные структуры данных.
– элементы не связаны между собой (множества, кортежи);
– структуры с неявными связями элементов: векторы, матрицы, строки.
– структуры с явной связью элементов: графы.
Иерархические модели.
– диаграммы Джексона;
– скобочные диаграммы Ора.
Сетевые модели (почти реляционные).
Нотация Баркера.
Рис 2.4 - описание структур данных в нотации Баркера
Диаграммы применения.
2.10. Проектирование архитектуры
Архитектура программного обеспечения – это представление, которое даёт информацию о компонентах составляющих систему, о взаимосвязях между этими компонентами и правилах, регламентирующих эти взаимосвязи.
Архитектура показывает, как система выглядит «со стороны». Требуется только для больших проектов. Примеры: автономная программа (вырожденная архитектура), комплекс параллельно выполняющихся программ, слоистая (вертикальное взаимодействие) и т.д.
2.11. Проектирование модульной структуры. Модуль
Под модулем понимают любой фрагмент программы обладающей внутренней целостностью и одной или несколькими известными точками входа. Как правило, под модулем понимают:
а) в структурном программировании:
– одна функция;
– набор функций, объединённых общими данными и/или назначением и собранные (как правило) в один файл;
б) в объектно-ориентированном программировании:
– класс;
– метод класса;
– несколько классов, объединённых общими данными и/или назначением и собранные (как правило) в один файл.
"Хороший модуль снаружи проще, чем внутри". "Хороший модуль проще использовать, чем построить". (ЧЬИ ЦИТАТЫ?)
Свойства.
1. Прочность – мера внутренних связей. Исторически сложились различные уровни прочности:
- по совпадению – между его элементами нет осмысленных связей, может возникать при «модулизации» программы;
- по логике – содержит набор независимо вызываемых связанных функций;
- по классу – последовательное выполнение набора несвязанных функций (инициализация, завершение);
- процедурно прочный – выполняет последовательность действий, обусловленную задачей;
- коммуникационно-прочный – процедурная прочность + связи по данным;
- функционально прочный – выполняет одну «элементарную» (с функциональной ТЗ) функцию;
- информационно прочный – выполняет несколько функций (со своими точками входа), работающих на единой структуре данных).
Для функции или метода рекомендуется функциональная прочность, для класса – информационная.
2. Сцепление – мера связи по данным.
- по содержимому – один модуль ссылается на данные другого;
- по общей памяти – ссылаются на единую структуру данных;
- по внешним данным – совместно используют глобальные простые типы данных;
- по управлению – один модуль запускает фрагменты другого;
- по формату – передача структуры данных;
- по данным – передача неструктурированных данных.
3. Предсказуемость – независимость от предыстории;
-;.Структура принятия решений – влияние только на подчинённые модули;