Файл: Алгоритмизация как обязательный этап разработки программы (Подходы к разработке программных систем).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 24.05.2023

Просмотров: 51

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Введение

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

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

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

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

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

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

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

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


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

Объект исследования – разработка программ.

Предмет исследования – алгоритмизация.

Целью данной работы является изучение алгоритмизации программ.

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

– изучить подходы к разработке программных систем;

– описать средства разработки программных систем;

– описать процессы алгоритмизации программ;

– разработать и описать программную систему.

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

1.1. Методологии разработки программных систем

Существует широкий спектр методологий, которые придерживаются принципами и ценностями, заявленными в Agile Manifesto, к основным можно отнести следующие:

– Agile Modeling представляет собой набор понятий, приёмов и принципов, которые позволяю просто и быстро выполнять документирование и моделирование в реализуемых проектах разработки прикладного программного обеспечения. Методология Agile Modeling не включает в себя детальные инструкции по проектированию, не содержит подробных описаний, каким образом необходимо разрабатывать диаграммы на языке моделирования UML. Основной целью данной методологии является эффективное документирование и моделирование; но не охватывает последующие операции программирования и тестирования, не включает различные вопросы по управлению проектом разработки, развёртывания и послепроектного сопровождения программной системы [4].

– Agile Unified Process представляет собой упрощенную версию IBM Rational Unified Process (RUP), которая была разработана Скоттом Амблером, позволяющая описывать понятное и простое приближение определенной модели для разработки программной системы в рамках необходимого бизнес-приложения;


– Agile Data Method представляет собой группу итеративных методов разработки программных систем, в которых требования и решения могут быть достигнуты в рамках сотрудничества различных кросс-функциональных команд разработчиков;

– DSDM представляет собой методологию, которая основана на концепциях быстрой разработки программных систем (Rapid Application Development, RAD). Позволяет реализовать инкрементный и итеративный подход, придающий особое значение длительному участию в процессе разработки пользователя совместно с потребителем разрабатываемой программной системы;

– Feature driven development представляет собой функционально- ориентированную методологию разработки программных систем. Используемое в методологии FDD понятие свойства или функции программной системы является достаточно близким к понятию прецедента использования, которое используется в методологии IBM Rational Unified Process, существенным отличием является наличие дополнительных ограничений, которое заключается в том, что все функции по отдельности должны допускать свою реализацию не более, чем за две недели. То есть если принятый сценарий использования будет достаточно невелик, его можно считать функцией. Если же он будет достаточно большой, то его нужно будет разделить на несколько независимых функций [10];

– Getting Real представляет собой итеративный подход без использования функциональных спецификаций, которые используются для разработки веб-приложений. В рамках метода Getting Real сперва выполняются работы по разработке интерфейса программной системы, а потом ведутся работы по реализации её функциональной части;

– OpenUP представляет собой итеративно-инкрементальную методологию разработки программных систем, который позиционируется как гибкий и лёгкий вариант методологии IBM Rational Unified Process. В рамках использования методологии OpenUP жизненный цикл программного проекта может быть разделен на следующие фазы: начальная фаза, фазы уточнения, конструирования и передачи. Жизненный цикл реализуемого проекта обеспечивает предоставление членам коллектива и заинтересованным лицам точек принятия решений и ознакомления на протяжении практической реализации всего проекта программной системы [15]. Это позволяет эффективно контролировать процесс разработки и вовремя принимать необходимые решения о приемлемости получаемых результатов. План реализации проекта в полной мере определяет жизненный цикл программной системы, а конечным результатом работы над программным проектом является окончательная программная система;


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

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

1.2. Методология Agile

Гибкая методология разработки (англ. Agile software development, agile-методы) представляет собой серию подходов к разработке программного обеспечения, которые ориентированы на использование принципов итеративной разработки, динамического формирования требований и обеспечение их практической реализации в результате постоянного взаимодействия внутри самоорганизующихся рабочих групп, которые состоят из специалистов разного профиля [3].

Методология Agile используется как эффективная практика организации труда небольших групп (которые работают над однородной творческой работой) в объединении с управлением ими комбинированным (демократическим и либеральным) методом [7].

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

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


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

Основной метрикой agile-методов является рабочий продукт. Отдавая предпочтение непосредственному общению, agile-методы позволяют значительно уменьшить объём письменной документации в сравнении с использованием других методов разработки. Это привело к некоторой критике такого рода методов как недисциплинированных.

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

Agile Manifesto разработан и принят 11-13 февраля 2001 года на лыжном курорте The Lodge at Snowbird в горах Юты. Agile Manifesto содержит четыре основные идеи и двенадцать принципов. Примечательным является то, что Agile Manifesto не включает практических советов по разработке [2].

Основные идеи, представленные в Agile Manifesto: люди и возникающее взаимодействие являются важнее протекающих процессов и используемых инструментов; работающий продукт является важнее любой исчерпывающей документации на него; сотрудничество с заказчиком намного важнее предварительного согласования различного рода условий контракта на разработку программной системы; готовность к возможным изменениям намного важнее следования первоначальному плану разработки программы [5].

Принципы, разъясняемые в Agile Manifesto: удовлетворение клиента обеспечивается бесперебойной и ранней поставкой ценной программной системы; приветствие вносимых в рабочий проект изменений требований даже на конечных стадиях разработки программной системы; частая поставка рабочей программной системы (каждый месяц, неделю или ещё чаще); тесное, в некоторых случаях даже ежедневное общение команды разработчиков и заказчика на протяжении всего срока практической реализации программной системы; над проектом работают сильно мотивированные люди, обеспеченные всеми необходимыми условиями работы, поддержкой и должным доверием, как со стороны заказчика, так и со стороны участников команды [13];

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