Тверской государственный университет
Опубликован: 03.10.2011 | Доступ: свободный | Студентов: 3284 / 60 | Оценка: 4.33 / 3.83 | Длительность: 19:48:00
ISBN: 978-5-9963-0573-5
Лекция 1:

Введение

Лекция 1: 123456 || Лекция 2 >

От программирования к инженерии программ

Программирование — сердце инженерии программ, но лишь часть инженерии. Концепции инженерии направлены на разработку систем, которые могут быть большими, разрабатываться в течение долгого периода, подвержены изменениям, удовлетворяют строгим критериям качества, временных сроков и стоимости. Новичков обычно этому не учат, но важно обеспечить, по меньшей мере, введение в предмет, которое у нас появляется в последней главе. Сюда включается анализ требований, поскольку программисты, которых мы учим, должны быть не только "технарями", но и уметь общаться с потребителями и понимать их потребности. Обсуждаются грани качества ПО, введение в модели жизненного цикла, концепции "быстрой" (agile) разработки, технологии страхования качества, Модели Потенциальной Зрелости (Capability Maturity Models).

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

Терминология

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

Каждая глава заканчивается разделом "Новый словарь", в котором перечисляются все введенные термины. Первое из упражнений для студентов состоит в том, что они должны сформулировать точные определения каждого термина. Это дает возможность протестировать понимание идей, введенных в главе.

Выборы технологий

Эта книга основана на комбинации технологий: ОО-подхода, Проектирования по Контракту, Eiffel как языка проектирования и программирования. Важно подтвердить справедливость этих выборов и объяснить, почему не был выбран другой язык, например, язык Java, один из современных языков программирования.

Объектная технология

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

Нет настоящих причин так относиться к ОО-подходу. Он позволяет строить программную систему как ясную и естественную модель концепций и объектов, с которыми он имеет дело. Если он так хорош, то он должен быть хорош для всякого, в том числе и для новичков. Следуя совету знакомого официанта в Санта-Барбаре, чей кофе сыграл свою зажигательную роль в написании этой книги: "Жизнь полна неожиданностей — ешьте вначале десерт!"

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

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

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

Eiffel и Проектирование по Контракту

Мы основываемся на Eiffel и среде разработки EiffelStudio, которую студенты могут загружать из сайта http://www.eiffel.com. Университеты могут также инсталлировать эту свободно распространяемую версию (и при желании получать поддержку). Этот выбор непосредственно поддерживает педагогические концепции этой книги:

  • язык Eiffel объектно ориентирован без всяких компромиссов;
  • он обеспечивает хорошую основу для изучения других языков программирования, таких как Java, C#, C++ и Smalltalk (в приложениях, примерно на тридцати страницах каждое, дается сравнительное описание основ трех из этих языков);
  • Eiffel прост для начального обучения. Концепции могут вводиться постепенно, без учета влияния тех элементов, что еще не изучены;
  • среда разработки EiffelStudio использует современный, интуитивный графический интерфейс — GUI. Ее свойства включают изощренные средства просмотра, редактирование, отладчик с уникальной возможностью откатов, автоматическое построение документации (HTML или другие форматы), программные метрики, современные механизмы автоматического тестирования. Она позволяет по коду автоматически строить диаграммы, отражающие архитектуру проекта. Более того, она позволяет пользователю нарисовать диаграмму, по которой будет создан код, и процесс этот может работать в циклическом режиме;
  • EiffelStudio доступна на многих платформах, включая Windows, Linux, Solaris и Microsoft.NET;
  • EiffelStudio включает множество тщательно написанных библиотек, поддерживающих повторное использование и являющихся основой для библиотеки Traffic. Среди них упомянем EiffelBase, реализующую фундаментальные структуры и поддерживающую изучение алгоритмов и структур данных в части III, EiffelTime для работы с датами и временем, EiffelVision для переносимой графики и EiffelMedia для анимации и мультимедиа;
  • в отличие от средств, спроектированных исключительно для образовательных целей, Eiffel коммерчески используется для критически важных приложений. Язык и среда разработки применяются в банковских системах с инвестициями в сотни миллиардов долларов, в системе здравоохранения, для сложного моделирования. По моему мнению, это является основой для эффективного обучения программированию: язык, по-настоящему хороший для профессионалов, должен быть также хорош и для новичков;
  • приняты международные стандарты языка Eiffel — ISO и ECMA. Для преподавателей крайне важно, чтобы язык программирования, поддерживающий курс, был стандартизован, особенно по стандарту ISO (International Standards Organization), поскольку это
  • дает гарантию стабильности и четких определений; Текст стандарта ISO можно найти на tinyurl.com/y5abdx. Аналогичный текст в версии ECMA находится на tinyurl.com/cq8gw.
  • Eiffel — не просто язык программирования. Это Метод, чья первичная цель — помимо записи алгоритмов для компьютера — поддерживать рассуждения о задачах и способах их решения. Он позволяет учить бесшовному подходу, расширяемому на весь жизненный цикл создания ПО, от этапов анализа и проектирования до программирования и сопровождения. Эта концепция бесшовной разработки, поддерживается циклическим средством построения диаграмм Diagram Tool среды разработки EiffelStudio и согласована с преимуществами моделирования, предоставляемыми объектной технологией.

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

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

Язык избегает криптографических символов.

Каждое резервированное слово является полным словом английского языка без использования аббревиатур (INTEGER, а не int).

Знак равенства = имеет тот же смысл, что и в математике, не нарушая устоявшейся годами математической традиции.

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

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

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

Лекция 1: 123456 || Лекция 2 >
Кирилл Юлаев
Кирилл Юлаев
Федор Антонов
Федор Антонов

Здравствуйте!

Записался на ваш курс, но не понимаю как произвести оплату.

Надо ли писать заявление и, если да, то куда отправлять?

как я получу диплом о профессиональной переподготовке?