Model-driven development (MDD) - подход к проектированию корпоративных приложений, при котором цифровая модель разрабатываемой системы становиться основным источником информации для разработки всех необходимых компонентов приложения. Однако, сложность применения MDD часто превышает все преимущества данного подхода, поэтому данный подход по-прежнему не находит широкое применение при разработке.
Но все изменилось, когда во вселенной Java появился Mr. JHipster. JHipster - это полнофункциональный MDD инструмент с открытым кодом, позволяющий разработчику быстро и просто создавать современные WEB - приложения со сложной масштабируемой архитектурой и не требующий наличия у разработчика глубоких знаний обо всем применяемом стеке технологий.
Я поделюсь с вами моим многолетним опытом применения MDD в корпоративной разработке. Я покажу вам на реальном примере, как можно использовать мощные возможности JHipster для быстрого создания WEB - приложений. Я расскажу вам о всех плюсах и минусах JHipster и раскрою секреты, как с помощью данного инструмента достигнуть максимальной продуктивности и не выстрелить себе в ногу.
3. 3
What are we going to talk about today?
・ Modeling of information systems
・ Model-driven development approach
・ My experience of using MDD in real enterprise
development.
・ Who is Mr. Java Hipster?
・ Development session
・ JHipter’s cons & pros
・ What awaits us in the future?
4. 4
What is it modeling and model?
Model is a strictly formalized idea that has been visualized by some graphical notations
5. 5
Model Driven Development (MDD)
・ Model is a primary source of all
other artifacts in the project
・ CASE-tools (Computer-Aided
Software Engineering) are
intended to generate all
derivative artifacts
CI
CD
Code Architecture Documentation
Cloud
Interface
Database Tests
Backend
6. 6
How can MDD help developers?
・ Developers begin to communicate with
customers in a common formal language
・ Model is the best strictly formalized
documentation for developers
・ Effectiveness of external and internal
communication growths dramatically
・ MDD significantly reduces the amount of
manual coding
・ Using of MDD extends the
professionalism of developers
7. 7
UML modeling
・ Founder: Grady Booch
・ UML was intended to standardize the
notational systems and approaches to
software design
・ In 1997, UML was adopted as a standard
by the Object Management Group (OMG)
・ UML object class diagrams widely are
being used in requirements models more
focused on object-oriented software
engineering
Modern UML Object class diagram
8. 8
Enhanced Entity-Relationships modeling
・ Founder: Peter Chen
・ Originally used as only one available basis
for the first Computer-Aided Software
Engineering (CASE) tools and RDBMS
・ Enhanced by the concepts of inheritance,
stereotypes, union types
・ It is an ANSI standard
・ Widely using in real CASE-tools, mostly
oriented on relationships database design
Modern Enhanced Entity Relationships
Conceptual diagram
10. 10
My first experience of using MDD
PowerDesigner - CASE-tool that
really works:
・ enhanced ER-models
・ management of models
・ drawing diagrams
・ checking consistency
・ generation of derivative
artifacts
・ and a lot of drawbacks
11. 11
The first results of using MDD
Problems I encountered:
・ Conceptual models are too abstract
・ PowerDesigner doesn’t cover the
questions of architecture, building
and delivery
・ There is no way to transform a
conceptual model into the code
directly
Positive results:
・ Changing my vision and my mind
・ Increasing the quality of work
・ Improving the performance of all my team
・ Bootstrapping of new projects
・ Bringing new approaches and solutions
12. 12
Second attempt to apply MDD
・ Eclipse contained a lot of scattered MDD
components, but there was no ready-made
CASE-tool
・ Assembling the components of the Eclipse
modeling project into a ready-made
CASE-tool was unreasonably expensive
and complicated
・ PowerDesigner was still excellent but
expensive
13. 13
Hi, I am JHipster!!!
… or a miracle happens when
you do not expect it at all
14. 14
What can Mr. JHipster give us?
・ Scaffolding of projects
・ Assembly of the back-end and front-end
architecture
・ Stack of modern technologies and frameworks
・ Support authentication, configuration,
microservices infrastructure
・ Integration of all components in a ready-made
application
・ Several project building, CI, and deployment
options
・ MDD tool, but he doesn’t know it
21. 21
Real example of business requirements
・ Build a ready-made web-application from scratch.
・ Implement CRUDL operations for entities from the provided schema.
・ Stateless authentication and authorization.
・ Full-text search, Open-API documentation, internationalization: English, German.
・ Assembly all layers from a data storage to UI.
・ Test coverage of all layers is mandatory. Performance tests too.
22. 22
JHipster in action
・ Project generation and assembly of
modern integrated architecture.
・ Model building, code, and test
generation.
・ Overview of the ready application.
23. 23
JHipster usage cases
・ Scaffolding of your new real projects
from scratch
・ Prototyping of ideas
・ Building mock-implementations of
services for integration tasks
・ Learning purposes
24. 24
JHipster Pros & Cons
Advantages:
・ A large stack of modern technologies
integrated into the one ready-made project
・ The best approaches and using advanced
frameworks
・ Adjusted project builder, CI, deployment
・ Marketplace and community
・ Real MDD in the open-source Java universe
・ JHipster is extremely simple and accessible
25. 25
JHipster Pros & Cons
Areas of improvement:
・ Very primitive model
・ Ill-conceived UI:
‑ synthetic ID as a screen
name for objects
‑ lack of support of large
lookup datasets
・ Not-OOP approach in code
26. 26
Conclusion
・ Modeling brings a lot of benefits to developers
・ JHipster can save your time and teach you
・ Use JHipster and advanced modeling tools
together
・ MDD the most promising candidate for the entire
automation
・ I expect the emergence of dedicated modeling
platforms and servers