Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Обучение VC++ / ЛекцииКарасева / ОбзорнЛекцииМетС++05.doc
Скачиваний:
42
Добавлен:
16.02.2016
Размер:
167.94 Кб
Скачать

Карасев Н.И.

Методология объектно-ориентированного программирования

Обзорные лекции по курсу

Лекция1. Информатизация и объектно-ориентированное программирование

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

Содержание лекции:

1.Информатизация и программная инженерия

2.Концептуальные положения объектно-ориентированного программирования

3. Бъярн Страуструп о языке С++

4. Архитектура приложения в среде разработки Visual Studio

Информатизация и программная инженерия

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

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

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

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

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

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

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

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

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

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

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

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

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

По мере того как программные проекты становились все сложнее, было замечено интересное явление. Задача, для решения которой одному программисту требовалось два месяца, не решалась двумя программистами за месяц. Согласно замечательной фразе Фреда Брукса, «рождение ребенка занимает девять месяцев независимо от того, сколько женщин занято этим» [Brooks 1975].

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

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

мирах[1].

Производство программных систем(ПС) также как и производство разнообразных технических объектов базируется на технологии производства, которая применительно к программным системам регламентируется стандартом ISO/IES 12207:1995 Международной организации по стандартизации(International Organization for Standardization) и базируется на понятии Жизненный цикл программных систем(ЖЦ). ЖЦ определяет процессы, действия и задачи, которые должны быть выполнены в процессе создания ПС или программного продукта .

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

Системный анализ;

Анализ(формирование) требований к ПС;

Проектирование;

Кодирование;

Тестирование;

Эксплуатация и сопровождение;

¨ Снятие с эксплуатации;

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

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

Проектированиесостоит в создании представлений:

¨архитектуры ПО;

¨модульной структуры ПО;

¨алгоритмической структуры;

¨структуры данных;

¨входного и выходного интерфейса(входных и выходных форм данных);

Соседние файлы в папке ЛекцииКарасева