Лекция №1. Программные средства автоматизации персонального компьютера. Технология программирования. Основные понятия и подходы

Содержание

К о н е ц

Консервация изделий.

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

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

- 28 -

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

Занятие № 27. Лекция – 2 часа.

Практическая работа № 15: «Устранение трещин, виды, способы.»

1 Лекция № 1. Программные средства автоматизации персонального компьютера. Технология программирования. Основные понятия и

подходы........................................................................................................ 4

2 Лекция № 2.Разработка сложных программных систем....................... 8

3 Лекция № 3. Жизненный цикл программного обеспечения................... 12

4 Лекция № 4. Быстрая разработка приложений. Технологичность программного обеспечения.................................................................................................... 16

5 Лекция № 5. Приемы обеспечения технологичности программных продуктов 20

6 Лекция № 6. Структурное и «неструктурное» программирование....... 24

7 Лекция № 7. Определение требований к программному обеспечению и исходных данных для его проектирования................................................................... 28

8 Лекция № 8. Принципиальные решения начальных этапов

проектирования............................................................................................. 32

9 Лекция № 9. Алгоритмические языки и предъявляемые к ним

требования..................................................................................................... 36

10 Лекция № 10. Структурный подход. Анализ требований, определение спецификаций........................................................................................................................ 38

11 Лекция № 11. Структурный подход. Проектирование программного обеспечения 42

12 Лекция № 12. Объектный подход. Проектирование программного обеспечения 46

13 Лекция № 13. Пользовательские интерфейсы......................................... 49

14 Лекция № 14. Особенности разработки пользовательских интерфейсов 53

15 Лекция № 15. Компоненты пользовательских интерфейсов.

Технология Drag&Drop................................................................................ 57

16 Лекция № 16. Тестирование и отладка программных продуктов......... 61

17 Лекция № 17. Составление программной документации....................... 65

Приложение А............................................................................................... 67

Приложение Б................................................................................................ 69

Приложение В................................................................................................ 70

Приложение Г................................................................................................ 71

Список литературы....................................................................................... 73


Содержание лекции: понятие о программном обеспечении компьютера; технология программирования; основные этапы развития.

Цель лекции: получить представление о современном состоянии программного обеспечения; изучить основные понятия и подходы технологии программирования; получить представление о структурном, модульном, объектном и визуальном программировании.

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

Технологией программирования называют совокупность методов и средств, используемых в процессе разработки программного обеспечения. Она представляет собой набор технологических инструкций, включающих: указание последовательности выполнения технологических операций; перечисление условий, при которых выполняются опера­ции; описания самих операций с определением исходных данных, результатов, инструкций, нормативов, стандартов, кри­териев и методов оценки. Кроме того, технология оп­ределяет способ описания проектируемой системы (модели), исполь­зуемой на конкретном этапе разработки. Различают технологии, используемые на конкретных этапах разработки (в основе лежит ограниченно применимый метод)и технологии, охватывающие несколько этапов разработки (в основе лежит базовый метод или методология). Среди основных этапов развития технологий программирования выделяют «стихийное» программирование, структурный, объектный и компонентный подходы к программированию [1].

На этапе «стихийного» программирования (период от момента появления первых ЭВМ до середи­ны 60-х годов XX века) практически отсутствовали сформулиро­ванные технологии, а программирование было искусством. Пер­вые программы имели простейшую структуру: программа на машинном языке и обрабатываемые данные. Сложность программ в машинных кодах ограничивалась способ­ностью программиста одновременно мысленно отслеживать последователь­ность выполняемых операций и местонахождение данных при программиро­вании. В результате появления ассемблеров вместо двоичных ко­дов стали использовать символические имена данны х и мнемоники кодов опера­ций, а программы стали более «читаемыми». Создание языков программирования высоко­го уровня (FORTRAN, ALGOL) суще­ственно упростило программирование вычисле­ний, снизив уровень детализации операций, что позволило увеличить сложность программ.

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

Рисунок 1.1 - Архитектура программы: а) с глобальной областью данных; б) использующей подпрограммы с локальными данными

В начале 60-х годов XX века раз­разился «кризис программирова­ния»: разработчики сложного программного обеспече­ния срывали все сроки завершения проектов: проект устаревал раньше, чем был готов к внедрению, его стоимость увеличивалась, в ре­зультате многие проекты так никогда и не были завершены. Все это было вызвано несовершенством технологии программирования. Прежде всего, использовалась разработка «снизу-вверх». В отсутствии четких моделей описания подпрограмм и методов проектирования, создание подпрограмм превращалось в непростую задачу. Интерфейсы подпрограмм получались сложными, и при сборке программного продукта выявлялось большое количество ошибок со­гласования, исправление которых требовало серьезного изменения уже разработанных подпрограмм, при этом в программу часто вносились новые ошибки. В итоге процесс тестирования и отладки программ занимал более 80% времени разработки, если вооб­ще когда-нибудь заканчивался. Анализ причин возникновения ошибок позволил сформу­лировать новый подход к программированию - струк­турный.

Структурный подход к программированию, который развивался на втором этапе развития технологий в 60-70 годы XX века, представляет собой совокупность рекомендуемых технологических приемов, охватывающих вы­полнение всех этапов разработки программного обеспечения. В его основе лежит декомпозиция сложных си­стем с целью последующей реализации в виде отдельных небольших (до 40-50 операторов) подпрограмм, позже названная процедурной декомпозицией. Структурный подход требовал представления задачи в виде иерархии подзадач простейшей структуры, а проектирование осуще­ствлялось «сверху-вниз» и подразумевало реализацию общей идеи. Были введены ог­раничения на конструкции алгоритмов, рекомендованы формальные моде­ли их описания, а также специальный метод проектирования алгоритмов - метод пошаговой детализации. Принципы структурного программирования были заложены в основу процедурных языков программирования, которые включали основные «структурные» операторы передачи управле­ния, поддерживали вложение подпрограмм, локализацию и ограничение области «видимости» данных (PL/1, ALGOL-68, Pascal, С). Дальнейший рост сложности и размеров разрабатываемого программно­го обеспечения потребовал развития структурирования данных,в языках появляется возможность определения пользовательских типов данных [2].

Стремление разграничить доступ к глобальным данным программы дало толчок к появлению и развитию технологии модульного программирования (рисунок А.1), чтопредполагало выделение групп подпрограмм, использующих одни и те же глобальные данные в отдельно компили­руемые модули (библиотеки). Связи между модулями осуществлялись через спе­циальный интерфейс, в то время как доступ к реализации модуля (телам под­программ и некоторым «внутренним» переменным) был запрещен. Эту техноло­гию поддерживают современные версии Pascal, С, C++, Ада и Modula. Разработка программ несколькими программистами существенно упростилась: модули разрабатывались независимо друг от друга и могли использоваться без изменений в других разработках, а их взаимодействие обеспечи­валось через специально оговоренные межмодульные интерфейсы. Структурный подход в сочетании с модульным программированием позволяет получать надежные программы, размером не более 100 000операторов. Недостаток: ошибка в интерфейсе при вы­зове подпрограммы выявляется только при выполнении программы (из-за раздельной компиляции модулей), а при увеличении размера программы возрастает сложность меж­модульных интерфейсов, поэтому предусмотреть взаимовли­яние отдельных частей программы становится практически невозможно. Для разработки программного обеспечения большого объема было предложено использовать объектный подход.

На третьем этапе (80-е - 90-е годы XX века) был сформирован объектный подход к программированию.Технология создания сложного программного обес­печения, основанная на представлении программы в виде совокупности взаимодействующих путем передачи сообщений программных объ­ектов, каждый из которых является экземпляром определенного клас­са, а классы образуют иерархию с наследованием свойств, была названа объектно-ориентированным программиро­ванием (рисунок А.2).Объектная структура программы впервые была использована в языке имитационного моделирова-ния сложных систем Simula, а затем использована в новых версиях универсальных языков программирования, таких как Pascal, C++, Modula, Java. Достоинством объектно-ориентированного программирования является «естествен­ная» декомпозиция программного обеспечения, существенно облег­чающая разработку. Это приводит к более полной локализации данных и ин­тегрированию их с подпрограммами обработки, что позволяет вести практи­чески независимую разработку отдельных объектов программы. Кроме того, объектный подход предлагает новые способы организации программ, основанные на механизмах наследования, полиморфизма, компози­ции, наполнения, позволяющих конструировать из простых объек­тов сложные. В результате существенно увеличивается показатель повторного использования кодов и появляется возможность создания библиотек классов. На основе объект­ного подхода были созданы среды, поддерживающие визуальноепрограммирование (Delphi, C++ Builder, Visual C++), при использовании которого некоторая часть будущего продукта проектируется с применением визуальных средств добавления и настройки специальных библиотечных компонентов. В результате появляется заготовка будущей программы, в кото­рую уже внесены коды. Использование объектного подхода имеет много преимуществ, однако его конкретная реализация в объектно-ориентированных языках программи­рования, таких, как Pascal и C++, имеет существенные недостатки: отсутствуют стандарты компоновки двоичных результатов компиляции объектов в единое целое даже в пределах одного языка программирования; изменение в реализации одного программного объекта связано с перекомпиляцией модуля и перекомпоновкой всего программного обеспечения, использующего данный объект. Таким образом, сохраняется объективная зависимость модулей программного обеспечения от адресов экспортируемых полей и методов, а также структур и форматов данных. Связи модулей нельзя разорвать, но можно стандартизировать их взаимодействие, на чем и основан компонентный подход к программированию.

Четвертый этап (90-е годы XX века - наше время) - компонентный подход иCASE-технологии. Компонентный подход предполагает построение программного обеспечения из отдельных компонентов, ко­торые взаимодействуют между собой через стандартизованные двоичные интерфейсы. В отличие от обычных объектов объекты-компоненты можно собрать в динамически вызываемые библиотеки или исполняемые файлы, распространять в двоичном виде (без исходных текстов) и использовать в любом языке программирования, поддерживающем соответствующую технологию[1]. Компонентный подход лежит в основе технологий, разработанных на базе COM (Component Object Model - компонентная модель объектов, и тех­нологии создания распределенных приложений CORBA (Common Object Request Broker Architecture - общая архитектура с посредником обработки запросов объектов), которые используют сходные принципы и разли­чаются лишь особенностями реализации.

Дополнительную информацию по теме можно получить в [1, 2, 3, 5, 19].



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: