Спонсор: Microsoft
Санкт-Петербургский государственный университет
Опубликован: 12.03.2009 | Доступ: свободный | Студентов: 4457 / 1095 | Оценка: 4.44 / 4.12 | Длительность: 11:24:00
Специальности: Системный архитектор
Дополнительный материал 1:

Вопросы и задания по курсу "Введение в программную инженерию"

< Лекция 17 || Дополнительный материал 1
Ключевые слова: MAP, затраты, программная инженерия, задание на соответствие, граф, сочетания, информационные технологии, computation, support, collaborative, self-learning, CCI, системное программирование, информатика, дуга, универсальность, методология разработки, улучшение, self-organizing, pull, инновация, technological, push, Модель процессов, оплата, спиральная модель, определение процессов, рабочий продукт, диаграмма, UML, управление требованиями, цикл работы, техническое задание, call, оператор, дифференцирование, Интернет, статистика, конфигурационное управление, артефакт, сборка, baseline, интеграция, контроль качества, автоматическое тестирование, прогон тестов, черный ящик, жизненный цикл, диаграммы случаев, автор, извлечение знаний, MSFS, компромисс, CMMI, CMM, productivity, owner, Visual Studio, team, foundation, power, tools, инсталляция, здравый смысл, программный продукт, MS Excel, project, система контроля версий, build, definition, запуск процесса, управление процессами, модульное тестирование, модульность, альтернатива, Тестирование пользовательского интерфейса, capture, playback, software developer

Методические рекомендации

Рекомендация 1

Задания на основе карт памяти (mind maps) следует использовать постепенно вот в каком смысле. Учащиеся должны овладеть этой техникой – оказывается, для этого нужно затратить некоторое время. Нет необходимости проводить специальный тренинг – достаточно просто объяснить, что это такое и как этим пользоваться, и сразу же приступить к использованию. По ходу дела целесообразно давать нужные рекомендации. После нескольких карт памяти, составленных самостоятельно, студенты осваивают эту технику. Первые карты памяти целесообразно рисовать "вручную". Впоследствии, особенно при "массовом" процессе использования карт памяти, целесообразно пользоваться инструментами. Мы рекомендуем продукт Comapping (http://www.comapping.com). Дальнейшие детали по использованию карт памяти в преподавании программной инженерии можно найти в работах [1-3].

Рекомендация 2

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

Рекомендация 3

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

Рекомендация 4

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

Литература

  1. Д.В Кознов, Я.А Кириленко. Опыт сочетания теории и практики в обучении программной инженерии . Труды III Международная научно-практическая конференция "Современные информационные технологии и ИТ-образование" 2008 год. http://2008.itedu.ru/pages/Conference-works.
  2. D.V.Koznov, M.Y. Pliskin. Computer-Supported Collaborative Learning with Mind-Maps. T. Margaria and B. Steffen (Eds.): ISoLA 2008, CCIS 17, pp. 478–489, 2008. Springer-Verlag, Berlin Heidelberg, 2008.
  3. Д.В.Кознов. Методика обучения программной инженерии на основе карт памяти. Системное программирование. / Вып. 3, под ред. А.Н.Терехова и Д.Ю.Булычева. СПб.: Изд. СПбГУ, 2008. С. 121-140. http://www.sysprog.info.

Лекция 1. О предмете изучения

Вопросы

  1. Что такое программная инженерия?
  2. Назовите дату зарождения программной инженерии как отдельной науки.
  3. В чем отличие программной инженерии от информатики?
  4. В чем отличие программной инженерии от системотехники?
  5. Приведите примеры дисциплин информатики и программной инженерии (дисциплины не путать с учебными предметами).
  6. Что такое ПО?
  7. Перечислите характеристики ПО по Бруксу и кратко характеризуйте каждую.
  8. C какими иными видами человеческой деятельности соотносится создание ПО в данном разделе?

Задания

  1. С помощью карт памяти максимально полно ответьте на вопрос – что такое программная инженерия, учитывая все измерения этого термина, мелкие и крупные детали.
  2. С помощью карт памяти нарисуйте взаимосвязи характеристик ПО по Бруксу, пользуясь надписями на дугах.

Лекция 2. Процесс разработки программного обеспечения

Вопросы

  1. Что такое процесс создания ПО?
  2. Расскажите о причинах отсутствия универсального процесса разработки ПО.
  3. Почему возможно и целесообразно стандартизировать процесс на уровне компании?
  4. Что такое стандартный и конкретный процессы и как они соотносятся?
  5. Чем отличаются между собой текущий и конкретный процессы? Какие методологии разработки ПО поддерживают понятие конкретного процесса и какими средcтвами?
  6. Дайте определение деятельности по совершенствованию процесса.
  7. В чем главная трудность совершенствования процессов в компаниях?
  8. Перечислите основные направления улучшения процесса.
  9. Расскажите о стратегии organization pull к внедрению инноваций. Приведите примеры.
  10. Расскажите о стратегии technology push к внедрению инноваций. Приведите примеры.
  11. Расскажите о достоинствах, недостатках, а также возможных рисках этих стратегий.
  12. Что такое модель процесса?
  13. Что такое фаза процесса?
  14. Что такое вид деятельности?
  15. Почему нельзя отождествлять фазы и виды деятельности? Когда и по каким причинам это все таки происходит на практике?
  16. В чем достоинства водопадной модели? В чем ее историческая роль? В чем ее недостатки?
  17. Как в рамках водопадной модели предполагается работать с рисками?
  18. Почему водопадная модель до сих пор используется? Объясните, почему эту модель удобно использовать в оффшорных проектах с почасовой оплатой?
  19. Чем виток спиральной модели отличается от фазы в водопадной модели? Приведите пример последовательности витков спиральной модели. Опишите условия, при которых спираль завершается.
  20. Расскажите про второе и третье измерение спиральной модели. Опишите различные секторы витка спирали.
  21. В чем достоинства и недостатки спиральной модели? Каковы ограничения этой модели?
  22. Как в рамках этой модели предполагается работать с рисками?

Задания

  1. Нарисуйте с помощью карт памяти взаимосвязь различных определений процесса.

Лекция 3. Рабочий продукт, дисциплина обязательств, проект

Вопросы

  1. Дайте определение рабочего продукта. Приведите примеры.
  2. Чем отличается рабочий продукт от компоненты ПО?
  3. Расскажите, что такое нематериальный рабочий продукт.
  4. Опишите, как "работает" дисциплина обязательств.
  5. Приведите примеры других видов отношений между людьми.
  6. Расскажите о границах применения дисциплины обязательств.
  7. Что такое проект и чем он отличается от других форм организации бизнеса и производства?

Задания

  1. Нарисуйте с помощью карт памяти взаимосвязь рабочего продукта и дисциплины обязательств.
  2. Нарисуйте с помощью карт памяти информацию об использовании рабочего продукта и дисциплины обязательств в разных методологиях разработки ПО.
  3. Нарисуйте с помощью карт памяти информацию об использовании рабочего продукта и дисциплины обязательств в разных а также отдельных практиках.
  4. Соедините в одну карту памяти результаты выполнения заданий 1-3.

Лекция 4. Архитектура ПО

Вопросы

  1. Дайте определение архитектуре ПО. Расскажите, какие аспекты разработки задействует это понятие.
  2. Расскажите о причинах множественности точек зрения при разработке ПО.
  3. Как по вашему мнению, множественность точек зрения помогает или мешает в разработке?
  4. Перечислите и кратко прокомментируйте разные виды диаграмм UML.

Лекция 5. Управление требованиями

Вопросы

  1. В чем трудность управления требованиями? При ответе на этот вопрос имейте в виду другие инженерные области и сферы бизнеса. Старайтесь отвечать на вопрос с наружи программной инженерии, а не изнутри.
  2. Перечислите способы формализации требований. Под формализацией имеется в виду способ не промежуточной, а финальной фиксации.
  3. Расскажите о способах и техниках "вытягивания" требований.
  4. Перечислите разные виды документов, формализующих требования.
  5. Расскажите об отличии функциональных и нефункциональных требований.
  6. Расскажите о типовом цикле работы с требованиями.
  7. Перечислите типовые ошибки при работе с требованиями.

Задания

  1. Нарисуйте на одной карте памяти ответы на вопросы 2-5.
  2. Добавьте к это карте памяти ответ на вопрос 6.
  3. Построить модель случаев использования, нарисовать главные сценарии, сформулировать список вопросов для обсуждения и написать техническое задание для следующей задачи. В качестве структуры технического задания используйте модель случаев использования.

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

Лекция 6. Конфигурационное управление

Вопросы

  1. Приведите примеры проблем в проектах, где нет хорошего конфигурационного управления.
  2. Неформально объясните, какие задачи выполняет конфигурационное управление в проекте.
  3. Дайте формальное определение конфигурационному управлению.
  4. Расскажите об известном противоречии - абсолютной сохранности и удобного доступа.
  5. Приведите пример артефактов проекта, которые могут "подпадать" под конфигурационное управление.
  6. Приведите пример артефактов проекта, которые могут не "подпадать" под конфигурационное управление. подпадающих
  7. Что является главным артефактом конфигурационного управления и почему.
  8. Перечислите основные функции версионного контроля.
  9. Что такое управление сборками?
  10. Что такое непрерывная интеграция. В каких известных вам методологиях она используется и почему (на ваш взгляд).
  11. Расскажите о понятии baseline.

Задания

  1. Составьте карту памяти, обозначив на ней все известные вам связи конфигурационного управления с другими видами деятельности по разработке ПО.
  2. Нарисуйте типовой сценарий работы сборщика.
  3. Нарисуйте различные макро-сценарий сборки (ночной, по запросу, в режиме постоянной интеграции и т.д.)

Лекция 7. Тестирование

Вопросы

  1. Перечислите и кратко охарактеризуйте различные способы контроля качества ПО.
  2. Дайте определение тестирования и кратко прокомментируйте его.
  3. Что означает в контексте тестирования ожидаемое поведение программы?
  4. Что входит в искусственные, специально заданные условия воздействия на систему, которые имеются в виду в определении тестирования?
  5. В чем важность концепции теста?
  6. В чем преимущества автоматического тестирования перед "ручным"?
  7. В чем трудности автоматического тестирования?
  8. Приведите свои собственные примеры проблем с интерфейсами к тестируемым системам.
  9. Приведите примеры того, как прогон тестов может влиять на поведение системы.
  10. В чем смыл факторизации входных значений при тестировании?
  11. Расскажите о разных вариантах организации команды тестеровщиков.
  12. Перечислите и кратко охарактеризуете виды тестирования.

Задания

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

Лекция 8. Диаграммные техники в работе со знаниями

Вопросы

  1. Какова роль актеров при построении диаграмм случаев использования?
  2. Что такое случай использования и чем он отличается от произвольной функции системы.
  3. Какие бывают виды актеров?
  4. Расскажите о бизнес-диаграммах случаев использования.
  5. Расскажите об основном предназначении диаграмм случаев использования. Попробуйте самостоятельно оценить их полезность.
  6. Расскажите о разных вариантах применения диаграмм случаев использования.
  7. Расскажите о применении случаев использования в управлении разработкой.
  8. Расскажите об основной идее цикла автор/рецензент.
  9. Как этот цикл можно использовать при извлечении знаний из эксперта? Расскажите о дополнительных особенностях этого процесса. Примерьте эту технику для собственного использования и поделитесь возникшими соображениями.
  10. Расскажите об истории карт памяти, а также о том, что это такое.
  11. Перечислите и кратко охарактеризуйте основные направления по практическому использованию карт памяти. Как именно вы используйте карты памяти? Собираетесь ли вы их использовать?
  12. Расскажите о продукте Comapping и его основных возможностях по работе с картами памяти.

Лекция 9. MSF

Вопросы

  1. Расскажите об истории разработки MSF.
  2. Расскажите об основных принципах MSF.
  3. В чем главные новшества MSF?
  4. Чем отличаются версии MSF 3.х от 4.х?
  5. Что такое IT-решение?
  6. Что такое управление компромиссами? Приведите примеры.
  7. Расскажите о модели команды MSF. В чем ее свобода и где она заканчивается?

Задания

  1. Нарисуйте модель команды MSF, изобразив также аспекты масштабирования команды, в том числе возможность сочетания/не сочетания различных ролей в одном человеке.

Лекция 10. CMMI

Вопросы

  1. Что такое CMMI? Постарайтесь не описывать CMMI, а в нескольких предложениях его определить, дать компактное и точное определение.
  2. Кратко расскажите историю развития стандарта CMMI. Чем CMMI отличается от CMM?
  3. Перечислите и кратко охарактеризуйте уровни CMMI.

Лекция 11. "Гибкие" (agile) методы разработки

Вопросы

  1. Расскажите о принципах "гибких" методов разработки.
  2. Какие, по вашему, существуют ограничения в применении гибких методов?
  3. Перечислите известные вам "гибкие" методологии разработки ПО.
  4. Расскажите о принципах XP. С чем, на ваш взгляд, могут возникнуть трудности при практическом внедрении XP?
  5. Расскажите о главных идеях Scrum. При этом не начинайте длинный рассказ про всю методологию в целом, а также не перечисляйте ее сонные артефакты. Дайте качественное описание из вне.
  6. Расскажите, как устроена самоорганизуемсоть команды в Scrum? Как методология ограждает свободу команды и какие выгоды из этого извлекаются для проекта?
  7. Расскажите об обязанностях Scum-матера.
  8. Расскажите об обязанностях Product Owner.
  9. Расскажите о задачах ежедневных встреч.

Лекция 12. Обзор технологии Microsoft Visual Studio Team System (VSTS)

Вопросы

  1. Расскажите об основных составляющих продукта MS VSTS.
  2. Расскажите о функциональности TFS.
  3. Расскажите о различных клиентских приложениях MS VSTS.
  4. Расскажите о средствах поддержания сборки в MS VSTS.
  5. Расскажите о различных изданиях Visual Studio и их возможностях относительно MS VSTS.
  6. Расскажите о самом простом клиенте TFS и тех функциональных возможностях, которые он обеспечивает.
  7. Расскажите о возможностях пакета Team Foundation Power Tools. Это клиентская или северная компонента?
  8. Расскажите об инсталляции MS VSTS.

Задания

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

Лекция 13. VSTS: управление элементами работ (Work Items)

Вопросы

  1. Что такое элемент работы? Приведите примеры различных видов элементов работы.
  2. Какие есть еще артефакты в процессе, развернутом в MS VSTS? Как они взаимосвязаны с элементами работы?
  3. Что такое тип элемента работы, что в нем определяется?
  4. Расскажите о реквизитах элемента работы.
  5. Как и где задается жизненный цикл элемента работы? Какие программные продукты при этом используются?
  6. Расскажите об импорте/экспорте элементов в MS Excel и Project: зачем это нужно, какие практические выгоды это дает.
  7. Расскажите о связи элементов работы и отчетов.

Лекция 14. VSTS: конфигурационное управление

Вопросы

  1. Перечислите особенности системы контроля версий TFS, отсутствующие в других подобных средствах.
  2. Расскажите об Отслеживание изменений отдельных файлов.
  3. Расскажите о правилах внесения изменений.
  4. Расскажите об управлении ветками.
  5. Расскажите о сохранении без внесения.
  6. Расскажите о связи средств управления сборкой TFS и MS Build.
  7. Расскажите об описаниях сборок (build definition).
  8. Расскажите о результатах сборок (build results).
  9. Расскажите о том, как создается проект в MS Build.
  10. Расскажите о запуске процесса сборки.
  11. Расскажите об анализе результатов сборки.
  12. Расскажите об управлении процессом сборки.
  13. Расскажите об управлении политикой очистки сборок.

Лекция 15. VSTS: тестирование

Вопросы

  1. Подробно разберите и прокомментируйте жизненный цикл ошибки в шаблоне процесса MSF for Agile.
  2. Расскажите о том, как создается описание ошибки.
  3. Опишите связь изменений исходных текстов ПО и ошибок.
  4. Расскажите о системе автоматических оповещений в TFS.
  5. Расскажите о целях и задачах модульного тестирования. Как модульные тесты, созданные разработчиками, могут использоваться в дальнейшем?
  6. Какие альтернативы MS VSTS существуют для автоматической поддержки модульного тестирования для Visual Studio?
  7. Расскажите о поддержке модульного тестирования в MS VSTS. Какая часть среды реализует эту функциональность?
  8. Расскажите о поддержке работы с пакетами тестов в MS VSTS.
  9. Расскажите о подходе тестирования пользовательского интерфейса Capture & Playback. В чем его трудности?
  10. Расскажите о том, как эти трудности решаются в случае тестирования интерфейсов Web-приложений.
  11. Расскажите о поддержке Capture & Playback тестирования интерфейсов Web-приложений в MS VSTS.

Лекция 16. VSTS: поддержка различных моделей процесса

Вопросы

  1. Зачем нужны разные шаблоны процессов в MS VSTS?
  2. Что они определяют, что задают, и как ограничивают разработчиков. И как им помогают?
  3. Какова на ваш взгляд, трудоемкость создания собственного шаблона процесса "с нуля"?
  4. С какой темой курса связана шаблоны процессов в MS VSTS? Найдите термин из курса, который в точности может заменить термин "шаблон процесса".
  5. Перечислите и охарактеризуйте разделы описания шаблона процесса.
  6. Сделайте краткий обзор известных вам шаблонов процесса MS VSTS.
  7. Опишите шаблон MSF for Agile Software Development.
  8. Опишите шаблон Scrum.
  9. Чем они отличаются?
< Лекция 17 || Дополнительный материал 1
Владислав Нагорный
Владислав Нагорный

Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки?

Спасибо!

Лариса Парфенова
Лариса Парфенова

1) Можно ли экстерном получить второе высшее образование "Программная инженерия" ?

2) Трудоустраиваете ли Вы выпускников?

3) Можно ли с Вашим дипломом поступить в аспирантуру?

 

Александр Качанов
Александр Качанов
Япония, Токио
Александр Санчиров
Александр Санчиров
Россия, Москва