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












Спецкурс


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) для реализации ортогональных областей отвественности

Сервера приложений

Отличие контейнеров сервлетов (Tomсat, Resin, Jetty) от полноценных серверов приложений (IBM WebSphere AS*, Oracle/BEA Weblogic*, Redhat JBoss)
Уровень представления (Архитектурные шаблоны и основные технологии)
Архитектурные шаблоны

Model View Controller

Технологии

Web Services JAX-RPC* JAX-WS*

Толстый клиент

Eclipse RCP (SWT) Swing/AWT

Adobe AIR (FLEX)

Тонкий клиент

Традиционные технологии

Сервлеты***, JSP***, Struts***, JSF*

Rich Internet Applications

GWT*** (Google Web Toolkit), Adobe FLEX, JavaFX

Javascript* библиотеки Ajax (jQuery*)

Ненавязчивый javascript (unobtrousive javascript)

HTML*, CSS*

Портальные решения (Порталы, портлеты, виджеты)
Уровень доступа к хранимым данным (Архитектурные шаблоны и основные технологии)
Архитектурные шаблоны

Table Data Gateway

Active Record

Data Mapper

Технологии

JDBC* (Недостатки, Spring JDBC API*** - как более удобная обёртка JDBC API)

EJB 2.1 Entity Beans (Не рекомендованы к использованию, но рассказать нужно для исторической перспективы. Желательно привести, как пример не ортогонального интерфейса и грязного кода.)

EJB 3.0* JPA*** и Hibernate***

Spring ORM* интеграция
Уровень интеграции
Архитектурные шаблоны

Service Provider/Service Consumer

Low coupling/High cohesion

Асинхронное взаимодействие Publish Subscribe / Point To Point

Технологии

MOM (Message Oriented Middelware)

JMS (Spring JMS***) EJB Message Driven Beans* (Active MQ, WebSphere MQ)

Веб сервисы***

Архитектурный стиль SOA*

ESB**

BPEL**
Методики создания качественного ПО
Основные свойства и принципы построения качественного кода:

Управление из единой точки, оно же – не повторяйся DRY (Don’t Repeat Yourself);

SLAP (Single Level Of Abstraction) разделение уровней абстракции;

SRP (Single Responsibility Principle) принцип единой ответственности,

YAGNI (You Ain’t Gonna Need It) Не добавляй функциональность впрок – она не понадобится;

ортогональный дизайн;

Именование программных сущностей;

Не изобретай колесо

и др.

Рефакторинг

Разработка управляемая тестами (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
Инструменты разработки
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/javascript/jQuery.

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/javascript и GWT.

Бизнес-логика: 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.


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




еще рефераты
Еще работы по разное