Спецкурс Java-технологии и практики создания приложений в многоуровневой архитектуре. Мастер-класс. Java-technologies and practices for creating applications in multi-level architecture

Вид материалаПрактикум

Содержание


Теоретическая часть
Corba* (idl, iiop)
Обзор типов корпоративных информационных систем
Многоуровневая архитектура корпоративных информационных систем
Уровень представления (Архитектурные шаблоны и основные технологии) Часть 1
Уровень представления (Архитектурные шаблоны и основные технологии) Часть 2
Уровень доступа к хранимым данным (Архитектурные шаблоны и основные технологии)
Уровень интеграции
Подобный материал:












Спецкурс


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



Структура курса


Предлагается построить курс в виде трёх основных частей:
  1. Теоретическая часть. Цель этой части сформировать каркас знаний по архитектурам, технологиям и практикам создания КИС.
  2. Мастер класс. Цель мастер класса - продемонстрировать в реальном времени приёмы и практики разработки модельного приложения опытным разработчиком.
  3. Практикум. Цель практикума – освоение студентами основных технологий и практик разработки. Эта цель будет достигаться посредством двух типов заданий:
    1. После каждой лекции студентам будет предложено выполнить небольшие практические задания, которые будут состоять в добавлении небольших фрагментов функциональности к разрабатываемому на лекции модельному приложению.
    2. Разработка модельного приложения с нуля по образцу.

Теоретическая часть



В данном разделе приведены темы лекций с приблизительным содержанием.
  • Звёздочкой (*) отмечены технологии используемые в Ай-Теко ЦКБИТ.
  • Двумя звёздочками (**) отмечены технологии, на которых в настоящее время действующих проектов нет, но могут появиться.
  • Тремя звёздочками (***) отмечены технологи, по которым требуется провести практикум.
    1. Типы корпоративных информационных систем


Неформальный обзор типов корпоративных информационных систем
  1. Приложения АРМ для работы операторов обслуживающих автоматизированные бизнес-процессы предприятия*
  2. Порталы Business to Employee*
  3. Порталы Business to Customer*
  4. Приложения Business Intelligence*
  5. Корпоративные интеграционные шины*
  6. Интеграционные системы Business to Business*
  7. Приложения для взаимодействия между сотрудниками (электронная почта, wiki, блоги, мессенджеры, социальные сети)*
  8. CRM системы (стратегии)
  9. ERP системы
    1. Роль языка Java в индустрии создания крупных КИС


Обоснование роли языка Java в создании крупных корпоративных информационных систем.
    1. Описание процесса разработки

  1. Модели жизненного цикла (Каскадная, итеративная)
  2. Методологии разработки RUP, Agile (Scrum, XP)
    1. Многоуровневая архитектура корпоративных информационных систем

  1. Историческая перспектива от мейнфреймов через клиент-сервер к многоуровневой архитектуре и обратно к одноуровневой в облачных архитектурах
  2. Причины разделения крупных систем на уровни логические и физические
    1. Физические
      1. Централизация бизнес-логики
      2. Балансировка нагрузки
      3. Защита
      4. Управление транзакциями (В том числе распределёнными)
    2. Логические
      1. Управление сложностью
      2. Облегчение тестирования и внесения изменений
    3. Постепенный уход от разделения физических уровней и более тесная интеграция логических уровней (веб-каракас Ruby On Rails) в процессе движения в сторону облачных архитектур (SaaS, PaaS и IaaS).
  3. Краткий обзор уровней и их назначения
    1. Уровень бизнес-логики (Архитектурные шаблоны и основные технологии)

  1. Архитектурные шаблоны
    1. Сценарий транзакции
    2. Модель предметной области
    3. Модуль таблицы
  2. Технологии
    1. CORBA* (IDL, IIOP)
    2. EJB 2.1*,3.0* Session Beans*, Message Driven Beans*
    3. Spring Framework*
    4. AOP* (Aspect Oriented Programming) для реализации ортогональных областей отвественности
  3. Сервера приложений
    1. Отличие контейнеров сервлетов (Tomсat, Resin, Jetty) от полноценных серверов приложений (IBM WebSphere AS*, Oracle/BEA Weblogic*, Redhat JBoss)
    1. Уровень представления (Архитектурные шаблоны и основные технологии)

  1. Архитектурные шаблоны
    1. Model View Controller
  2. Технологии
    1. Web Services JAX-RPC* JAX-WS*
    2. Толстый клиент
      1. Eclipse RCP (SWT) Swing/AWT
      2. Adobe AIR (FLEX)
    3. Тонкий клиент
      1. Традиционные технологии
        1. Сервлеты***, JSP***, Struts***, JSF*
      2. Rich Internet Applications
        1. GWT*** (Google Web Toolkit), Adobe FLEX, JavaFX
      3. " onclick="return false">
        1. Ненавязчивый " onclick="return false">
      4. HTML*, CSS*
      5. Портальные решения (Порталы, портлеты, виджеты)
    1. Уровень доступа к хранимым данным (Архитектурные шаблоны и основные технологии)

  1. Архитектурные шаблоны
    1. Table Data Gateway
    2. Active Record
    3. Data Mapper
  2. Технологии
    1. JDBC* (Недостатки, Spring JDBC API*** - как более удобная обёртка JDBC API)
    2. EJB 2.1 Entity Beans (Не рекомендованы к использованию, но рассказать нужно для исторической перспективы. Желательно привести, как пример не ортогонального интерфейса и грязного кода.)
    3. EJB 3.0* JPA*** и Hibernate***
    4. Spring ORM* интеграция
    1. Уровень интеграции

  1. Архитектурные шаблоны
    1. Service Provider/Service Consumer
    2. Low coupling/High cohesion
    3. Асинхронное взаимодействие Publish Subscribe / Point To Point
  2. Технологии
    1. MOM (Message Oriented Middelware)
    2. JMS (Spring JMS***) EJB Message Driven Beans* (Active MQ, WebSphere MQ)
    3. Веб сервисы***
    4. Архитектурный стиль SOA*
    5. ESB**
    6. BPEL**
    1. Методики создания качественного ПО

  1. Основные свойства и принципы построения качественного кода:
    1. Управление из единой точки, оно же – не повторяйся DRY (Don’t Repeat Yourself);
    2. SLAP (Single Level Of Abstraction) разделение уровней абстракции;
    3. SRP (Single Responsibility Principle) принцип единой ответственности,
    4. YAGNI (You Ain’t Gonna Need It) Не добавляй функциональность впрок – она не понадобится;
    5. ортогональный дизайн;
    6. Именование программных сущностей;
    7. Не изобретай колесо
    8. и др.
  2. Рефакторинг
  3. Разработка управляемая тестами (Test Driven Development)
    1. Разработка небольшими приращениями функциональности
    2. Цикл разработки: Создание теста (Спецификации), Минимильная реализация (Которая позволяет тесту завершиться успешно), рефакториг для получения чистого кода (В рамках отведённых ресурсов).
    3. jUnit*** тестовый фреймворк
    4. Инструменты определения тестового покрытия (Emma, Eclemma*** для Eclipse, Cobertura*)
    5. Шаблоны проектирования для облегчения тестирования. Вставка зависимости (Dependency Injection) Spring***
    6. Использование тестовых двойников для тестирования опосредованного ввода и вывода (Moсk***, Stub***) и ускорения выполнения (Fake). По книге «Шаблоны тестирования xUnit» Джерард Месарош
  4. Автоматическая сборка приложений (Ant***, Maven)
  5. Непрерывная интеграция (Hudson*)
  6. Шаблоны проектирования GOF как язык взаимодействия в команде. В качестве примера, наиболее часто используемые:
    1. Template Method
    2. Factory
    3. Singleton (Критика)
    4. Composite Method
    1. Инструменты разработки

  1. IDE Eclipse*** WTP (IBM RAD* (Rational Application Developer)), IntelliJ IDEA, NetBeans
  2. JUnit
  3. Инструменты определения тестового покрытия (Emma, Eclemma*** для Eclipse)
  4. Автоматическая сборка приложений (Ant***, Maven*)
  5. Непрерывная интеграция (Hudson*)
  6. Мониторинг сетевого трафика (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), которое нужно установить к следующей лекции.

Практикум



Для наилучшего усвоения материала требуется практикум по технологиям, которые наиболее широко используются в проектах Ай-Теко ЦК БИТ.


В частности нужен практикум по следующему стеку технологий:
  1. Веб-интерфейс: JSP/Servlets/" onclick="return false">
  2. Бизнес-логика: Spring IOC EJB 3.0
  3. Доступ к данным: OpenJPA и/или Hibernate.
  4. Интеграция: Веб-сервисы JAX WS, и обмен сообщениями Spring JMS и MDB.


Должен использоваться следующий инструментарий:
  1. Язык программирования и runtime: Java 6
  2. Среда разработки: Eclipse JavaEE 3.6 Helios;
  3. Веб каркас: GWT плагин для Eclipse;
  4. Инструмент автоматической сборки: ANT;
  5. Тестовый фреймворк: JUnit 4.8;
  6. Библиотека создания тестовых двойников Mockito;
  7. СУБД: derby 10.x.
  8. Сервер приложений: Tomcat 7.0 и JBoss 7.0.


Само задание должно быть не сложным по сути, то есть должно содержать несколько (не больше семи взаимосвязанных) сущностей хранимых в БД и модифицируемых через веб-интерфейс. Кроме того, должны быть реализованы сценарии с асинхронными взаимодействиями и интеграция между приложениями через веб-сервисы.