Documentation Costs Avoided using Python and other Open Standards Andrew Jonathan Fine Operating Systems Software Organization Engines, Systems, and Services.

Slides:



Advertisements
Similar presentations
HTML Basics Customizing your site using the basics of HTML.
Advertisements

Computers: Tools for an Information Age Writing Your Own Web Page: Using HTML and Web Authoring Tools.
Building Bug-Free O-O Software: An Introduction to Design By Contract A presentation about Design By Contract and the Eiffel software development tool.
DOCUMENT TYPES. Digital Documents Converting documents to an electronic format will preserve those documents, but how would such a process be organized?
ADA Compliant Websites & Documents What the heck am I supposed to do?
Implementing Single Sourcing with XML
SYSTEM PROGRAMMING & SYSTEM ADMINISTRATION
Documentation Generators: Internals of Doxygen John Tully.
Chapter 1: Introduction
CMPF 112 : COMPUTING SKILLS FOR ENGINEERS MICROSOFT OFFICE SUITE: WORD.
Publishing Workflow for InDesign Import/Export of XML
XHTML Presenters : Jarkko Lunnas Sakari Laaksonen.
Java Server Pages Russell Beale. What are Java Server Pages? Separates content from presentation Good to use when lots of HTML to be presented to user,
1 How to use Memshare in Shipbuilding – Quality Control.
Chapter 8: Introduction to High-Level Language Programming Invitation to Computer Science, C++ Version, Fourth Edition.
1 Chapter 11 Developing Custom Help. 11 Chapter Objectives Use HTML to create customized Help topics for an application Use the HTML Help Workshop to.
Information Extraction from Documents for Automating Softwre Testing by Patricia Lutsky Presented by Ramiro Lopez.
September 15, 2003Houssam Haitof1 XSL Transformation Houssam Haitof.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 8 Slide 1 Tools of Software Development l 2 types of tools used by software engineers:
1.3 Executing Programs. How is Computer Code Transformed into an Executable? Interpreters Compilers Hybrid systems.
Sharon Burton Product Manager/Product Evangelist MadCap Software
Other Features Index and table of contents Macros and VBA.
Chapter 13 Fill-in-the-blank Computing: The Basics of Spreadsheets.
15 November 2005Linking Outside the Box1 Cross referencing between XML documents Bob Stayton Sagehill Enterprises
CSCI 1101 Intro to Computers 3. Common Productivity Software.
How to Web Page with iModules First row of icons.
Miscellaneous Excel Combining Excel and Access. – Importing, exporting and linking Parsing and manipulating data. 1.
DSpace UI Alexey Maslov. DSpace in general A digital library tool useful for storage, maintenance, and retrieval of digital documents Two types of interaction:
Standard Grade Computing General Purpose Packages WORD-PROCESSING WORD-PROCESSING Chapter 2.
Session 1 SESSION 1 Working with Dreamweaver 8.0.
McGraw-Hill Career Education© 2008 by the McGraw-Hill Companies, Inc. All Rights Reserved. 2-1 Office PowerPoint 2007 Lab 2 Modifying and Refining a Presentation.
McGraw-Hill Career Education © 2008 by the McGraw-Hill Companies, Inc. All rights reserved. Office Word 2007 Lab 2 Revising and Refining a Document.
Database Design and Management CPTG /23/2015Chapter 12 of 38 Functions of a Database Store data Store data School: student records, class schedules,
HTML: Hyptertext Markup Language Doman’s Sections.
By: Jennifer Huff & Courtney Stenzhorn. What Do YOU Know???
Unit-1 Introduction Prepared by: Prof. Harish I Rathod
HTML ( HYPER TEXT MARK UP LANGUAGE ). What is HTML HTML describes the content and format of web pages using tags. Ex. Title Tag: A title It’s the job.
Main Parts of a Book Non-fiction Texts.
Covenant College November 27, Laura Broussard, Ph.D. Professor COS 131: Computing for Engineers Chapter 5: Functions.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Connecting with Computer Science2 Objectives Learn how software engineering is used to create applications Learn some of the different software engineering.
 A plan of attack for your games content  Or (more specifically)  A detailed description of all games mechanics, objects, characters, stats, ect… that.
 Programming - the process of creating computer programs.
Be A Hero – ELIMINATE “END GAME” RoundUp 2007, Austin TX November 6 th, 2007.
Tables Microsoft Word Tables A table is a grid of rows and columns that intersect to form cells. A table is a grid of rows and columns that intersect.
Chapter Five Working with Words ©1999 Addison Wesley Longman5.2 Chapter Outline The Word Processing Process The Wordsmith’s Toolbox The Desktop Publishing.
Word Create a basic TOC. Course contents Overview: table of contents basics Lesson 1: About tables of contents Lesson 2: Format your table of contents.
Chapter 14 Fill-in-the-blank Computing: The Basics of Spreadsheets.
HTML HYPER TEXT MARKUP LANGUAGE. INTRODUCTION Normal text” surrounded by bracketed tags that tell browsers how to display web pages Pages end with “.htm”
Writing Your Own Web Page: Using HTML and FrontPage Chapter 10.
Chapter – 8 Software Tools.
Tables Microsoft Word Tables A is a grid of rows and columns that intersect to form cells. A is a grid of rows and columns that intersect to form cells.
Prepared by the Academic Faculty Members of IT. Tables Creating Tables. Merging Cells. Splitting Cells. Sorting Tables. Performing Calculations.
`. Lecture Overview HTML Body Elements Linking techniques HyperText references Linking images Linking to locations on a page Linking to a fragment on.
COM: 111 Introduction to Computer Applications Department of Information & Communication Technology Panayiotis Christodoulou.
Open Office Writer Introduction AOSS _ Course material AOSS Master training workshop Singapore 2007.
Evolution of C and C++ n C was developed by Dennis Ritchie at Bell Labs (early 1970s) as a systems programming language n C later evolved into a general-purpose.
Model Based Engineering Environment Christopher Delp NASA/Caltech Jet Propulsion Laboratory.
1 January 31, Documenting Software William Cohen NCSU CSC 591W January 31, 2008.
Excel Tutorial 8 Developing an Excel Application
Computer Fundamentals
Chapter 17: Document Production (Word)
Main Parts of a Book Non-fiction Texts.
Creating a Word Document – Part 1
Computer 4 JEOPARDY Bobbie, Sandy, Trudy.
Word Processing.
The Automation of the U.S. Budget Appendix Volume
Creating a Word Document – Part 1
ADA Compliant Website & Documents
ICT Word Processing Lesson 1: Introduction to Word Processing
Presentation transcript:

Documentation Costs Avoided using Python and other Open Standards Andrew Jonathan Fine Operating Systems Software Organization Engines, Systems, and Services Honeywell International

Original Core Data Flow Single Python application set of front end translators content inserter post-processing formatter

Front End Translator Selected by caller Caller specifies input file containing corporate data Extracts components from file Pictures Tables Paragraphs Saves to Python dictionary

Inserter Caller selects components from Python dictionaries made by front-ends for respective documents. Inserter creates a Word document Inserter uses Python/Com to insert components into document

Back End Formatter Scans corporate Word document template Scans Word document made by inserter Makes final style corrections.

Why? The flow was designed to cope with changes in requirements! New projects New teams New data source formats New standards for existing formats

First front-end translator Take pictures, tables, and data from a recursive property list constructed by an aerospace industry software visual programming tool called BEACON. (… actual design of translator outside the scope of this paper…)

Initial Design of Inserter Straightforward use of principles demonstrated by Mark Hammond's book, Python Programming in Win32. Python Programming in Win32 Chapter containing a thorough treatment of how to have Python use the Word 97 COM object model to create and manipulate a Word Document.

Problems!!! Must cope with huge amounts of corporate data such as table cells.. Speed of COM interface for new individual elements. Reuse issues for detailed typesetting of elements.

What I wanted: Faster conversion Existing standard Callable from Python What I found: Faster conversion (OpenJade) Existing standard (DocBook SGML)

Why Call from Python? New scripting language to replace islands of automation (Perl, MSDOS, internal test stand controller language). Easier to connect islands after writing in Python. Open source thus continuously peer reviewed. Tremendous user base! Plenty of wrappers written in Python around open source libraries supporting open standards. … so I wrote a Python wrapper around some DocBook rules …

Revised Core Data Flow Python wrapper writes DocBook SGML OpenJade translates DocBook SGML to Word RTF

A DocBook Informal table rendered by OpenJade into Word Name Type statexInteger stateyLong

Input to OpenJade as local DocBook SGML Name Type statex Integer statey Long

from DocBook import DocBook class ItalicIndexPhrase (DocBook.Rules.Phrase): "italic indexible text phrase" TITLE = DocBook.Rules.Phrase def __init__ (self, text): DocBook.Rules.Phrase.__init__ (self, 'xe', 'italic') self.data = [ text ] class NameCell (DocBook.Rules.Entry): "table row cell describing name of identifier (italic and indexible text!)" TITLE = DocBook.Rules.Entry def __init__ (self, text): DocBook.Rules.Entry.__init__ (self) self.data = [ ItalicIndexPhrase (text) ] class StorageCell (DocBook.Rules.Entry): "table row cell describing storage type of identifier (ordinary text)" TITLE = DocBook.Rules.Entry def __init__ (self, text): DocBook.Rules.Entry.__init__ (self) self.data = text class TRow (DocBook.Rules.Row): "each row in application's informal table body" TITLE = DocBook.Rules.Row def __init__ (self, binding): (identifier, storage) = binding DocBook.Rules.Row.__init__ (self, [ NameCell (identifier), StorageCell (storage) ]) class TBody (DocBook.Rules.TBody): "application's informal table body" TITLE = DocBook.Rules.TBody def __init__ (self, items): DocBook.Rules.TBody.__init__ (self, map (TRow, items)) class TGroup (DocBook.Rules.TGroup): "application's informal table group" COLSPECS = [ DocBook.Rules.ColSpec ('Name', 75, 'left'), DocBook.Rules.ColSpec ('Type', 64, 'center') ] SHAPE = [ '2', '1', '1', 'center' ] TBODY = TBody class InformalTable (DocBook.Rules.InformalTable): "application's informal table" TGROUP = TGroup class Example (DocBook): 'example application of DocBook formatting class' SECTION = str (InformalTable) def __call__ (self): self.data = [ InformalTable ()(self.data) ] return DocBook.__call__ (self) if __name__ == '__main__': print Example ([('statex', 'Integer'), ('statey', 'Long')]) () Python code to translate data into OpenJade input in local DocBook SGML (based on Python to DocBook sample wrapper class DocBook)

Using class DocBook class DocBook from DocBook.py in Appendix F is the top-level interface callable class Application inherits from class DocBook Contents of application inherit from classes contained by DocBook.Rules Use overrides to specify structure, formatting, and text.

OpenJade OpenJade is an open source DSSSL execution engine available from SourceForge. DSSSL is an ISO standard for typesetting specification and document conversion. OpenJade reads DocBook DSSSL stylesheets and our local DSSSL stylesheets if any. The DSSSL is executed by OpenJade upon SGML source text to write a final document for later loading into a word processor.

DocBook Post-Processing using Word Automation with Python/COM DocBook/OpenJade emits RTF with different Word document style identifier names than in corporate Word DOT file. Much faster to change document using Python/COM than to create document! Cannibalized Python code from inserter first draft to create post-processor. Reads RTF, changes, saves as final DOC.

Return on Investment 5 projects ranging from 30 BEACON files to 150, average about 75 files Each project has 2 releases per year where each file must generate hard copy. Previously (cut/paste by hand): Each project release: 1/5 * 75 * 4 hours = 60 hours 3/5 * 75 * 8 hours = 360 hours 1/5 * 75 * 16 hours= 240 hours hours Two releases per year: * 2= 1,320 hours Five projects needing releases: * 5= 6,600 hours Two year period ( ) * 2 = 13,200 hours Total effort avoided: 13,200 hours Automated: Automated releases over 2 year period: 160 hours My effort (12 * 140 hours per labor month): hours Total investment: hours Net effort avoided, : hours Net avoided by customers at $100/hour: dollars Net labor years avoided at 1680 hours/year: 6.76 years Headcount avoided per year: 3.38 people ROI (Total effort avoided / total invested) : 7.17

Python and DocBook together Python connects our department’s engineering specific islands of automation. Python with DocBook created Word documents from engineering data. The combination of an open language with an open standard eliminated a real-world business process bottleneck. The return on investment was substantial.