Цель дисциплины:
Курс проектирование программных систем посвящен изучению современных подходов к разработке сложных приложений и программных комплексов. В рамках курса студенты изучают методы структурного проектирования, унифицированный язык моделирования и на его основе методы объектно-ориентированного анализа и проектирования. Программа курса в достаточной степени отвлечена от конкретных технологий, чтобы дать адекватное представление о дисциплине проектирования ПО. В результате обучения, студенты знакомы с методами проектирования, способны самостоятельно разработать согласованную модель программной системы, удовлетворяющей функциональным требованиям и обосновать принятые проектные решения, что подтверждается курсовым проектом. Курс включает следующие основные разделы:
- Основы инженерии программного обеспечения;
- Элементы языка UML;
- Структурное проектирование;
- Объектно-ориентированное проектирование.
Учебные задачи дисциплины:
- ознакомление слушателей с методами проектирования;
- приобретение слушателями самостоятельной разработки согласованной модели программной системы, удовлетворяющей функциональным требованиям;
- приобретение слушателем умения обосновать принятые проектные решения.
В результате освоения дисциплины «Проектирование программных систем» обучающийся должен:
знать:
- диаграммы классов, виды отношений;
- механизмы расширения UML, стереотипы, профили;
- структурированный классификатор, композит и часть, диаграммы внутренней структуры;
- представление взаимодействия, диаграммы взаимодействия и коммуникации;
- семантика взаимодействия в UML, последовательность сообщений;
- кооперация, описание сценариев вариантов использования;
- сети Петри;
- жизненный цикл ПО, проект и процесс, фазы разработки;
- процедуры моделирования и проектирования, нотация DFD, открытая и закрытая модели;
- виды требований к ПО, методы построения модели предметной области, метод Аббота;
- объектно-ориентированный анализ, понятие об обязанностях, метод CRC;
- представление конечных автоматов, диаграммы схем состояний;
- виды декомпозиции: процедурная/алгоритмическая, по данным, по сценариям/функциям;
- критерии и эвристики декомпозиции: anticipate change, information hiding, separation of concerns;
- метод постепенного уточнения (stepwise refinement);
- метод структурного проектирования Джексона (JSP);
- принципы проектирования. OCP, LSP, DIP, ISP, SRP;
- паттерны проектирования, Template method, Visitor, Builder, Fa?ade;
уметь:
- моделировать жизненный цикл классификатора с помощью конечных автоматов;
- самостоятельно разрабатывать согласованную модель программной системы, удовлетворяющую функциональным требованиям;
- обосновать принятые программные решения.
владеть:
- навыками самостоятельной работы в современных программных комплексах;
- навыками освоения большого объёма информации.