Вопрос №3 Принципы проектирования информационного обеспечения программного комплекса
Вид материала | Документы |
СодержаниеВопрос №3 Принципы проектирования информационного обеспечения программного комплекса. 1. Строгость и формальность 2. Разделение задач 5. Предусмотрение изменений |
- Е. В. Чепин московский инженерно-физический институт (государственный университет), 30.11kb.
- Рабочая программа учебной дисциплины (модуля) case-средства проектирования программного, 143.56kb.
- Технология программирования, 643.21kb.
- Базы данных, 3110.93kb.
- А. А. Дюмин московский инженерно-физический институт (государственный университет), 30.84kb.
- Учебно-методический комплекс дисциплины разработка и стандартизация программных средств, 362.73kb.
- Методика выбора программного обеспечения турфирмой Антон Россихин (само-софт), 34.31kb.
- С. Д. Романин московский инженерно-физический институт (государственный университет), 24.74kb.
- Примерная программа наименование дисциплины Проектирование и архитектура программных, 182.2kb.
- Рабочая программа учебной дисциплины "системы автоматизированного проектирования электроустановок, 119.83kb.
Вопрос №3 Принципы проектирования информационного обеспечения программного комплекса.
Рассмотрим некоторые существенные и общие принципы, являющиеся основными для успешной разработки программного обеспечения. Эти принципы относятся как к процессу разработки программного обеспечения, так и к конечному продукту. Правильный процесс будет содействовать производству надлежащего продукта, но и требуемый продукт также повлияет на выбор процесса. Общей проблемой инженерии программного обеспечения было и остается смещение акцента либо на процесс, либо на продукт. При этом один из компонентов исключается хотя важны оба.
Для разработки программного обеспечения недостаточно одних только принципов, ведь это, фактически, общие и абстрактные формулировки, описывающие требуемые качества программных процессов и продуктов. Чтобы применить принципы на деле, программный инженер должен быть вооружен определенными методами и особыми приемами, позволяющими придать процессам и продуктам требуемые качества.
Следует заметить, что понятия методов и приемов различаются. Метод – это общая руководящая линия, направляющая выполнение некоторой деятельности, строгий, систематизированный и упорядоченный, как дисциплина, подход. Прием является более механическим и техническим действием, чем метод; приемы часто имеют ограниченную применимость. Однако, в Целом, различие между ними не так явно выражено, и поэтому будем пользоваться обоими определениями, как равнозначными.
1. Строгость и формальность
Разработка программного обеспечения – это творческий процесс. Неотъемлемая тенденция любого творческого процесса – не следить за точностью и аккуратностью, а неструктурированным образом следовать за вдохновением момента. С другой стороны, в любой инженерной деятельности строгость – определяемая, как точность и аккуратность, – является необходимым дополнением к творчеству: только строгий подход позволяет неоднократно производить надежные продукты, управлять их' стоимостью и увеличивать уверенность в их надежности. Вовсе не требуется, чтобы строгость ограничивала творчество. Скорее, она может быть использована, как средство улучшения творчества: инженер может быть более уверен в результатах творческого процесса после строгой оценки этих результатов.
Парадоксально, что строгость сама по себе является интуитивным качество и и не может быть строго определена. К тому же могут быть достигнуты различные уровни строгости, высший из которых называется формальностью. Таким образом, формальность есть более сильное требование, чем
2. Разделение задач
Разделение задач позволяет работать с различными аспектами одной и той же задачи, концентрируясь на них так, как будто это разные задачи. Разделение задач - это применение здравого смысла, которому стараются следовать в повседневной жизни для преодоления встречающихся трудностей. Этот же принцип должен быть применен в разработке программного обеспечения для преодоления свойственной ему сложности. При разработке программного обеспечения необходимо принимать множество решений. Одни имеют отношение к возможностям продукта: это предлагаемые функции, ожидаемая надежность, эффективность в пространстве и времени, отношения со средой (т. е. требуемые аппаратные или программные специальные ресурсы), интерфейсы пользователя и т.д. Другие касаются процесса разработки: среда разработки, организация и структура команды, планирование, процедуры управления, стратегии проектирования, механизм восстановления после сбоя и т. д. Третьи имеют экономическую и финансовую природу. Эти различные решения могут быть никак не связаны друг с другом. В этом случае очевидно, что их нужно решать по отдельности.
3. Модульность
Сложная система может быть разделена на простые части - модули тем, состоящая из модулей, называется модульной. Главное преимущество Модульности заключается в том, что она позволяет применить принцип разделения задач на двух этапах: при работе с элементами каждого модуля. Сдельно (игнорируя элементы других модулей) и при работе с общими Характеристиками всех модулей и отношениями между ними с целью объединить их в когерентную систему. Если данные этапы выполняются в последовательности, предусматривающей сначала концентрацию на модулях, а затем - их объединение, то говорят, что система проектируется снизу вверх; если, наоборот, сначала систему разбивают на модули, а потом работают над их индивидуальным проектированием, то это - проектирование сверху вниз.
Модульность является важным качеством большинства инженерных процессов и продуктов. Например, изготовление машин в автомобилестроении происходит, как сборка строительных блоков, которые спроектированы и изготовлены отдельно. Более того, детали часто повторно используются от модели к модели, возможно, с незначительными изменениями. Большинство промышленных процессов по сути являются модульными и составлены из комплексов работ, которые комбинируются простыми способами (последовательными или перекрывающимися) для достижения требуемого результата.
4. Абстракция
Абстракция – это основной метод понимания и анализа сложных проблем. Применяя абстракцию, мы выделяем существенные аспекты явления и игнорируем его подробности. Таким образом, абстракция есть частный случай разделения задач, в рамках которого проблема анализа важных аспектов отделяется от проблемы рассмотрения менее значимых деталей.
От чего именно можно абстрагироваться и что рассматривать, как подробности, которые можно проигнорировать, зависит от цели данной абстракции. Например, рассмотрим электронные часы. Для их хозяина полезной абстракцией будет описание назначения кнопок, позволяющих переключаться в разные режимы функционирования и по-разному реагирующих на определенные последовательности команд. Для техника по обслуживанию полезной абстракцией будет корпус, который можно открыть для смены батарейки. Еще некоторые абстракции часов существенны для понимания их устройства и выполнения действий, необходимых для их ремонта (не говоря уже о проектировании). Таким образом, может быть множество различных абстракций одной и той же реальности, каждая из которых обеспечивает некое представление о реальности и служит для особой цели.
5. Предусмотрение изменений
Программное обеспечение постоянно претерпевает изменения. Как мы видели в главе 2, изменения обусловлены не только необходимостью исправления программного обеспечения – устранения ошибок, не замеченных до выпуска приложения, но и необходимостью поддерживающего развития приложения по мере появления новых требований или изменения старых. Именно поэтому сопровождаемость определяется как главное качество программного обеспечения.
Предусмотрение изменений – это, возможно, тот самый принцип, который более всего отличает программное обеспечение от большинства других типов промышленных продуктов. Во многих случаях программное приложение разрабатывается, когда требования к нем осознаны не полностью. Позже, после выпуска, приложение должно развиваться на основе откликов пользователей, поскольку обнаруживаются новые требования, а старые уточняются. В дополнение к этому, приложения часто встраиваются в среду, такую как, например, организационная структура. Внедрение приложения в некую среду воздействует на нее, и это воздействие генерирует новые требования, которые не были изначально известны. Таким образом, предусмотрение изменений – это принцип, который можно использовать для достижения эволюционности (способности к развитию).