Разработка программных средств для решения экономических задач

Автор работы: Пользователь скрыл имя, 18 Августа 2013 в 16:04, курсовая работа

Краткое описание

Существуют следующие общие принципы разработки программных средств: частотный принцип, принцип модульности, принцип функциональной избирательности, принцип генерируемости, принцип функциональной избыточности, принцип «по умолчанию».

Вложенные файлы: 1 файл

4. Теоритическая часть.docx

— 42.45 Кб (Скачать файл)

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

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

Объектно-ориентированное, или объектное, программирование (в дальнейшем ООП) — парадигма программирования, в которой основными концепциями являются понятия объектов и классов. В случае языков с прототипированием, быстрой «черновой» реализацией базовой функциональности для анализа работы системы в целом, вместо классов используются объекты-прототипы.

Определение ООП и его основные концепции

В центре ООП находится  понятие объекта. Объект — это сущность, которой можно посылать сообщения, и которая может на них реагировать, используя свои данные. Данные объекта скрыты от остальной программы. Сокрытие данных называется инкапсуляцией.

Наличие инкапсуляции достаточно для объектности языка программирования, но ещё не означает его объектной  ориентированности — для этого требуется наличие наследования.

Но даже наличие инкапсуляции и наследования не делает язык программирования в полной мере объектным с точки  зрения ООП. Основные преимущества ООП  проявляются только в том случае, когда в языке программирования реализован полиморфизм; то есть возможность объектов с одинаковой спецификацией иметь различную реализацию.

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

Сложности определения

ООП имеет уже более чем сорокалетнюю историю, но, несмотря на это, до сих  пор не существует чёткого общепринятого  определения данной технологии[2]. Основные принципы, заложенные впервые объектные языки и системы, подверглись существенному изменению (или искажению) и дополнению при многочисленных реализациях последующего времени. Кроме того, примерно с середины 1980-х годов термин «объектно-ориентированный» стал модным, в результате с ним произошло то же самое, что несколько раньше с термином «структурный» (ставшим модным после распространения технологии структурного программирования) — его стали искусственно «прикреплять» к любым новым разработкам, чтобы обеспечить им привлекательность. Бьёрн Страуструп в 1988 году писал, что обоснование «объектной ориентированности» чего-либо, в большинстве случаев, сводится к ложному силлогизму: «X — это хорошо. Объектная ориентированность — это хорошо. Следовательно, X является объектно-ориентированным».

Основные  принципы ООП

  1. Всё является объектом.
  2. Вычисления осуществляются путём взаимодействия (обмена данными) между объектами, при котором один объект требует, чтобы другой объект выполнил некоторое действие. Объекты взаимодействуют, посылая и получая сообщения. Сообщение — это запрос на выполнение действия, дополненный набором аргументов, которые могут понадобиться при выполнении действия.
  3. Каждый объект имеет независимую память, которая состоит из других объектов.
  4. Каждый объект является представителем класса, который выражает общие свойства объектов (таких, как целые числа или списки).
  5. В классе задаётся поведение (функциональность) объекта. Тем самым все объекты, которые являются экземплярами одного класса, могут выполнять одни и те же действия.
  6. Классы организованы в единую древовидную структуру с общим корнем, называемую иерархией наследования. Память и поведение, связанное с экземплярами определённого класса, автоматически доступны любому классу, расположенному ниже в иерархическом дереве.

Таким образом, программа представляет собой набор объектов, имеющих  состояние и поведение. Объекты  взаимодействуют посредством сообщений. Естественным образом выстраивается  иерархия объектов: программа в целом — это объект, для выполнения своих функций она обращается к входящим в неё объектам, которые, в свою очередь, выполняют запрошенное путём обращения к другим объектам программы. Естественно, чтобы избежать бесконечной рекурсии в обращениях, на каком-то этапе объект трансформирует обращённое к нему сообщение в сообщения к стандартным системным объектам, предоставляемым языком и средой программирования.

Устойчивость и управляемость  системы обеспечивается за счёт чёткого  разделения ответственности объектов (за каждое действие отвечает определённый объект), однозначного определения  интерфейсов межобъектного взаимодействия и полной изолированности внутренней структуры объекта от внешней  среды (инкапсуляции).

Определить ООП можно и многими  другими способами.

Концепции

Появление в ООП отдельного понятия  класса закономерно вытекает из желания иметь множество объектов со сходным поведением. Класс в ООП — это в чистом виде абстрактный тип данных, создаваемый программистом. С этой точки зрения объекты являются значениями данного абстрактного типа, а определение класса задаёт внутреннюю структуру значений и набор операций, которые над этими значениями могут быть выполнены. Желательность иерархии классов (а значит, наследования) вытекает из требований к повторному использованию кода — если несколько классов имеют сходное поведение, нет смысла дублировать их описание, лучше выделить общую часть в общий родительский класс, а в описании самих этих классов оставить только различающиеся элементы.

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

Отдельного пояснения требует  понятие обмена сообщениями. Первоначально (например, в том же Smalltalk) взаимодействие объектов представлялось как «настоящий» обмен сообщениями, то есть пересылка от одного объекта другому специального объекта-сообщения. Такая модель является чрезвычайно общей. Она прекрасно подходит, например, для описания параллельных вычислений с помощью активных объектов, каждый из которых имеет собственный поток исполнения и работает одновременно с прочими. Такие объекты могут вести себя как отдельные, абсолютно автономные вычислительные единицы. Посылка сообщений естественным образом решает вопрос обработки сообщений объектами, присвоенными полиморфным переменным — независимо от того, как объявляется переменная, сообщение обрабатывает код класса, к которому относится присвоенный переменной объект.

Однако общность механизма обмена сообщениями имеет и другую сторону — «полноценная» передача сообщений требует дополнительных накладных расходов, что не всегда приемлемо. Поэтому в большинстве ныне существующих объектно-ориентированных языков программирования используется концепция «отправка сообщения как вызов метода» — объекты имеют доступные извне методы, вызовами которых и обеспечивается взаимодействие объектов. Данный подход реализован в огромном количестве языков программирования, в том числе C++, Object Pascal, Java, Oberon-2. В настоящий момент именно он является наиболее распространённым в объектно-ориентированных языках.

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

  1. Инструментарий технологии программирования

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

  1. Средства для создания приложений:

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

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

– языки и системы программирования;

– инструментальные среда  пользователя.

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

  1. Средства для создания информационных систем (Case–технология),

CASE (англ. Computer-Aided Software Engineering) — набор инструментов и методов программной инженерии для проектирования программного обеспечения, который помогает обеспечить высокое качество программ, отсутствие ошибок и простоту в обслуживании программных продуктов.

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

Классификация

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

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

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

Типичными CASE инструментами являются: инструменты управления конфигурацией; инструменты моделирования данных; инструменты анализа и проектирования; инструменты преобразования моделей; инструменты редактирования программного кода; инструменты рефакторинга кода; генераторы кода; инструменты для построения UML-диаграмм.

 


Информация о работе Разработка программных средств для решения экономических задач