- •Оглавление
- •От редактора перевода
- •Введение
- •Использовать
- •Аргументировано обсуждать
- •IV. Применять знания
- •Модуль 1. Компьютерные системы
- •Обзор компьютерных систем
- •1.1.1. Компоненты компьютерных систем
- •Эволюция компьютерных систем
- •1.2.1. Краткая историческая справка
- •Закон Мура
- •1.2.2. Применение компьютерных систем
- •Представление данных в компьютерных системах
- •1.3.1. Биты и байты
- •1.3.2. Системы счисления
- •Модуль 2. Системы аппаратного обеспечения
- •2.1 Процессор и память
- •2.1.1 Процессор. Основы.
- •2.1.2 Типы памяти
- •2.1.3 Лабораторная работа: Эталонное тестирование (необязательная)
- •2.2 Внешние устройства
- •2.2.1 Присоединяемые внешние устройства
- •2.2.2 Шины
- •2.2.3 Входные/выходные устройства
- •2.3 Запоминающие устройства
- •2.3.1 Интерфейсы дисковых контроллеров
- •2.3.2 Накопитель (запоминающее устройство большой ёмкости)
- •2.4 Соединение компонентов аппаратного обеспечения
- •2.4.1 Как компоненты компьютера работают вместе
- •2.4.2 Лабораторная работа: Изучение компьютерных систем
- •2.4.3 Лабораторная работа: Конфигурация online
- •2.5 Повышение производительности компьютера
- •2.5.1 Закон Мура
- •2.5.2 “Узкие” места (Bottlenecks)
- •2.5.3 Производительность и время ожидания
- •Модуль 1 и Модуль 2 Обзорные материалы
- •Закон Мура
- •Модуль 3. Программное обеспечение операционных систем
- •Структура
- •3.1.1 Уровни программного обеспечения
- •3.1.2 Bios: Жизнь снизу
- •3.1.3 Управление процессами
- •3.1.4 Лабораторная работа: диспетчер задач (Task Manager)
- •3.2 Управление устройствами и конфигурация
- •3.2.1 Управление прерываниями
- •3.2.2 Характеристики аппаратного обеспечения
- •3.2.3 Конфигурация
- •3.2.4 Лабораторная работа: Управление устройствами
- •3.3. Распределение ресурсов
- •3.3.1 Виртуальная память
- •3.3.2 Совместное использование файлов и принтеров
- •3.4. Файловые системы
- •3.4.1 Организация файлов
- •3.4.2 Таблица размещения файлов (File Allocation Table) и файловая система nt
- •Модуль 4. Прикладное программное обеспечение
- •4.1 Основы программного обеспечения
- •4.2 Использование систем программного обеспечения
- •4.2.1 Лабораторная работа: Команды dos
- •4.2.2 Лабораторная работа: Макросы
- •4.2.3 Лабораторная работа: Встроенные объект-приложения
- •4.3 Пакетные файлы сценариев
- •4.3.1 Расширенные функции командной строки
- •4.3.2 Команды пакетного файла
- •4.3.3 Лабораторная работа: Создание пакетного файла
- •4.4 Базы данных
- •4.4.1 Лабораторная работа: Поиск в библиотеке Конгресса
- •4.5 Проектирование программного обеспечения
- •4.5.1 Введение в разработку крупномасштабных программных систем (Large-Scale Software).
- •4.5.2 Модель открытого кода
- •4.5.3 Средства для создания и управления программным обеспечением
- •Модуль 3 и Модуль 4 - Материалы для проверки
- •Базы данных
- •Виртуальная память
- •Модуль 5. Сетевые системы
- •5.1 Основы Интернета
- •5.1.1 Типы mime
- •5.1.2 Языки Интернет
- •5.2 Локальные и глобальные сети
- •5.3 Стратегии коммуникации
- •5.3.1 Структура клиент-сервер (Client-Server Framework)
- •5.3.2 Равноправное соединение
- •5.4 Технологии передачи данных
- •5.5 Архитектура Интернет
- •5.5.1 Роутеры и tcp/ip
- •5.5.2 Сервис доменных имен (Domain Name Service)
- •5.5.3 Способность к подключению
- •5.5.4 Провайдеры Интернет-сервиса (Internet Service Providers)
- •Модуль 6. Безопасность компьютера
- •6.1 Угрозы безопасности
- •6.1.1 Злоумышленники: кто, зачем и как?
- •6.1.2 Кража личности и нарушение конфиденциальности (Identity Theft and Privacy Violation)
- •6.1.3 Вредоносные программные средства
- •6.1.4 Отказ от обслуживания
- •6.2 Технологии безопасности
- •6.2.1 Шифрование
- •6.2.2 Применение шифрования
- •6.2.3 Идентификация
- •6.3 Предотвращение, определение и восстановление
- •6.3.1 Система сетевой защиты (Firewall)
- •6.3.2 Средства определения вторжения
- •6.3.3 Восстановление данных
- •6.3.4 Обзор типов безопасности
- •Модуль 5 и Модуль 6 Обзорный материал
- •Шифрование
- •Приложение а. Выполнение файла Visual Basic
- •Приложение в. Загрузка приложения WinZip
- •Рекомендации по чтению ssd2
4.5 Проектирование программного обеспечения
Проектирование программного обеспечения — комплекс методов для создания и обслуживания больших, сложных систем программного обеспечения, обычно группами программистов.
Последовательность чтения:
|
4.5.1 Введение в разработку крупномасштабных программных систем (Large-Scale Software).
-
Процесс разработки программного обеспечения
-
Определение и пересмотр задачи
-
Планирование решения задачи
-
Кодирование решения
-
Общая оценка и тестирование
Процесс разработки программного обеспечения
Когда измеряются затраты на разработку (всего часов), то оказывается, что написание кода программы — это относительно незначительная часть процесса создания программного обеспечения. Для нетривиальных программ, особенно крупномасштабного коммерческого программного обеспечения, программист не может только сидеть и писать коды программ. Вместо этого, каждый, вовлеченный в создание программного обеспечения, должен разделять понимание того, что должно делать программное обеспечение и из чего оно состоит. Процесс создания программного обеспечения начинается с определения потребности и проходит через серию фаз разработки, ведущих к поставке и использованию. Однако, детали того, как происходит этот процесс еще далеки от полного понимания и часто они являются объектом споров, а также темами многочисленных международных конференций. На практике процесс разработки редко устойчив и редко легко управляем. Половина всех проектов программного обеспечения отменяются до завершения, и большинство из тех, которые завершены, не удовлетворяют требованиям, указанным пользователями. Фактически, "разработка программного обеспечения" — одна из самых быстро растущих областей профессиональных интересов в содружестве программного обеспечения. Мы представляли процесс разработки в первом курсе программы SSD (Software Systems Development), SSD1 Введение в Информационные Системы. Был представлен следующий процесс программирования:
-
Определение и пересмотр задачи (Define or redefine the problem)
-
. Планирование решения задачи (Plan a solution to the problem)
-
. Кодирование (Code the solution)
-
Общая оценка и тестирование (Evaluate and test everything)
Ниже рисунок модели.
Определе-ние /пересмотр
Оценка/ Тестирование
Планирование
Кодиро-вание
Рисунок 1. Процесс разработки программного обеспечения.
Общая модель процесса разработки, показанная на рисунке, фактически круговая а не линейная, поэтому номера этапов исчезли. Здесь мы детально разберем модель, показывая, как она работает в мире коммерческого программного обеспечения. По мере того как программное обеспечение становится развитой сферой промышленности, процесс формулировки задачи становится более упорядоченным и, кроме того, разбивается на этапы. Множество людей вовлекается в процесс создания программного обеспечения и, в целом, люди, которые, например, формулируют потребность в программном обеспечении, отличаются от людей, которые разрабатывают спецификацию (детальное описание) системы. И, во многих случаях, те, кто устанавливают требования, могут не являться теми же людьми, которые проектируют или затем пишут код системы. В очень больших системах, таких как программное обеспечение крупного портала электронной коммерции, сотни человек могут работать вместе над созданием необходимой программной системы. С расширением группы разработчиков, потребность во всеобщем понимании целей системы становится все более и более важной.
Примечание. В курсах программной инженерии рассматриваются различные структурные модели разработки программных продуктов: каскадная, циклическая, итеративная, спиралевидна.
Определение и переопределение задачи
-
Осознание потребности (в программном продукте): возможно всеобщее понимание потребности, возможно пришедшее вследствие маркетинга или менеджмента, возможно источником является техническая группа, или потребность в разработке определяется контрактом.
-
Спецификация (функциональные требования): это процесс опроса заинтересованных сторон о требованиях к системе программного обеспечения. Хорошо сделать несколько циклов и протестировать предложения, сфокусировавшись на группе непосредственных пользователей.
Планирование решения задачи
-
Учет альтернатив: при определении требований к заданию, учет всех решений. Обычно их больше одного, каждая подразумевает взаимодействие с существующими системами для упрощения реализации (цена создания) и для технического обеспечения (цена на выходе).
-
Дизайн системы, включая тест: это выбранный технический дизайн системы. Важно спроектировать тест системы. Нужно иметь возможность распознать однозначность и объективность работы системы.
Кодирование решения
-
Реализация решения: программисты кодируют систему на выбранном языке или языках. Решения определяются на фазе дизайна (например, интерфейсы и исполнение), но детали того, как части системы будут то, что они должны делать, зависят от программиста.
-
. Тестирование решения программистом: Сначала программист исследует программу на корректность. На следующем уровне, команды разработчиков встречается на сессиях обзора кода (code review sessions) для чтения и обсуждения работы. Полное тестирование проводиться руководителями проекта.
-
Прием системы: Дополнительная группа некоторое время работает с программным обеспечением со смоделированными или реальными установками. Прием системы может быть достаточно формальным или неожиданно не формальным.
Общая оценка и тестирование
-
Тестирование в среде: на рабочих системах еще долго могут выявляться дефекты, упущенные на предыдущих тестах. Дефекты разработки и принятых решений также еще будут выявляться на этой стадии. Хорошие системы чаще требуют изменений чем плохие: как только люди чувствуют, что используют хорошее программное обеспечение, у них появляются идеи о дополнительных возможностях, которые они хотели бы иметь.
-
Модернизация: Теперь начинается модернизация с возврата к первому шагу процесса.