admin / 27.11.2017

Раздел 1. Основы разработки по 4

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

Почему именно разработка ПО, а не покупка готовых решений? Ответ на это вопрос лежит в области организации и управления бизнес процессами:

  1. Любой бизнес имеет свою специфику. Имеется в виду отраслевую специфику;
  2. Бизнес процессы в каждой организации отличаются от управленческой практики в других компаниях, работающих в том же сегменте рынка;
  3. Задачи, которые должно выполнять ПО, различны. В зависимости от типа компании, стадии ее развития, корпоративной структуры, упор делается на различные области управления.

 

Пример:

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

 

Процесс разработки ПО начинается с запроса в компанию. Как только Вы написали или позвонили, работа началась. Приблизительно схема разработки ПО выглядит следующим образом:

 

 

 

 

 

 

 

Анализ задачи

Формирование проекта

Разработка ПО

Внедрение

Обучение персонала

 

Как это происходит у нас:

После запроса и постановки задачи, формируется проектное задание и наши специалисты проводят проектное исследования, в процесс которого выясняются следующие моменты:

  1. Проводится анализ бизнес-процессов компании;
  2. Анализируется информационный потоки, необходимые для успешного управления оперативной деятельностью компании;
  3. Определяются, необходимые для принятия организационных решений, данные, которые должны формироваться программой;
  4. Определяются исходные данные для построения финансовых и организационных отчетов;
  5. Анализируется структура компании и формируется иерархия доступа к информации и отчетам

Данные полученные в процессе изучения служат основой для формирования Технического Задания на разработку ПО.

Кроме описанных данных в проектную документацию может входить:

  1. Требования к визуализации самого ПО и формируемых отчетов;
  2. Требования к безопасности ПО;
  3. Параметры тестирования и обслуживания программного комплекса;
  4. Описание процесса обучения.

 

Процесс разработки программного обеспечения занимает много времени. CRM для среднего бизнеса разрабатывается от 4 до 8 месяцев. Большинство разработчиков ПО кроме непосредственно разработки отводят от 2 до 6 месяцев на внедрение своих программных продуктов. ПО разрабатываемое в нашей компании не требует столько времени на внедрение. За счет применимых технологий внедрение нашего ПО сводится развёртыванию программного комплекса на сервере и обучению персонал работе с программой. Преимущество нашего ПО в том, что мы разрабатываем ПО на основе WEB-технологий, которые позволяют не только решать любые задачи, которые обычно ставятся перед прикладным ПО, но и дают возможность работы в программе из любого места земного шара.

Принцип – все и всегда под контролем, заложен в любой наш программный комплекс. Такие решения дают преимущества для руководителей и владельцев бизнеса —  процесс контроля не останавливается ни на минуту, независимо от нахождения руководителя. Контролировать работу организации можно из любого места – необходим лишь доступ в интернет и ноутбук или даже мобильный девайс.

Еще одно преимущество технологий, применяемых при разработке ПО – наше программное обеспечение не привязано к конкретному компьютеру или месту. Вы можете даже не использовать офис для работы. Решения, разработанные в ОРБсофт подходят для любого бизнеса, особенно для компаний с распределенной структурой. Целые филиальные сети можно легко объединить и сделать их более управляемыми с помощью наших разработок.

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

Мы разработаем для Вас :

  • программы автоматизации документооборота 
  • программы учета материальных средств 
  • программы учета заказов 
  • программы автоматизации производства 
  • программы автоматизации бизнеса 
  • программы учета финансовых средств 

и другие программы под Ваши задачи.
Возможна интеграция созданных нами программ в систему автоматизированного управления предприятием.

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

Более подробно с разработанными программными системами, полезными пользователям и разработчикам, можно на странице нашего сайта Программное обеспечение.

Заказать услугу

В корне деятельности по созданию и использованию программного обеспечения (ПО) лежит понятие его жизненного цикла (ЖЦ). ЖЦ является моделью создания и использования ПО, отражающей ее различные состояния, начиная с момента возникновения крайне важно сти в данном программном изделии и заканчивая моментом его полного выхода из употребления у всœех без исключения пользователœей.

Традиционно выделяют следующие основные этапы ЖЦ ПО:

— анализ требований,

— проектирование,

— кодирование (программирование),

— тестирование и отладка,

— эксплуатация и сопровождение.

Существующие модели ЖЦ определяют порядок выполнения этапов в ходе разработки, а также критерии перехода от этапа к этапу.

Главная особенность индустрии ПО состоит в концентрации сложности на начальных этапах ЖЦ (анализ, проектирование) при относительно невысокой сложности и трудоемкости последующих этапов. Более того, нерешенные вопросы и ошибки, допущенные на этапах анализа и проектирования, порождают на последующих этапах трудные, часто неразрешимые проблемы и, в конечном счете, приводят к неуспеху всœего проекта. [Калянов Г.Н. CASE-технологии. Консалтинг при автоматизации бизнес процессов. 2-е изд. – М.: Горячая линия – Телœеком, 2000. – 320 с., ил. Стр.

20 — 22]

Первые четыре этапа определяют ЖЦ разработки ПО и (более или менее подробно) рассматриваются в данном курсе.

В [11, стр.

36-37] дается разграничение понятий метода и методологии. Метод — ϶ᴛᴏ последовательный процесс создания моделœей, которые описывают вполне определœенными средствами различные стороны разрабатываемой программной системы. Методология — ϶ᴛᴏ совокупность методов, применяемых в ЖЦ разработки ПО и объединœенных одним общим философским подходом.

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

Методы появились как ответ на растущую сложность программных систем. В 60-70-е годы было разработано много методов, помогающих справиться с растущей сложностью программ. Сегодня всœе методы можно разделить на три группы:

— метод структурного проектирования сверху вниз,

— метод потоков данных,

— метод объектно-ориентированного проектирования.

Наибольшее распространение получило структурное проектирование по методу сверху вниз. Структурное проектирование использует следующий подход, определяемый топологией традиционных языков высокого уровня: применяется алгоритмическая декомпозиция для разбиения большой задачи на более мелкие. И сейчас значение структурного подхода осталось прежним, но, как замечает Стейн, ʼʼоказалось, что структурный подход не работает, в случае если объём программы превышает приблизительно 100 000 строкʼʼ (цит. по [11, стр.

36]).

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

ОО Анализ – на этом этапе определяются абстракции и их общие свойства.

Software development

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

ОО Проектирование – на этом этапе крайне важно сначала точно сформулировать всœе особенности поведения объектов выделœенных классов, а затем четко определить интерфейс выделœенных классов на конкретном языке программирования. После этого выработка приложения должна быть разделœена на два направления, работа по которым может выполняться относительно независимо друг от друга. Одно направление предполагает разработку и реализацию классов – или, другими словами, специальных инструментальных средств, ориентированных на решение конкретной задачи. Другое направление связано с разработкой и реализацией самого приложения (прикладной программы – ПП) в терминах новых классов (как бы с использованием новой версии языка программирования, включающей в себя новые типы данных, необходимые для конкретной ПП). Реализация класса скрыта от его использования и не должна мешать применению класса в ПП. В случае если требуется изменить реализацию — ϶ᴛᴏ не должно приводить к изменению самого приложения.

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

ОО Программирование и отладка – используются конкретные инструментальные средства; в нашем распоряжении – Borland С++ или Visual C++ (в зависимости от лабораторного класса). Конечно, на этом этапе при отладке ПП должна быть доступна какая-то реализованная версия класса Рациональная дробь. Изменения и дополнения, которые бывают внесены в класс Рациональная дробь, не должны требовать перепрограммирования ПП. Модификация ПП и изменения в предметной области могут привести к появлению дополнительных требований к классу; опять же новые возможности класса не должны оказать серьезное влияние на старые уже существующие версии ПП.

Определœение объектно-ориентированного языка программирования (ООЯП)

ООЯП — ϶ᴛᴏ язык программирования, обладающий набором определœенных свойств. Главными свойствами ООЯП являются абстракция, инкапсуляция, наследование, полиморфизм.

Абстракция — ϶ᴛᴏ свойство, позволяющее создавать новые типы данных, выделяя общие абстрактные свойства этих типов.

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

Наследование — ϶ᴛᴏ процесс, посредством которого один объект может приобретать свойства другого (точнее, объект может наследовать свойства другого объекта и добавлять к ним черты, характерные только для него). К примеру, роза или ромашка — ϶ᴛᴏ разные разновидности некоторого общего (родительского) класса, называемого цветком. В свою очередь, цветок — ϶ᴛᴏ разновидность еще более общего класса растение, и т.д. В каждом случае порожденный класс наследует всœе связанные с родителœем качества и добавляет к ним свои собственные определяющие характеристики.

Полиморфизм — ϶ᴛᴏ свойство, ĸᴏᴛᴏᴩᴏᴇ позволяет одно и то же имя использовать для решения двух или более схожих, но технически разных задач. К примеру, в не ОО языках программирования нахождение абсолютной величины числа требует нескольких различных функций – исходя из типов аргумента и результата (к примеру, в С — ϶ᴛᴏ abs() для данных типа int, labs() для данных типа long и fabs() для данных типа double). В ООЯП каждая из этих функций должна быть названа abs(). Тип данных, который используется при вызове функции, определяет, какая конкретно версия функции действительно выполняется.


Этапы разработки программного обеспечения

7.4. Принципы разработки программных средств

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

Основные принципы проектирования программных средств применительно к процессам принятия и синтеза решений следующие.

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

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

Унификация программных средств проявляется в том, что каждая программная единица (модуль) предназначена для выполнения определенных функций и взаимодействует с данными некоторым стандартным способом. В этом заключается очередной технологический принцип построения системы — принцип стандартизации взаимодействия программ с данными, который предполагает использование единых методики и механизма подключения программных средств к данным.

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

Для успешной реализации этого принципа необходимо прежде всего выбрать универсальный алгоритмический язык. В качестве такого языка может быть выбран Си++ в силу его широкой распространенности на современных персональных ЭВМ.

Принцип максимальной независимости от операционных систем непосредственно связан с принципом машинной независимости и преемственности систем.

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

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

Возврат В начало На главную

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

1. Терминология

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

Средства разработки программного обеспечения – совокупность приемов, методов, методик, а также набор инструментальных программ (компиляторы, прикладные/системные библиотеки и т.д.), используемых разработчиком для создания программного кода Программы, отвечающего заданным требованиям.

        С учетом данного определения термин «Разработка программ» будет звучать следующим образом:

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

2. Основные средства, используемые на разных этапах разработки программ

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

  1. Проектирование приложения.
  2. Реализация программного кода приложения.
  3. Тестирование приложения.

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

2.1 Средства проектирования приложений

        На этапе проектирования приложения в зависимости от сложности разрабатываемого программного продукта, напрямую зависящего от предъявляемых требований, выполняются следующие задачи проектирования:

  1. Анализ требований.
  2. Разработка архитектуры будущего программного обеспечения.
  3. Разработка устройств основных компонент программного обеспечения.
  4. Разработка макетов Пользовательских интерфейсов.

        Результатом проектирования обычно является «Эскизный проект» (Software Design Document) или «Технический проект» (Software Architecture Document). Задача «Анализ требований» обычно выполняется с использованием методов системологии (анализа и синтеза) с учетом экспертного опыта проектировщика.

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

РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ПОД ЗАКАЗ ЛЮБОЙ СЛОЖНОСТИ

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

  • BPMN (Vision 2003 + BPMN, AcuaLogic BPMN, Eclipse, Sybase Power Designer).
  • Блок-схемы (Vision 2003 и многие другие).
  • ER-диаграмы (Visio 2003, ERWin, Sybase Power Designer и многие другие).
  • UML-диаграмы (Sybase Power Designer, Rational Rose и многие другие).
  • макеты, мат-модели и т.д.

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

        Целью второй и третьей задачи из приведенного списка задач является разработка модели (описания) будущей системы, понятной для кодировщика – человека, который пишет код программы. Здесь огромное значение имеет то, какую парадигму программирования (парадигму программирования также необходимо рассматривать как средство разработки) необходимо использовать при написании программы. В качестве примера основных парадигм необходимо привести следующее:

  • Функциональное программирование;
  • Структурное программирование;
  • Императивное программирование;
  • Логическое программирование;
  • Объектно-ориентированное программирование (прототипирование; использование классов; субъективно-ориентированное программирование ).

        Выбор её во многом зависит от сложившихся привычек, опыта, традиций, инструментальных средств, которыми располагает коллектив разработчиков. Иногда разрабатываемый программный продукт настолько сложен, что для решения ряда задач в разных компонентах системы используются разные парадигмы. Необходимо отметить, что выбор того или иного подхода накладывает ограничения на средства, которые будут применены на этапе реализации программного кода. Результатом решения данной задачи в зависимости от подхода могут быть (в скобках приведены программные средства, которые могут быть использованы для их получения):

  • диаграмма классов и т.д (Ration Rose, Sybase PowerDisigner и многие другие).
  • описание модулей структур и их программного интерфейса (например, Sybase PowerDisigner и многие другие).

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

2.2 Средства реализации программного кода

        На этапе реализации программного кода выполняется кодирование отдельных компонент программы в соответствии с разработанным техническим проектом.

Средства, которые могут быть применены, в значительной степени зависит от того, какие подходы были использованы во время проектирования и, кроме этого, от степени проработанности технического проекта. Тем не менее, среди средств разработки программного кода необходимо выделить следующие основные виды средств (в скобках приведено примеры средств): • методы и методики алгоритмирования.

  • языки программирования (C++,Си, Java, C#, php и многие другие);
  • средства создания пользовательского интерфейса (MFC, WPF, QT, GTK+ и т.д.)
  • средства управления версиями программного кода (cvs, svn, VSS).
  • средства получения исполняемого кода (MS Visual Studio, gcc и многие другие).
  • средства управления базами данных (Оracle, MS SQL, FireBird, MySQL и многие другие).
  • отладчики (MS Visual Studio, gdb и т.д.).

2.3 Средства тестирования программ

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

  • Тестирование на отказ и восстановление.
  • Функциональное тестирование.
  • Тестирование безопасности.
  • Тестирование взаимодействия.
  • Тестирование процесса установки.
  • Тестирование удобства пользования.
  • Конфигурационное тестирование.
  • Нагрузочное тестирование.

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

  • средства анализа кода, профилирования (Code Wizard – ParaSoft, Purify – Rational Softawre. Test Coverage – Semantic и т.д.);
  • средства для тестирования функциональности (TEST – Parasoft, QACenter – Compuware, Borland SilkTest и т.д.);
  • средства для тестирования производительности (QACenter Performance – Compuware и т.д).

3. Заключение

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

Такжесмотрите:

1. Обзор программного продукта Borland SilkTest 2009 (функциональное тестирование).

2017/18 учебный год г., Математический факультет, I курс
2 семестр(ы)
Специальности:

  • 09.03.04 — Программная инженерия.

Лектор (ы): Руководители лабораторных работ:

Содержание лекционных занятий.

  • Гл.0. Введение в процесс создания программного обеспечения (ПО). Роль проектирования. Примеры из структурного программирования.
  • Гл.1. Задачи проектирования ПО.
    • 1.1. Архитектура ПО. Моделирование (абстракция и разделение полномочий). Пример веб-системы вычислительных сервисов. Свойства для оценки архитектурных решений.
    • 1.2. Детальное проектирование. Интерфейс пользователя (человеко-машинное взаимодействие). Компонентное проектирование. Разработка алгоритмов и структур данных.
    • 1.3. Методы проектирования: модели, шаблоны, оценка.
  • Гл.2. Модели проектирования ПО.
    • 2.1. Визуальное моделирование и принцип декомпозиции (модульность).
    • 2.2. Анализ предметной области. Моделирование данных.
    • 2.3. Моделирование вычислений и алгоритмы. Моделирование поведения.
  • Гл.3. Шаблоны проектирования ПО.
    • 3.1. Спецификация. Архитектурные шаблоны. Порождающие шаблоны. Структурные шаблоны. Поведенческие шаблоны.
    • 3.2. Кодогенерация. Встроенная в код спецификация.
  • Гл.4. Оценка решений проектирования ПО.
    • 4.1. Атрибуты качества решения задачи проектирования. Метрики проектирования.
    • 4.2. Статический анализ кода и экспериментальные измерения выполнения программы.

Содержание практических занятий.

  • Тема 1. Модульная структура программы. Анализ на примерах из структурного программирования.
    • 1.1. Способы уменьшения стыковки (coupling). Способы увеличения связности (cohesion).
    • 1.2. Примеры графовых моделей программ.

      Разработка программного обеспечения на заказ

      Примеры модульной структуры программы с использованием библиотек программных функций.

  • Тема 2. Модели проектирования ПО. Анализ на примерах существующего ПО.
    • 2.1. Описание архитектуры ПО. Описание архитектуры. (1) Примеры для автономных программных приложений. (2) Примеры для мобильных сервисов. (3) Примеры для распределенных систем. (4) Примеры для систем управления автономными объектами. (5) Примеры для информационных систем. (6) Примеры для системного ПО.
    • 2.2. Модели для описания решений детального проектирования (как развитие примеров по архитектуре ПО). (1) Примеры интерфейсов для взаимодействия программных модулей. (2) Примеры интерфейсов пользователя. (3) Примеры решений с применением программных библиотек и повторно используемого кода. (4) Примеры проектирования алгоритма. (5) Примеры проектирования структуры данных.
  • Тема 3. Шаблоны проектирования ПО.
    • Виды моделей. (1) Диаграмма сущность-связь. (2) Диаграмма потоков данных. (3) Структурные модели предметной области: глоссарий, онтология, представление объектов данных, диаграмма вариантов использования. (4) Модель конечных автоматов. (5) диаграмма последовательностей. (6) ОО-модели. (7) Формальные модели.
  • Тема 4. Оценка решений проектирования ПО.
    • Модели оценивания. (1) Анализ графовых моделей. (2) верификация моделей. (3) Аудит (инспектирование) кода. (4) Автоматический статический анализ кода. (5) Анализ документации. (6) Экспериментальные измерения работы ПО.

Содержание лабораторных работ.

Инструкции к лабораторным.

  • Тема 1. Модульная структура программы на уровне программных функций.
    • Лаб.1.1. Разбор структуры программы (модульность) и сборка ПО (утилита make) на примере (https://www.gnu.org/software/hello/). Содержимое модулей. Сопровождающая документация. Используемые параметры сборки. Удаление.
    • Лаб.1.2. Разбор структуры программы и сборка ПО. Взаимосвязь модулей и система имен (визуальная модель структуры). Способы связывания модулей (вызовы функций, разделяемые переменные). Введение новых функций в структуру ПО (инициализация, форматирование данных для вывода и т.п.).
    • Лаб.1.3. Система контроля версий (git) для локального управления программным кодом.
    • Лаб.1.4. Задача на подключение внешней библиотеки (создание окна с приветствием с помощью GTK+, обработка ошибок). Использование инструментов autoconf для конфигурации. Стили кодирования (K&R, GNU и др.).
    • Лаб.1.5. Конфигурация сборки (кросс-компиляция, настройка на целевую аппаратуру, особенности вычислительной среды, модель пользователя). Демонстрация и обсуждение решений (спецификация структуры ПО и сборки).
  • Тема 2. Визуальные модели проектирования ПО. Способы спецификации и возможности кодогенерации.
    • Лаб.2.1. Обзор возможностей на примере https://www.gnu.org/software/hello/. Разработка спецификации и построение визуальных моделей проектирования.
    • Лаб.2.2. Решение конкретной задачи анализа для существующего проекта с doxygen-спецификацией. Интерпретация получаемых визуальных моделей.
  • Тема 3. Применение шаблонов при проектировании программ. Возможности кодогенерации на примере разработки интерфейса пользователя.
  • Тема 4. Метрики проектирования. Использование для анализа атрибутов качества. Анализ метрик проектирования ПО на основе статического анализа кода и экспериментальных измерений.
    • Лаб.4.1. Вычисление и интерпретация метрик программного кода.
    • Лаб.4.2. Использование результатов тестирования для анализа качества решений проектирования.

Список литературы.

  1. Гецци К., Джазайери М., Мандриоли Д. Основы инженерии программного обеспечения / Пер. с англ. 2-е изд. СПб.: БХВ-Петербург, 2015. 832 с.
  2. Камаев В.А., Костерин В.В. Технологии программирования. Учебник, 2-е изд., перераб. и доп. М.: Высшая школа, 2006. 454 с.
  3. Макконнелл С. Совершенный код. Мастер-класс / Пер. с англ. — М. : Издательство «Русская редакция», 2010. — 896 стр.
  4. Мацяшек Л.А. Анализ требований и проектирование систем. М.: Издательский дом «Вильямс», 2002. 428с.
  5. Diehl S. Software Visualization: Visualizing the Structure, Behaviour, and Evolution of Software. Berlin Heidelberg: Springer-Verlag, 2007. 187 p.


FILED UNDER : IT

Submit a Comment

Must be required * marked fields.

:*
:*