Title: Natural Engineer Refactoring: From Monolithic Applications to ServiceOriented Application Tom Philpo
1Natural Engineer RefactoringFrom Monolithic
Applications to Service-Oriented ApplicationTom
PhilpottGSLModernization_at_gensystems.com
2Natural Engineer Next version
- Extract is around 60 times quicker
- Load is around 40 quicker
- New GUI based on an object list rather than the
function driven method of the current NEE.
3Application design through the ages
- Structured Design
- Object Oriented Programming
- Service Oriented Architecture
- Refactoring
4Structured Design
- Coupling
- Cohesion
- Design Heuristics
5What influences Coupling?
- Types of connection
- Data
- Control
- Minimally connected
- Normally connected
- Pathological
6What influences Coupling?
- Complexity of the interface
- Basically, the number of arguments passed.
- Information flow
- Binding time
7Coupling
- Common Environment coupling
- Decoupling
- Convert implicit references to explicit ones.
- Localize common environments
- Standardize connection
8Various takes on coupling
9Cohesion
10Various takes on cohesion
11Design Heuristics
- A module shouldnt be any bigger than 100
statements. - The span of control shouldnt exceed 7 plus/minus
2. - A high span of control can meant the module was
broken down too much. - When you identify reuse possibilities the process
is called fan-in.
12Object Oriented Programming
- Object
- Class
- Abstraction
- Encapsulation
- Inheritance
- Polymorphism
13Object Oriented Design
- Object structure modeling
- Model business processes
- Derive classes from these business processes
- A business process is a set of activities for
transforming some kind of input into a product
that a customer is willing to pay for.
14Coad/Yourdon guidelines
- Focus on clarity of design
- If you cannot understand what someone is doing,
you will not use the object. - Keep message protocols simple
- Coupling is discussed here as well. If a message
requires more than three parameters, it is badly
designed. - Keep operations simple
- Code should be less than one page.
- Minimize design volatility
- A bad design requiring frequent changes can be
spotted through a configuration management
system. - Minimize overall system size big is bad.
- A medium size system should not require more than
a few dozen class hierarchies.
15Service Oriented Architecture
- Utilizes loosely coupled software services to
support business process requirements - Resources are available and accessible without
any need to know the underlying platform - Not necessarily tied to a technology, could be
RPC, DCOM, .Net, ORB or WSDL. - Architecture for creation of composite
applications from loosely coupled services.
16SOA
17 Refactoring
18Refactoring Topics
- What is Refactoring?
- Small Scale Refactoring
- The Full Scale Refactoring Methodology
- Phase I Preparation
- Phase II DB I/O Separation
- Phase III Presentation Layer Separation
- Alternative thinking to Refactoring
- Analyze Data Model
- Build Components per conceptual Entity
19What is Refactoring?
- What is Refactoring ?
- It can
- Improve the design of the application
- Systematically change program structures
- Improve readability of code
- Support agile program development
- It does not
- Change the program functionality
- Refactoring is a technique for restructuring or
modifying existing source code without changing
its external behavior.
20Natural Engineer Refactoring
Presentation dialog with I/O and some navigation
logic
Program with Presentation Logic Business
Logic Database I/O
Refactoring
Business Logic
Database I/O
21Natural Engineer Refactoring
22Natural Engineer Refactoring
- The three phases of Refactoring
23Natural Engineer - Refactoring
- Phase I Preparation
- Processes required in order to prepare the code
for further refactoring - Phase II DB Split
- The ability to create subprograms that perform
the DB access - Phase III Presentation Split
- The ability to create subprograms that contain
the business logic
24Natural Engineer Refactoring
- Natural Engineer Refactoring
- Phase I Preparation
25Natural Engineer Refactoring
26Natural Engineer Refactoring
27Natural Engineer Refactoring
28Natural Engineer Refactoring
- Phase 1 Separate Processing Rules
- Existing Code
29Natural Engineer Refactoring
- Phase 1 Separate Processing Rules
30Natural Engineer Refactoring
- Phase 1 Separate Processing Rules
31Natural Engineer Refactoring
- Phase I Conversational DB Loops
32Natural Engineer Refactoring
- Phase 1 Conversational DB Loops
33Natural Engineer Refactoring
- Phase I Similar Code Identification
34Natural Engineer Refactoring
- Phase I Similar Code Identification
35Natural Engineer Refactoring
- Natural Engineer Refactoring
- Phase II Database I/O Separation
36Natural Engineer Refactoring
- Phase II DB Split
- Creates a subprogram per DDM/Key combination
- Creates one subprogram per DDM for single ISN
actions (DELETE, STORE, UPDATE, GET) - Creates one subprogram per application for BT and
ET logic - Then replaces ADABAS logic in original program to
CALLNAT to newly created subprograms. - Remember USR4011N from SYSEXT to SYSTEM. This is
the module that creates the hashing number for
optimistic locking.
37Natural Engineer Refactoring
- Phase 2 Data I/O Separation
38Natural Engineer Refactoring
- Phase II DB split Original Code - READWH
39Natural Engineer Refactoring
- Phase II DB Split
- Examples of the PDAs created Record and Key
40Natural Engineer Refactoring
- Phase II DB Split
- Subprogram accessing ADABAS Decide Block
41Natural Engineer Refactoring
- Phase II DB Split
- Subroutine handling one particular access
42Natural Engineer Refactoring
- Phase II DB Split
- Replacement of ADABAS access in program
43Natural Engineer Refactoring
- Natural Engineer Refactoring
- Phase III Presentation Layer Separation
44Natural Engineer Refactoring
- Phase III Presentation Layer Split
Dialog (Program) SET KEY INPUT USING MAP MOVE 1
TO NAV-BLOCK CALLNAT NEWSUBP DATA
Program
- processing.
- SET KEY
- INPUT USING MAP processing.
Business logic (Subprogram) DECIDE ON FIRST VALUE
OF NAV-BLOCK VALUE 1 PERFORM BLOCK1 VALUE 2
PERFORM BLOCK2 .. END-DECIDE DEFINE
SUBROUTINE BLOCK1 Processing END-SUBROUTINE DEFI
NE SUBROUTINE BLOCK2 Processing END-SUBROUTINE
45Natural Engineer - Refactoring
- Phase III Presentation Layer Separation
46Natural Engineer - Refactoring
- Phase III Presentation Layer Separation
47Natural Engineer - Refactoring
- Phase III Presentation Layer Separation
- Examination of Cross-Reference Records
48Natural Engineer Refactoring
- Phase III Presentation Split
- Items created
- GDAPDA-A Copy of the GDA
- XX021A01 Map PDA
- XX021A02 Local data PDA
- XX021A03 PDA of XX021L01
- XX021A04 PDA of XX021L02
- XX021A05 PDA of XXMTHVAL
- XX021C01/2 Copy data Map/Local
- XX021N01 Subprogram with BL
- XX021P01 Dialogue program
49Natural Engineer Refactoring
- Phase III Presentation Layer Separation
50Natural Engineer Refactoring
- Phase III Presentation Layer Separation
51Natural Engineer Refactoring
- Limitations of Refactoring (due to the nature of
an automated process) - Duplication of processing rules in generated
subprograms - As the subprogram is generated per map, if two
maps have the same processing rule, then it is
duplicated in two subprograms - This can be addressed by similar code
identification - A single program, due to the internal structure,
may generate many blocks. This may make it
difficult to expose as a service. - The Blocks are per program and when reworking the
UI, it may not be a 11 relationship. Are the
components truly reusable? Maybe not!
52Natural Engineer Refactoring
- Natural Engineer Refactoring
- Alternative Approach
- Ask the Question
- WHAT VALUE DOES THIS GIVE ME?
53Natural Engineer Refactoring
- Start from the Data Model
- Why?
- All operations within a system stem from the
database data usage
54Natural Engineer Refactoring
- The Idea
- Build components based on the conceptual entities
- List Function
- Access Function
- Includes formatting
- Update Function
- Includes Validation
- Source for the new components within existing
application code
55Natural Engineer Refactoring
- An application tends to have several functions
56Natural Engineer Refactoring
- Where is the code for the new components?
- Already in the existing application and
normally modularlized - Assuming Phase I completed, then the access to
the database should be in discrete code. - Locate code using existing Natural Engineer
functionality. - Current estimation based on real projects
- 40 of existing code will be reused (not
navigation logic) - This 40 of code will build over 80 of the new
components - Rest of component delivered by Object Builder for
Refactoring - Consolidate duplicate code as you go!!!!
57Natural Engineer Refactoring
58Natural Engineer Refactoring
- Incrementally refactor each function
59Natural Engineer Refactoring
- Incrementally refactor each function
60Natural Engineer Refactoring
- If the Data Model is also changing, utilize DB
Split on the new access modules to create a data
shield between the application and the physical
data.
61Natural Engineer Refactoring
- The incremental approach means
- LESS RISK!!!
- Resulting in real value for customers
- Single route to database
- Truly reusable components
- New UI not dependent on existing UI (as the
components based on conceptual entites). - Improved reliability and maintenance of
application. - Improved time-to-market for ever increasing
business requirements
62Usage Scenario
Natural Application
Web Application
EntireX
Internet
Adabas
Implemented with EntireX, IDL Generator, JAVA
Class, MQ, Applinx,
63Usage Scenarios
- (Re)Usage of new generated DB objects
Browser
Presentation dialog with I/O Navigation logic
Program with Presentation Logic
Business Logic
Database I/O
Implemented with Natural Business Services,
Application Composer, HTML,
64Usage Scenarios
- (Re)Usage of business logic objects and DB I/O
Browser
Presentation dialog with I/O Navigation logic
Program with Presentation Logic
Business Logic
Database I/O
Implemented with Natural Business Services,
Application Composer, HTML,
65Natural Engineer Refactoring
- The approach
- Natural Engineer provides a Toolkit to assist
with Refactoring Projects - One solution will not
cover all projects - High level of automation
- Result
- Flexible UI independence
- Easy Maintenance
- Reusability of business logic for other and new
applications - Represents a Service Oriented Architecture
- Business
- Cost effective solution
- Project can be outsourced
- Opens application for future changes
- Stay competitive with reusable, stable business
logic