admin / 27.11.2017
Разработка программного обеспечения — сложный процесс, как технологически, так и организационно. Необходимость разработки программ для бизнеса очевидна, если Вы хотите не стоять на месте, а развиваться и становиться лидерами в своей области.
Почему именно разработка ПО, а не покупка готовых решений? Ответ на это вопрос лежит в области организации и управления бизнес процессами:
Пример:
Возьмем две риэлтерские компании. В одной компании агенты являются самостоятельными и эффективность их работы оценивается только по их личным результатам. В другой компании система управления построена по направлениям и эффективность считается по работе структурного подразделения и их сотрудников. Для каждой из этих компании ПО будет отличаться – будут отличаться системы отчетов, формирование клиентской базы и т.д..
Процесс разработки ПО начинается с запроса в компанию. Как только Вы написали или позвонили, работа началась. Приблизительно схема разработки ПО выглядит следующим образом:
|
|
|
|
|
Анализ задачи |
Формирование проекта |
Разработка ПО |
Внедрение |
Обучение персонала |
Как это происходит у нас:
После запроса и постановки задачи, формируется проектное задание и наши специалисты проводят проектное исследования, в процесс которого выясняются следующие моменты:
Данные полученные в процессе изучения служат основой для формирования Технического Задания на разработку ПО.
Кроме описанных данных в проектную документацию может входить:
Процесс разработки программного обеспечения занимает много времени. CRM для среднего бизнеса разрабатывается от 4 до 8 месяцев. Большинство разработчиков ПО кроме непосредственно разработки отводят от 2 до 6 месяцев на внедрение своих программных продуктов. ПО разрабатываемое в нашей компании не требует столько времени на внедрение. За счет применимых технологий внедрение нашего ПО сводится развёртыванию программного комплекса на сервере и обучению персонал работе с программой. Преимущество нашего ПО в том, что мы разрабатываем ПО на основе WEB-технологий, которые позволяют не только решать любые задачи, которые обычно ставятся перед прикладным ПО, но и дают возможность работы в программе из любого места земного шара.
Принцип – все и всегда под контролем, заложен в любой наш программный комплекс. Такие решения дают преимущества для руководителей и владельцев бизнеса — процесс контроля не останавливается ни на минуту, независимо от нахождения руководителя. Контролировать работу организации можно из любого места – необходим лишь доступ в интернет и ноутбук или даже мобильный девайс.
Еще одно преимущество технологий, применяемых при разработке ПО – наше программное обеспечение не привязано к конкретному компьютеру или месту. Вы можете даже не использовать офис для работы. Решения, разработанные в ОРБсофт подходят для любого бизнеса, особенно для компаний с распределенной структурой. Целые филиальные сети можно легко объединить и сделать их более управляемыми с помощью наших разработок.
Мы создаем гибкие, легко настраиваемые программные решения, которые способны развиваться вместе с вашим бизнесом. При этом вы получаете полный набор услуг, включающий: Разработку непосредственно самого программного продукта по согласованному с вами техническому заданию. Интеграцию нового решения в имеющуюся у вас систему программного обеспечения. Обучение персонала и сопровождение разработанного программного обеспечения на протяжении всего его жизненного цикла. Консультации по конфигурации аппаратных средств и по выбору компьютерного оборудования для комплексного решения задач автоматизации предприятия клиента.
Мы разработаем для Вас :
и другие программы под Ваши задачи.
Возможна интеграция созданных нами программ в систему автоматизированного управления предприятием.
Цены на разработку программного обеспечения зависят от сложности проекта и определяются на этапе разработки технического задания.
Более подробно с разработанными программными системами, полезными пользователям и разработчикам, можно на странице нашего сайта Программное обеспечение.
Содержание
В корне деятельности по созданию и использованию программного обеспечения (ПО) лежит понятие его жизненного цикла (ЖЦ). ЖЦ является моделью создания и использования ПО, отражающей ее различные состояния, начиная с момента возникновения крайне важно сти в данном программном изделии и заканчивая моментом его полного выхода из употребления у всех без исключения пользователей.
Традиционно выделяют следующие основные этапы ЖЦ ПО:
— анализ требований,
— проектирование,
— кодирование (программирование),
— тестирование и отладка,
— эксплуатация и сопровождение.
Существующие модели ЖЦ определяют порядок выполнения этапов в ходе разработки, а также критерии перехода от этапа к этапу.
Главная особенность индустрии ПО состоит в концентрации сложности на начальных этапах ЖЦ (анализ, проектирование) при относительно невысокой сложности и трудоемкости последующих этапов. Более того, нерешенные вопросы и ошибки, допущенные на этапах анализа и проектирования, порождают на последующих этапах трудные, часто неразрешимые проблемы и, в конечном счете, приводят к неуспеху всего проекта. [Калянов Г.Н. CASE-технологии. Консалтинг при автоматизации бизнес процессов. 2-е изд. – М.: Горячая линия – Телеком, 2000. – 320 с., ил. Стр.
20 — 22]
Первые четыре этапа определяют ЖЦ разработки ПО и (более или менее подробно) рассматриваются в данном курсе.
В [11, стр.
36-37] дается разграничение понятий метода и методологии. Метод — ϶ᴛᴏ последовательный процесс создания моделей, которые описывают вполне определенными средствами различные стороны разрабатываемой программной системы. Методология — ϶ᴛᴏ совокупность методов, применяемых в ЖЦ разработки ПО и объединенных одним общим философским подходом.
Методы важны, так как они упорядочивают процесс создания сложных программных систем.
Методы появились как ответ на растущую сложность программных систем. В 60-70-е годы было разработано много методов, помогающих справиться с растущей сложностью программ. Сегодня все методы можно разделить на три группы:
— метод структурного проектирования сверху вниз,
— метод потоков данных,
— метод объектно-ориентированного проектирования.
Наибольшее распространение получило структурное проектирование по методу сверху вниз. Структурное проектирование использует следующий подход, определяемый топологией традиционных языков высокого уровня: применяется алгоритмическая декомпозиция для разбиения большой задачи на более мелкие. И сейчас значение структурного подхода осталось прежним, но, как замечает Стейн, ʼʼоказалось, что структурный подход не работает, в случае если объём программы превышает приблизительно 100 000 строкʼʼ (цит. по [11, стр.
36]).
Объектно-ориентированный подход включает в себя объектно-ориентированные анализ, проектирование и программирование.
ОО Анализ – на этом этапе определяются абстракции и их общие свойства.
В процессе анализа предметной области выделяются абстракции, наличие которых существенно упрощает разработку прикладной задачи. Рассмотрим, к примеру, понятие (абстракцию) рациональная дробь. В С++ абстракции определяются с помощью классов (класс – абстракция, экземпляр класса – конкретный объект). Определим общие свойства для класса Рациональная дробь: должны иметь возможность хранить корректные значения дроби со знаком, должны иметь возможность выполнять все арифметические операции и операции ввода-вывода – или, другими словами, должны иметь возможность использовать их в программе аналогично тому, как и базовые числовые типы языка.
ОО Проектирование – на этом этапе крайне важно сначала точно сформулировать все особенности поведения объектов выделенных классов, а затем четко определить интерфейс выделенных классов на конкретном языке программирования. После этого выработка приложения должна быть разделена на два направления, работа по которым может выполняться относительно независимо друг от друга. Одно направление предполагает разработку и реализацию классов – или, другими словами, специальных инструментальных средств, ориентированных на решение конкретной задачи. Другое направление связано с разработкой и реализацией самого приложения (прикладной программы – ПП) в терминах новых классов (как бы с использованием новой версии языка программирования, включающей в себя новые типы данных, необходимые для конкретной ПП). Реализация класса скрыта от его использования и не должна мешать применению класса в ПП. В случае если требуется изменить реализацию — ϶ᴛᴏ не должно приводить к изменению самого приложения.
К примеру, для упомянутого ранее класса Рациональная дробь на данном этапе можно ввести следующие уточнения: состояние класса – числитель и знаменатель дроби, знаменатель обязательно отличен от нуля и всегда положителен (знак дроби определяет ее числитель); числитель и знаменатель дроби всегда представлены в виде взаимно простых чисел. Поведение класса – набор необходимых операций из постановки задачи (математические операции, ввод-вывод, сравнения и т.п.), представленных в виде привычных знаков арифметических операций (+, — и т.п.; это возможно при использовании языка программирования С++). Теперь можно независимо разрабатывать класс Рациональная дробь и ПП.
ОО Программирование и отладка – используются конкретные инструментальные средства; в нашем распоряжении – Borland С++ или Visual C++ (в зависимости от лабораторного класса). Конечно, на этом этапе при отладке ПП должна быть доступна какая-то реализованная версия класса Рациональная дробь. Изменения и дополнения, которые бывают внесены в класс Рациональная дробь, не должны требовать перепрограммирования ПП. Модификация ПП и изменения в предметной области могут привести к появлению дополнительных требований к классу; опять же новые возможности класса не должны оказать серьезное влияние на старые уже существующие версии ПП.
Определение объектно-ориентированного языка программирования (ООЯП)
ООЯП — ϶ᴛᴏ язык программирования, обладающий набором определенных свойств. Главными свойствами ООЯП являются абстракция, инкапсуляция, наследование, полиморфизм.
Абстракция — ϶ᴛᴏ свойство, позволяющее создавать новые типы данных, выделяя общие абстрактные свойства этих типов.
Инкапсуляция – скрытие информации; механизм, который объединяет данные и код, манипулирующий с этими данными, а также защищает и то, и другое от внешнего вмешательства или неправильного использования.
Наследование — ϶ᴛᴏ процесс, посредством которого один объект может приобретать свойства другого (точнее, объект может наследовать свойства другого объекта и добавлять к ним черты, характерные только для него). К примеру, роза или ромашка — ϶ᴛᴏ разные разновидности некоторого общего (родительского) класса, называемого цветком. В свою очередь, цветок — ϶ᴛᴏ разновидность еще более общего класса растение, и т.д. В каждом случае порожденный класс наследует все связанные с родителем качества и добавляет к ним свои собственные определяющие характеристики.
Полиморфизм — ϶ᴛᴏ свойство, ĸᴏᴛᴏᴩᴏᴇ позволяет одно и то же имя использовать для решения двух или более схожих, но технически разных задач. К примеру, в не ОО языках программирования нахождение абсолютной величины числа требует нескольких различных функций – исходя из типов аргумента и результата (к примеру, в С — ϶ᴛᴏ abs() для данных типа int, labs() для данных типа long и fabs() для данных типа double). В ООЯП каждая из этих функций должна быть названа abs(). Тип данных, который используется при вызове функции, определяет, какая конкретно версия функции действительно выполняется.
Системы принятия и синтеза решений, реализующие диалоговый принцип взаимодействия, оформляются в виде пакетов прикладных программ, под которыми подразумевается совокупность программ, совместимых между собой и обеспечивающих решение задач из некоторой предметной области [З].
Основные принципы проектирования программных средств применительно к процессам принятия и синтеза решений следующие.
В основе построения пакетов программ лежит принцип конструктивной независимости, который предполагает разработку универсальной структуры пакета и некоторых его элементов.
Важнейшим принципом построения является модульность программных объектов. Данный принцип означает дискретность структуры пакета и унификацию программных средств в целях формирования различных вычислительных схем, предназначенных для решения задач синтеза и выбора решений.
Унификация программных средств проявляется в том, что каждая программная единица (модуль) предназначена для выполнения определенных функций и взаимодействует с данными некоторым стандартным способом. В этом заключается очередной технологический принцип построения системы — принцип стандартизации взаимодействия программ с данными, который предполагает использование единых методики и механизма подключения программных средств к данным.
Принцип машинной независимости пакетов программ предусматривает возможность эксплуатации разработанного программного и информационного обеспечения при смене типов и поколений вычислительной техники.
Для успешной реализации этого принципа необходимо прежде всего выбрать универсальный алгоритмический язык. В качестве такого языка может быть выбран Си++ в силу его широкой распространенности на современных персональных ЭВМ.
Принцип максимальной независимости от операционных систем непосредственно связан с принципом машинной независимости и преемственности систем.
Необходимое условие жизнеспособности программного обеспечения — соблюдение принципа расширяемости, согласно которому пакеты программ являются открытыми системами, допускающими их непрерывное пополнение новыми программными средствами. Реализация этого принципа возможна лишь при соблюдении принципа модульности структуры пакета программ.
При разработке программного обеспечения для решения сложных задач принятия, планирования и синтеза решений, требующих активного вмешательства или непосредственного участия человека в процессе решения, особенно важно следовать принципу коммуникабельности, который предполагает простоту общения пользователя с пакетом и предусматривает работу в интерактивном режиме.
Возврат В начало На главную
Выделены и охарактеризованы основные этапы разработки программного обеспечения. Для каждого этапа приведены и описаны средства, которые могут быть применены для достижения целей этапа.
1. Терминология
Прежде чем приступить к рассмотрению средств разработки, которые могут быть применены для создания программ, необходимо определиться с основными понятиями, терминами, которые будут использоваться в статье. В соответствии с тематикой статьи базовым термином для нас, конечно же, является «средства разработки программ». Применительно к области разработки программного обеспечения данное определение может звучать следующим образом:
Средства разработки программного обеспечения – совокупность приемов, методов, методик, а также набор инструментальных программ (компиляторы, прикладные/системные библиотеки и т.д.), используемых разработчиком для создания программного кода Программы, отвечающего заданным требованиям.
С учетом данного определения термин «Разработка программ» будет звучать следующим образом:
Разработка программ – сложный процесс, основной целью которого является создание, сопровождение программного кода, обеспечивающего необходимый уровень надежности и качества. Для достижения основной цели разработки программ используются средства разработки программного обеспечения.
2. Основные средства, используемые на разных этапах разработки программ
В зависимости от предметной области и задач, поставленных перед разработчиками, разработка программ может представлять собой достаточно сложный, поэтапный процесс, в котором задействовано большое количество участников и разнообразных средств. Для того, чтобы определить, когда и в каких случаях какие средства применяются, выделим основные этапы разработки программного обеспечения. Наибольший интерес для проблематики рассматриваемого вопроса представляют следующие этапы разработки:
Здесь сознательно опущены этапы, связанные с написанием технического задания, планирования сроков, бюджета и т.д. Причина этого заключается в том, что на данных этапах, за редким исключением, практически не используются специфические средства разработки.
2.1 Средства проектирования приложений
На этапе проектирования приложения в зависимости от сложности разрабатываемого программного продукта, напрямую зависящего от предъявляемых требований, выполняются следующие задачи проектирования:
Результатом проектирования обычно является «Эскизный проект» (Software Design Document) или «Технический проект» (Software Architecture Document). Задача «Анализ требований» обычно выполняется с использованием методов системологии (анализа и синтеза) с учетом экспертного опыта проектировщика.
Результатом анализа обычно является содержательная или формализованная модель процесса функционирования программы. В зависимости от сложности процесса для построения данных моделей могут быть применены различные методы и вспомогательные средства.
В общем случае для описания моделей обычно применяются следующие нотации (в скобках приведены программные средства, которые могут быть использованы для получения моделей):
Иногда, когда разрабатываемый программный продукт предназначен для автоматизации какой-либо сложной деятельности задача Анализа (Моделирования) выполняется до составления технических требований к будущему продукту. Результаты анализа позволяют сформировать обоснованные требования к той или иной функциональности разрабатываемой программы и просчитать реальную выгоду от внедрения разрабатываемого продукта. Более того, иного получается так, что по результатам анализа первоначальные цели и задачи автоматизации кардинально меняются или по результатам оценки эффективности разработки и внедрения принимается решение продукт не разрабатывать.
Целью второй и третьей задачи из приведенного списка задач является разработка модели (описания) будущей системы, понятной для кодировщика – человека, который пишет код программы. Здесь огромное значение имеет то, какую парадигму программирования (парадигму программирования также необходимо рассматривать как средство разработки) необходимо использовать при написании программы. В качестве примера основных парадигм необходимо привести следующее:
Выбор её во многом зависит от сложившихся привычек, опыта, традиций, инструментальных средств, которыми располагает коллектив разработчиков. Иногда разрабатываемый программный продукт настолько сложен, что для решения ряда задач в разных компонентах системы используются разные парадигмы. Необходимо отметить, что выбор того или иного подхода накладывает ограничения на средства, которые будут применены на этапе реализации программного кода. Результатом решения данной задачи в зависимости от подхода могут быть (в скобках приведены программные средства, которые могут быть использованы для их получения):
Разработка макетов пользовательских интерфейсов подразумевает создание наглядного представления того, как будут выглядеть те или иные видеоформы, окна в разрабатываемом приложении. Решение данной задачи основывается на применение средств дизайнера, которые в данной статье рассматриваться не будут.
2.2 Средства реализации программного кода
На этапе реализации программного кода выполняется кодирование отдельных компонент программы в соответствии с разработанным техническим проектом.
Средства, которые могут быть применены, в значительной степени зависит от того, какие подходы были использованы во время проектирования и, кроме этого, от степени проработанности технического проекта. Тем не менее, среди средств разработки программного кода необходимо выделить следующие основные виды средств (в скобках приведено примеры средств): • методы и методики алгоритмирования.
2.3 Средства тестирования программ
Основными задачами тестирования является проверка соответствия функциональности разработанной программы первоначальным требованиям, а также выявление ошибок, которые в явном или неявном виде проявляются во время работы программы. Среди основных работ по тестированию можно выделить следующее:
Среди основных видов средств, которые могут быть применены для выполнения поставленных работ можно привести следующие:
3. Заключение
Процесс разработки программ является сложным процессом и то, какие средства необходимо применять во многом зависит от задач, поставленным перед разработчиками. В независимости от задач разработки средства нельзя ограничивать лишь набором каких-то инструментальных средств, также необходимо включать методы, методики, подходы и все-то, что применяется для создания программы, отвечающей заданным требованиям.
Такжесмотрите:
1. Обзор программного продукта Borland SilkTest 2009 (функциональное тестирование).
Лектор (ы): Руководители лабораторных работ:
Примеры модульной структуры программы с использованием библиотек программных функций.
Инструкции к лабораторным.
FILED UNDER : IT