How To Apply Software Archeology To Your Development Process



Similar documents
Preguntas más frecuentes sobre Embarcadero RAD Studio XE

Chapter 13 Computer Programs and Programming Languages. Discovering Computers Your Interactive Guide to the Digital World

Setting up IIS on Windows 7: Build Web Services with RAD Studio 2010

Preguntas + frecuentes sobre Embarcadero Delphi Prism XE

The leading platform for Model Driven Architecture (MDA) Content:

ER/Studio Data Architect

Managing Java EE Performance with Embarcadero s J Optimizer Request Analyzer

SOFTWARE TESTING TRAINING COURSES CONTENTS

Big Data Integration: A Buyer's Guide

SharePoint 2010

Effective Team Development Using Microsoft Visual Studio Team System

Avaya Aura Orchestration Designer

Building Views and Charts in Requests Introduction to Answers views and charts Creating and editing charts Performing common view tasks

Designing and Developing Web Applications by using the Microsoft.NET Framework

ITMC 2079 MCTS Configuring and Administering Microsoft SharePoint 2010

A Modular Approach to Teaching Mobile APPS Development

IBM Rational Web Developer for WebSphere Software Version 6.0

Guiding SOA Evolution through Governance From SOA 101 to Virtualization to Cloud Computing

Installation and Configuration in Microsoft Dynamics NAV 5.0

A standards-based approach to application integration

The "Eclipse Classic" version is recommended. Otherwise, a Java or RCP version of Eclipse is recommended.

zen Platform technical white paper

Meister Going Beyond Maven

IndustrialIT System 800xA Engineering

<Insert Picture Here> Application Testing Suite Overview

Agile Business Suite: a 4GL environment for.net developers DEVELOPMENT, MAINTENANCE AND DEPLOYMENT OF LARGE, COMPLEX BACK-OFFICE APPLICATIONS

Embarcadero DB Change Manager 6.0 and DB Change Manager XE2

A Monitored Student Testing Application Using Cloud Computing

Done. Imagine it. c Consulting. c Systems Integration. c Outsourcing. c Infrastructure. c Server Technology.

How to Build an E-Commerce Application using J2EE. Carol McDonald Code Camp Engineer

Chapter 13: Program Development and Programming Languages

WebSphere Server Administration Course

Software Engineering for LabVIEW Applications. Elijah Kerry LabVIEW Product Manager

Content. Development Tools 2(63)

IBM WebSphere Server Administration

Tomáš Müller IT Architekt 21/04/2010 ČVUT FEL: SOA & Enterprise Service Bus IBM Corporation

This presentation is for informational purposes only and may not be incorporated into a contract or agreement.

Workshop for WebLogic introduces new tools in support of Java EE 5.0 standards. The support for Java EE5 includes the following technologies:

SOA-14: Continuous Integration in SOA Projects Andreas Gies

NetBeans IDE Field Guide

Acknowledgments. p. 55

Glassfish Architecture.

Course Description. Course Audience. Course Outline. Course Page - Page 1 of 5

Business Rule Management. Effective IT Modernization

Augmented Search for Web Applications. New frontier in big log data analysis and application intelligence

Sybase Unwired Platform 2.0

Chapter 13: Program Development and Programming Languages

An Eclipse Plug-In for Visualizing Java Code Dependencies on Relational Databases

AWS Service Catalog. User Guide

"Charting the Course to Your Success!" MOC B Configuring and Administering Microsoft SharePoint Course Summary

Your guide to DevOps. Bring developers, IT, and the latest tools together to create a smarter, leaner, more successful coding machine

Mirjam van Olst. Best Practices & Considerations for Designing Your SharePoint Logical Architecture

Masters in Human Computer Interaction

Masters in Advanced Computer Science

Embarcadero DataU Conference. Data Governance. Francis McWilliams. Solutions Architect. Master Your Data

Tech Notes. Corporate Headquarters EMEA Headquarters Asia-Pacific Headquarters 100 California Street, 12th Floor San Francisco, California 94111

Cloud & Datacenter Monitoring with System Center Operations Manager

Masters in Artificial Intelligence

Chapter 12 Programming Concepts and Languages

Why NetDimensions Learning

Masters in Networks and Distributed Systems

Latte Rapid Application Development. William Dunlap Product Manager Borland International

What is a programming language?

MDA Overview OMG. Enterprise Architect UML 2 Case Tool by Sparx Systems by Sparx Systems

OUR COURSES 19 November All prices are per person in Swedish Krona. Solid Beans AB Kungsgatan Göteborg Sweden

Computer Science Course Descriptions Page 1

McGraw-Hill The McGraw-Hill Companies, Inc.,

Business Process Management

TIBCO ActiveMatrix BPM SOA Concepts

Communiqué 4. Standardized Global Content Management. Designed for World s Leading Enterprises. Industry Leading Products & Platform

WebSphere Application Server - Introduction, Monitoring Tools, & Administration

1z0-102 Q&A. DEMO Version

Oracle WebLogic Server 11g Administration

What is Enterprise Architect? Enterprise Architect is a visual platform for designing and constructing software systems, for business process

Enhancing The ALM Experience

Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives

Software Engineering Best Practices. Christian Hartshorne Field Engineer Daniel Thomas Internal Sales Engineer

Applying 4+1 View Architecture with UML 2. White Paper

How To Understand Programming Languages And Programming Languages

Oracle Data Integrator: Administration and Development

BIRT Application and BIRT Report Deployment Functional Specification

GECKO Software. Introducing FACTORY SCHEMES. Adaptable software factory Patterns

An introduction to the benefits of Application Lifecycle Management

CHAPTER 1 - JAVA EE OVERVIEW FOR ADMINISTRATORS

Customer Bank Account Management System Technical Specification Document

JAVA Technologies QUARTER 1 DESKTOP APPLICATIONS - ESSENTIALS QUARTER 2 NETWORKING AND OPERATING SYSTEMS ESSENTIALS. Module 1 - Office Applications

Transcription:

How To Apply Software Archeology To Your Development Process Presented for: EclipseCon 2008 Thursday, March 13, 2008 Michael Rozlog michael.rozlog@codegear.com CodeGear

Who is Mike? You just said that PLSM (Product Line Sales Manager) Responsibilities Helping rebuild the developer tools and databases Left Borland 1/2006 Why did I come back? Prior Chief Technical Architect Borland Creator of Mastering JBuilder Wiley Books michael.rozlog@codegear.com

Ground rules for presentation All questions are valid This is NOT a sales presentation If you have a question, ask if you have it most likely other members of the audience has it to

Agenda The process: What is Software Archeology? Future tools: What are Software Factories? CodeGear: Company background Q&A

The process What is Software Archeology?

Current state of IT in the U.S. and around the world The need for new or modernizing applications is not decreasing or going away U.S. had the lowest C/S graduation in 2007 Qualified individuals are not filling the market Outsourcing is not always a solution on the table? Not allowed or applicable Bigger issues around this area, latest data shows 50% for non-government organizations Knowledge transfer gap

What is Software Archeology? A process for approaching unknown software that we have become responsible for An approach to unraveling the complexities of an existing application A lightweight process for getting understanding of existing source code The analysis of past applications to learn and understand why it was done that way

Software Archeology if (host.charat(0) == '.') return non_proxy_dom_list.removeelement(host); // check for host name for (int idx=0; idx<host.length(); idx++) { if (!Character.isDigit(host.charAt(idx)) && host.charat(idx)!= '.' && host.charat(idx)!= '/') return (non_proxy_host_list.remove(host)!= null); } // must be an IP-address

Software Archeology Visualization Design Violation if (host.charat(0) == '.') return non_proxy_dom_list.removeelement(host); // check for host name for (int idx=0; idx<host.length(); idx++) { if (!Character.isDigit(host.charAt(idx)) && host.charat(idx)!= '.' && host.charat(idx)!= '/') return (non_proxy_host_list.remove(host)!= null); } // must be an IP-address Documentation Performance Review Style Violations Business Logic Review

Software Archeology if (host.charat(0) == '.') return non_proxy_dom_list.removeelement(host); // check for host name for (int idx=0; idx<host.length(); idx++) { if (!Character.isDigit(host.charAt(idx)) && host.charat(idx)!= '.' && host.charat(idx)!= '/') return (non_proxy_host_list.remove(host)!= null); } // must be an IP-address

Software Archeology Visualization Design Violation if (host.charat(0) == '.') return non_proxy_dom_list.removeelement(host); // check for host name for (int idx=0; idx<host.length(); idx++) { if (!Character.isDigit(host.charAt(idx)) && host.charat(idx)!= '.' && host.charat(idx)!= '/') return (non_proxy_host_list.remove(host)!= null); } // must be an IP-address Documentation Performance Review Style Violations Business Logic Review

Why is Software Archeology important? Always asked to rebuild the wheel How many times have you been asked to recreate this current implementation, but better? Inheritance of code Outsourcing Graying of IT

Why is Software Archeology important? Always asked to rebuild the wheel Inheritance of code How many times have you picked up someone else's code or project to be enhanced? Outsourcing Graying of IT

Why is Software Archeology important? Always asked to rebuild the wheel Inheritance of code Outsourcing Projects get outsourced, rural sourced, in-sourced, local sourced, and every other kind of sourced Do you understand the systems that were created? Do the outsourcers understand the system they are inheriting? Graying of IT

Why is Software Archeology important? Always asked to rebuild the wheel Inheritance of code Outsourcing Graying of IT By 2010 almost 37% of the software industry will consist of persons older then 50! 60% of the federal workforce will be eligible to retire over the next 10 years By 2010 18.5 percent of the government workforce about 290,000 employees will retire Do you understand the systems they have created?

What can be learned? High-level architectural understanding Weak-points in existing software Maintenance nightmares Performance bottlenecks Standards compliance or lack there of The overall health and value of the application Architectural approaches or how not to solve a problem Finding and Harvesting of Algorithms and patterns

What tools are needed? Need to be able to get a picture Need to be able to do static analysis Need to be able to do Dynamic analysis Need to be able to test the system Need to evaluate the performance Can it be done by hand? Yes but very time consuming code reviews, system tests, and primitive system performance models Is there a better way? Use a software tool

What is the cost of code reviews Very controversial subject But for me tools can enhance the approach Task Review by hand a small example set of code Comparison 5 classes, 139 lines of code, 4 experts in 15 minutes Average audit violations detected: 21 time: 0.25 hr The same set of code analyzed by a machine: Audit violations detected: 150 time: 2 sec Humans @ 84/hr Real sample Project 187,600 violations in 100 minutes on a project with 1233 classes and 199,146 lines of code 32,443 violations using the default set Skip AppFactories for Now Time Limited Actual customer case studies show ~400 man/hour savings per code review

Future tools: What are Software Factories?

What is an AssetLibrary A repository that can hold and manage AppModules. It will manage the lifecycle of AppModules Persist App Module Version Control AssetLibrary

How do Application Factories work? Let s walk through a simple scenario

Instant Understanding

Applications are complex tagging & Navigation TAGS Architect Adding Understanding TAG Application Logic TAG Almost instant productivity gains and better understanding Increase base understanding through the use of tagging Understand complex navigational structures of an application

Produce process

Applications are complex Application Architect Complete Understanding Application Logic Architects have a complete implementation and conceptual understanding of an application They also understand the intent and evolution of the application However explaining, extending, and reusing parts of the application is near impossible

Harvesting functionality Application Architect Complete Understanding Application Logic Isolate key functionality or components of an application

Application Module Application Metadata Architecture Architect App. Navigation App. Logic Custom Scripts Think of the application module as the shopping cart functionality found inside a large e-commerce application Add expert context and understanding with intent Custom Tags

Storage for reuse Application Metadata Architecture App. Navigation App. Logic Version Control AssetLibrary Custom Scripts Custom Tags Application Modules have a life of their own Application Modules evolve and grow in understanding and intent Application Modules are now ready for reuse

Morphing the IDE Application Metadata Architecture App. Nav. App. Logic Custom Scripts Custom Tags Metadata changes the ide

Consume

Ready to build new application ProjectAssist Dashboard App. Module 1 Shopping Cart Version Control App. Module 2 Invoicing AssetLibrary Each module is assembled with understanding and intent Application modules include the underlying metadata Application Modules are now ready for reuse

Framework neutral approach Application Factories Don t rely on any one framework all Java frameworks are valid Use existing Eclipse-ecosystem to support multiple frameworks Don t build a better wizard, building a higher level of abstraction and understanding Mix and Match for best solution

Application Factories Vision Application-driven development paradigm The structure, evolution, and logic behind the development of the Application belong to the application itself and are attached as metadata. Applications along with attached metadata are shared as reusable software assets

CodeGear background/history

Evolution of Borland Borland Founded in 1983 By French Immigrant Philippe Kahn Focused on: 100% Focus on Developer Productivity Target Market: Developers First Product: Turbo Pascal Late 2006: CodeGear the tools division created Application Lifecycle Management Developer Developer & Database Tools Tools StarTeam CaliberRM Tempo Together Silk Gauntlet Delphi Delphi for PHP Turbo Pascal InterBase C++Builder 3 rd Rail Turbo C++ dbase/paradox Blackfish SQL JBuilder InterBase 2.0

New News

JBuilder / JGear product line JBuilder 2007 Enterprise JGear: Performance JGear: LiveSource JGear: Team Server & Client JBuilder 2007 JGear: JBuilder Performance LiveSource 2007 Enterprise: JBuilder JGear: Turbo Performance LiveSource JBuilder 2007: 2007: JGear: Team Server & Client A This Brings Gives JBuilder full free, plug-in best-of-breed the turnkey, 2007 developer entire delivers Edition Eclipse-based JBuilder Open a Graphical offers high-level and Source all JGear Java the EJB IDE lines Application performance-related together Workbench developer-focused that provides to offer and LifeCycle you Web a with complete features profiler Services Management a fundamental including easy for Designer memory to install to (ALM) and Java provide Optimizeit Eclipse CPU development tool a profiling simplified that for is performance package. easy and RAD environment. debugging, to install development It tuning; includes and configure. advanced everything experience, LiveSource visual in making the for Thread other Java Java with packages Debugging, development full two-way plus and Code more. easier code The entry and Coverage for visual novice level allowing product, code and experienced diagramming, Turbo the developer JBuilder JEE which to Full IDE integration makes it easy for see developers help 2007 in to can real increase easily time alike. where the be enhanced productivity the performance with of the Java developers JBuilder 2007 issues to maintain Enterprise any is project. the total developers JGear are plug-ins located. and teams. solution. Turbo JBuilder

Demonstrations An overview Visualizing the code Analysis Tests Performance Documentation

Thank You Additional JBuilder Resources: JBuilder Product page: http://www.codegear.com/products/jbuilder JBuilder 2007 Videos: http://dn.codegear.com/article/33880 Java developer information http://dn.codegear.com/java Java developer multimedia tutorials http://dn.codegear.com/tv/java