- •Краткая характеристика1
- •Алфавит
- •Объявление переменных. Типы данных
- •Простые типы данных
- •Структурированные типы данных
- •Константы
- •Операции Присваивание.
- •Арифметические:
- •Логические (результат – логическое значение).
- •Операции работы с указателями.
- •Функции
- •Директивы препроцессора
- •Указатели Обзор
- •Приведение типов
- •Типизированные и нетипизированные указатели
- •Операции над указателями
- •Массивы
- •Многомерные массивы
- •Указатели в качестве параметров функций
- •Функции работы с указателями и памятью
- •Строки.
- •Время жизни и область видимости переменных
- •Указатель на функции
- •Работа с файлами.
- •Форматированный ввод-вывод
- •Введение в объектно-ориентированное программирование
- •Часть 2. Введение в технологию программирования.
- •Этапы развития программирования.
- •Проблемы разработки сложных программных систем:
- •Жизненный цикл программного продукта.
- •Модели жц.
- •Экстремальное программирование
- •Оценка качества процессов создания программного обеспечения.
- •Процессы проектирования.
- •Требования, цели
- •Внешнее проектирование.
- •Диаграммы потоков данных (Data Flow Diagrams).
- •Внешнее проектирование модулей
- •Модульная декомпозиция
- •Почему модуль должен компилироваться с первого раза?
- •Рекомендации по внесению ясности в текст программы:
- •Тестирование.
- •Документирование.
- •Пользовательский интерфейс
- •Часть 3. Типовые структуры данных и алгоритмы.
- •3.1 Структуры данных Логические структуры данных:
- •Хранение циклических структур данных в памяти компьютера
- •Организация двусвязанного списка.
- •Организация массива переменного размера:
- •3.2 Алгоритмы Быстрая сортировка
- •Поиск пути
- •Примеры программ
- •Список литературы
Модели жц.
Каскадная (водопадная) модель.
Постановка задачи, анализ требований, проектирование, кодирование, тестирование, модификация.
КМ с промежуточным контролем.
Спиральная модель.
Постановка задачи, анализ, проектирование, реализация. Прототипирование.
RAD – технология.
RAD (от англ. rapid application development — быстрая разработка приложений) — концепция создания средств разработки программных продуктов, уделяющая особое внимание быстроте и удобству программирования, созданию технологического процесса, позволяющего программисту максимально быстро создавать компьютерные программы. С конца XX века RAD получила широкое распространение и одобрение. Концепцию RAD также часто связывают с концепцией визуального программирования.
Инструментарий должен быть нацелен на минимизацию времени разработки.
Создание прототипа для уточнения требований заказчика.
Цикличность разработки: каждая новая версия продукта основывается на оценке результата работы предыдущей версии заказчиком.
Минимизация времени разработки версии, за счёт переноса уже готовых модулей и добавления функциональности в новую версию.
Команда разработчиков должна тесно сотрудничать, каждый участник должен быть готов выполнять несколько обязанностей.
Управление проектом должно минимизировать длительность цикла разработки.
5. Экстремальное программирование.
Экстремальное программирование
1. Короткий цикл обратной связи (Fine scale feedback)
– Разработка через тестирование (Test driven development) – техника программирования, при которой модульные тесты для программы или её фрагмента пишутся до самой программы (англ. test-first development) и, по существу, управляют её разработкой. Является одной из основных практик экстремального программирования;
– Игра в планирование (Planning game)
– Заказчик всегда рядом (Whole team, Onsite customer)
– Парное программирование (Pair programming)
2. Непрерывный, а не пакетный процесс
– Непрерывная интеграция (Continuous Integration) – это практика разработки программного обеспечения, которая заключается в выполнении частых автоматизированных сборок проекта для скорейшего выявления и решения интеграционных проблем;
– Рефакторинг (Design Improvement, Refactor) – процесс полного или частичного преобразования внутренней структуры программы при сохранении её внешнего поведения.
– Частые небольшие релизы (Small Releases)
3. Понимание, разделяемое всеми
– Простота (Simple design)
– Метафора системы (System metaphor)
– Коллективное владение кодом (Collective code ownership) или выбранными шаблонами проектирования (Collective patterns ownership) – каждый член команды несёт ответственность за весь исходный код, каждый вправе вносить изменения в любой участок программы
– Стандарт кодирования (Coding standard or Coding conventions) – набор правил и соглашений, используемых при написании исходного кода на некотором языке программирования
4. Социальная защищенность программиста (Programmer welfare):
– 40-часовая рабочая неделя (Sustainable pace, Forty hour week)
Оценка качества процессов создания программного обеспечения.
Стандарты ISO 9000-9004. Необходимые условия для достижения минимального уровня организации процесса ППО.
CMM (Capability Maturity Model) – модель зрелости процессов создания ПО. Включает 5 уровней: начальный, повторяемый, определённый, управляемый, оптимизирующий.
SPICE (Software Process Improvement and Capability dEtermination) (ISO/IES 15504) – определение возможностей и улучшение процесса создания программного обеспечения.
Проектирование надёжного ПС.
Майерс: «В программном обеспечении имеется ошибка, если оно не выполняет того, что пользователю разумно от него ожидать». Ошибки в ПО не являются внутренним его свойством. Наличие ошибок зависит как от самого программного обеспечения, так и от ожиданий пользователя.
Надёжность программного обеспечения есть вероятность его работы без отказов в течение определённого периода времени, рассчитанная с учётом стоимости для пользователя каждого отказа.
Почему техника надёжнее программ?
1. Большее разнообразие входных данных.
2. Отношение к возможным применениям.
3. Различная природа компонент.
Макромодель перевода. проектирование программного обеспечения состоит из ряда этапов.
На каждом из этапов возможны ошибки по взаимодействию исполнителей.
Микромодель перевода.
Чтение Запоминание анализ распространение
Причины ошибок:
- чтение между строк всё, что непонятно, надо уточнять у автора документа;
- непонимание;
- нечёткое выражение мыслей.
Четыре подхода к надёжности.
1. Предупреждение ошибок.
2. Обнаружение ошибок.
3. Исправление ошибок.
4. Устойчивость к ошибкам.
- динамическая избыточность (неприменимо);
- отступление (обработка исключений try – throw – catch);
- изоляция ошибок (задача ОС).
Борьба со сложностью.
Сложность – основная причина ошибок перевода, и, следовательно, одна из главных причин ненадёжности.
Концепции:
- независимость – компоненты должны быть максимально независимы;
- иерархическая структура.
Проектирование.
- вовлечение пользователя в процесс принятия решений;
- понимание культуры пользователя;
- умение правильно ставить и решать задачи.