Файл: Особенности технологии разработки ПО.pdf

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

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

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

Добавлен: 25.04.2023

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

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

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

1. Анализ предметной области

1.1 Понятие «программное обеспечение»

Программное обеспечение — это общий термин для различных видов программ, используемых для работы с компьютерами и связанными устройствами. Термин аппаратное обеспечение описывает физические аспекты компьютеров и связанных с ними устройств. [4]

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

Утилитарные программы ("программы для себя") предназначены для удовлетворения нужд их разработчиков. Чаще всего утилитарные программы выполняют роль сервиса в технологии обработки данных либо являются программами решения функциональных задач, не предназначенных для широкого распространения. [2, 13]

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

Свободное программное обеспечение, несколько более новая и не связанная с этим концепция, — это программное обеспечение, которое можно свободно использовать, модифицировать и распространять только с одним ограничением: любая распространяемая версия программного обеспечения должна распространяться с оригинальными условиями бесплатного использования, модификации и распространения (известны как авторское право). В отличие от бесплатного программного обеспечения, бесплатное программное обеспечение может распространяться за плату. Бесплатное программное обеспечение может быть более ограниченным в возможностях, чем свободное программное обеспечение. [5, 11]


Условно-бесплатная программа — это программное обеспечение, которое распространяется бесплатно на пробной основе с пониманием того, что пользователь может нуждаться или захотеть заплатить за него позже. Некоторые разработчики программного обеспечения предлагают условно-бесплатную версию своей программы со встроенным сроком действия (по истечении 30 дней пользователь больше не может получить доступ к программе). Другое условно-бесплатное программное обеспечение предлагается с определенными возможностями. [13]

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

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

Дополнительной и трудно классифицируемой категорией программного обеспечения является утилита, которая представляет собой небольшую полезную программу с ограниченными возможностями. Некоторые утилиты поставляются с операционными системами. Как и приложения, утилиты, как правило, устанавливаются отдельно и могут использоваться независимо от остальной части операционной системы. Например, апплеты — это небольшие приложения, которые иногда поставляются с операционной системой как «аксессуары». Они также могут быть созданы независимо с использованием Java или других языков программирования. [10]

Программное обеспечение может быть приобретено как условно-бесплатное программное обеспечение (обычно предназначенное для продажи после пробного периода), бесплатно (условно-бесплатное программное обеспечение с некоторыми отключенными возможностями), бесплатное ПО (бесплатное программное обеспечение, но с ограничениями авторского права), общедоступное программное обеспечение (бесплатное без ограничений) и открытое источник (программное обеспечение, в котором предоставляется исходный код, и пользователи соглашаются не ограничивать распространение улучшений). [3, 13]

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


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

  • программное обеспечение для повышения производительности, которое включает в себя текстовые процессоры, электронные таблицы и инструменты для использования большинством пользователей компьютеров;
  • программное обеспечение для презентаций;
  • графическое программное обеспечение для графических дизайнеров;
  • CAD/CAM программное обеспечение;
  • специализированные научные приложения;
  • рыночное или отраслевое программное обеспечение (например, для банковской, страховой, розничной и производственной сред). [2, 13]

1.2 Особенности технологии разработки ПО

Технологии (с греческого: ремесло и наука) — совокупность знаний о способах и средствах проведении производственных процессов.

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

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

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

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

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

Технология разработки программного обеспечения предс­тавляет собой инженерный подход к разработке программных средств ЭВМ, охватывающий методологию программирования, проблемы обеспечения надежности программ, оценки рабочих характеристик и качества проектов.


Технология разработки программного обеспечения рассмат­ривает вопросы управления проектированием систем програм­много обеспечения, а также средства и стандарты разработки программ. [14]

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

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

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

  1. Необходима стандартизация языков проектирования программ, оформления и испытания программных модулей, а также гарантии их качества. Это позволит значительно сократить дублирующие разработки, внедрить сборочное программирование и вести накопление на предприятиях и в стране высококачественного программного продукта для его многократного использования в качестве типовых комплектующих изделий.
  2. Вести постоянный контроль и обеспечение качества программ.
  3. Программы не должны содержать непроверенных путей и ситуаций функционирования, которые приводят к неожиданным результатам.
  4. Пользователю или покупателю программ необходимо дать четкое представление о возможностях данной программы и технологических условиях эксплуатации, при которых гаран­тируются определенные функции и качества.
  5. Технология разработки программного обеспечения должна обеспечивать отделение программного изделия от его разработчика, т.е. человеческий фактор в программировании быть сведен к минимуму. [1, 11]
  6. Технология разработки программного обеспечения и средства ее поддержки (автоматизации) должны обеспечивать целенаправленную работу, прежде всего коллектива программистов, а не отдельных личностей. Она должна побуждать коллектив работать только правильно и слаженно; должна автоматически блокировать любые не санкционированные технологией действия.
  7. Необходимо вести аккуратное документирование всех этапов разработки. Документация должна также заноситься и храниться на магнитных носителях. Доступ к этой информации должен быть открытым, простым и автоматизированным.
  8. Работа пользователя должна обеспечиваться развитой информационно-справочной системой.
  9. Средства автоматизации технологии должны охватывать все этапы работы коллектива программистов.
  10. Технология разработки программного обеспечения должна быть простой в освоении, с автоматически включаемыми средствами подсказки.
  11. Технология разработки программного обеспечения должна иметь средства автоматической фиксации в хронологическом порядке всех действий, выполняемых в процессе коллективного изготовления программного изделия должны вестись и храниться в системе журналы (протоколы, дневники) разработки. Эти средства должны позволять восстанавливать любое состояние процесса разработки на любом интервале изготовления программного эксплуатации. [2, 14]

2. Проектирование программного обеспечения

2.1 Общие принципы проектирования систем

Одной из основных проблем, которые приходится решать при создании больших и сложных систем любой природы, в том числе и ПО, является проблема сложности. Ни один разработчик не в состоянии выйти за пределы человеческих возможностей и понять всю систему в целом. Единственный эффективный подход к решению этой проблемы, который выработало человечество за всю свою историю, заключается в построении сложной системы из небольшого количества крупных частей, каждая из которых, в свою очередь, строится из частей меньшего размера, и т.д., до тех пор, пока самые небольшие части можно будет строить из имеющегося материала. Этот подход известен под самыми разными названиями, среди них такие, как «разделяй и властвуй», иерархическая декомпозиция и др. По отношению к проектированию сложной программной системы это означает, что ее необходимо разделить (декомпозировать) на небольшие подсистемы, каждую из которых можно разрабатывать независимо от других. Это позволяет при разработке подсистемы любого уровня иметь дело только с ней, а не со всеми остальными частями системы. Правильная декомпозиция является главным способом преодоления сложности разработки больших систем ПО. [2, 7, 12]

Понятие «правильная» по отношению к декомпозиции означает следующее:

  • количество связей между отдельными подсистемами должно быть минимальным (принцип «слабой связанности» — Low Coupling);
  • связность отдельных частей внутри каждой подсистемы должна быть максимальной (принцип «сильного сцепления» — High Cohesion).

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

  • каждая подсистема должна инкапсулировать свое содержимое (скрывать его от других подсистем);
  • каждая подсистема должна иметь четко определенный интерфейс с другими подсистемами.

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