Основы программной инженерии

Технологические аспекты промышленного производства программных систем .

Копия странички курса (иногда сайт ИСП РАН медленно загружается).

Лектор: к.ф.-м.н. В. В. Кулямин

Весной 2016 года проводится по понедельникам (нечетная неделя, 10:30-12:05, П13) и вторникам (8:45-10:20, П13).
Пере- и досдача тестов (можно переписать любую часть) состоится 23.05.2016(10:30-12:05, П13), 24.05.2016 (8:45-10:20, П13).

Выложены результаты тестов 29.03, 19/26.04, 10/16.05.2016.

Курс предназначен для студентов 3 курса.

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

Примерное содержание курса

Разработка сложного ПО: источники проблем и методы их решения. Основные приемы преодоления сложности.

Жизненный цикл ПО. Основные процессы и модели жизненного цикла.

Моделирование предметной области. Потребности и требования к ПО. Качество ПО. Методы его обеспечения и контроля.

Архитектура ПО. Элементы UML. Проектирование ПО и шаблоны проектирования. Архитектура распределенных приложений на примере современных Web-приложений.

Компонентная разработка ПО. Элементы языков программирования Java и C#. Разработка Web-приложений в технологиях J2EE и .NET.

Принципы разработки пользовательского интерфейса. Разработка пользовательского интерфейса с помощью JSP и ASP.NET.

Направления развития компонентных технологий.

Управление проектами по разработке ПО.

Варианты экзаменационных вопросов

В этом документе перечислены варианты вопросов, которые могут быть в экзаменационных билетах.

Результаты экзаменов

Дата Ссылка
2016 год, тесты 29.03, 19/26.04, 10/16.05.2016 Результаты
2015 год, тесты 30.03/21/22/27/28.04/05.05.2015. Результаты
2014 год, тесты 31 марта/6 мая/20 мая/28 мая 2014 Результаты
2012 год, осенний семестр (11 декабря 2012) Результаты
2011 год, осенний семестр (8 декабря 2011) Результаты
2010 год, осенний семестр (6 декабря 2010) Результаты
2010 год, весенний семестр (28 апреля 2010) Результаты
2008 год, осенний семестр (15 декабря 2008) Результаты
2007 год, осенний семестр (17 декабря 2007) Результаты
2006 год, осенний семестр (14 декабря 2006) Результаты

Лекции

Эти документы представляют базовый материал курса, который может как-то перераспределяться между реальными лекциями.

Название Ссылка
Проблемы разработки сложных программных систем Lecture01.pdf
Жизненный цикл и процессы разработки ПО Lecture02.pdf
Унифицированный процесс разработки и экстремальное программирование Lecture03.pdf
Анализ предметной области и требования к ПО Lecture04.pdf
Качество ПО и методы его контроля Lecture05.pdf
Архитектура программного обеспечения Lecture06.pdf
Образцы проектирования Lecture07.pdf
Образцы проектирования (продолжение) Lecture08.pdf
Принципы создания удобного пользовательского интерфейса Lecture09.pdf
Основные конструкции языков Java и C# Lecture10.pdf
Основные конструкции языков Java и C# (продолжение) Lecture11.pdf
Компонентные технологии и разработка распределенного ПО Lecture12.pdf
Компонентные технологии разработки Web-приложений Lecture13.pdf
Разработка различных уровней Web-приложений в J2EE и .NET Lecture14.pdf
Развитие компонентных технологий Lecture15.pdf
Управление разработкой ПО Lecture16.pdf
Все лекции сразу (3.7 MB) sdt-book-2006.pdf

Основная литература

  1. И. Соммервилл. Инженерия программного обеспечения. М.: Вильямс, 2002.
  2. Л. Басс, П. Клементс, Р. Кацман. Архитектура программного обеспечения на практике. СПб.: Питер, 2006.
  3. У. Ройс. Управление проектами по созданию программного обеспечения. М.: Лори, 2002.
  4. Г. Буч, Дж. Рамбо, А. Джекобсон. Язык UML. Руководство пользователя. М.: ДМК, 2000.
  5. Л. Константайн, Л. Локвуд. Разработка программного обеспечения. СПб.: Питер, 2004.
  6. Э. Дж. Брауде. Технология разработки программного обеспечения. СПб.: Питер, 2004.
  7. Е. А. Жоголев. Лекции по технологии программирования: Учебное пособие. М., Издательский отдел факультета ВМиК МГУ, 2001.
  8. Д. Леффингуэлл, Д. Уидриг. Принципы работы с требованиями к программному обеспечению. Унифицированный подход. М.: Вильямс, 2002.
  9. А. Якобсон, Г. Буч, Дж. Рамбо. Унифицированный процесс разработки программного обеспечения. СПб.: Питер, 2002.
  10. К. Бек. Экстремальное программирование. СПб.: Питер, 2002.
  11. В. В. Липаев. Методы обеспечения качества крупномасштабных программных средств. М., Синтег, 2003.
  12. Э. Хант, Д. Томас. Программист-прагматик. М.: Лори, 2004.
  13. Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес. Приемы объектно-ориентированного проектирования. Паттерны проектирования. СПб.: Питер-ДМК, 2001.
  14. М. Фаулер и др. Архитектура корпоративных программных приложений. М.: Вильямс, 2004.
  15. Р. Монсон-Хейфел. Enterprise JavaBeans. СПб ., Символ-Плюс, 2002.
  16. Р. Андерсон и др. ASP.NET для профессионалов. Тома I, II. Лори, 2005.
  17. J. Gosling, B. Joy, G. Steele, and G. Bracha. Java Language Specification, 3-rd edition. Addison Wesley Professional, 2005.
    http://java.sun.com/docs/books/jls/download/langspec-3.0.pdf .
  18. C# Language Specification. Standard ECMA-334. 4-th edition, June 2006.
    http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf.

Дополнительная литература

  1. Software Engineering Body of Knowledge, 2005.
    http://www.swebok.org/ironman/pdf/SWEBOK_Guide_2004.pdf.
  2. А. Коберн. Современные методы описания требований к системам. М.: Лори, 2002.
  3. Б. Боэм, Дж. Браун, Х. Каспар и др. Характеристики качества программного обеспечения. М.: Мир, 1991.
  4. E. Yourdon. Modern Structured Analysis. Prentice Hall, 1988.
  5. T. DeMarco. Structured Analysis and System Specification. A Yourdon Book , Yourdon Inc., NY, 1979.
  6. Дж. Рамбо, А. Якобсон, Г. Буч. UML: Специальный справочник. СПб.: Питер, 2002.
  7. М. Фаулер, К. Скотт. UML в кратком изложении. М., Мир, 1999.
  8. M. Fowler. Analysis Patterns: Reusable Object Models. Addison-Wesley, 1997.
  9. F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, M. Stal. Pattern-Oriented Software Architecture. A System of Patterns. Wiley, 2002.
  10. D. Schmidt, M. Stal, H. Rohnert, F. Buschmann. Pattern-Oriented Software Architecture. Volume 2. Patterns for Concurrent and Networked Objects. Wiley, 2000.
  11. S. Ambler. Process Patterns: Building Large-Scale Systems using Object Technology. Cambridge University Press, Cambridge, MA, 1998.
  12. C. Szyperski. Component Software Beyond Object-Oriented Programming. Boston, MA: Addison-Wesley and ACM Press, 1998.
  13. F. Bachmann, L. Bass, C. Buhman, S. Comella-Dorda, F. Long, J. Robert, R. Seacord, K. Wallnau. Volume II: Technical Concepts of Component-Based Software Engineering, 2nd Edition/ Technical Report CMU/SEI-2000-TR-008.
    http://www.sei.cmu.edu/pub/documents/00.reports/pdf/00tr008.pdf.
  14. Б. Майер. Объектно-ориентированное программирование. Концепции разработки. М.: Русская редакция, 2004.
  15. Г. Буч. Объектно-ориентированный анализ и проектирование с примерами приложений на C++. Второе издание. М.: Бином, СПб.: Невский диалект, 2000.
  16. Б. Лисков, Дж. Гатег. Использование абстракций и спецификаций при разработке программ. М.: Мир, 1989.
  17. Э. Таненбаум, М. ван Стеен. Распределенные системы. Принципы и парадигмы. СПб.: Питер, 2003.
  18. Э. Таненбаум. Современные операционные системы. 2-е издание. СПб.: Питер, 2002.
  19. Э. Таненбаум. Компьютерные сети. 4-е издание. СПб.: Питер, 2003.
  20. Т. Кормен, Ч. Лейзерсон, Р. Ривест. Алгоритмы: построение и анализ. М.: МЦНМО, 1999.
  21. Э. М. Кларк, О. Грамберг, Д. Пелед. Верификация моделей программ: Model Checking. М.: МЦНМО, 2002.
  22. G. Alonso, F. Casati, H. Kuno, V. Machiraju. Web Services. Concepts, Architectures and Applications. Springer-Verlag, 2004.
    Сайт этой книги http://www.inf.ethz.ch/personal/alonso/WebServicesBook .
  23. Э. Ньюкомер. Веб-сервисы. Для профессионалов. СПб.: Питер, 2003.
  24. Документация по технологиям Java http://java.sun.com/docs/index.html
  25. Java Platform Enterprise Edition Specifications, version 1.4.
    http://java.sun.com/j2ee/j2ee-1_4-fr-spec.pdf .
  26. Java Platform Enterprise Edition Specifications, version 5.
    http://java.sun.com/j2ee/5.0/index.jsp.
  27. П. Аллен, Дж. Бамбара, М. Ашнаульт, Зияд Дин, Т. Гарбен, Ш. Смит. J2EE. Разработка бизнес-приложений. СПб.: ДиаСофт, 2002.
  28. Р. Монсон-Хейфел. Enterprise JavaBeans. СПб.: Символ-Плюс, 2002.
  29. Б. У. Перри. Java сервлеты и JSP: сборник рецептов. М.: Кудиц-Образ, 2005.
  30. Х. Дейтел, П. Дейтел, С. Сантри. Технологии программирования на Java 2. Книга 3: Корпоративные системы, сервлеты, JSP, Web-сервисы. М.: Бином, 2003.
  31. C. Cavaness. Programming Jakarta Struts. O'Reilly, 2002.
  32. H. Bergsten. JavaServer Faces. O'Reilly, 2004.
  33. Web-сайт проекта Spring http://www.springframework.org/.
  34. Web-сайт проекта Hibernate http://www.hibernate.org/.
  35. C. Bauer, G. King. Hibernate in Action. Manning, 2004.
  36. B. A. Tate, J. Gehtland. Better, Faster, Lighter Java. O'Reilly, 2004.
  37. R. Johnson, J. Hoeller, A. Arendsen, T. Risberg, C. Sampaleanu. Professional Java Development with the Spring Framework. Wiley, 2005.
  38. D. Jordan, C. Russell. Java Data Objects. O'Reilly, 2003.
  39. D. Crane, E. Pascarello, D. James. Ajax in Action. Manning, 2005.
  40. Страница для разработчиков на .NET http://www.microsoft.com/net/developers.mspx .
  41. Документация по платформе .NET.
    http://msdn.microsoft.com/library/default.asp.
  42. Д. Просиз. Программирование для Microsoft.NET. М.: Русская редакция, 2003.
  43. А. Феррара, М. Мак-Дональд. Программирование web-сервисов для .NET. СПб.: Питер-BHV, 2003.
  44. XML 1.1, 2004.
    http://www.w3.org/TR/xml11/ .
  45. Annotated XML 1.0, 1998.
    http://www.xml.com/axml/axml.html .
  46. Расширяемый язык разметки (XML) 1.0 (русский перевод первой версии стандарта).
    http://www.rol.ru/news/it/helpdesk/xml01.htm.
  47. Hypertext Transfer Protocol - HTTP/1.1. RFC 2616.
    http://www.w3.org/Protocols/rfc2616/rfc2616.html.
  48. http://www.opennet.ru/docs/RUS/http/index.html.
  49. Capability Maturity Model Integration (CMMI), Version 1.1. CMMI for Systems Engineering, Software Engineering, Integrated Product and Process Development, and Supplier Sourcing (CMMI-SE/SW/IPPD/SS, V1.1). Staged Representation. SEI Technical Report CMU/SEI-2002-TR-012, Software Engineering Institute, Pittsburgh, March 2002.
    http://www.sei.cmu.edu/pub/documents/02.reports/pdf/02tr012.pdf.
  50. ISO/IEC 12207:1995, Information Technology - Software life cycle processes, 1995. Amendments 2002, 2004.
  51. ISO/IEC 15504-1-9, Information technology - Process assessment, Parts 1-9.
    15504-1,3,4:2004, 15504-2:2003/Cor 1:2004, TR 15504-5:2004.
  52. IEEE 830-1998. Recommended Practice for Software Requirements Specifications. New York: IEEE, 1998.
  53. IEEE 1233-1998. Guide for Developing System Requirements Specifications. New York: IEEE, 1998.
  54. ISO/IEC 9126-1:2001. Software engineering - Software product quality - Part 1: Quality model.
  55. IEEE 1471-2000 Recommended Practice for Architectural Description of Software-Intensive Systems.
  56. Управление проектами. Сборник статей под ред. Дж. Пинто. СПб.: Питер, 2004.
  57. Руководство к Своду знаний по управлению проектами (PMBOK Guide). ANSI/PMI 99-001-2004.
  58. Ф. Брукс. Мифический человеко-месяц или Как создаются программные системы. СПб.: Символ-Плюс, 2001.
  59. Т. Демарко, Т. Листер. Человеческий фактор: успешные проекты и команды. СПб.: Символ-Плюс, 2005.
  60. К. Бланшар, П. Зигарми, Д. Зигарми. Одноминутный менеджер и ситуационное руководство. Минск: Попурри, 2002.
  61. В. В. Головач. Дизайн пользовательского интерфейса.
    http://www.uibook1.ru .
  62. J. Nielsen. Usability Engineering. Academic Press, Boston, 1993.
  63. Р. Дж. Торрес. Практическое руководство по проектированию и разработке пользовательского интерфейса. М.: Вильямс, 2002.
  64. А. Купер. Психбольница в руках пациентов. СПб.: Символ-Плюс, 2004.
  65. Я. Нильсен. Веб-дизайн: книга Якоба Нильсена. СПб.: Символ-Плюс, 2001.
  66. Я. Нильсен, М. Тахир. Дизайн Web-страниц. Анализ удобства и простоты использования 50 узлов. М.: Вильямс, 2002.
Старая страничка спецкурса находится здесь.