ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 16.06.2021

Просмотров: 131

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Недостатки восходящего подхода:

- увеличение вероятности несогласованности компонентов вследствие неполноты спецификаций

- наличие издержек на проектирование и реализацию тестирующих программ, которые нельзя преобразовать в компоненты

- позднее проектирование интерфейса, а соответственно невозможность продемонстрировать его заказчику для уточнения спецификаций

Исторически восходящий подход появился раньше, что связано с особенностью мышления программистов, которые в процессе обучения привыкают при написании небольших программ сначала детализировать компоненты нижних уровней (подпрограммы, классы). Это позволяет им лучше осознавать процессы верхних уровней. При промышленном изготовлении ПО восходящий подход в настоящее время практически не используют

Особенность методов восходящей и нисходящей разработок ПО – требование, чтобы модульная структура программы была разработана до начала программирования (кодирования) модулей. Это требование находится в полном соответствии с водопадным подходом к разработке ПО, так как разработка модульной структуры программы и ее кодирование производятся на разных этапах разработки ПО: первая завершает этап конструирования ПО, а второе − открывает этап кодирования. Однако эти методы вызывают ряд возражений: представляется сомнительным, чтобы до программирования модулей можно было разработать структуру программы достаточно точно и содержательно. На самом деле это делать не обязательно, если несколько модернизировать водопадный подход

Архитектурный подход к разработке программы – модификация восходящей разработки, при которой модульная структура программы формируется в процессе программирования модуля. Но при этом ставится существенно другая цель разработки: повышение уровня используемого ЯП, а не разработка конкретной программы. Для заданной предметной области выделяются типичные функции, каждая из которых может использоваться при решении разных задач в этой области, и специфицируются, а затем и программируются отдельные программные модули, выполняющие эти функции

Процесс выделения таких функций связан с накоплением и обобщением опыта решения задач в заданной предметной области, поэтому обычно сначала выделяются и реализуются отдельными модулями более простые функции, а затем появляются модули, использующие ранее выделенные функции. Такой набор модулей создается в расчете на то, что при разработке той или иной программы заданной предметной области в рамках конструктивного подхода могут оказаться приемлемыми некоторые из этих модулей

Это позволяет существенно сократить трудозатраты на разработку конкретной программы путем подключения к ней заранее заготовленных и проверенных на практике модульных структур нижнего уровня. Так как такие структуры могут многократно использоваться в разных конкретных программах, архитектурный подход может рассматриваться как путь борьбы с дублированием в программировании. В связи с этим программные модули, создаваемые в рамках архитектурного подхода, обычно параметризуются для того, чтобы усилить применимость таких модулей путем настройки их на параметры


Классификация методов разработки структуры программы:





Ядро и вспомогательные модули операционной системы.

Наиболее общим подходом к структуризации операционной системы является разделение всех ее модулей на две группы:



ядро — модули, выполняющие основные функции ОС;



модули, выполняющие вспомогательные функции ОС.



Модули ядра выполняют такие базовые функции ОС, как управление процессами, памятью, устройствами ввода-вывода и т. п. Ядро составляет сердцевину операционной системы, без него ОС является полностью неработоспособной и не сможет выполнить ни одну из своих функций.



В состав ядра входят функции, решающие внутрисистемные задачи организации вычислительного процесса, такие как переключение контекстов, загрузка/выгрузка станиц, обработка прерываний. Эти функции недоступны для приложений. Другой класс функций ядра служит для поддержки приложений, создавая для них так называемую прикладную программную среду. Приложения могут обращаться к ядру с запросами — системными вызовами — для выполнения тех или иных действий, например для открытия и чтения файла, вывода графической информации на дисплей, получения системного времени и т. д. Функции ядра, которые могут вызываться приложениями, образуют интерфейс прикладного программирования — API.





Вспомогательные модули ОС обычно подразделяются на следующие группы:



утилиты — программы, решающие отдельные задачи управления и сопровождения компьютерной системы, такие, например, как программы сжатия дисков, архивирования данных на магнитную ленту;



системные обрабатывающие программы — текстовые или графические редакторы, компиляторы, компоновщики, отладчики;



программы предоставления пользователю дополнительных услуг — специальный вариант пользовательского интерфейса, калькулятор и даже игры;



библиотеки процедур различного назначения, упрощающие разработку приложений, например библиотека математических функций, функций ввода-вывода и т. д.



Как и обычные приложения, для выполнения своих задач утилиты, обрабатывающие программы и библиотеки ОС, обращаются к функциям ядра посредством системных вызовов.



Привилегированный режим работы.

Ядро́ — центральная часть операционной системы (ОС), обеспечивающая приложениям координированный доступ к ресурсам компьютера, таким как процессорное время, память и внешнее аппаратное обеспечение.



^ Ядро в привилегированном режиме.



Для надежного управления ходом выполнения приложений операционная система должна иметь по отношению к приложениям определенные привилегии. Иначе некорректно работающее приложение может вмешаться в работу ОС и, например, разрушить часть ее кодов. Аппаратура компьютера должна поддерживать как минимум два режима работы — пользовательский режим (user mode) и привилегированный режим, который также называют режимом ядра (kernel mode), или режимом супервизора (supervisor mode). Подразумевается, что операционная система или некоторые ее части работают в привилегированном режиме, а приложения — в пользовательском режиме. Так как ядро выполняет все основные функции ОС, то чаще всего именно ядро становится той частью ОС, которая работает в привилегированном режиме (рис. 3.3). Иногда это свойство — работа в привилегированном режиме — служит основным определением понятия «ядро».






^ Многослойная структура ОС (схема).





Вычислительную систему, работающую под управлением ОС на основе ядра, можно рассматривать как систему, состоящую из трех иерархически расположенных слоев: нижний слой образует аппаратура, промежуточный — ядро, а утилиты, обрабатывающие программы и приложения, составляют верхний слой системы (рис. 3.6). Слоистую структуру вычислительной системы принято изображать в виде системы концентрических окружностей, иллюстрируя тот факт, что каждый слой может взаимодействовать только со смежными слоями. Действительно, при такой организации ОС приложения не могут непосредственно взаимодействовать с аппаратурой, а только через слой ядра.











^ Микроядерная структура ОС (схема, концепция).





Микроядерная архитектура, в отличии от обычной, оставляет в привилегированном режиме только небольшую часть ядра – так называемое микроядро. Оно содержит машинно-зависимые модули и основные базовые функции, к которым обычно относят функции по управлению процессами, обработке прерываний, управлению виртуальной памятью и управлению устройствами ввода/вывода (в части записи и чтения регистров устройств). Остальные части ядра (менеджеры ресурсов, интерфейс API) выполняются в режиме пользовательском.



Одной из основных задач микроядра ОС является обеспечение такого обмена, так как только в привилегированном режиме возможно обращение к «чужим» областям памяти. Все обмены между серверами или между серверами и приложениями пользователей производятся через микроядро в форме сообщений-запросов и сообщений-ответов. Работа микроядерной ОС соответствует модели «клиент-сервер», а роль транспортных средств выполняет микроядро.



ОС, основанные на микроядерной архитектуре, обладают большинством свойств, необходимых современным ОС, в частности, переносимостью на другие платформы (все машинно-зависимые команды – в микроядре), легкой расширяемостью новыми возможностями (добавление новой подсистемы – это разработка нового приложения, не трогая остальную часть ОС), надежностью (все серверы в своих областях памяти и не могут повредить друг-друга) и пригодностью поддержки распределенных приложений.



В качестве недостатка, приходится отметить меньшую производительность, так как постоянно производится смена режима работы (привилегированного на пользовательский и обратно).



Обычная проблема разработчиков ОС – что включить в микроядро. В частности, в Windows NT в микроядро включено очень многое, и она переносится только на похожие архитектурные платформы.