business driven architecture

23
BUSINESS DRIVEN ARCHITECTURE CHICAGO CODER CONFERENCE 6’TH JUNE, 2016 VINAY SHIVASWAMY

Upload: vinay-shivaswamy

Post on 26-Jan-2017

159 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Business Driven Architecture

BUSINESS DRIVEN ARCHITECTURECHICAGO CODER CONFERENCE 6’TH JUNE, 2016 VINAY SHIVASWAMY

Page 2: Business Driven Architecture

ROADMAP▪ Application Development methodology

▪ Application Architecture

▪ Application Design

▪ Application Code

▪ Demo

▪ Conclusion

▪ Q&A

Page 3: Business Driven Architecture

WHO AM I▪ Technology expert with over 20 years of experience as an Architect, Manager and

Developer using Java EE and wide variety of open source technologies and environments.

▪ My expertise is in agile development methodology with focus on test driven development, Continuous Integration and Continuous Delivery model.

▪ TOGAF Certified Enterprise Architect and Certified Scrum Master. ▪ [email protected]▪ https://www.linkedin.com/in/vinayshivaswamy▪ http://vinayshivaswamy.blogspot.com/▪ https://github.com/vshivaswamy

“Long Live Continuous Delivery”

Page 4: Business Driven Architecture

DEVELOPMENT METHODOLOGY

• Agile Software Development Methodology

Working Software

Responding to Change

Page 5: Business Driven Architecture

AGILE SOFTWARE DEVELOPMENT

▪ Principles Behind The Agile Manifest

Welcome Changes

Technical Excellence & Good Design

Architecture & Design Emerge

Deliver Frequently

Page 6: Business Driven Architecture

APPLICATION ARCHITECTUREKEY ATTRIBUTES OF ARCHITECTURE▪ Reliability

▪ Availability

▪ Maintainability

▪ Scalability

4 C’S OF ARCHITECTURE▪ Connectivity

▪ Constraints

▪ Complexity

▪ Changeability

Page 7: Business Driven Architecture

APPLICATION ARCHITECTURE

…Dependency Management

Page 8: Business Driven Architecture

APPLICATION DESIGN

EXTERNAL DEPENDENCIES▪ Java Archives

▪ Maven▪ Gradle

INTERNAL DEPENDENCIES▪ Package

▪ Annotations

▪ Class▪ DI – @Autowired, @Service, @Component

Page 9: Business Driven Architecture

APPLICATION DESIGN▪ Domain Driven Design

DemoDomain

Vendor

CustomerAccount

Page 10: Business Driven Architecture

APPLICATION DESIGN

Modules

Layers

Vertical Slices

Subsystems

Page 11: Business Driven Architecture

APPLICATION CODE▪ Enforce design in the code

▪ Design is preserved

▪ OO Principles▪ Polymorphism & Encapsulation▪ Composition over Inheritance▪ Cohesion & Coupling

Page 12: Business Driven Architecture

APPLICATION CODE▪ Class – SOLID Principles

S The Single Responsibility Principle A class should have one, and only one, reason to change.

O The Open Closed Principle You should be able to extend a classes behavior, without modifying it.

L The Liskov Substitution Principle Derived classes must be substitutable for their base classes.

I The Interface Segregation Principle Make fine grained interfaces that are client specific.

D The Dependency Inversion Principle

Depend on abstractions, not on concretions.

Page 13: Business Driven Architecture

APPLICATION CODE▪ Package – RCC Principles

R The Release Reuse Equivalency Principle

The granule of reuse is the granule of release.

C The Common Closure Principle Classes that change together are packaged together.

C The Common Reuse Principle Classes that are used together are packaged together.

Page 14: Business Driven Architecture

APPLICATION CODE Simple CRM Application

Page 15: Business Driven Architecture

APPLICATION LAYERS

Web

Service

Persistence

Domain

Page 16: Business Driven Architecture

APPLICATION SLICES

16

Account

Customer

COMMON

Common

Vendor

Page 17: Business Driven Architecture

APPLICATION SUBSYSTEMS

Web

Service

Persistence

Domain

Account

Customer

Common

Vendor

Page 18: Business Driven Architecture

LAYERS▪ .layer.slice?▪ .service.account▪ .dao.account

▪ .slice.layer?▪ .customer.service▪ .customer.dao

▪ .slice?▪ .account▪ .customer

Page 19: Business Driven Architecture

LAYERS▪ Well Understood with developer community

▪ Violates clean code principles – Reduced cohesion and Increased coupling

▪ Packages are obsolete, classes and methods are forced to expose to public.

▪ Implementation details ahead of abstraction.

▪ Redundant layer information both at package level and class level

▪ Not associated with any business value directly.

Page 20: Business Driven Architecture

SLICES▪ Different thinking

▪ Enforces cleaner code

▪ High cohesion and less coupling▪ Meaningful sonar dashboard package cycle, dependency index numbers

▪ Higher level of abstraction

▪ Encapsulation at the package level.

▪ Breaks the complex system into subsystems

▪ Application code is self documenting

▪ Associated with business value.

Page 21: Business Driven Architecture

DEMO

Page 22: Business Driven Architecture

CONCLUSION▪ “Focus on delivering Business Value”

▪ “Modularize your application”

▪ “Start with less packages, least visibility”