vva » 07 сен 2007, 12:12
То же самое в виде текста (раз в университете меня напугали что могут быть проблемы с нелицензионным ПО):
Теоретические темы:
Общий план теоретических занятий:
1. каждый студент получает тему и готовит по ней доклад к заданному занятию-числу с ответами на все вопросы/пункты (что такое зачем)
2. студент начинает рассказывать, отвечает на вопросы
3. преподаватель объясняет, какую ахинею несёт студент и рассказывает либо поясняет сам
4. обсуждение, спор, если нет больше вопросов, переход к практическому занятию
1. Проектирование схемы данных
1. нормализация схемы данных
2. связь один ко многим
3. связь много ко многим
4. связь один к одному
5. отображение иерархии наследования на базу данных («кластеры», «дискриминаторы», разные способы представления на физической структуре)
6. каскадное удаление
7. каскадное обновление
8. enum, set
9. различные нотации описания схем данных (UML, ER-диаграммы)
10. скалярные арифметические типы данных
2. Проектирование пользовательского интерфейса системы
1. MDI интерфейс
2. табличный интерфейс
3. интерфейс в виде модальных диалогов (ok/cancel)
4. мастера (wizard-ы)
5. WEB-интерфейс
6. Аякс
7. понятие о юзабилити и тестировании юзабилити
8. GOMS-анализ
9. типовые элементы управления
10. простейшие требования к экранным формам (tab-order, читабельность, группировка, незагромождённость)
3. Развёртывание информационных систем (deployment, installation)
1. системы подготовки дистрибутивов (wix, nsis) основные понятия – файл, переменные среды, изменение реестра, изменение настроечных файлов
2. развёртывание программ в Linux-среде
3. определение предварительных условий для инсталляции (установка необходимых дополнительных пакетов)
4. удалённое развёртывание информационных систем (сайтов) – закачка исполняемых файлов, настройка путей и переменных, настройка сервера, заполнение базы данных
5. план развёртывания
6. структура инсталляционных sql-скриптов
7. инструкции по установке
8. стратегия работы с ошибками на удалённой системе
9. uninstall, очистка системы и что не стоит чистить
10. обновление уже установленной системы
4. Документирование проекта
1. внутренняя документация (ТЗ, howto, комментарии, doxygen, NDoc)
2. внешняя документация, её структура
3. pdf
4. word
5. html
6. info
7. docbook
8. стили внешней документации (справочник по элементам управления, step-by-step, поваренная книга, FAQ)
9. EULA
10. readme.txt
11. whatsnew.txt
12. roadmap.txt
5. Внутренняя организация проекта
1. типовая структура директории проекта
2. понятие о системе контроля версий (репозиторий, рабочая директория, commit, update, import, revert, clone, push, pop, diff, patch)
3. понятие о «сборке за один шаг»
4. регулярное тестирование (круиз-контроль)
5. отличие исходников от остальных файлов
6. что стоит, чего не стоит и в каком виде нужно держать в репозитории
7. экскурсия в структуру внутренних файлов простейшей системы контроля версий (CVS)
8. branch-и и tag-и в проекте, ветвление и перенос изменений между ветвями
9. общепринятые требования к оформлению кода и комментариям
10. организация проектов с разделяемыми внешними библиотеками
6. Версионирование и резервное копирование данных.
1. способы передачи и сохранения данных
2. как найти разницу между двумя базами
3. ведение истории схемы данных
4. скрипты для обновления схемы данных
5. регулярное резервное копирование и резервное копирование «по требованию»
6. резервная копия в виде реплицированного зеркала базы данных
7. обеспечение целостности данных при восстановлении из резервной копии (ссылочная целостность и целостность по метаданным)
8. инкрементальная и полная резервная копия
9. разные способы обеспечения версионирования самих данных средствами СУБД
10. сжатие данных в разных СУБД
7. Тестирование информационных систем
1. блочное тестирование (unit-тестинг)
2. функциональное тестирование
3. тестирование с использованием dump-ов вывода
4. регрессионное тестирование
5. приёмочное тестирование
6. минимальные тестовые планы: проверить всё что в whatsnew, проверить всё что помечено в bug-tracking е как сделано, минимальные тестовые сценарии
7. интеграционное тестирование
8. нагрузочное тестирование
9. понятие о тестовом покрытии
10. формат типового bug-report а!
8. Организация общения с заказчиком
1. первоначальное составление ТЗ
2. оценка проекта (estimation)
3. выбор архитектуры
4. учёт рисков
5. учёт времени на отладку и тестирование
6. управление требованиями (requirements management)
7. роли людей в IT-проекте
8. календарное планирование
9. планирование релизов и того что в них должно быть
10. управление проектом в треугольнике «качество-время-ресурсы»
9. Язык SQL-запросов, его особенности
1. left join, right join
2. использование индексов при запросах
3. page ing результатов запросов
4. запросы на изменение схемы данных
5. запросы на массовый импорт/экспорт данных
6. ключевое слово having
7. агрегатные запросы
8. объекты уровня БД, уровня сессии, уровня транзакции (переменные и таблицы)
9. блокировки, блокировочные и версионные СУБД
10. стратегии блокирования при реализации диалогов (ok/cancel) и долгоиграющих вычислений
10. Оптимизация работы с базами данных
1. оптимизация схемы данных, возможно её частичная денормализация
2. минимизация запросов к СУБД
3. минимизация передаваемых данных
4. обеспечение нужных индексов и правильных скалярных типов данных
5. оптимизация типовых запросов к СУБД, план тестирования, работа с оптимизатором
6. оптимизация специфичных видов запросов: like, limit
7. реализация часто требуемых типовых полей в виде автоматически обновляемых триггерами полей
8. оптимизация производительности при помощи репликации и балансировки нагрузки
9. СУБД-кластеры
10. оптимизация блокировок
11. Работа со специальными структурами в СУБД
1. работа с деревьями
2. работа с геометрической информацией (средствами обычных индексов, средствами специальных структур)
3. работа с астрономической информацией (PostgresSQL)
4. работа с полнотекстовым поиском
5. нечёткий текстовый поиск, синонимы, алгоритм Левенштэйна, soundex и т.п.
6. раюота с базами документов и файлов произвольного вида (картинками, офисными форматами)
7. работа с файловой системой и обеспечение целостности данных при работе с ней
8. работа с очень большими блоками данных в разных СУБД и проблемы при закачивании их одним запросом
9. T-деревья
10. шифрование и обеспечение секретности
12. Репликация баз данных
1. query-based репликация
2. data-based репликация
3. транзакционная репликация
4. merge-репликация
5. проблемы, связанные с репликацией недетерминированных запросов
6. обеспечение репликации в прикладных пакетах (DocVision, Directum)
7. возникновение конфликтов и их разрешение при репликации
8. репликация для балансировки нагрузки
9. репликация для резервного копирования
10. справочная репликация
11. «бриллиантовая» репликация
12. термины вокруг репликации (master-slave, publishier-subscriber, одно-двухсторонняя репликация)
13. Различные схемы работы с базами данных
1. DAO/BLL
2. различные ОРМ-обёртки
3. COM/CORBA, работа с интерфейсами
4. двухзвенные архитектуры и трёхзвенные архитектуры
5. Hiberbate
6. EJB
7. базы данных «in memory»
8. кэширование, на стороне клиента и на стороне сервера
9. обеспечение изоляции и связь с транзакциями и сессиями
10. тестирование уровня данных
14. OLAP-кубы
1. место в общей структуре проекта (после накопления первичных данных)
2. простейший пример
3. простейшая схема куба прямо на уровне обычной СУБД
4. организационная работа (связь с первичными данными по времени)
5. связь с генерацией документов
6. детализация и упрощение
7. корреляционный анализ
8. связь с репликацией
9. специальный синтаксис запросов
10. связь с агрегатными функциями SQL
15. Внутреннее организационное обеспечение IT-проектов
1. распределение работ и bug-tracking
2. минимальные time-report ы и регулярные планёрки
3. система должностных инструкций и how-to в виде wiki
4. организация внутренних списков рассылки и чата
5. организация code-review
6. роли людей в ИТ-команде (разработчик, team-leader, project-manager, sales-manager, аналитик, тестировщик, тех-пис)
7. настройка рабочего места
8. требования к процедуре commit-а
9. простейшие эргономические требования (шум, занимаемая площадь, время, режим работы)
10. задача управления проектом как поиск оптимальной траектории роя разработчиков
16. Аспектно - ориентированное программирование
1. понятие стратегии объектно-ориентированно разработки
2. понятия инструментальных объектов как простейшей реализации аспектов
3. понятие View и trigger-ов в базах данных как аналог аспектов
4. понятие аспектов и типовые примеры аспектов
5. декларативное изменение объектов-классов как единый аспект
6. примеры на c++, java и С#
7. связь с декларативным программированием на макросах
8. проблемы (тестовое покрытие, оптимизация, анализ кода)
9. связь с функциональным программированием
10. связь с программированием по контракту
17. движение OpenSource
1. основная лицензия – GPL, её особенности
2. для чего нужна LGPL
3. отличия лицензии BSD и почему она проиграла пока GPL
4. особенности авторского права на ПО в России
5. типовая структура OpenSource проекта
6. отношения к patch-ам
7. полностью «свободные» лицензии
8. структура управления проектами группы Apache (Jakarta) их законы
9. версионирование открытых проектов
10. проблемы движения OpenSource
Сквозные практические примеры-темы:
Общий план практических занятий
1. преподаватель выступает в качестве заказчика проекта по конкретной предметной области, с минимально-дурацко-реальной постановкой и последующей постоянной её корректировкой, ответами на вопросы и выставлением новых требований (всё как в жизни)
2. студенты готовят полное обеспечение проекта, параллельное теоретическим занятиям, проектирование схемы данных, интерфейса, оценка проекта, календарный план, ТЗ, план тестирования и развёртывания, инфраструктура документации, сборки и установки и т.п.
3. в конце семестра должно получится то что обычно описывается как результат исследовательской фазы проекта – нормальное ТЗ, альфа-версию со всеми необходимыми функциональными атрибутами (документацией, инфраструктурой сборки, планом развёртывания и тестирования)
1. Диспетчерская служба ГАС
Нужно:
- рабочее место диспетчера
- рабочее место администратора
- рабочее место наблюдателя (аналитика)
Описание рабочего процесса:
АРМ диспетчера:
1. диспетчер принимает звонок, фиксирует адрес, жалобу, описывает категорию проблемы
2. диспетчер назначает на заявку бригаду, распечатывает для них маршрутный лист
3. бригада по возвращении приносит маршрутный лист с описанием принятых мер, времени прибытия и прочими отметками
4. диспетчер (или кто то другой) регистрирует данные с бланка заявки в системе
АРМ Администратора: ведёт список бригад (бригадиров), диспетчеров, и простых пользователей с логинами. Предполагается полная взаимозаменяемость
АРМ наблюдателя:
- просмотр данных по всем заявкам
- просмотр данных по дням
- отчёт по дню
- отчёт по бригаде
- отчёт по диспетчеру
- контроль нормативов реакции на заявку
Возможность расширения на несколько диспетчерских пунктов
2. Интернет-магазин
Обычная задача
Каталог товаров (диски, книги)
Регистрация пользователей
Корзина пользователей
АРМ администратора магазина
Взаимодействие с бухгалтерско-складской системой
Взаимодействие с платёжными системами
3. Расчёт подоходного налога с физических лиц
Человек вводит данные о своих доходах, паспортные данные, ИНН, другие данные, и по определённым формулам рассчитывается его подоходный налог. После чего печатается декларация о доходах. При вычислении учитываются числа с прошлых периодов.
Предполагается, что программа должна иметь online и offline версии.
4. Кредитное бюро
Кредитное бюро помогает людям получать кредиты. Люди приходят в бюро и заполняют анкету (электронно). После чего кредитное бюро распечатывает целый пакет заполненных для разных банков анкет и отправляет им. Кто-нибудь из банков да даст кредит.
Желательно иметь возможность сохранять историю обращений клиентов. Наверно неплохо иметь и online и offline версию.
5. Система допуска и продажи билетов в ночной клуб.
К анкете клиента привязывается электронная карта (любая). После чего клиент имеет возможность проходить по этой карте в ночной клуб. При каждом заходе со счёта списываются деньги за мероприятие. Нужны АРМ кассира, АРМ менеджера, АРМ охранника.
6. Система, обучающая английскому языку
Человеку выскакивает русское слово или целое предложение, которое нужно уметь переводить на английский язык. Система ведёт статистику удачных и неудачных переводов по разным людям. Образцы для переводов предполагают несколько вариантов, и распознать различное написание. Образцы для переводов группируются по темам. Очевидно, что неплохо иметь online и offline версию.
7. Форум в виде семантической таблицы
Обычный веб-форум, но для того чтобы ограничить длину флэйма предполагается возможность разделять предмет спора на варианты, а также интегрировать голосования по темам.
8. Проведение аукционных торгов и арестованным имуществом.
Арестовали активы либо начали распродажу банкротящейся фирмы. Нужно импортировать информацию о распродаваемом имуществе, разбить его на лоты, сформировать объявление об аукционе, регистрировать участников, их заявки и цены. По результатам генерировать протокол и конечный документ.
9. Система учёта задач и рабочего времени при производстве ПО
Обычная bug-tracking овая или issue-tracking овая система. Объекты: пользователи, проекты, версии, задачи
10. Система массовой рассылки рекламных сообщений
Организация процесса рассылки бумажных либо электронных рекламных сообщений многим людям.
11. Доска объявлений о продаже недвижимости
Пользователи, объявления типа «куплю», типа «продам», база адресов с фотографиями и характеристиками объектов.
12. Схема данных СУБД
Структура данных для хранения метаинформации о базу в СУБД, объекты: таблицы, поля, связи, ключи. Возможно хранение графических схем данных.
13. Карта города
Проектирование системы для хранения большой карты с многоугольниками, линиями, адресами и т.п.
14. Система учёта рабочего времени охранного предприятия
Список сотрудников, табель учёта рабочего времени по часам, разная оплата по часам, учёт праздничных сверхурочных и т.п. Расчётные ведомости с учётом данных прошлых месяцев.
15. Система геологического строения участка
Геологические данные по скважинам (координаты скважины, порядок пластов и их размеры по каждой скважине), пространственная модель геологического строения участка – триангуляция, связь между пластами. (условно говоря нужна функция получения по трём координатам породы в этом месте). Расчёт толщины необходимой песчаной подушки по координатам фундамента.
16. система учёта клиентов и отношений с ними в фирме, производящей ПО
Простейшая СРМ учёт потенциальных и реальных клиентов, купленных ими продуктов, выставленных им счетов и реально полученных от них денег, выданных им ключей.
17. Система проведения заседаний
Назначение даты и повестки заседания, список присутствующих
Уведомление присутствующих
Ведение протокола заседания, фиксация решений по каждому вопросу
Генерация выписок из протокола
Протокол подсчёта голосов.
Генерация бюллетеней голосования.
Уведомление о результатах заседания.
18. Система учёта посещений поликлиники
Аналог описанной в статье на citforum-е. Учёт клиентов, врачей, посещений, жалоб, выставленных диагнозов и рекомендаций.
19. Система оценки ущерба при ДТП
Учёт ДТП, описание клиента и транспортного средства, протокол осмотра ТС, перечисление повреждений, планирование работ и требуемых для ремонта материалов, оценка ремонта, оценка остаточной стоимости ТС, генерация отчётов и оценочного заключения.
20. Система сопровождения поисковой оптимизации сайта
Учёт семантического ядра, мест в разных поисковиках по разным вопросам, в зависимости от времени и т.п. Подсчёт количества запланированных и фактических эффективных показов.