Объектно-ориентированный подход возник в первую очередь в ответ на растущую сложность программного обеспечения. На заре компьютерной эры возможности компьютеров были ограничены и было очень трудно написать большую программу. В 60–70-е гг. эффективность применения компьютеров резко возросла, и стало все больше создаваться прикладных программ повышенной сложности.
Наибольшее распространение в это время получило структурное проектирование по методу сверху вниз. Однако через некоторое время оказалось, что структурный подход не работает, если объем программы превышает приблизительно 100 тыс. строк. Как результат – выход проектов за рамки установленных сроков и бюджетов и, более того, их несоответствие начальным требованиям. Для решения этих проблем и стали применять объектно-ориентированный подход.
Справедливости ради отметим, что объектно-ориентированный подход –это достаточно универсальный инструмент. Он может применяться и для разработки программ малой и средней сложности. Однако, именно для сложных систем использование объектно-ориентированного подхода является критичным. Таким образом, основной областью использования объектно-ориентированного подхода являются сложные промышленные программные продукты.
не ХАЦКЕР, а Специалист по Информационной Безопасности! | UnderMind
Подобные системы могут применяться для решения самых разных задач. В качестве примеров можно привести:
– системы с обратной связью (интеллектуальные, самообучающиеся системы), которые активно взаимодействуют с физическим миром или управляются его событиями, и для которых ресурсы времени и памяти ограничены;
– задачи поддержания целостности информации объемом в сотни тысяч записей при параллельном доступе к ней с обновлениями и запросами;
– системы управления и контроля над реальными процессами (например, диспетчеризация воздушного и железнодорожного транспорта).
Системы подобного типа обычно имеют большое время жизни, и большое количество пользователей оказывается в зависимости от их нормального функционирования. Глобальные системы национального или даже мирового масштаба – это яркие примеры таких систем (например, сеть Интернет).
Сложность является существенной чертой промышленной программы: один разработчик практически не в состоянии охватить все аспекты такой системы. Фактически сложность промышленных программ превышает возможности интеллекта одного человека.
Сложность, присущая программному обеспечению, определяется следующими основными причинами: сложностью реального мира, сложностью управления процессом разработки, гибкостью программного обеспечения, сложностью описания поведения систем.
Сложность реального мира
Проблемы, которые мы пытаемся решить с помощью разрабатываемого программного обеспечения, часто содержат сложные элементы, к которым предъявляется множество различных и нередко противоположных требований.
Но даже в простых проблемах сложность может возникнуть из-за языковой и понятийной «нестыковки» между заказчиком системы и ее разработчиком: пользователи обычно с трудом могут внятно объяснить разработчикам, что на самом деле нужно сделать. Часто пользователь лишь смутно представляет, что ему нужно от будущей программной системы. С другой стороны, разработчик, являясь экспертом лишь в своей области знаний, недостаточно квалифицирован в предметной области.
Дополнительные сложности возникают в результате изменения требований к программной системе уже в процессе разработки. В основном требования корректируются из-за того, что само осуществление программного проекта часто изменяет проблему. Использование системы, после того как она разработана и установлена, заставляет пользователей лучше понять и отчетливей сформулировать то, что им действительно нужно. В то же время этот процесс повышает квалификацию разработчиков в предметной области и позволяет им задавать более осмысленные вопросы, которые проясняют темные места в проектируемой системе.
Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:
Источник: studopedia.ru
Сложность программного обеспечения. Сложность программы для систем
Сложность программного обеспечения. Сложность программы для систем реального времени преимущественно определяется допустимым временем отклика, а для информационных поисковых систем количеством типов обрабатываемых переменных. Вычислительная сложность непосредственно связана с ресурсами вычислительной системы необходимы для получения совместимости законченных результатов Временная сложность алгоритма называется время счета, затрачиваемое программой для получения результатов на некотором этапе ЭВМ в зависимости от объёма исходных данных. Программная сложность характеризуется длиной программы или объёмом памяти ЭВМ, необходимой для размещения программного комплекса.
Информационную сложность можно представить, как объёмом БД, обрабатываемых комплексом программ или ёмкость оперативной внешней памяти, используемой для накопления и хранения информации при исполнении программ. Сложность текста — это длина самого короткого двоичного слова, содержащего всю информацию, необходимую для восстановления рассматриваемого текста, при помощи некоторого способа кодирования. Структурная сложность программ определяется числом взаимодействующих компонентов, числом связей между компонентами и сложностью их взаимодействия. Сложность некоторой межмодульной связи, в процессе проектирования, можно характеризовать вероятностью ошибки при её формализации и степенного влияния, этой ошибки, на последующие функционирование модулей.
Сложность комплексных программ Сложность проектирование программ Сложность проектирования программ. статическая динамическая Сложность Вычислительная Сложность программных комплекса структурных сложность комплекс подготовки модулей меж- данных программ анализа данных модульных связей Статистическая сложность Временная комплексных сложность Структурная программ сложность комплекс программ Программ Статистическая ная сложность сложность модулей Статистическая сложность комплексных Информац программ ионная сложность
Схема взаимодействия показателей вычислительной сложности и основные факторы, влияющие на их значения. (Ускорение алгоритмов. (Алфавит, табулирование, специализация алгоритмов. ) трансляция) Временная Информационная сложность Программная сложность (Язык описания трансляции)
Ускорение вычислительной Снижение алгоритмической сложность подобной сложности решаемых задач и программы растёт быстрее увеличение практически доступной любой рекурсивной функции размерности для решения Повышение сложности Сужение класса решаемых программы, вычисление и задач, выделение алгоритмов расширение алфавита наиболее эффективных для исходных данных определения узких классов
Определение характеристик сложности СВЯЗИ ДЛЯ МОДУЛЯ ДЛЯ ПС(многомодульная пр-ма) 1. Узел Точка ветвления Модуль, имеющий модуля более одного выхода 2. Дуга Последовательные Последовательность участки модуля нескольких модулей с одним выходом 3. Петля Циклические участки, модуля состоящие из нескольких модулей
Эффективность-это мера соотношения затрат и результатов функционирования программного средства. Экономический эффект -это результат внедрения некоторого мероприятия, выраженный в стоимостной форме, в виде экономии от его осуществления. Коэффициент эффективности капитала вложений- это величина годового прироста прибыли, образующаяся в результате производства или эксплуатации программного средства на один рубль единоразовых капиталовложений. Срок окупаемости- это величина, обратная коэффициенту эффективности, представляющая собой период времени, в течение которого затраты на программное средство окупаются полученным эффектом. В процессе разработки ПС в качестве критерия экономической эффективности могут быть выбраны следующие критерии: max экономическая эффективность функционирования ПС за весь период жизни цикла при ограниченных затратах на разработку программ. min затраты на разработку программ при заданной экономической эффективности применения и заданном качестве программного средства. max отношение экономической эффективности применения программного средства в течение времени эксплуатации к затратам на его создание. max разность эффекта от функционирования за всю жизнь цикла и затрат на его разработку. эксплуатацию и сопровождению.
Разработка ПС, техники, экономического анализа разработки. Определение реальных затрат Создание методов и методик прогнозирования сроков затрат ПС Обоснование и создание методов и средств снижения совокупности затрат Создание нормативных документов
Задачи, возникающие на стадии обоснования и создания методов и средств снижения совокупных затрат и сроков разработки КП. Задачи при разработки сложных КП Эффективность Развитие и Рациональное распределения повышение уровня комплексной трудовых ресурсов эффективности автоматизации технологии разработки ПС
Совокупные затраты На не Задачи возникающие на посредственн стадии обоснования и ую разработку На технология и создания методов и прогрессирование средств снижения автоматизации разработки совокупных затрат для КП данного КП На изготовление опытного образца КП На подготовку и повышение квалификации специалистов- разработчиков
Источник: present5.com
Сложность программного обеспечения
Сложность программного обеспечения представляет неотъемлемое свойство программирования и программ, которое проявляется во времени и стоимости создания программ, в объеме или длине текста программ, характеристиках ее логической структуры, задаваемой операторами передачи управления (ветвления, циклы, вызовы подпрограмм и т.д.).
Можно выделить 5 следующих источников сложности программирования:
среда выполнения программы;
технологический процесс коллективной разработки;
стремление к универсальности и эффективности алгоритмов и типов данных.
От сложности нельзя избавиться, но можно изменить характеристики ее проявления.
ОБЪЕКТНО — ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ |
ООП является третьим крупным этапом (после структурного и модульного программирования) в процессе развития структурного подхода. Создаваемые в середине 70-х годов большие программные системы продемонстрировали, что в рамках процедурно ориентированного стиля использование структурного подхода не дает желаемого результата.
С увеличением числа компонентов в создаваемых программных системах число ошибок, связанных с неправильным использованием процедур, некорректным использованием связей между компонентами, стало нелинейно расти. Сроки ввода в эксплуатацию этих систем постоянно срывались.
Уменьшить число подобных ошибок и упростить их обнаружение могла позволить алгоритмическая декомпозиция, ориентирующаяся на естественные элементы пространства решаемой задачи. В этом случае на этапе кодирования и отладки упрощалось сопоставление программистских конструкций с моделируемыми объектами. Такую декомпозицию станем называть объектно-ориентированным анализом пространства решаемой задачи или предметной области. Для описания результатов объектно-ориентированного анализа и последующего программного синтеза необходимы адекватные программные средства, построенные на определенных принципах.
Введение типов данных обозначило еще одно направление развития технологии программирования. Типизация данных предназначена для облегчения составления программ и для автоматизации выявления ошибок использования данных в виде фактических параметров при вызове функций.
Результатом обобщения понятия «тип данных» являются классы объектов (С++) или объектные типы Object Pascal ), которые могут содержать в качестве элементов не только данные определенного типа, но и методы их обработки – функции и процедуры.
Классами называются специальные типы, которые содержат поля, методы и свойства. Конкретный экземпляр класса называется объектом. В основе классов лежат три фундаментальных принципа: инкапсуляция, наследование и полиморфизм.
Класс представляет собой единство трех сущностей – полей, методов и свойств. Объединение этих сущностей в единое целое и называется инкапсуляцией. Инкапсуляция позволяет во многом изолировать класс от остальных частей программы, сделать его самодостаточным для решения конкретной задачи. Например, в объектно-ориентированном языке программирования Object Pascal класс TForm содержит все необходимое для создания Windows -окна, класс TMemo представляет собой полнофункциональный текстовый редактор, класс обеспечивает работу программы с таймером и т. д. Инкапсуляция представляет собой мощное средство обмена готовыми к работе программными заготовками.
Любой класс может быть порожден от другого класса. Для этого при его объявлении указывается имя класса родителя.Порожденный класс автоматически наследует поля, методы и свойства своего родителя и может дополнять их новыми.
Полиморфизм – это свойство классов решать схожие по смыслу задачи разными способами. Изменяя алгоритм того или иного метода в потомках класса, программист может придать этим потомкам отсутствующие у родителя специфические свойства. Для изменения метода необходимо перекрыть его в потомке, т. е. объявить в потомке одноименный метод и реализовать в нем нужные действия.
Полями называются инкапсулированные в классе данные. Поля могут быть любого типа, в том числе – классами. Каждый объект получает уникальный набор полей, но общий для всех объектов данного класса набор методов и свойств. Фундаментальный принцип инкапсуляции требует обращаться к полям только с помощью методов и свойств класса.
Инкапсулированные в классе процедуры и функции называются методами.
В состав любого класса входят два специальных метода конструктор и деструктор, Конструктор распределяет объект в динамической памяти и помещает адрес этой памяти в специальную переменную, которая автоматически объявляется в классе. Деструктор удаляет объект из динамической памяти.
Свойства – это специальный механизм классов, регулирующий доступ к полям. Обычно свойство связано с некоторым полем и указывает те методы класса, которые должны использоваться при записи в это поле или при чтении из него.
Компоненты и события
В визуальных системах программирования каркас программы, во всяком случае – ее видимые на экране внешние проявления: окна, кнопки, списки выбора и т.д. создаются программистом из компонентов. Под компонентом понимается некий функциональный элемент, содержащий определенные свойства и размещаемый программистом в специальном окне (окне формы). Способность программы выполнять полезную работу определяется совокупностью ее реакций на те или иные события. В связи с этим каждый компонент помимо свойств характеризуется также набором событий, на которые он может реагировать. Например, компонент формы «кнопка» может по разному реагировать на однократный щелчек мыши и двойной щелчек мыши.
Статьи к прочтению:
- Службы федерации active directory
- Служит для возобновления работы службы, приостановленной командой net pause.
01 — Постановка задачи на разработку ПО. Сложность. Законы развития
Похожие статьи:
- Тема 8. программное обеспечение и технологии программирования. Системное ПО (System Software) – это программы и комплексы программ, являющиеся общими для всех, кто совместно использует технические средства…
- Этапы разработки программного обеспечения Существует государственный стандарт, который устанавливает стадии разработки программ и программной документации для вычислительных машин, комплексов и…
Источник: csaa.ru