- •Оглавление
- •Классификация операционных систем
- •2. Структура, состав и назначение подсистем типовой системы программирования (Visual Studio или Delphi).
- •4. Взаимодействие программ — интеграция приложени: технология com — основные принципы, типы и правила построения программных интерфейсов, достоинства и недостатки.
- •5. Объект, сервер, клиент. Схема взаимодействия клиента и объекта com. Объект
- •Интерфейс
- •Интерфейс iUnknown
- •Библиотека сом
- •Создание объекта
- •6. Технологи обмена сообщениями: проблемы интеграции приложений, основные принципы, шаблоны, достоинства и недостатки.
- •7. Принципы построения корпоративных информационных систем (кис), их типы и проблемы. Основные проблемы реализации архивных хранилищ. К основным принципам построения кис относятся:
- •Корпоративные информационные системы можно также разделить на два класса: финансово-управленческие и производственные.
- •Также различают виды кис, такие как заказные (уникальные) и тиражируемые кис.
- •Основные проблемы реализации архивных хранилищ
- •8. Синхронизация: семафоры, мьютексы, барьеры, взаимоблокировки — реентерабельность.
- •Семафоры
- •Мьютексы
- •Барьеры
- •Взаимоблокировки
- •Реентерабельность
- •Синхронизация при низком irql
- •Механизмы синхронизации режима ядра
- •Объекты диспетчера ядра
- •Условия освобождения различных синхронизирующих объектов
- •10. Основные системные механизмы Windows и их назначение.
- •Диспетчеризация ловушек
- •Диспетчер объектов
- •Синхронизация
- •Системные рабочие потоки
- •Глобальные флаги Windows
- •Трассировка событий ядра
- •Объекты исполнительной системы
- •Структура объектов
- •Методы объекта
- •Описатели объектов и таблица описателей, принадлежащая процессу
- •Внутренние объекты, объекты исполнительной системы (executive objects)
- •Хранение объектов в памяти
- •Имена объектов
- •Стандартные каталоги объектов
- •Пространство имен сеанса
- •Диспетчеризация 32-разрядных системных сервисов
- •Диспетчеризация 64-разрядных системных сервисов
- •Диспетчеризация системных сервисов режима ядра
- •Прерывания dpc или диспетчеризации
- •Прерывания apc
- •Необработанные исключения
- •Трассировка событий ядра
- •17. Реестр Windows: назначение, организация, ключи, ульи, редактирование, достоинства и недостатки. Реестр
- •Логическая структура реестра
- •Структура реестра
- •Хранение реестра
- •18. Статическое и динамическое связывание, dll-библиотеки — назначение, структура. Статические и динамические библиотеки.
- •Основные этапы компьютерного моделирования
- •Виды алгоритмов
- •Основные этапы полного построения алгоритма.
- •Правильность алгоритма.
- •Реализация алгоритма.
- •Принципы эффективных алгоритмов.
- •Правила оформления текстов программ.
- •Архитектура программного обеспечения в качестве классического жизненного цикла системы — недостатки классического цикла.
- •Основные параметры при разработке архитектуры.
- •Примеры технологии проектирования пс (стратегии проектирования: водопадная, инкрементная, эволюционная, спиральная стратегии)
- •Понятие надежности по
- •Отказы, сбои, восстановление
- •Основные задачи технической диагностики
- •Показатели качества и надежности программных средств (iso 9126:1991)
- •Тестирование корректности определения и использования данных на маршрутах исполнения программы.
- •Основные типы
- •Средства разработки
- •Загрузка/выгрузка
- •Организация и точки входа
- •Диспетчер PnP
- •Структуры драйверов в ос
- •23. Администрирование программного обеспечения пк: принципы, задачи, документирование, регламентные работы — профилактика. Администрирование программного обеспечения пк
- •Принципы
- •Документирование
- •Регламентные работы — профилактика.
- •Средства разработки .Net-приложений
- •Корпоративные .Net-серверы и их краткие характеристики
- •Сервер Application Center
- •Реализация Web-ферм, кластеров
- •Exchange Server и его основные функции
Принципы эффективных алгоритмов.
С учетом рассмотренных подходов, принципов и способов разработки алгоритмов для решения различных классов задач, в том числе сортировки, поиска в списке, вычисления биноминальных коэффициентов и других, используется достаточное количество эффективных методов, обеспечивающих получение эффективных алгоритмов решения этих задач. Это методы:
«разделяй и властвуй»;
последовательных приближений;
наискорейшего спуска;
обратного прохода;
динамического программирования;
поиска с возвратом;
выделения подцелей;
моделирования;
«жадных» алгоритмов и др.
Эти и другие методы являются основой построения программных модулей, обеспечивают методологию проектирования и разработки программ.
Правила оформления текстов программ.
Одним из важнейших факторов, влияющих на способность программы к развитию, является ее понимаемость. Одним из существенных факторов понимаемости программы, в свою очередь, является информативность исходного текста. Если исходный текст не является хорошо читаемым, то есть написан без соблюдения определенного стиля и системы и представляет собой "мешанину" операторов и знаков препинания, то вносить изменения в него очень сложно даже автору. Такая программа, безусловно, не является информативной. Сложности модификации значительно возрастают по прошествии времени и при необходимости работать с чужой программой. Рассмотрим ряд требований и рекомендаций, позволяющих выработать хороший стиль оформления программ, повышающий ее информативность. Изложение будем вести на примере языка C/C++, хотя все, сказанное ниже, относится к любому алгоритмическому языку.
Количество операторов в строке
Для улучшения читаемости исходного текста программы рекомендуется писать не более одного оператора в строке, что вызвано особенностями человеческого восприятия текста. Кроме того, это облегчает пошаговую отладку в символьных отладчиках.
Не следует опасаться того, что программа слишком вырастет в длину, так как реальные программы и без того настолько длинны, что несколько "лишних" страниц (или даже десятков страниц) не меняют общую ситуацию. Выигрыш же в понимаемости с избытком покрывает увеличение длины.
Отступы
Правильное использование отступов являются ключевым методом обеспечения читаемости. Идея состоит в том, что отступы зрительно показывают подчиненность (иерархию) операторов. При этом директивы препроцессора (#include, #define и т.д.), описания классов, структур, типов, глобальных данных и определения функций всегда имеют наивысший приоритет, то есть начинаются с крайней левой позиции
Операторные скобки
Открывающаяся скобка помещается на той же строке, что и управляющая конструкция, а закрывающаяся - строго на уровне управляющей конструкции.
Пробелы
Особенность зрительного восприятия человека такова, что пробелы распознаются лучше других знаков синтаксиса. Поэтому отдельные элементы текста необходимо отделять пробелами, несмотря на то, что первые, возможно, уже отделены другими знаками препинания (скобки, запятые, точки с запятой и т.д.).
Пустые строки
Использование пустых строк является важным средством для выделения участков программы. При этом имеет смысл отделять:
определения переменных
последовательности однотипных инструкций или директив
функции
любые логически завершенные блоки кода
Имена
Типичной ошибкой начинающих является стремление давать всем переменным неосмысленные однобуквенные имена, например m, n, a, s, p и т.п. Это глубоко порочная практика, поскольку при этом теряется сам смысл понятия имя. Однобуквенные имена принято давать только индексам. Исключением являются случаи, когда количество переменных в процедуре очень мало (порядка 1-3 переменных), и смысл их хорошо понятен из контекста или комментариев.
Комментарии
Время, потраченное на написание комментариев, многократно окупится при любых модификациях программы.
20. Архитектура ПО — определение, виды. Архитектура программного обеспечения в качестве классического жизненного цикла системы — недостатки классического цикла. Основные параметры при разработке архитектуры. Примеры технологии проектирования ПС (стратегии проектирования: водопадная, инкрементная, эволюционная, спиральная стратегии).
Архитектура ПО — определение, виды.
Архитектура программного обеспечения (англ. software architecture) — совокупность важнейших решений об организации программной системы. Архитектура включает:
выбор структурных элементов и их интерфейсов, с помощью которых составлена система, а также их поведения в рамках сотрудничества структурных элементов;
соединение выбранных элементов структуры и поведения во всё более крупные системы;
архитектурный стиль, который направляет всю организацию — все элементы, их интерфейсы, их сотрудничество и их соединение.
Архитектура ПО обычно содержит несколько видов, которые аналогичны различным типам чертежей в строительстве зданий. В онтологии, установленной ANSI / IEEE 1471—2000, виды являются экземплярами точки зрения, где точка зрения существует для описания архитектуры с точки зрения заданного множества заинтересованных лиц.
Архитектурный вид состоит из 2 компонентов:
Элементы
Отношения между элементами
Архитектурные виды можно поделить на 3 основных типа:
Модульные виды (англ. module views) — показывают систему как структуру из различных программных блоков.
Компоненты-и-коннекторы (англ. component-and-connector views) — показывают систему как структуру из параллельно запущенных элементов (компонентов) и способов их взаимодействия (коннекторов).
Размещение (англ. allocation views) — показывает размещение элементов системы во внешних средах.
Примеры модульных видов:
Декомпозиция (англ. decomposition view) — состоит из модулей в контексте отношения «является подмодулем»
Использование (англ. uses view) — состоит из модулей в контексте отношения «использует» (т.е. один модуль использует сервисы другого модуля)
Вид уровней (англ. layered view) — показывает структуру, в которой связанные по функциональности модули объединены в группы (уровни)
Вид классов/обобщений (англ. class/generalization view) — состоит из классов, связанные через отношения «наследуется от» и «является экземпляром»
Примеры видов компонентов-и-коннекторов:
Процессный вид (англ. process view) — состоит из процессов, соединённых операциями коммуникации, синхронизации и/или исключения
Параллельный вид (англ. concurrency view) — состоит из компонентов и коннекторов, где коннекторы представляют собой «логические потоки»
Вид обмена данными (англ. shared-data (repository) view) — состоит из компонентов и коннекторов, которые создают, сохраняют и получают постоянные данные
Вид клиент-сервер (англ. client-server view) — состоит из взаимодействующих клиентов и серверов и коннектором между ними (например, протоколов и общих сообщений)
Примеры видов размещения:
Развертывание (англ. deployment view) — состоит из программных элементов, их размещения на физических носителях и коммуникационных элементов
Внедрение (англ. implementation view) — состоит из программных элементов и их соответствия файловым структурам в различных средах (разработческой, интеграционной и т.д.)
Распределение работы (англ. work assignment view) — состоит из модулей и описания того, кто ответственен за внедрение каждого из них
Хотя было разработано несколько языков для описания архитектуры программного обеспечения, в настоящий момент нет согласия по поводу того, какой набор видов должен быть принят в качестве эталона. В качестве стандарта «для моделирования программных систем (и не только)» был создан язык UML.
