MOVE10: Darwin or Big Bang? 1 MOVE-10: Darwin or Big Bang? SMAT-Team Tobago Thomas Hutegger & Pheona Job

Slides:



Advertisements
Similar presentations
Apache Struts Technology
Advertisements

DEV-2: Getting Started with OpenEdge® Architect – Part I
Overview QW Gateway is a new front-end to QuipWare
ARCH-13 Developing WebSpeed  Applications Chris Skeldon Principal Consultant.
Turners SharePoint Web Site How we did it. 2 Page Anatomy Custom Search Web Part Custom Search Web Part Data Form Web Parts Content Query Web Part HTML.
TFACTS Private Provider Financial/Invoicing Overview 1.
DEV-04 Building OpenEdge® Reference Architecture Applications with WebSpeed® Chris Skeldon Principal Consultant.
Building Applications using ASP.NET and C# / Session 1 / 1 of 21 Session 1.
1 Chapter 12 Working With Access 2000 on the Internet.
J4www/jea Week 3 Version Slide edits: nas1 Format of lecture: Assignment context: CRUD - “update details” JSP models.
Apache Tomcat Server Typical html Request/Response cycle
Microsoft ASP.NET AJAX - AJAX as it has to be Presented by : Rana Vijayasimha Nalla CSCE Grad Student.
Performed by:Gidi Getter Svetlana Klinovsky Supervised by:Viktor Kulikov 08/03/2009.
LHCbPR V2 Sasha Mazurov, Amine Ben Hammou, Ben Couturier 5th LHCb Computing Workshop
Apache Struts Technology A MVC Framework for Java Web Applications.
DEV-14: Understanding and Programming for the AppServer™
Struts 2.0 an Overview ( )
UNIT-V The MVC architecture and Struts Framework.
Client/Server Architectures
The Easiest Way to Write Web Applications Jordi Sastre IT Architect, PSC May 2012.
1 Forms for the Web Tom Muck
Web Development Challenges and How They are Solved in ps:eScript Matt Verrinder Progress Software UK Internet & Integration Technologies.
ARCH12: QA Considerations - OERA ARCH-12: QA considerations for applications following the OpenEdge Reference Architecture SMAT-Team Tobago Thomas Hutegger.
Ori Calvo, 2010 “If people want to have maximum reach across *all* devices then HTML will provide the broadest reach” Scott Guthrie,
6/1/2001 Supplementing Aleph Reports Using The Crystal Reports Web Component Server Presented by Bob Gerrity Head.
8 Chapter Eight Server-side Scripts. 8 Chapter Objectives Create dynamic Web pages that retrieve and display database data using Active Server Pages Process.
DEV-07: Increasing Productivity with Tools for Business Logic Gikas Principal Software Engineer.
Configuration Management and Server Administration Mohan Bang Endeca Server.
DIRAC Web User Interface A.Casajus (Universitat de Barcelona) M.Sapunov (CPPM Marseille) On behalf of the LHCb DIRAC Team.
Overview of Previous Lesson(s) Over View  ASP.NET Pages  Modular in nature and divided into the core sections  Page directives  Code Section  Page.
What is Architecture  Architecture is a subjective thing, a shared understanding of a system’s design by the expert developers on a project  In the.
ARCH-03: Implementing the OpenEdge™ Reference Architecture – Part 1 John Sadd Progress Fellow and OpenEdge Evangelist.
White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software.
DEV-5: Introduction to WebSpeed ® Stephen Ferguson Sr. Training Program Manager.
Going Mobile with OpenEdge ® Basics Paul Guggenheim Paul Guggenheim & Associates.
Murach’s ASP.NET 4.0/VB, C1© 2006, Mike Murach & Associates, Inc.Slide 1.
ARCH-4: The Presentation Layer in the OpenEdge® Reference Architecture Frank Beusenberg Senior Technical Consultant.
Chapter 6 Server-side Programming: Java Servlets
Architectural Patterns Support Lecture. Software Architecture l Architecture is OVERLOADED System architecture Application architecture l Architecture.
ARCH-07: Implementing the OpenEdge™ Reference Architecture – Part 2
ARCH-11: Building your Presentation with Classes John Sadd Fellow and OpenEdge Evangelist Sasha Kraljevic Principal TSE.
DEV-3: Getting Started with OpenEdge® Architect – Part II David Lund Sr. Training Program Manager Mark Hanley Sr. Manager Development Tools.
CS562 Advanced Java and Internet Application Introduction to the Computer Warehouse Web Application. Java Server Pages (JSP) Technology. By Team Alpha.
Differences Training BAAN IVc-BaanERP 5.0c: Application Administration, Customization and Exchange BaanERP 5.0c Tools / Exchange.
8 Chapter Eight Server-side Scripts. 8 Chapter Objectives Create dynamic Web pages that retrieve and display database data using Active Server Pages Process.
ARCH-7: Integrate this! SonicMQ® and the OpenEdge® Reference Architecture Christian Stiller Technical Architect.
ARCH-5: Service Interfaces in Practice Christian Stiller Technical Architect.
Javascript Overview. What is Javascript? May be one of the most popular programming languages ever Runs in the browser, not on the server All modern browsers.
MOVE-15: Leveraging Business Entities, Data Access Objects and ProDataSets with a Progress Dynamics® or ADM2 GUI Peter Judge Principal Software Engineer.
Be “GUI ready” developing in RPG by Robert Arce from PrismaTech. Be “GUI ready” developing in RPG-ILE Presented by: Robert Arce.
1 CSC160 Chapter 1: Introduction to JavaScript Chapter 2: Placing JavaScript in an HTML File.
Navigation Framework using CF Architecture for a Client-Server Application using the open standards of the Web presented by Kedar Desai Differential Technologies,
Introduction to ASP.NET development. Background ASP released in 1996 ASP supported for a minimum 10 years from Windows 8 release ASP.Net 1.0 released.
Apache Struts Technology A MVC Framework for Java Web Applications.
Sitecore.net Training, Oct ECM 2.1 UPDATE 2 PART 1 CRAWL BEFORE YOU WALK.
General Architecture of Retrieval Systems 1Adrienn Skrop.
111 State Management Beginning ASP.NET in C# and VB Chapter 4 Pages
© 2004 by The McGraw-Hill Companies, Inc. All rights reserved. McGraw-Hill/Irwin Programming the Web Using ASP.Net Chapter 6: The User Interface (UI) Dave.
6. Application Server Issues for the Project
Managing State Chapter 13.
JSP (Java Server Page) JSP is server side technology which is used to create dynamic web pages just like Servlet technology. This is mainly used for implementing.
David Abdala Nómade Soft SRL
WEB API.
Web Development Using ASP .NET
5 Tips for Upgrading Reports to v 6.3
Lecture 1: Multi-tier Architecture Overview
ARCH-1: Application Architecture made Simple
ASP.NET Module Subtitle.
– JukeBox – transparency, flexibility, speed and comfort!
Presentation transcript:

MOVE10: Darwin or Big Bang? 1 MOVE-10: Darwin or Big Bang? SMAT-Team Tobago Thomas Hutegger & Pheona Job A Darwinian Case Study of a WebSpeed Application's Evolution

MOVE10: Darwin or Big Bang? 2 Goals For This Session We chose to evolve the application step by step Goal: Seeds for thought: What where the goals of each step Harvest and build Advantages of newer architecture (using ProDataSets)

MOVE10: Darwin or Big Bang? 3 Agenda Three Modernization Main Questions Overview of Example Application Architecture Version 0 (Legacy Code) Version 1 (some UI/BL separation) Version 2 (BL GUI ready)

MOVE10: Darwin or Big Bang? 4 Agenda ➔ Three Modernization Main Questions Overview of Example Application Architecture Version 0 (Legacy Code) Version 1 (some UI/BL separation) Version 2 (BL GUI ready) Version 3 (GUI Module)

MOVE10: Darwin or Big Bang? 5 Three Modernization Main Questions How to reuse as much as possible of the existing application? How to integrate programs of the old and the new architecture within one application, so they can run in parallel? How to design the new architecture, so future modernization efforts can be implemented easily, and with maximum code-reuse?

MOVE10: Darwin or Big Bang? 6 Example Application V9 (later V10), WebSpeed Three Layers –HTML/Java-Script –WebSpeed Framework –4GL Who is using WebSpeed?

MOVE10: Darwin or Big Bang? 7 WebSpeed Architecture Web Server (Apache) Agent Progress Server Browser (Opera) Client Intranet Internet C/S DB

MOVE10: Darwin or Big Bang? 8 WebSpeed Round Trip Agent Read Data from Page Save Data to DB Get Data from DB Create Next HTML Page Name-Value Pairs HTML Web-Server C/S DB

MOVE10: Darwin or Big Bang? 9 Complexities with WebSpeed Non-4GL expertise needed (HTML,JavaScript,...) Testing/Debugging –White screen (severe error, server-log) –Restart of Agents (to pick up changed programs) “Stateless” client –context management –Flat character-only data-structure (name-value pairs)

MOVE10: Darwin or Big Bang? 10 Tasks of Framework Converts name-value pairs into temp-table Requires data for HTML page in temp-tables Merges data with HTML page template (plain text) Sends merged page to web-stream (i.e. WebServer)... or to a file (for testing purposes)

MOVE10: Darwin or Big Bang? 11 Framework Agent Read Data from Page Save Data to DB Get Data from DB Create Next HTML Page Name-Value Pairs HTML Web-Server Framework HTML saved in plain OS text file Provide Name-Value Pairs Temp-Table Simulating Test Program X X C/S DB

MOVE10: Darwin or Big Bang? 12 Observations –> Basic Concept 3 Event-types submit a page: –View (first request [menu], refresh, change in filter values, request details...) –Print (providing what and how to print) –Save (providing data to save, Ids to delete) Posting page can be –Same as next page (next instance, save&refresh,...) –Different from next page (browser->viewer,...)

MOVE10: Darwin or Big Bang? 13 Example – Invoices Overview/Detail View-Event – Invoice Overview –Stuff page-data into context Prepare Page – Invoice Detail –Get data from context –Select and move data from DB into Temp- Tables –Framework merges temp-table data into HTML page

MOVE10: Darwin or Big Bang? 14 Example – Update Invoice Data Save-Event – Invoice Detail –Get data from page –Update the DB accordingly –Put (some) data into context Prepare Page – Invoice Detail –Get data from context –Select and move data from DB into Temp- Tables –Framework merges temp-table data into HTML page

MOVE10: Darwin or Big Bang? 15 Example – Print Invoice Print-Event – Invoice Detail –Get identifying data from page –Run print program –Stuff all page-data into context Prepare Page – Invoice Detail –Get data from context –Select and move data from DB into Temp- Tables –Framework merges temp-table data into HTML page

MOVE10: Darwin or Big Bang? 16 Agenda ✔ Three Modernization Main Questions Overview of Example Application Architecture ➔ Version 0 (Legacy Code) Version 1 (some UI/BL separation) Version 2 (BL GUI ready)

MOVE10: Darwin or Big Bang? 17 Architecture Overview – Version 0 Agent PPO.p saveEvent PPO.p preparePage 1 Name-Value Pairs 6 temp-tables Web-Server Framework 2 ttDataIn 3 Data & Context 4 preparePage 5 Data & Context 7 HTML DB

MOVE10: Darwin or Big Bang? 18 Main-Issues – Version 0 Duplication of code –Drop-downs, pages with similar data,... Fields as parameters No specialization is possible GUI module would require reprogramming and further code-duplication QA: several steps testable only in one block ➔ UI/BL separation

MOVE10: Darwin or Big Bang? 19 Agenda ✔ Three Modernization Main Questions Overview of Example Application Architecture ✔ Version 0 (Legacy Code) ➔ Version 1 (some UI/BL separation) Version 2 (BL GUI ready)

MOVE10: Darwin or Big Bang? 20 Architecture Overview – Version 1 Agent PPO.p saveEvent PPO.p preparePag e 9 temp-tables Framework 2 ttDataIn 4 Data & Context 5 preparePage 7 Data & Context BL.p saveTT createTT 3 ttSave 8 ttXxx 6 get data DB testBl.p “Frontend”“Backend” HTML saved in plain OS text file Provide Name-Value Pairs Temp-Table Simulating Test Program X X Name-Value Pairs HTML Web-Server

MOVE10: Darwin or Big Bang? 21 Improvements Separated DB access from Front-End specifics –Allow programmer's specialization (“backend” - “frontend”) –Programs less cluttered –> easier debug-able and maintainable Test DB-Access separately Use Temp-Tables, instead of single parameters –adding/deleting fields impacts end-points only, but not the plumbing

MOVE10: Darwin or Big Bang? 22 Separation of DB-Access & Front-End Create new structured Procedure for DataAccessObject Moved some existing procedures from PageProcessObject Extracted code-parts into new procedures Run DataAccessObject as super-procedure

MOVE10: Darwin or Big Bang? 23 Testing the DB-Access Procedures Procedures tested before usage in Page-Process-Object /* call BL procedure */ RUN createTtDmsSpList IN TARGET-PROCEDURE ( "*" /* Service Provider ID Filter */, "tour*" /* Service Provider Name Filter */, "*" /* Service Provider Type Filter */, "valueLabel,ServiceProviderId" /* sorting */, INPUT-OUTPUT TABLE ttDmsSpList ). /* display the results */ RUN displayTt IN TARGET-PROCEDURE ( "Service Providers - List Data", TEMP-TABLE ttDmsSpList:HANDLE, YES /* output to screen? */ ).

MOVE10: Darwin or Big Bang? 24 Using Temp-Table /* retrieve the data from the page */ RUN retrievePageData IN TARGET-PROCEDURE ( OUTPUT lcFormId,OUTPUT lcFormIdFilter,OUTPUT lcFormState,OUTPUT lcNextformState,OUTPUT lcEvent,OUTPUT lcPpo,OUTPUT lcNextPpo,OUTPUT lcPpoProcess,OUTPUT lcNextPpoParams,OUTPUT lcPpoParams,OUTPUT lcNextFormId,OUTPUT lcSkipCondition,OUTPUT lcSkipEvent,OUTPUT llValidData,INPUT-OUTPUT TABLE ttMessage ). ) After (one temp-table): Before (separate parameters): /* retrieve the data from the page */ RUN retrievePageData IN TARGET-PROCEDURE ( OUTPUT lcFormIdFilter,OUTPUT llValidData,INPUT-OUTPUT TABLE ttMessage, OUTPUT TABLE ttSaveSywEt ). )

MOVE10: Darwin or Big Bang? 25 Agenda ✔ Three Modernization Main Questions ✔ Overview of Example Application Architecture ✔ Version 0 (Legacy Code) ✔ Version 1 (some UI/BL separation) ➔ Version 2 (BL GUI ready)

MOVE10: Darwin or Big Bang? 26 Main Issues – Version 1 Back-end not GUI ready Performance –Drop-Downs –Codes, non-changing data could be cached –TT parameter improvements in V10 Front-End –UI data structure <> DB data structure –Component-ize pages (code reuse)

MOVE10: Darwin or Big Bang? 27 Version 2 Focus Back-End –Use OpenEdge Reference Architecture –Use ProDataSets Front End –Move to card-oriented pages (reuse cards on several pages) –More Javascript (drop-downs)

MOVE10: Darwin or Big Bang? 28 OpenEdge Reference Architecture Data access abstracted from storage Common business logic with advanced models Separated presentation and integration layers OERA

MOVE10: Darwin or Big Bang? 29 WebSpeed Implementing The OpenEdge Reference Architecture Data Access Object Business Entity Agent Read Data From Page DB Create Next HTML Page Web-Server OERA

MOVE10: Darwin or Big Bang? 30 OpenEdge Reference Architecture with WebSpeed Client GUI Procedure Validations Server Data Access Object xxdo.p Business Entity xxbe.p Super WebSpeed Client (PPO) Save Get Browser Web-Server Save Get C/S DB

MOVE10: Darwin or Big Bang? 31 Procedure Call Flow – Prepare Page PPO BE DO Request Page attachDS fill detachDS prepare Return HTML Call Flow DB

MOVE10: Darwin or Big Bang? 32 Issues With WebSpeed Did record change since page was prepared? –Additionally sending complete record to page So it can be retrieved as “before image” record –Using “version” field Total disconnect between preparing page and next post –ProDataSet content lost –No before-image temp-table possible –Standard ProDataSet update feature can't be used

MOVE10: Darwin or Big Bang? 33 OpenEdge Reference Architecture and ProDataSets with WebSpeed Client GUI Procedure Validations Server Data Access Object xxdo.p Business Entity xxbe.p Super WebSpeed Client (PPO) Save Get Browser Web-Server Save Get C/S DB

MOVE10: Darwin or Big Bang? 34 OpenEdge Reference Architecture and ProDataSets with WebSpeed Client Server Super Save Get Web Library xxwb.p Browser Web-Server Super Save Get C/S GUI Procedure Validations Data Access Object xxdo.p Business Entity xxbe.p WebSpeed Client (PPO) DB

MOVE10: Darwin or Big Bang? 35 OpenEdge Reference Architecture and ProDataSets with WebSpeed Client Server Super Save Get Web Library xxwb.p Browser Web-Server Super Save Get C/S GUI Procedure Validations Data Access Object xxdo.p Business Entity xxbe.p WebSpeed Client (PPO) DB

MOVE10: Darwin or Big Bang? 36 Call Flow – Save and Prepare Page Page Processing Object WB Post Page attachDS fill detachDS prepare Return HTML saveTt Save BE Validate DO Super savePd Save test-ppos.p test-bes.p test-dos.p test-wbs.p Call Flow DB

MOVE10: Darwin or Big Bang? 37 Improvements Back-end ready for GUI Improved overall performance –Codes and other semi-static data cached –Drop-downs filled with Javascript –BY-REFERENCE for data-structure parameters Moved to cards as process-unit (instead of whole page)

MOVE10: Darwin or Big Bang? 38 Caching Codes Stuff DB-data into cache Cache available? Get cached data with same version# Get version# of data in DB Can find cached data ? Get data from DB Create cache return cached data A A B B

MOVE10: Darwin or Big Bang? 39 BY-REFERENCE Phrase... RUN getHugo IN TARGET-PROCEDURE ( OUTPUT PARAMETER TABLE ttHugo BY-REFERENCE ).... DEFINE TEMP-TABLE Hugo FIELD... INDEX.... PROCEDURE displayHugo: FOR EACH ttHugo : DISPLAY ttHugo. END.... PROCEDURE getHugo: DEFINE OUTPUT PARAMETER TABLE FOR ttHugo. FOR EACH hugo NO-LOCK : CREATE ttHugo. BUFFER-COPY hugo TO ttHugo. END. /* FOR EACH hugo NO-LOCK */ RUN displayHugo IN TARGET-PROCEDURE. RUN displayHugo. PROCEDURE displayHugo: FOR EACH ttHugo : DISPLAY ttHugo. END.... DEFINE TEMP-TABLE Hugo FIELD... INDEX.... /* hugo-do.p */... Compile Time: /* hugo.p */ /* main-block */ RUN start-super-proc(“hugo-do.p”).

MOVE10: Darwin or Big Bang? RUN getHugo IN TARGET-PROCEDURE ( OUTPUT PARAMETER TABLE ttHugo BY-REFERENCE ).... DEFINE TEMP-TABLE Hugo FIELD... INDEX.... PROCEDURE displayHugo: FOR EACH ttHugo : DISPLAY ttHugo. END.... /* hugo.p */ BY-REFERENCE Phrase PROCEDURE getHugo: DEFINE OUTPUT PARAMETER TABLE FOR ttHugo. FOR EACH hugo NO-LOCK : CREATE ttHugo. BUFFER-COPY hugo TO ttHugo. END. /* FOR EACH hugo NO-LOCK */ RUN displayHugo IN TARGET-PROCEDURE. RUN displayHugo. PROCEDURE displayTtHugo: FOR EACH ttHugo : DISPLAY ttHugo. END.... DEFINE TEMP-TABLE Hugo FIELD... INDEX Execution Time: /* hugo-do.p */ /* main-block */ RUN start-super-proc(“hugo-do.p”).

MOVE10: Darwin or Big Bang? RUN getHugo IN TARGET-PROCEDURE ( OUTPUT PARAMETER TABLE ttHugo BY-REFERENCE ).... DEFINE TEMP-TABLE Hugo FIELD... INDEX.... PROCEDURE displayHugo: FOR EACH ttHugo : DISPLAY ttHugo. END.... /* hugo.p */ BY-REFERENCE Phrase PROCEDURE getHugo: DEFINE OUTPUT PARAMETER TABLE FOR ttHugo. FOR EACH hugo NO-LOCK : CREATE ttHugo. BUFFER-COPY hugo TO ttHugo. END. /* FOR EACH hugo NO-LOCK */ RUN displayHugo IN TARGET-PROCEDURE. RUN displayHugo. PROCEDURE displayTtHugo: FOR EACH ttHugo : DISPLAY ttHugo. END.... DEFINE TEMP-TABLE Hugo FIELD... INDEX Execution Time: /* hugo-do.p */ /* main-block */ RUN start-super-proc(“hugo-do.p”).

MOVE10: Darwin or Big Bang? RUN getHugo IN TARGET-PROCEDURE ( OUTPUT PARAMETER TABLE ttHugo BY-REFERENCE ).... DEFINE TEMP-TABLE Hugo FIELD... INDEX.... PROCEDURE displayHugo: FOR EACH ttHugo : DISPLAY ttHugo. END.... /* main-block */ RUN start-super-proc(“hugo-do.p”). /* hugo.p */ BY-REFERENCE Phrase PROCEDURE getHugo: DEFINE OUTPUT PARAMETER TABLE FOR ttHugo. FOR EACH hugo NO-LOCK : CREATE ttHugo. BUFFER-COPY hugo TO ttHugo. END. /* FOR EACH hugo NO-LOCK */ RUN displayHugo IN TARGET-PROCEDURE. RUN displayHugo. PROCEDURE displayTtHugo: FOR EACH ttHugo : DISPLAY ttHugo. END.... DEFINE TEMP-TABLE Hugo FIELD... INDEX Execution Time: /* hugo-do.p */

MOVE10: Darwin or Big Bang? 43 Outlook – Version 3 Improving Standards – How –Performance More “Profiler” work Expanding Functionality – What –Front-End Add GUI for certain functionalities –Back-End Add PDF printing (currently only RTF)

MOVE10: Darwin or Big Bang? 44 Goals For This Session We chose to evolve the application step by step Seeds for thought: What where the goals of each step How to harvest and build Advantages of newer architecture (using ProDataSets)

MOVE10: Darwin or Big Bang? 45 Questions?

MOVE10: Darwin or Big Bang? 46 Thank you

MOVE10: Darwin or Big Bang? 47 Seeds for Thought Number of records in main TT limited –Don't want a page with 5000 table-rows {&Out} as late as possible –Debugging easier if everything can be run in Editor Horizontal Separation of Tasks –Specialization on UI, UI management, Business-logic xx