Технология Разработки Программного Обеспечения

Posted : admin On 07.10.2019
  1. Технология Разработки Программного Обеспечения Тест
  2. Программное Обеспечение Определение

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

Возврат на предыдущие стадии не предполагается. Изменения, вносимые в проект, могут сильно повлиять на время и сроки проектирования. Обычные сроки реализации проект 6 - 12 месяцев.

Рассматривается методология разработки программного обеспечения Microsoft Solutions Framework (MSF. Проблемы современного программирования. Этапы разработки программного. Продвижение технологий разработки программного обеспечения и самого ПО на международном.

Описание и инструкция к применению лекарственного препарата, противопоказания и возможные побочные действия при использовании МЕГАСЕФ. При приеме препарата после еды максимальная концентрация в плазме для дозировок 125 мг, 250 мг и 500 мг составляет соответственно 2,1 мкг/мл, 4,1. Мегасеф таблетки: инструкция по применению. 1 таблетка, покрытая пленочной оболочкой, содержит: цефуроксим 500 мг (в виде цефуроксима аксетила). К применению. Мегасеф таблетки показан для лечения инфекций, перечисленных ниже у взрослых и детей с массой тела > 40 кг. Мегасеф 500 инструкция по применению. Инструкция по медицинскому применению. Лекарственного средства. МЕГАСЕФ® 250. МЕГАСЕФ® 500. Торговое название. МЕГАСЕФ® 250. МЕГАСЕФ® 500. Международное непатентованное название. Лекарственная форма. Таблетки, покрытые пленочной оболочкой 250 мг и 500 мг. Описание и инструкция к применению лекарственного препарата, противопоказания и возможные побочные действия при использовании МЕГАСЕФ, зарегистрировано. В дальнейшем возможно использование таблетированной формы МЕГАСЕФ® в дозе 500 мг 2 раза в сутки в течение 7-10 дней.

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

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

Следует отметить, что методологии разработки ПО, базирующиеся на модели CMMI, унифицированном процессе RUP и модели MSF компании Microsoftявляются достаточно сильно формализованными, предполагают ограничения по организационной структуре, бюрократический подход ко многим проектным процедурам, наличие большого количества сопроводительных документов, сложные процедуры согласования изменений проекта и принятия других проектных решений. Такие методологии разработки ПО оправдывают себя для крупных проектов с большим количеством исполнителей, заказчиками которых являются государственные или бюрократические организации. Гибкие методологии ориентированы на минимизацию рисков, реализуя короткие итерации длительностью в одну или две недели. Каждая итерация заканчивается выпуском заданной функциональности программного проекта, и реализует этапы работ по планированию, анализу требований, проектированию, кодированию, тестированию и документирование. Отдельная итерация, как правило, недостаточна для выпуска новой версии продукта, но подразумевается что гибкий программный проект готов к выпуску в конце каждой итерации.

По окончании каждой итерации, команда выполняет переоценку приоритетов разработки. Компания IBM для управления жизненным циклом приложений предлагает решение IBM® Rational® ClearQuest®.

ИТ-решение поддерживает рационализированный, динамичный процесс разработки приложений, который одновременно является ориентированным на роли и управляемым процессами. Проекты определяют контекст выполнения заданий; их безопасность можно обеспечить через определение политик безопасности и ролей. Работа может быть распределена между членами коллектива, которые находятся в одном месте или в разных местах. Кроме того, работа является трассируемой до исходного запроса и до проекта, который реализуется по этому запросу. Компания Microsoft предлагает набор средств в Visual Studio 2012 и объединения этих средств с Visual Studio Team Foundation Server для управления жизненным циклом приложений. В основе решений Microsoft по управлению жизненным циклом приложений лежат следующие принципы: продуктивность, интеграция и расширяемость.

Технология Разработки Программного Обеспечения

Продуктивность достигается обеспечением командной работы над проектом и управлением сложностью. Интеграция реализуется наличием полнофункциональных возможностей в единой среде проектирования, разработки, тестировании и сопровождении программного приложения, а также прозрачностью процесса создания ПО для всех участников проекта. Расширяемость поддерживается интегрированной средой разработки ( IDE) и открытостью платформы для расширения и создания собственных инструментов, которые интегрируются с Team Foundation Server. Технология комплекс организационных мер, операций и приемов, направленных на изготовление, обслуживание, ремонт и/или эксплуатацию изделия с номинальным качеством и оптимальными затратами. Технология разработки программного обеспечения (ПО) комплекс организационных мер, операций и приемов, направленных на разработку программных продуктов высокого качества в рамках отведенного бюджета и в срок. Жизненный цикл программного обеспечения (ЖЦПО) период времени, который начинается с момента принятия решения о необходимости создания программного продукта и заканчивается в момент его полного изъятия из эксплуатации.

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

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

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

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

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

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

Размещено на К УРС ЛЕКЦИЙ по предмету «Основы программирования» на тему: «Технологии разработки программного обеспечения» Содержание 1. Требования к современным технологиям 2. Общие принципы разработки программных средств 3. Разработка структуры программы и модульное программирование 4. Разработка программного модуля. Структурное программирование 5.

Стиль программирования. Выбор языка программирования 6.

Основные принципы отладки ПС 7. Основные принципы организации тестирования ПС 8. Виды программных документов 9. Обеспечение функциональности, надежности и качества ПС. Технологии оценки качества ПС 10. Обеспечение качества программного обеспечения 11.

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

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

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

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

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

Функциональность - это способность ПС выполнять набор функций, удовлетворяющих заданным или подразумеваемым потребностям пользователей. Набор указанных функций определяется во внешнем описании ПС. Легкость применения - это характеристики ПС, которые позволяют минимизировать усилия пользователя по подготовке исходных данных, применению ПС и оценке полученных результатов, а также вызывать положительные эмоции определенного или подразумеваемого пользователя. Эффективность - это отношение уровня услуг, предоставляемых ПС пользователю при заданных условиях, к объему используемых ресурсов. Сопровождаемость - это характеристики ПС, которые позволяют минимизировать усилия по внесению изменений для устранения в нем ошибок и по его модификации в соответствии с изменяющимися потребностями пользователей. Мобильность - это способность ПС быть перенесенным из одной среды (окружения) в другую, в частности, с одной ЭВМ на другую.

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

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

Любое ПС имеет свою структуру, которая разрабатывается для удобства: 1. Разработки 2. Программирования 3. Внесения изменений Также структуризация ПС позволяет: 1.

Распределить работы по исполнителям, обеспечив их загрузку и требуемые сроки разработки 2. Построить календарные графики проектных работ и осуществлять их координацию в процессе создания ПИ. Контролировать трудозатраты и стоимость проектных работ. При создании ПС выделяются многократно используемые модули, их типизируют и унифицируют, за счет чего сокращаются сроки и трудозатраты на разработку ПС в целом. Некоторые ПС используют готовые модули из библиотек стандартных процедур, функций, объектов и методов обработки данных. Типовая структура ПС: носитель отладка программный модуль Таблица.

Типы модулей Наименование модуля Описание Головной модуль Управляет запуском ПС (он в единственном числе) Управляющий модуль Обеспечивает вызов других модулей, задает последовательность вызова на выполнение очередного модуля Рабочие модули Выполняют функции обработки Сервисные модули Осуществляют обслуживающие функции Свойства модуля: 1. Один вход и один выход - на входе программный модуль получает определенный набор исходных данных, выполняет обработку данных и возвращает результат 2. Функциональная завершенность - модуль выполняет перечень операций для реализации каждой отдельной функции в полном составе.

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

Обозримый по размеру и сложности. Каждый модуль состоит из спецификации и тела модуля.

Спецификация - правила использования модуля. Тело - способ реализации процесса обработки. Принцип модульного программирования ПС: 1.

Определение состава и подчиненность функций 2. Определение набора программных модулей, реализующих эти функции При составлении алгоритма необходимо учитывать: 1.

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

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

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

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

При восходящей разработке эта глобальная информация для модулей нижних уровней еще не ясна в полном объеме, поэтому очень часто приходится их перепрограммировать. При восходящем тестировании для каждого модуля (кроме головного) приходится создавать ведущую программу (модуль), которая должна подготовить для тестируемого модуля необходимое состояние информационной среды и произвести требуемое обращение к нему. Это приводит к большому объему 'отладочного' программирования и в то же время не дает никакой гарантии, что тестирование модулей производилось именно в тех условиях, в которых они будут выполняться в рабочей программе. Метод нисходящей разработки. Сначала строится модульная структура программы в виде дерева. Затем поочередно программируются модули программы, начиная с модуля самого верхнего уровня (головного), переходя к программированию какого-либо другого модуля только в том случае, если уже запрограммирован модуль, который к нему обращается. После того, как все модули программы запрограммированы, производится их поочередное тестирование и отладка в таком же (нисходящем) порядке.

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

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

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

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

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

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

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

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

Разработка программного модуля. Структурное программирование Порядок разработки программного модуля. Изучение и проверка спецификации модуля, выбор языка программирования; (т.е. Разработчик, изучая спецификацию, выясняет, понятна она ему или нет, достаточно ли полно она описывает модуль; затем он выбирает язык программирования, на котором будет написан модуль, хотя язык программирования может быть единым для всего ПС) 2. Выбор алгоритма и структуры данных (здесь выясняется не известны ли какие-либо алгоритмы для решения поставленной задачи и если есть, то воспользоваться им) 3. Программирование модуля (написание кода программы) 4. Шлифовка текста модуля (редактирование имеющихся комментариев, добавление дополнительных комментариев, для того чтобы обеспечить требуемое качество) 5.

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

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

Ограниченность базового набора структур для построения алгоритмов любой степени сложности Требования структурного программирования: 1. Программа должна составляется мелкими шагами, таким образом, сложная задача разбивается на достаточно простые, легко воспринимаемые части. Логика программы должна опираться на минимальное число достаточно базовых управляющих структур (линейные, разветвляющиеся и циклические структуры) Основные свойства и достоинства структурного программирования: 1. Уменьшение сложности программ 2. Возможность демонстрации правильности программ на различных этапах решения задачи 3. Наглядность программ 4.

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

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

Впрочем, используемые средства должны определяться характером решаемой задачи: для проселочной дороги вполне достаточно соблюдения простого правила - 'смотри под ноги и по сторонам'. Основная идея структурного программирования: программа должна представлять собой множество блоков, объединенных в виде иерархической древовидной структуры, каждый из которых имеет один вход и один выход. Любую программу можно построить, используя лишь три основных типа блоков: 1.

Функциональный блок - отдельный линейный оператор или их последовательность; 2. Блок разветвления - If Then.Else. Обобщенный цикл - конструкция типа While Do (проверка в начале цикла!); Существенно, что каждая из этих конструкций имеет по управлению только один вход и один выход. Тем самым, и обобщенный оператор имеет только один вход и один выход.

Структурное программирование иногда называют еще 'программированием без GO TO'. Однако дело здесь не в операторе GO TO, а в его беспорядочном использовании.

Очень часто при воплощении структурного программирования на некоторых языках программирования оператор перехода (GO TO) используется для реализации структурных конструкций, не снижая основных достоинств структурного программирования. Запутывают программу как раз 'неструктурные' операторы перехода, особенно переход на оператор, расположенный в тексте модуля выше (раньше) выполняемого оператора перехода. Тем не менее, попытка избежать оператора перехода в некоторых простых случаях может привести к слишком громоздким структурированным программам, что не улучшает их ясность и содержит опасность появления в тексте модуля дополнительных ошибок. Поэтому можно рекомендовать избегать употребления оператора перехода всюду, где это возможно, но не ценой ясности программы. К полезным случаям использования оператора перехода можно отнести выход из цикла или процедуры по особому условию, 'досрочно' прекращающего работу данного цикла или данной процедуры, т.е.

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

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

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

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

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

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

Цель комментариев - облегчить понимание программы. Если вы затрудняетесь в написание комментария - значит “Вы не ведаете, что творите! ” Три типа комментариев: 1. Оглавление 3.

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

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

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

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

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

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

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

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

Циклы - типичный случай для использования отступов. Для выявления структуры программы - используйте отступы.

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

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

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

Технология Разработки Программного Обеспечения Тест

Но для создания больших и надежных программ машинный код совершенно неприемлем. Трансляция - один из способов преодолеть “языковый” барьер. Если воспользоваться языком, понятным программисту, а потом обеспечить перевод с него в машинный код, проблема будет решена.

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

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

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

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

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

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

Программное Обеспечение Определение

Следовательно: ещё до написания программы необходимо установить, насколько эффективной она должна быть. Очевидно, что следует модифицировать только те программы, которые многократно повторяются (используются). «Не стоит экономить на спичках». Многие методы, делающие программу эффективной могут существенно влиять на ее удобочитаемость, а удобочитаемость программы более существенно, чем ее эффективность. В каком случае эффективности отдают предпочтение в ущерб удобочитаемости: если программа должна быть выточена в библиотеку часто используемых программ функции, программа не помещается в памяти, она важна, но слишком долго выполняется. Оптимизация программ. Если программу следует оптимизировать, необходимо тщательно проверить алгоритм.

Разработки

Программу, подлежащую оптимизации следует разбить на подпрограммы (в соответствии с принципом структурного программирования). Если не возможно учесть время выполнения каждой подпрограммы подсчитайте количество операторов в подпрограмме, особенно выполненных в тело циклов. Ищите операторы, которые можно модифицировать - (do While и CASE) особенно это касается операторов цикла и ввода - вывода. Для каждой подпрограммы можно вычислить коэффициент: процент времени. процент улучшения.

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

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

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

Мелкие или крупные логические ошибки из которых можно выделить: a. Отсутствие заданий начальных значений b. Неверное условие окончания цикла c. Неверная индексация цикла d. Отсутствие задания обнуления циклов.

Ошибки общего характера - ошибки из-за не достаточного знания тонкостей языка или самой системы или машины. Синтаксические ошибки - ошибки, вызванные не правильным написанием операторов. Семантические ошибки - неправильное использование написанных операторов. Ошибки в данных Виды контроля ПС: - Визуальный, - Статический - динамический Визуальный контроль - это проверка программ “ за столом “, без использования компьютера. Сначала осуществляется чтение программы 2. Затем осуществляется сквозной контроль программы (ее ручная прокрутка на нескольких заранее подобранных простых тестах).

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