Оборудования, на котором работают компьютеры и сети компьютеров
Download 0.75 Mb. Pdf ko'rish
|
Лекция 2
Проектирование
программного обеспечения – это процесс концептуализации требований к программному обеспечению в реализацию программного обеспечения. Это начальный этап в рамках жизненного цикла разработки программного обеспечения (SDLC) – смещение акцента с задачи на решение. При концептуальной разработке программного обеспечения процесс проектирования устанавливает план, который принимает требования пользователя за задачи и работает над поиском оптимальных решений. В плане должен быть определен оптимальный дизайн для реализации предполагаемого решения. Проектирование программного обеспечения включает в себя все действия, способствующие переходу от спецификации требований к реализации. К основным артефактам процесса проектирования программного обеспечения относятся: Спецификация требований к программному обеспечению. Данный документ описывает ожидаемое поведение системы в виде функциональных и нефункциональных требований. Эти требования должны быть четкими, выполнимыми, измеримыми и прослеживаться до бизнес-потребностей. Требования должны также определять, как программное обеспечение должно взаимодействовать с людьми, аппаратными средствами и другими системами. Дизайн высокого уровня. Проектирование высокого уровня разбивает архитектурный дизайн системы на менее абстрактное представление о подсистемах и модулях и отображает их взаимодействие друг с другом. Такой подход к проектированию высокого уровня фокусируется на том, как система вместе со всеми ее компонентами реализуется в виде модулей. Она распознает модульную структуру каждой подсистемы и их взаимодействие друг с другом. 47 Детальное проектирование. Детальное проектирование включает в себя реализацию того, что видно как система и ее подсистемы в конструкции высокого уровня. Эта деятельность более детальна по отношению к модулям и их реализации. Она определяет логическую структуру каждого модуля и их интерфейсы для взаимодействия с другими модулями. Какова связь между архитектурой программного обеспечения и проектированием? Архитектура программного обеспечения раскрывает структуру системы, скрывая при этом детали реализации. Архитектура также фокусируется на том, как элементы и компоненты системы взаимодействуют друг с другом. Дизайн программного обеспечения углубляется в детали реализации системы. К задачам проектирования относится выбор структур и алгоритмов данных или деталей реализации отдельных компонентов. Вопросы архитектуры и проектирования часто пересекаются. Вместо того, чтобы использовать жесткие и быстрые правила для разграничения архитектуры и дизайна, имеет смысл их комбинировать. В некоторых случаях решения явно носят более архитектурный характер. В других случаях решения в значительной степени сосредоточены на проектировании и на том, как оно помогает реализовать эту архитектуру. Важной деталью, которую следует отметить, является то, что архитектура – это дизайн, но не весь дизайн является архитектурным. На практике именно архитектор проводит черту между программной архитектурой (архитектурное проектирование) и детальным проектированием (неархитектурное проектирование). Не существует правил или руководящих принципов, которые подходили бы для всех случаев – в общем, предпринимались попытки формализовать это различие. Современные тенденции в архитектуре программного обеспечения предполагают, что проект развивается с течением времени и что архитектор программного обеспечения не может знать все заранее, чтобы полностью архитектурно оформить систему. Проектирование обычно развивается на стадиях внедрения системы. Архитектор программного обеспечения постоянно изучает и проверяет проект на соответствие требованиям реального мира. Какие проблемы решает архитектурный анализ? Дефекты программного обеспечения, которые приводят к проблемам безопасности, имеют два основных вкуса: ошибки в реализации и недостатки в дизайне. Ошибки в коде реализации составляют как минимум половину общей проблемы безопасности программного обеспечения. Другая половина включает в себя различного рода дефекты программного обеспечения, возникающие на уровне проектирования. Разделение дефектов конструкции и ошибок составляет около 50/50. И те, и другие должны быть защищены, чтобы гарантировать благополучие вашего программного обеспечения. Вы можете создать лучшую программу просмотра кода на планете, с самыми сильными 48 инструментами, известными человечеству, но маловероятно, что вы сможете найти и исправить дефекты таким образом. 4 способа выявить недостатки Проанализировать фундаментальные принципы проектирования. Оценить поверхность атаки. Перечислить различные агенты угрозы. Выявить слабые места и пробелы в системе контроля безопасности. Выявление и устранение недостатков на ранних стадиях проектирования гораздо более эффективно с точки зрения затрат, чем исправление недостатков в реализации проекта после развертывания. Анализ архитектурных рисков (ARA), моделирование угроз и анализ проектов средств контроля безопасности (SCDA) полезны для поиска и исправления недостатков проекта. SCDA – это облегченный подход к ARA. Их проведение занимает меньше времени и может осуществляться гораздо большим числом специалистов, чем при традиционном анализе ARA. Самое главное, что легкий подход достаточно эффективен, чтобы его можно было масштабировать и охватить весь портфель приложений. Организации, которым не удается интегрировать обзоры архитектуры и дизайна в процесс разработки, часто с удивлением обнаруживают, что их программное обеспечение страдает от системных сбоев как на уровне разработки, так и на уровне внедрения. Во многих случаях дефекты, выявленные при тестировании на проникновение, можно было бы легче выявить с помощью других методов – в более раннем возрасте жизненного цикла. Тестеры, которые используют результаты анализа архитектуры для направления своей работы, часто получают большую выгоду. Программное обеспечение - программа или множество программ, используемых для управления компьютером. Системное программное обеспечение – комплекс программ, которые обеспечивают управление компонентами компьютерной системы, такими как процессор, оперативная память, устройства ввода-вывода, сетевое оборудование, выступая как «межслойный интерфейс», с одной стороны которого аппаратура, а с другой — приложения пользователя. В отличие от прикладного программного обеспечения, системное не решает конкретные практические задачи, а лишь обеспечивает работу других программ, предоставляя им сервисные функции, абстрагирующие детали аппаратной и микропрограммной реализации вычислительной системы, управляет аппаратными ресурсами вычислительной системы. Как правило, к системному программному обеспечению относятся операционные системы, утилиты, системы управления базами данных, широкий класс связующего программного обеспечения. Прикладное программное обеспечение — программа, предназначенная для выполнения определённых пользовательских задач и рассчитанная на непосредственное взаимодействие с пользователем. |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling