360 likes | 552 Views
Движение за открытую проектную документацию. Анатолий Шалыто shalyto@mail.ifmo.ru. Кафедра “ Компьютерные технологии ” Санкт-Петербургский государственный университет информационных технологий, механики и оптики. Проектная документация (1). Проектная документация (2). Коммерческие проекты
E N D
Движение за открытую проектную документацию Анатолий Шалыто shalyto@mail.ifmo.ru Кафедра “Компьютерные технологии” Санкт-Петербургский государственный университет информационных технологий, механики и оптики
Проектная документация (1) Движение за открытую проектную документацию — http://is.ifmo.ru
Проектная документация (2) • Коммерческие проекты • Управление ответственными объектами • Основная – по стандартам • Дополнительная – по требованию заказчика • Остальные • По требованию заказчика • Некоммерческие проекты • Образовательные • Качественная • Остальные • По желанию разработчика Движение за открытую проектную документацию — http://is.ifmo.ru
Аппаратуру проектируют одни люди, а изготавливают другие Документация на аппаратуру Проектная документация Основные проектные решения Результаты приемки Руководство пользователя Программное обеспечение проектируют и изготавливают одни и те же люди Документация на программное обеспечение Руководство пользователя Руководство разработчика Исходный код (для проектов с открытым исходным кодом) Документация на аппаратуру и документация на ПО Движение за открытую проектную документацию — http://is.ifmo.ru
Открытая проектная документация • Почему проектная документация? • Качество проекта повышается • Верификация упрощается • Модификация становится легче и безопаснее • Почему открытая проектная документация? • Открытая проектная документация добавляет свободу • Понимание проекта упрощается • Становится возможным использование проектных решений, разработанных ранее и другими людьми • Становится возможным применять проекты для обучения • студентов • специалистов Движение за открытую проектную документацию — http://is.ifmo.ru
Почему открытая проектная документация? • Открытая = Должна быть доступна для дальнейшего использования • Движение за открытую проектную документацию – свободное, однако находится в другой плоскости по сравнению с Движением за свободное программное обеспечение (Free Software Foundation)или Движением за открытые исходные коды (Open Source Foundation) • Результаты и идеи Движения за открытую проектную документацию могут быть применены не только к свободному программному обеспечению, но и к коммерческому, секретному и другим видам программного обеспечения Движение за открытую проектную документацию — http://is.ifmo.ru
Документация на программное обеспечение • В инженерной практике проектов без проектной документации не бывает • На www.sourceforge.net– не 76000 проектов, а значительно меньше • Код должен основываться на проектной документации, а не наоборот • Документация должна описывать не только конечный продукт, но и процесс его создания Движение за открытую проектную документацию — http://is.ifmo.ru
SWITCH-технологияАвтоматноепрограммированиеSWITCH-технологияАвтоматноепрограммирование • Предложено в 1991 году • Основано на явном выделении состояний • Проектирование, управляемое моделями • Область использования – системы со сложным поведением • Может использоваться на различных аппаратных платформах • Программируемых логических контроллерах • Микроконтроллерах • Микропроцессорах Движение за открытую проектную документацию — http://is.ifmo.ru
РазновидностиSWITCH-технологии • Логическое управление • Процедурное программирование с явным выделением состояний • Объектно-ориентированное программирование с явным выделением состояний • Классические вычислительные алгоритмы Движение за открытую проектную документацию — http://is.ifmo.ru
Основные понятия SWITCH-технологии • Состояние • Совокупность состояний • Входные переменные + События = Входные воздействия • Состояния + Входные воздействия = Автоматы без выхода • Автоматы без выхода + Выходные воздействия = Автоматы • Многозначное кодирование состояний • Наблюдаемость по состояниям • Система взаимосвязанных автоматов • Протоколирование • Проектная документация Движение за открытую проектную документацию — http://is.ifmo.ru
Автоматы в автоматном программировании • Средства спецификации алгоритмов • Изоморфное отображение в исходный код • Программа работает и протоколируется в терминах автоматов Движение за открытую проектную документацию — http://is.ifmo.ru
Образовательный эксперимент (1) • Кафедра компьютерных технологий СПбГУ ИТМО • Избранные студенты со всей России • Медалисты международных олимпиад по информатике • Медалисты чемпионата мира по программированию Движение за открытую проектную документацию — http://is.ifmo.ru
Образовательный эксперимент (2) • 1998-2001 Обычное образование 1 • Лекции и экзамены • 2001-2002 Обычное образование 2 • Лекции, курсовые работы и экзамены • 2002-2003 Экспериментальное обучение • Лекции и проекты • Создание подробной проектной документации • Более 40 полностью выполненных проектов • Эксперимент продолжается Движение за открытую проектную документацию — http://is.ifmo.ru
Образовательный эксперимент (3) • Состав проекта • Проектная документация (не менее 60 часов) • Описание задачи • Описание интерфейса пользователя • Принятые проектные решения • Описания автоматов и классов • Схемы автоматов и классов • Протоколы проверки • Список литературы • Исходный код (не менее 20 часов) • Анатолий Шалыто тратит около 10–15 часов на проект Движение за открытую проектную документацию — http://is.ifmo.ru
Примеры проектов • Игры • Скелетная анимация • Управляющие системы • Графические интерфейсы пользователя • Параллельные задачи • Транслитерация • Многое другое Движение за открытую проектную документацию — http://is.ifmo.ru
Три примера • Моделирование дизель-генератора • Процедурное программирование • Программа для игры RoboCode • Объектно-ориентированное программирование • Технология разработки визуализаторов • Объектно-ориентированная визуализация вычислительных алгоритмов Движение за открытую проектную документацию — http://is.ifmo.ru
Дизель-генераторПлан выполнения проекта • Анализ • Структурирование (выделение автоматов) • Схема взаимодействия автоматов • Словесное описание автоматов • Схема связей автомата (интерфейс) • Графы переходов • Изоморфное построение исходного кода • Проверочные протоколы Движение за открытую проектную документацию — http://is.ifmo.ru
Дизель-генераторСхема взаимодействия автоматов Движение за открытую проектную документацию — http://is.ifmo.ru
Дизель-генераторСхема связей автомата Движение за открытую проектную документацию — http://is.ifmo.ru
Дизель-генераторГраф переходов автомата Движение за открытую проектную документацию — http://is.ifmo.ru
Дизель-генераторИзоморфный исходный код void A0(int e, dg_t *dg) { int y_old = dg->y0; switch(dg->y0) { case 0: A8(e, dg); if (x220(dg)) dg->y0 = 4; else if (dg->y7 == 2) dg->y0 = 7; else if (dg->y8 == 2) dg->y0 = 1; break; case 1: A4(e, dg); A3(e, dg); A1(e, dg); if (dg->y4 != 0) dg->y0 = 6; else if (dg->y7 == 2 || dg->y7 == 4) dg->y0 = 8; else if (dg->y3 != 0) dg->y0 = 5; else if (dg->y1 == 0) dg->y0 = 0; else if (dg->y1 == 3) dg->y0 = 7; … Движение за открытую проектную документацию — http://is.ifmo.ru
Дизель-генераторПротоколы Движение за открытую проектную документацию — http://is.ifmo.ru
Программа для игры RoboCode http://robocode.alphaworks.ibm.com Лучшие результаты • GlowBlowMelee 1.1 • Cigaret 1.20 • Cynical • GlowBlow • Cynical_3 Движение за открытую проектную документацию — http://is.ifmo.ru
Программа для игры RoboCodeПлан выполнения проекта • Анализ • Структурирование (выделение классов) • Диаграмма классов • Все этапы из плана реализации проекта дизель-генератора Движение за открытую проектную документацию — http://is.ifmo.ru
Программа для игры RoboCodeДиаграмма классов Движение за открытую проектную документацию — http://is.ifmo.ru
Программа для игры RoboCodeСхема структуры класса Движение за открытую проектную документацию — http://is.ifmo.ru
Программа для игры RoboCodeИнтерфейс автомата Движение за открытую проектную документацию — http://is.ifmo.ru
Программа для игры RoboCodeГраф переходов Движение за открытую проектную документацию — http://is.ifmo.ru
Программа для игры RoboCodeОтладка по протоколам Движение за открытую проектную документацию — http://is.ifmo.ru
Технология разработки визуализаторов Алгоритм Малхотра, Кумара, Махешвари поискамаксимальногопотока Движение за открытую проектную документацию — http://is.ifmo.ru
Технология разработки визуализаторовСтруктура визуализатора • Модель • Система взаимосвязанных автоматов, сгенерированная по XML–описанию • Вид • Интерфейс пользователя, основанный на библиотеке Vizi • Контроллер • Библиотека Vizi Движение за открытую проектную документацию — http://is.ifmo.ru
Технология разработки визуализаторовПроектная документация (1) • Аннотация • Введение • Глава1. Анализ литературы • Глава 2. Описание алгоритма • Глава 3. Реализация алгоритма • Глава 4. Описание модели данных • Глава 5. Преобразование реализации • Глава 6. Описание интерфейса Движение за открытую проектную документацию — http://is.ifmo.ru
Технология разработки визуализаторовПроектная документация (2) • Глава 7. Описание конфигурации • Заключение • Список литературы • Приложения • Реализация алгоритма • Преобразованная реализация • XML–описание визуализатора • Сгенерированные исходные коды • Код интерфейса пользователя Движение за открытую проектную документацию — http://is.ifmo.ru
Визуализированные алгоритмы • Алгоритм Малхотра, Кумара, Махишвари • Алгоритм Диница • Алгоритм Хопкрофта-Крапа • Минимальное дерево путей • Алгоритмы на 2–3 деревьев • Битоническая задача коммивояжера • Алгоритм Укконена • Алгоритм Прима • Алгоритм построения простых строк и циклов деБрюина Движение за открытую проектную документацию — http://is.ifmo.ru
Ссылки • Примеры проектов • http://is.ifmo.ru/?i0=projects – Проектная документация • http://is.ifmo.ru/?i0=works – Статьи • http://unimod.sourceforge.net/ – Проект UniMod (на английском) Движение за открытую проектную документацию — http://is.ifmo.ru