Спецкурс Java-технологии и практики создания приложений в многоуровневой архитектуре. Мастер-класс. Java-technologies and practices for creating applications in multi-level architecture
Вид материала | Практикум |
- Рабочая программа учебной дисциплины (модуля) Веб-приложения на Java, 85.65kb.
- Лекция Язык программирования Java и технологии Java, 404.33kb.
- Использование технологии jaxb, 32.99kb.
- План занятий по курсу «Разработка программ на Java» (курс по выбору «Язык программирования, 126.35kb.
- Учебная программа (Syllabus) Дисциплина: «java технологии программирования» Специальность, 266.56kb.
- Java технологія. Основні риси та перспективи застосування, 153.41kb.
- Петербургский Государственный Университет Математико-механический факультет Кафедра, 358.16kb.
- Языки программирования java и java-технологии, 88.92kb.
- Рабочая программа учебной дисциплины (модуля) Язык программирования Java, 90.39kb.
- Мирончик Игорь Янович ClipperIgor@gmail com (496)573-34-22 курс лекций, 28.92kb.
Спецкурс
Java-технологии и практики создания приложений в многоуровневой архитектуре. Мастер-класс.
Java-technologies and practices for creating applications in multi-level architecture.
Программа, запланированная на осень 2011
Структура курса 2
Теоретическая часть 2
1. Типы корпоративных информационных систем 2
2. Роль языка Java в индустрии создания крупных КИС 3
3. Описание процесса разработки 3
4. Многоуровневая архитектура корпоративных информационных систем 3
5. Уровень бизнес-логики (Архитектурные шаблоны и основные технологии) 3
6. Уровень представления (Архитектурные шаблоны и основные технологии) 4
7. Уровень доступа к хранимым данным (Архитектурные шаблоны и основные технологии) 4
8. Уровень интеграции 4
9. Методики создания качественного ПО 4
10. Инструменты разработки 5
Почасовая программа спецкурса 6
Мастер класс 6
Практикум 7
Структура курса
Предлагается построить курс в виде трёх основных частей:
- Теоретическая часть. Цель этой части сформировать каркас знаний по архитектурам, технологиям и практикам создания КИС.
- Мастер класс. Цель мастер класса - продемонстрировать в реальном времени приёмы и практики разработки модельного приложения опытным разработчиком.
- Практикум. Цель практикума – освоение студентами основных технологий и практик разработки. Эта цель будет достигаться посредством двух типов заданий:
- После каждой лекции студентам будет предложено выполнить небольшие практические задания, которые будут состоять в добавлении небольших фрагментов функциональности к разрабатываемому на лекции модельному приложению.
- Разработка модельного приложения с нуля по образцу.
- После каждой лекции студентам будет предложено выполнить небольшие практические задания, которые будут состоять в добавлении небольших фрагментов функциональности к разрабатываемому на лекции модельному приложению.
Теоретическая часть
В данном разделе приведены темы лекций с приблизительным содержанием.
- Звёздочкой (*) отмечены технологии используемые в Ай-Теко ЦКБИТ.
- Двумя звёздочками (**) отмечены технологии, на которых в настоящее время действующих проектов нет, но могут появиться.
- Тремя звёздочками (***) отмечены технологи, по которым требуется провести практикум.
Типы корпоративных информационных систем
Неформальный обзор типов корпоративных информационных систем
- Приложения АРМ для работы операторов обслуживающих автоматизированные бизнес-процессы предприятия*
- Порталы Business to Employee*
- Порталы Business to Customer*
- Приложения Business Intelligence*
- Корпоративные интеграционные шины*
- Интеграционные системы Business to Business*
- Приложения для взаимодействия между сотрудниками (электронная почта, wiki, блоги, мессенджеры, социальные сети)*
- CRM системы (стратегии)
- ERP системы
Роль языка Java в индустрии создания крупных КИС
Обоснование роли языка Java в создании крупных корпоративных информационных систем.
Описание процесса разработки
- Модели жизненного цикла (Каскадная, итеративная)
- Методологии разработки RUP, Agile (Scrum, XP)
Многоуровневая архитектура корпоративных информационных систем
- Историческая перспектива от мейнфреймов через клиент-сервер к многоуровневой архитектуре и обратно к одноуровневой в облачных архитектурах
- Причины разделения крупных систем на уровни логические и физические
- Физические
- Централизация бизнес-логики
- Балансировка нагрузки
- Защита
- Управление транзакциями (В том числе распределёнными)
- Централизация бизнес-логики
- Логические
- Управление сложностью
- Облегчение тестирования и внесения изменений
- Управление сложностью
- Постепенный уход от разделения физических уровней и более тесная интеграция логических уровней (веб-каракас Ruby On Rails) в процессе движения в сторону облачных архитектур (SaaS, PaaS и IaaS).
- Физические
- Краткий обзор уровней и их назначения
Уровень бизнес-логики (Архитектурные шаблоны и основные технологии)
- Архитектурные шаблоны
- Сценарий транзакции
- Модель предметной области
- Модуль таблицы
- Сценарий транзакции
- Технологии
- CORBA* (IDL, IIOP)
- EJB 2.1*,3.0* Session Beans*, Message Driven Beans*
- Spring Framework*
- AOP* (Aspect Oriented Programming) для реализации ортогональных областей отвественности
- CORBA* (IDL, IIOP)
- Сервера приложений
- Отличие контейнеров сервлетов (Tomсat, Resin, Jetty) от полноценных серверов приложений (IBM WebSphere AS*, Oracle/BEA Weblogic*, Redhat JBoss)
- Отличие контейнеров сервлетов (Tomсat, Resin, Jetty) от полноценных серверов приложений (IBM WebSphere AS*, Oracle/BEA Weblogic*, Redhat JBoss)
Уровень представления (Архитектурные шаблоны и основные технологии)
- Архитектурные шаблоны
- Model View Controller
- Model View Controller
- Технологии
- Web Services JAX-RPC* JAX-WS*
- Толстый клиент
- Eclipse RCP (SWT) Swing/AWT
- Adobe AIR (FLEX)
- Eclipse RCP (SWT) Swing/AWT
- Тонкий клиент
- Традиционные технологии
- Сервлеты***, JSP***, Struts***, JSF*
- Сервлеты***, JSP***, Struts***, JSF*
- Rich Internet Applications
- GWT*** (Google Web Toolkit), Adobe FLEX, JavaFX
- GWT*** (Google Web Toolkit), Adobe FLEX, JavaFX
- " onclick="return false">
- Ненавязчивый " onclick="return false">
- HTML*, CSS*
- Портальные решения (Порталы, портлеты, виджеты)
- Традиционные технологии
- Web Services JAX-RPC* JAX-WS*
Уровень доступа к хранимым данным (Архитектурные шаблоны и основные технологии)
- Архитектурные шаблоны
- Table Data Gateway
- Active Record
- Data Mapper
- Table Data Gateway
- Технологии
- JDBC* (Недостатки, Spring JDBC API*** - как более удобная обёртка JDBC API)
- EJB 2.1 Entity Beans (Не рекомендованы к использованию, но рассказать нужно для исторической перспективы. Желательно привести, как пример не ортогонального интерфейса и грязного кода.)
- EJB 3.0* JPA*** и Hibernate***
- Spring ORM* интеграция
- JDBC* (Недостатки, Spring JDBC API*** - как более удобная обёртка JDBC API)
Уровень интеграции
- Архитектурные шаблоны
- Service Provider/Service Consumer
- Low coupling/High cohesion
- Асинхронное взаимодействие Publish Subscribe / Point To Point
- Service Provider/Service Consumer
- Технологии
- MOM (Message Oriented Middelware)
- JMS (Spring JMS***) EJB Message Driven Beans* (Active MQ, WebSphere MQ)
- Веб сервисы***
- Архитектурный стиль SOA*
- ESB**
- BPEL**
- MOM (Message Oriented Middelware)
Методики создания качественного ПО
- Основные свойства и принципы построения качественного кода:
- Управление из единой точки, оно же – не повторяйся DRY (Don’t Repeat Yourself);
- SLAP (Single Level Of Abstraction) разделение уровней абстракции;
- SRP (Single Responsibility Principle) принцип единой ответственности,
- YAGNI (You Ain’t Gonna Need It) Не добавляй функциональность впрок – она не понадобится;
- ортогональный дизайн;
- Именование программных сущностей;
- Не изобретай колесо
- и др.
- Управление из единой точки, оно же – не повторяйся DRY (Don’t Repeat Yourself);
- Рефакторинг
- Разработка управляемая тестами (Test Driven Development)
- Разработка небольшими приращениями функциональности
- Цикл разработки: Создание теста (Спецификации), Минимильная реализация (Которая позволяет тесту завершиться успешно), рефакториг для получения чистого кода (В рамках отведённых ресурсов).
- jUnit*** тестовый фреймворк
- Инструменты определения тестового покрытия (Emma, Eclemma*** для Eclipse, Cobertura*)
- Шаблоны проектирования для облегчения тестирования. Вставка зависимости (Dependency Injection) Spring***
- Использование тестовых двойников для тестирования опосредованного ввода и вывода (Moсk***, Stub***) и ускорения выполнения (Fake). По книге «Шаблоны тестирования xUnit» Джерард Месарош
- Разработка небольшими приращениями функциональности
- Автоматическая сборка приложений (Ant***, Maven)
- Непрерывная интеграция (Hudson*)
- Шаблоны проектирования GOF как язык взаимодействия в команде. В качестве примера, наиболее часто используемые:
- Template Method
- Factory
- Singleton (Критика)
- Composite Method
- Template Method
Инструменты разработки
- IDE Eclipse*** WTP (IBM RAD* (Rational Application Developer)), IntelliJ IDEA, NetBeans
- JUnit
- Инструменты определения тестового покрытия (Emma, Eclemma*** для Eclipse)
- Автоматическая сборка приложений (Ant***, Maven*)
- Непрерывная интеграция (Hudson*)
- Мониторинг сетевого трафика (TCP/IP Monitor*)
Почасовая программа спецкурса
В следующей таблице приведено содержание каждой лекции, длина которой две пары
№№ Лекции | Темы |
1 | Вводная лекция. Обзор типов корпоративных информационных систем; Роль языка Java в индустрии создания крупных КИС; Описание процесса разработки; Методики быстрого создания качественного ПО(Часть 1); Многоуровневая архитектура корпоративных информационных систем; Обзор модельного приложения |
2 | Уровень бизнес-логики (Архитектурные шаблоны и основные технологии); Инструментальные средства; Мастер класс по разработке слоя бизнес логики модельного приложения с использованием практики разработки управляемой тестами и каркаса Spring. |
3 | Уровень представления (Архитектурные шаблоны и основные технологии) Часть 1; Инструментальные средства; Мастер класс по разработке слоя представления модельного приложения с использованием JSP/Servlets/" onclick="return false"> |
4 | Уровень представления (Архитектурные шаблоны и основные технологии) Часть 2; Инструментальные средства; Мастер класс по разработке слоя представления модельного приложения с использованием GWT. |
5 | Уровень доступа к хранимым данным (Архитектурные шаблоны и основные технологии); Инструментальные средства; Мастер класс по разработке слоя доступа к хранимым данным модельного приложения c использованием JDBC, Spring JDBC API и ORM каркаса JPA. |
6 | Уровень интеграции; Инструментальные средства; Мастер класс по разработке слоя интеграции двух приложений посредством JMS и веб-сервисов. |
Мастер класс
Почти на каждой лекции предусмотрен мастер-класс, демонстрирующий разработку модельного приложения в режиме реального времени. Мастер класс предполагает, что существует разработанное приложение, размещённое в Интернете на сайте GitHub.com (https://github.com/alexpetrov/Mentor-Bank ). Это позволит студентам загружать на свои ноутбуки поэтапно разрабатываемое лектором приложение. Кроме того это позволить сдавать практическое задание в виде pull-запросов системы GitHub.com.
Для проведения мастер-классов требуется наличие проектора в аудитории.
После каждой лекции будет сообщаться список ПО (по e-mail), которое нужно установить к следующей лекции.
Практикум
Для наилучшего усвоения материала требуется практикум по технологиям, которые наиболее широко используются в проектах Ай-Теко ЦК БИТ.
В частности нужен практикум по следующему стеку технологий:
- Веб-интерфейс: JSP/Servlets/" onclick="return false">
- Бизнес-логика: Spring IOC EJB 3.0
- Доступ к данным: OpenJPA и/или Hibernate.
- Интеграция: Веб-сервисы JAX WS, и обмен сообщениями Spring JMS и MDB.
Должен использоваться следующий инструментарий:
- Язык программирования и runtime: Java 6
- Среда разработки: Eclipse JavaEE 3.6 Helios;
- Веб каркас: GWT плагин для Eclipse;
- Инструмент автоматической сборки: ANT;
- Тестовый фреймворк: JUnit 4.8;
- Библиотека создания тестовых двойников Mockito;
- СУБД: derby 10.x.
- Сервер приложений: Tomcat 7.0 и JBoss 7.0.
Само задание должно быть не сложным по сути, то есть должно содержать несколько (не больше семи взаимосвязанных) сущностей хранимых в БД и модифицируемых через веб-интерфейс. Кроме того, должны быть реализованы сценарии с асинхронными взаимодействиями и интеграция между приложениями через веб-сервисы.