Лекции по "Технология программирования"

Автор работы: Пользователь скрыл имя, 17 Декабря 2014 в 02:02, курс лекций

Краткое описание

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

Прикрепленные файлы: 1 файл

Tehnologiq_programmirovaniq2_lections.doc

— 394.00 Кб (Скачать документ)

 

 

Технология программирования                                   Николай Николаевич

Лекция 1

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

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

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

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

  1. структурной декомпозиции системы;
  2. введение определенных стандартов на интерфейс между ее собственными частями;

В этот период создается идеология восходящего и нисходящего программирования или проектирования.

3)разработка принципов  модуляции;

4)разработка структурного  программирования, появляются теория  и практика отладки программ, тестирование и верификация (доказательство  правильности работы программ)

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

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

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

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

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

Она в явном виде признана общей идеей уменьшения сложности во всех видах работ и этапах разработки ПО.

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

  • Понимание программы
  • Надежность
  • Трудоемкость написания
  • Отладка
  • Тестирование
  • Сопровождение

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

Сколько стоит программа?

Какой язык выбрать?

Как оценить материально-технические ресурсы?

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

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

 

Фундаментальные исследования и технология программирования.

 Развитие программирования  сейчас перестало называться  искусством программирования, а  перешло в рамки промышленного  производства. Основные понятия: модуль, структура – в настоящее время определены нестрого. Вследствие этого носят индивидуальный характер, где творчество привалирует над стандартом программирования.

Тенденция развития программирования такова, раньше соотношение затрат на производство ПО составляло 20% , а на производство средств вычислительной техники 80%, соотношение затрат этапа разработки по всему уровню жизни программных систем:

РАНЕЕ      СЕЙЧАС

Кодирование 20%     Кодирование 6%

Конструирование40%    Тестирование12% 
Тестирование 40%     Конструирование 12%

Сопровождение 70%

Отсутствие хорошо составленной в едином стиле программной документации приводит к низкой познаваемости программы, в результате чего из всего объема ПО активно используются 1-3%

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

1) Теория автоматов и алгоритмов

2) Новые принципы построения  ЭВМ

3) Принципы построения автоматизированных  систем

При этом указанная идея будет особенно продуктивна, ели в качестве рабочего тезиса будет использоваться следующее положение:

  1. о единстве программного обеспечения и аппаратного обеспечения
  2. о единстве проблем проектирования. Целесообразность состоит в том, чтобы не различать эти проблемы, поскольку:

а) они поддержаны общностью математических методов или моделей, которые возникают при проектировании ПО и АпО

б) взаимное проникновение идей и метод программ и устройств.

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

 

Лекция 2

 

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

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

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

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

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

Такие АСУ должны решать следующие три задачи:

  1. Сбор и передача информации об объекте управления, т.е. о разработке программного изделия.
  2. Переработка информации.
  3. Выдача управляющих воздействий на объект управления, т.е. управляемому звену и разработчикам соответствующего программного обеспечения.

Такие АСУ имею 2 особенности или св-ва:

  1. Большая часть информации об объекте управления может быть получена автоматически из программ, введенных в ЭВМ для обработки. Для эффективного функционирования таких АСУ требуется min объем информации об объекте управления.
  2. АСУ для производства программ mах удовлетворяет принципу «новых задач» т.е. сам объект управления, находится в начальной стадии своего развития и следовательно много областей еще не исследовано. В силу того, что всегда решаются новые проблемы, всегда будут новые задачи.

 

Общая характеристика технологического процесса разработки ПО

 

Программное изделие как результат разработки ПО

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

 Кроме того для оценки ПО необходимо рассмотреть, к какому типу относится ПО:

1)Режимы функционирования ПО

Реальный, пакетный, интерактивный.

2)Тип ПО

  1. Инструментальное.
  2. Системное
  3. Прикладное

3)Будет ли тиражироваться или оставаться индивидуальным программным продуктом. Основным критерием разделения результата деятельности разработки программы, является не просто программа или ПО,  и не должны служить такие критерии, как объем программы и сложность, а критерий – трудоемкости разработки ПО.

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

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

Информация о работе Лекции по "Технология программирования"