Технология программирования (ТП) – это совокупность методов и средств, используемых в процессе разработки программного обеспечения (ПО). Как любая технология, ТП представляет собой набор технологических инструкций, включающих:
o указание последовательности выполнения технологических операций;
o перечисление условий, при которых выполняется та или иная операция:
o описание самих операций, где для каждой операции определены исходные данные, результаты, а также инструкции, нормативы, стандарты, критерии и методы оценки.
Кроме набора операций и их последовательности ТП также определяет способ описания модели проектируемой системы, используемой на конкретном этапе разработки.
Различают два вида ТП:
o технологии, используемые на конкретных этапах разработки или для решения отдельных задач этих этапов; в их основе, как правило, лежит ограниченно применимый конкретный метод, позволяющий решить конкретную задачу;
o технологии, охватывающие несколько этапов или весь процесс разработки; в их основе лежит базовый подход, определяющий методологию, т.е. совокупность методов, используемых на разных этапах разработки.
История появления и развития программирования и ЭВМ
Рассмотрим основные этапы развития программирования вообще и ТП в частности.
Первый этап – «стихийное» программирование. Этот этап охватывает период от момента появления первых ЭВМ до середины 60-х годов ХХ в. В этот период практически отсутствовали сформулированные технологии, и программирование фактически было искусством. Первые программы имели простейшую структуру. Они состояли из программы на машинном языке и обрабатываемых ею данных.
Появление ассемблеров позволило вместо двоичных или 16-ричных кодов использовать символические имена данных и кодов операций. В результате программы стали более «читаемыми». Ассемблер (англ. assemble – собирать) – вспомогательная программа в составе ОС для автоматического перевода исходной программы, подлежащей выполнению на ЭВМ, на машинный язык. (Один из видов транслятора.) Язык ассемблера – машинно-зависимый язык низкого уровня, в котором короткие мнемонические имена соответствуют отдельным машинным кодам. Используется для представления в удобочитаемой форме программ, записанных в машинных кодах.
Создание языков программирования высокого уровня (FORTRAN, ALGOL) существенно упростило программирование вычислений, снизив уровень детализации операций, что позволило увеличить сложность программ.
Существенный прорыв в программировании произошел с появлением в языках средств, позволяющих оперировать подпрограммами, которые можно было сохранять и использовать в других программах. В результате были созданы огромные библиотеки расчетных и служебных подпрограмм, которые по мере надобности вызывались из основной программы.
Слабым местом подобной архитектуры было то, что при увеличении числа подпрограмм возрастала вероятность искажения части глобальных данных какой-либо подпрограммой. Пример с МПД. Для сокращения подобных ошибок было предложено использовать в подпрограммах локальные переменные.
В начале 60-х годов ХХ в. разразился «кризис» программирования. Он выражался в том, что фирмы, взявшиеся за разработку сложного ПО, (например, ОС) срывали все сроки завершения проектов. Проект устаревал раньше, чем был готов к внедрению, увеличивалась его стоимость, многие проекты так никогда и небыли завершены.
Объективно все это было вызвано несовершенством ТП. Стихийно использовалась разработка «снизу-вверх» – подход, при котором вначале разрабатывали сравнительно простые подпрограммы, из которых потом пытались построить сложную программу. В отсутствие четких моделей описания подпрограмм и методов их проектирования создание каждой программы превращалось в сложную задачу, интерфейсы подпрограмм получались сложными, и при сборке выявлялось большое количество ошибок согласования. Исправление ошибок требовало серьезного изменения уже разработанных подпрограмм, что еще больше осложняло ситуацию, т.к. при этом в программу часто вносились новые ошибки. … В конечном итоге процесс тестирования и отладки программ занимал более 80% времени.
Анализ причин возникновения большинства ошибок позволил сформулировать структурный подход к программированию.
Второй этап – структурный подход к программированию (60 – 70-е годы ХХ в.). Структурный подход к программированию (СПкП) представляет собой совокупность технологических приемов, охватывающих выполнение всех этапов разработки ПО. В основе СПкП лежит декомпозиция (разбиение на части) сложных систем с целью последующей реализации в виде отдельных небольших (до 50 операторов) подпрограмм. С появлением других принципов декомпозиции (объектного, логического и др.) данный способ получил название процедурной декомпозиции.
СПкП требует представления задачи в виде иерархии подзадач простейшей структуры. Следовательно, при таком подходе проектирование осуществляется «сверху-вниз» и подразумевает реализацию общей идеи, обеспечивая проработку интерфейсов подпрограмм. Одновременно в указанные годы вводились ограничения на конструкции алгоритмов, рекомендовались формальные модели их описания, специальный метод проектирования алгоритмов – метод пошаговой детализации.
Поддержка принципов структурного программирования была заложена в основу процедурных языков программирования. Такие языки обычно содержат операторы передачи управления, поддерживают вложение подпрограмм, локализацию и ограничение области «видимости» данных (PL/1, ALGOL-68,Pascal, C).
Дальнейший рост сложности и размеров программ потребовал развития структурирования данных. Как следствие, в языках появилась возможность определения пользовательских типов данных. Одновременно усилилось стремление разграничить доступ к глобальным данным программы. В результате появилась технология модульного программирования.
Модульное программирование предполагает выделение групп подпрограмм, использующих одни и те же глобальные данные в отдельно компилируемые модули (библиотеки подпрограмм). Например, модуль графических ресурсов, модуль подпрограмм вывода на принтер и др. Связи между модулями при использовании данной технологии осуществляются через специальный интерфейс, а доступ к реализации модуля (телам подпрограмм и некоторым «внутренним» переменным) запрещен. Эту технологию поддерживают современные версии языков Pascal, С++, новые языки Ada, Modula.
Использование модульного программирования упростило параллельную разработку ПО несколькими программистами, обеспечило возможность использовать модули без изменений в других программах.
Практика показала, что структурный подход в сочетании с модульным программированием позволяет получать достаточно надежные программы, размер которых не превышает 100 000 операторов. Узкое место модульного программирования состоит в том, что ошибка в интерфейсе при вызове подпрограммы выявляется только при выполнении программы (из-за раздельной компиляции модулей обнаружить эти ошибки раньше невозможно). При увеличении размера программы возрастает сложность межмодульных интерфейсов, и с некоторого момента предусмотреть взаимовлияние отдельных частей про8раммы становится практически невозможно. Для разработки ПО большого объема был предложен объектный подход.
Третий этап – объектный подход к программированию (середина 80-х – конец 90-х годов ХХ в.). Объектно-ориентированное программирование (ООП) – это технология создания сложного ПО, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного типа (класса), а классы образуют иерархию с наследованием свойств и методов. (Взаимодействие программных объектов в такой систем осуществляется путем передачи сообщений.) Примеры ООЯ: Object Pascal (Delphi), C ++, Modula, Java.
Основное достоинство ООП по сравнению с модульным программированием – более естественная декомпозиция ПО, существенно облегчающая его разработку. Кроме того, объектный подход предполагает новые способы организации программ, основанные на механизмах инкапсуляции, наследования и полиморфизма. Эти механизмы позволяют конструировать сложные объекты из сравнительно простых. В результате существенно увеличивается показатель повторного использования кодов и появляется возможность создания библиотеки классов для различных применений.
Бурное развитие технологий программирования, основанных на объектном подходе, позволило решить многие проблемы. Были созданы среды, поддерживающие визуальное программирование (Delphi, C ++Builder, Visual C ++, …). При использовании визуальной среды программист может проектировать некоторую часть, например, интерфейсы будущего проекта, с применением визуальных средств добавления и настройки специальных библиотечных компонентов. Результатом визуального проектирования является заготовка будущей программы, в которую уже внесены соответствующие коды.
Использование объектного подхода имеет много преимуществ, однако его конкретная реализация в ООЯ программирования (Object Pascal, C ++) имеет и ряд недостатков. Сохраняется зависимость модулей ПО от адресов экспортируемых полей и методов, а также структур и форматов данных. Эта зависимость объективна, т.к. модули должны взаимодействовать друг с другом, обращаясь к ресурсам друг друга. Связи модулей нельзя разорвать, но можно попробовать стандартизовать их взаимодействие, на чем и основан компонентный подход к программированию.
Четвертый этап – компонентный подход и CASE -технологии (середина 90-х годов ХХ в. – наше время). Компонентный подход (КП) предполагает построение ПО из отдельных компонентов, т.е. физически отдельно существующих частей ПО, которые взаимодействуют между собой через стандартизованные двоичные интерфейсы. В отличие от обычных объектов объекты-компоненты можно собрать в динамически вызываемые библиотеки или исполняемые файлы, распространять в двоичном виде (без исходных текстов) и использовать в любом языке программирования, поддерживающем соответствующую технологию.
На сегодня рынок объектов стал реальностью, в Интернете существуют узлы, предоставляющие большое количество компонентов. Это позволяет программистам создавать ПО, хотя бы частично состоящее из повторно используемых частей.
КП лежит в основе технологий, разработанных на базе COM (Component Object Model – компонентная модель объектов), и технологии создания распределенных приложений CORBA (Common Object RequestBroker Architecture – общая архитектура с посредником обработки запросов объектов). Эти технологии используют сходные принципы и различаются лишь особенностями реализации.
ТехнологияCOM фирмы Microsoft является развитием технологии OLE (Object Linking andEmbedding – связывание и внедрение объектов), которая использовалась в ранних версиях Windows для создания составных документов. Технология COM определяет общие принципы взаимодействия программ любых типов: библиотек, приложений, операционной системы, т.е. позволяет одной части ПО использовать функции (службы), предоставляемые другой, независимо от того, функционируют ли эти части в пределах одного процесса, в разных процессах на одном ПК или на разных ПК. Модификация COM, обеспечивающая передачу вызовов между компьютерами, называется DCOM (Distributed COM – распределенная COM).
По технологии COM приложение предоставляет свои службы, используя специальные объекты – объектыCOM, которые являются экземплярами классов COM. Объект COM так же, как обычный объект, включает поля и методы, но в отличие от обычных объектов каждый объект COM может реализовывать несколько интерфейсов, обеспечивающих доступ к его полям и функциям. Это достигается за счет организации отдельной таблицы адресов методов для каждого интерфейса (по типу таблиц виртуальных методов). При этом интерфейс обычно объединяет несколько однотипных функций. Классы COM поддерживают наследование интерфейсов, но не поддерживают наследования реализации, т.е. не наследуют код методов, хотя при необходимости объект класса-потомка может вызвать метод класса-предка.
На базе технологии COM и DCOM разработаны компонентные технологии, решающие различные задачи разработки ПО.
1. OLE-automation или просто Automation (автоматизация) – технология создания программируемых приложений, обеспечивающая программируемый доступ к внутренним службам этих приложений. Вводит понятие диспинтерфейса (dispinterface) – специального интерфейса, облегчающего вызов функций объекта. Эту технологию поддерживает, например, Microsoft Excel, предоставляя другим приложениям свои службы.
2. ActiveX – технология, построенная на базе OLE — automation, предназначенная для создания ПО как установленного на одном ПК, так и распределенного в сети. Предполагает использование визуального программирования для создания компонентов – элементов управления ActiveX. Полученные таким образом элементы управления можно устанавливать на компьютер дистанционно с удаленного сервера, причем устанавливаемый код не зависит от используемой ОС. Это позволяет применять элементы управления ActiveX в клиентских частях приложений Интернет. Основные преимущества технологии ActiveX:
o быстрое написание программного кода (поскольку все действия, связанные с организацией взаимодействия сервера и клиента, берет на себя ПО COM, программирование сетевых приложений становится похожим на программирование для отдельного компьютера);
o открытость и мобильность (спецификации технологии недавно были переданы в Open Group как основа открытого стандарта);
o возможность написания приложений с использованием знакомых средсв разработки (Visual Basic, Visual C++, Borland Delphi, Borland C++ и любых средств разработки на Java);
o большое количество уже существующих бесплатных программных элементов ActiveX;
o стандартность (технология ActiveX основана на широко используемых стандартах Интернет (TCP/IP, HTML, Java) и стандартах COM, OLE).
3. MTS (Microsoft Transaction Server – сервер управления транзакциями ) – технология, обеспечивающая безопасность и стабильную работу распределенных приложений при больших объемах передаваемых данных.
4. MIDAS (Multitier Distributed Application Server – сервер многозвенных распределенных приложений) – технология, организующая доступ к данным разных компьютеров с учетом балансировки нагрузки сети.
Все указанные технологии реализуют компонентный подход, заложенный в COM.
Технология CORBA, разработанная группой компаний OMG (Object Management Group – группа внедрения объектной технологии программирования), реализует подход, аналогичный COM, на базе объектов и интерфейсов CORBA. Программное ядро CORBA реализовано для всех основных аппаратных и программных платформ и поэтому технологию можно использовать для создания распределенного ПО в гетерогенной (разнородной) вычислительной среде. Организация взаимодействия между объектами клиента и сервера в CORBA осуществляется с помощью специального посредника VisiBroker и др. специализированного ПО.
Отличительной особенностью современного этапа развития ТП, кроме изменения подхода, является создание и внедрение автоматизированных технологий разработки и сопровождения ПО, которые называются CASE- технологии (Computer-Aided Software/System Engineering – разработка ПО/ПС с использованием компьютерной поддержки). На сегодняшний день существуют CASE- технологии, поддерживающие как структурный, так и объектный (в том числе и компонентный) подходы к программированию. Использование CASE -средств позволяет существенно снизить трудозатраты на разработку сложного ПО в основном за счет автоматизации процессов документирования и контроля. Сегодня практически все промышленно производимое сложное ПО разрабатывается с использованием CASE -средств. (Подробнее о CASE- средствах будет рассказано на пятом курсе в рамках дисциплины «Корпоративные ИС».)
Появление нового подхода не означает, что отныне все ПО будет создаваться из программных компонентов, но анализ существующих проблем разработки сложного ПО показывает, что он будет применяться достаточно широко.
Источник: megalektsii.ru
Этапы развития технологии программирования. (см. пункт первый)
4. Проблемы, возникающие при разработке сложных программных систем.
5. Блочно-иерархический подход к созданию сложных систем.
6. Жизненный цикл и этапы разработки программного обеспечения. Кратко охарактеризуйте основные этапы.
7. Постановка задачи, анализ требований и определение спецификаций.
8. Проектирование, реализация и сопровождение.
9. Модели жизненного цикла программного обеспечения.
11. Технология RAD.
12. Оценка качества процессов создания программного обеспечения.
13. Использование CMM при оценке качества процессов создания программного обеспечения.
14. Использование стандартов ISO 9000 и SPICE при оценке качества процессов создания программного обеспечения.
15. Понятие технологичности программного обеспечения.
16. Модули и их свойства.
17. Сцепление модулей.
18. Связность модулей.
19. Нисходящая и восходящая разработка программного обеспечения.
20. Структурное программирование.
21. Средства описания структурных алгоритмов.
22. Стиль оформления программы.
23. Эффективность и технологичность программного обеспечения.
24. Программирование с «защитой от ошибок».
25. Сквозной структурный контроль.
26. Классификация программных продуктов по функциональному признаку.
27. Эксплуатационные требования к программным продуктам.
28. Предпроектные исследования предметной области.
29. Техническое задание. Основные разделы.
30. Архитектура программного обеспечения.
31. Тип пользовательского интерфейса.
32. Выбор языка и среды программирования.
33. Спецификация программного обеспечения при структурном подходе.
34. Язык описания разработки программных продуктов UML.
35. Тестирование программного обеспечения.
Технология программирования. Основные этапы ее развития. (и 2 вопрос тут же)
-совокупность методов и средств, используемых в процессе разработки ПО,представляет собой набор технологических инструкций, включающих:
· указание последовательности выполнения технологических операций;
· перечисление условий, при которых выполняется та или иная операция;
· описания самих операций, где для каждой операции определены исходные данные, результаты, а также инструкции, нормативы, стандарты, критерии и методы оценки и т.п.
Определяет способ описания проектир системы,те модели,использ на конкретн .этапе разработки.
1 этап — «стихийное» программирование.(до сер.60х) . Первые программы имели простейшую структуру,состояли из программы на машинном языке и обрабатываемых ею данных.Сложность программ в машинных кодах ограничивалась способностью программиста одновременно мысленно отслеживать последовательность выполняемых операций и местонахождение данных при программировании.
Появление ассемблеров. Программы стали более «читаемыми».
Создание языков программирования высокого уровня(fortran,algol), существенно упростило программирование вычислений, снизив уровень детализации операций. Это, в свою очередь, позволило увеличить сложность программ.
2 этап — структурный подход к программированию (60-70-е годы XX в.).- представляет собой совок-ть рекомендуемых технологических приемов, охватывающих выполнение всех этапов разработки ПО. В основе — декомпозиция(разбиение на части) сложных систем с целью последующей реализации в виде отдельных небольших подпрограмм. С появлением других принципов декомпозиции (объектного, логического и т.д.) данный способ получил название процедурной декомпозиции(Pascal, С).Структурный подход требовал представления задачи в виде иерархии подзадач простейшей структуры. Проектирование осуществлялось «сверху – вниз» и подразумевало реализацию общей идеи, обеспечивая проработку интерфейсов подпрограмм.
Тз-за роста сложности и размеров разр-го ПО потребо развитие структурирования данных. Cлед-но в языках появляется возможность определения пользовательских типов данных. — появилась и начала развиваться технология модульного программирования.Модульное программирование -выделение групп подпрограмм, использующих одни и те же глобальные данные в отдельно компилируемые модули (библиотеки подпрограмм), Связи между модулями при использовании данной технологии осуществляются через специальный интерфейс, в то время как доступ к реализации модуля (телам подпрограмм и некоторым «внутренним» переменным) запрещен( поддерживают языков Pascal, С,C++).
3 этап — объектный подход к программированию (с середины 80-х до конца 90-х годов XX в.). Объектно-ориентированное программирование — технология создания сложного ПО, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного типа (класса), а классы образуют иерархию с наследованием свойств. Взаимодействие программных объектов в такой системе осуществляется путем передачи сообщений.
Были созданы среды, поддерживающие визуальное программирование(,Delphi, Visual C++ ) При использовании визуальной среды появляется возм-ть проектировать некоторую часть, например, интерфейсы будущего продукта, с применением визуальных средств добавления и настройки специальных библиотечных компонентов.
4этап –компонентный подход иCASE-технологии (с сер. 90-х годов XX в. до нашего вр).Компонентный подход — построение ПО из отдельных компонентов – физически отдельно существующих частей программного обеспечения, которые взаимодействуют между собой через стандартизованные двоичные интерфейсы. В отличие от обычных объектов объекты-компоненты можно собрать в динамически вызываемые библиотеки или исполняемые файлы, распространять в двоичном виде (без исходных текстов) и использовать в любом языке программирования, поддерживающем соответствующую технологию.
Отличительной особенностью современного этапа развития технологии программирования, кроме изменения подхода, является создание и внедрение автоматизированных технологий разработки и сопровождения программного обеспечения, .которые были названы CASE-технологиями (Computer-Aided Software/System Engineering — разработка программного обеспечения/программных систем с использованием компьютерной поддержки). На сегодня существуют CASE-технологии, поддерживающие как структурный, так и объектный (в том числе и компонентный) подходы к программированию.
Появление нового подхода не означает, что отныне все программное обеспечение будет создаваться из программных компонентов, но анализ существующих проблем разработки сложного программного обеспечения показывает, что он будет применяться достаточно широко.
Этапы развития технологии программирования. (см. пункт первый)
Технологии COM и CORBA.
Технология СОМ определяет общую совок взаимодействия программ любых типов: библиотек, приложений, ос, т. е. позволяет одной части ПО использовать функции (службы), предоставляемые другой, независимо от того, функционируют ли эти части в пределах одного процесса, в разных процессах на одном компьютере или на разных компьютерах.
Модификация СОМ, обеспечивающая передачу вызовов между компьютерами, называется DCOM (Distributed COM – распределенная СОМ).
По технологии СОМ приложение предоставляет свои службы, используя специальные объекты – объекты СОМ, которые являются экземплярами классов СОМ. Объект СОМ так же, как обычный объект включает поля и методы, но в отличие от обычных объектов каждый объект СОМ может реализовывать несколько интерфейсов, обеспечивающих доступ к его полям и функциям. Это достигается за счет организации отдельной таблицы адресов методов для каждого интерфейса (по типу таблиц виртуальных методов). При этом интерфейс обычно объединяет несколько однотипных функций.
Кроме того, классы СОМ поддерживают наследование интерфейсов, но не поддерживают наследования реализации, т. е. не наследуют код методов, хотя при необходимости объект класса-потомка может вызвать метод родителя.
Каждый интерфейс имеет имя, начинающееся с символа «I» и глобальный уникальный идентификатор IID.Любой объект СОМ обязательно реализует интерфейс lUnknown (на схемах этот интерфейс всегда располагают сверху). Использование этого интерфейса позволяет получить доступ к остальным интерфейсам объекта.
Объект всегда функционирует в составе сервера – динамической библиотеки или исполняемого файла, которые обеспечивают функционирование объекта. Различают три типа серверов:
· внутренний сервер – реализуется динамическими библиотеками, которые подключаются к приложению-клиенту и работают в одном с ними адресном пространстве – наиболее эффективный сервер, кроме того, он не требует специальных средств;
· локальный сервер – создается отдельным процессом (модулем, ехе), который работает на одном компьютере с клиентом;
· удаленный сервер – создается процессом, который работает на другом компьютере.
Для обращения к службам клиент должен получить указатель на соответствующий интерфейс. Перед первым обращением к объекту клиент посылает запрос к библиотеке СОМ, хранящей информацию обо всех, зарегистрированных в системе классах СОМ объектов, и передает ей имя класса, идентификатор интерфейса и тип сервера. Библиотека запускает необходимый сервер, создает требуемые объекты и возвращает указатели на объекты и интерфейсы. Получив указатели, клиент может вызывать необходимые функции объекта.(на бахе комтехнология ActiveX)
Технология CORBA, реализует подход, аналогичный СОМ, на базе объектов и интерфейсов CORBA. Программное ядро CORBA реализовано для всех основных аппаратных и программных платформ и потому эту технологию можно использовать для создания распределенного ПО в гетерогенной (разнородной) вычислительной среде. Организация взаимодействия м/у объектами клиента и сервера осуществляется с помощью спец посредника, названного VisiBroker, и другого спец-го ПО.
Дата добавления: 2018-02-15 ; просмотров: 4683 ; Мы поможем в написании вашей работы!
Источник: studopedia.net
Видеоурок «Развитие программного обеспечения»
Сегодня жизнь многих людей немыслима без использования компьютерных программ. Сейчас их существует великое множество, и они применяются для решения самых разных задач. При этом даже неопытному пользователю не составит большого труда научиться пользоваться многими из них. Однако, всегда ли было так? Этот урок расскажет учащимся о том, какой путь развития прошли компьютерные программы и инструменты для их создания и какие требования предъявляются к современной компьютерной программе.
Урок начинается с рассмотрения значение слова «Программа», а также определения компьютерной программы.
Компьютерная программа — это записанная определённым образом комбинация инструкций управления аппаратным обеспечением компьютера.
Также учащиеся узнают о том, что такое язык программирования и чем занимается программист, кто был первым программистом, как назывались первый программируемый компьютер и язык программирования.
Далее кратко рассматривается развитие языков программирования от машинных кодов и до языков программирования высокого уровня, а также то, как расширялись возможности программистов с их появлением.
После изложения материала об инструментах разработки программного обеспечения начинается рассмотрение составных частей любой компьютерной программы, а именно:
- данных;
- моделей обработки данных;
- пользовательского интерфейса.
Далее по отдельности рассматривается развитие моделей обработки данных и пользовательских интерфейсов программ. В качестве этапов развития модели обработки данных ученики рассматривают парадигмы структурного и объектно-ориентированного программирования, их особенности и чем было вызвано их появление.
После рассмотрения моделей обработки данных следует информация о развитии пользовательских интерфейсов программ, а также рассказывается об особенностях текстового и графического пользовательских интерфейсов. Также рассматривается определение дружественного пользовательского интерфейса.
Дружественный интерфейс — это такой пользовательский интерфейс, благодаря которому пользователь может максимально быстро научиться работать с программой, допуская при этом минимальное количество ошибок.
Далее рассматриваются изменения, которые претерпело управление программой. Раньше порядок действия большинства программ был однозначно определён от начала и до конца. Порядок работы современной программы зависит от пользователя и определяется событиями.
Блок-схема программы с графическим пользовательским интерфейсом
В конце следует подведение итогов урока и повторение важных определений.
Источник: videouroki.net