Architecture, Design and Implementation of a Mathematical Derivation Editor. Johannes Eriksson



Similar documents
Structure of Presentation. The Role of Programming in Informatics Curricula. Concepts of Informatics 2. Concepts of Informatics 1

Firewall Builder Architecture Overview

Curriculum Map. Discipline: Computer Science Course: C++

Web Design Specialist

SOFTWARE ENGINEERING PROGRAM

USE OF PYTHON AS A SATELLITE OPERATIONS AND TESTING AUTOMATION LANGUAGE

A QUICK OVERVIEW OF THE OMNeT++ IDE

Introduction to Module 1: Converting Word Docs to FrameMaker

Chapter 19: XML. Working with XML. About XML

Outline. CIW Web Design Specialist. Course Content

About XML in InDesign

Quick Guide to the Cascade Server Content Management System (CMS)

GUI and Web Programming

Bitrix Site Manager 4.1. User Guide

Jos Warmer, Independent

A methodology for measuring software development productivity using Eclipse IDE

FileMaker Server 14. Custom Web Publishing Guide

Extensible Markup Language (XML): Essentials for Climatologists

Application Developer Guide

FileMaker Server 15. Custom Web Publishing Guide

XFlash A Web Application Design Framework with Model-Driven Methodology

Java the UML Way: Integrating Object-Oriented Design and Programming

Timeless Time and Expense Version 3.0. Copyright MAG Softwrx, Inc.

Product Overview & New Features

An interactive 3D visualization system for displaying fieldmonitoring

Microsoft Expression Web Quickstart Guide

YouTrack MPS case study

An introduction to creating Web 2.0 applications in Rational Application Developer Version 8.0

CHAPTER 1: CLIENT/SERVER INTEGRATED DEVELOPMENT ENVIRONMENT (C/SIDE)

Framework as a master tool in modern web development

DESKTOP PRODUCTIVITY SOFTWARE

Page Editor Recommended Practices for Developers

Developing NFC Applications on the Android Platform. The Definitive Resource

Ektron to EPiServer Digital Experience Cloud: Information Architecture

PROJECT REPORT OF BUILDING COURSE MANAGEMENT SYSTEM BY DJANGO FRAMEWORK

4.1. Title: data analysis (systems analysis) Annotation of educational discipline: educational discipline includes in itself the mastery of the

Module 1: Getting Started with Databases and Transact-SQL in SQL Server 2008

Kentico CMS 5 Developer Training Syllabus

IT3504: Web Development Techniques (Optional)

CRM Rules! User Guide. Version Prepared October, 2012 By: David L. Carr, President, Visionary Software

Business Application Development Platform

Table of Contents Chapter 1 - Getting Started with Oracle Data Relationship Management (DRM) 1

Logi Ad Hoc Reporting System Administration Guide

JMulTi/JStatCom - A Data Analysis Toolkit for End-users and Developers

Everything you ever wanted to know about Drupal 8*

æ A collection of interrelated and persistent data èusually referred to as the database èdbèè.

Introduction to XML Applications

This course provides students with the knowledge and skills to develop ASP.NET MVC 4 web applications.

Writing Queries Using Microsoft SQL Server 2008 Transact-SQL

Website Builder Documentation

Dreamweaver CS3 THE MISSING MANUAL. David Sawyer McFarland. POGUE PRESS" O'REILLY 8 Beijing Cambridge Farnham Koln Paris Sebastopol Taipei Tokyo

IT3503 Web Development Techniques (Optional)

OMNeT++ User Guide. Version 4.6

Chapter 1. Dr. Chris Irwin Davis Phone: (972) Office: ECSS CS-4337 Organization of Programming Languages

Technical Information Abstract

Dynamic Web Programming BUILDING WEB APPLICATIONS USING ASP.NET, AJAX AND JAVASCRIPT

This guide provides additional information about topics covered in the webinar

Release 2.1 of SAS Add-In for Microsoft Office Bringing Microsoft PowerPoint into the Mix ABSTRACT INTRODUCTION Data Access

Java Application Developer Certificate Program Competencies

Drupal and ArcGIS Yes, it can be done. Frank McLean Developer

FileMaker Server 13. Custom Web Publishing with XML

Welcome to the Lists of values and Parameters lesson for Information design Tool in SAP BusinessObjects 4.0.

MarkLogic Server. Reference Application Architecture Guide. MarkLogic 8 February, Copyright 2015 MarkLogic Corporation. All rights reserved.

How To Write An Ria Application

Building a Python Plugin

Embedded BI made easy

Vector HelpDesk - Administrator s Guide

Eclipse 4 RCP application Development COURSE OUTLINE

DOVER-SHERBORN HIGH SCHOOL PROGRAM OF STUDIES

DataPA OpenAnalytics End User Training

Case Study. Data Governance Portal Brainvire Infotech Pvt Ltd Page 1 of 1

PROJECT ON MICROSOFT ACCESS (HOME TAB AND EXTERNAL DATA TAB) SUBMITTED BY: SUBMITTED TO: NAME: ROLL NO: REGN NO: BATCH:

Programming in Access VBA

Computer Training. NR Computer Learning Center 1835 W. Orangewood Ave #200 Orange CA 92868

Microsoft SQL Server 2008 Step by Step

Mobile Web Design with HTML5, CSS3, JavaScript and JQuery Mobile Training BSP-2256 Length: 5 days Price: $ 2,895.00

Writing Queries Using Microsoft SQL Server 2008 Transact-SQL

Oracle Data Integrator: Administration and Development

INFOPATH FORMS FOR OUTLOOK, SHAREPOINT, OR THE WEB

Introduction to web development using XHTML and CSS. Lars Larsson. Today. Course introduction and information XHTML. CSS crash course.

ARIZONA CTE CAREER PREPARATION STANDARDS & MEASUREMENT CRITERIA SOFTWARE DEVELOPMENT,

Programmabilty. Programmability in Microsoft Dynamics AX Microsoft Dynamics AX White Paper

Reverse Literate Programming

Advanced Web Development SCOPE OF WEB DEVELOPMENT INDUSTRY

SyncTool for InterSystems Caché and Ensemble.

Getting started with API testing

MASTER DRUPAL 7 MODULE DEVELOPMENT

PL/JSON Reference Guide (version 1.0.4)

multiple placeholders bound to one definition, 158 page approval not match author/editor rights, 157 problems with, 156 troubleshooting,

Dr. Marco Hugentobler, Sourcepole QGIS from a geodata viewer to a GIS platform

HPC Wales Skills Academy Course Catalogue 2015

IBM Script Portlet for WebSphere Portal Release 1.1

Transcription:

Architecture, Design and Implementation of a Mathematical Derivation Editor Johannes Eriksson

What is the Derivation Editor? The Mathematical Derivation Editor (nicknamed Mathedit ) is work in progress; it aims be a useful tool for creating, editing and correctness checking mathematical papers. 2 / 24

Main developers Gaudi software factory Ralph-Johan Back Victor Bos Viorel Preoteasa Johannes Eriksson Main director and producer Designer Designer Developer What is the Derivation Editor? 3 / 24

Goals Outlining editor Editing of hierarchically structured text Useful for writing mathematical papers Input of special characters Editing structured calculational proof Examples from Back, Grundy, v. Wright: Structured Calculation Proof What is the Derivation Editor? 4 / 24

Goals (Continued) Correctness checking Export to presentation formats such as HTML and LaTeX Extensible Define an API to allow users to modify and extend the editor's behaviour What is the Derivation Editor? 5 / 24

Features 6 / 24

Basic text editing The basic features of a graphical text editor: Basic editing commands (type character, delete, move cursor,...) Editable keybindings Input of unicode characters (using a keybinding or the menu) Cut, copy, paste via system clipboard Load and save files (XML) Features 7 / 24

Outlining Hierarchically structured text Strict outlining Possiblity to collapse/expand items Features 8 / 24

Formula syntax Expression and rule markup Syntax understanding Mathematical profiles Profile interface The universal profile (UP) Features 9 / 24

Derivation Determines applicable rules by unification Steps can be generated automatically or written manually Correctness checking Parsing of complete derivations Re-application of rules, compares terms Nested derivations Result of a conditional rule Focuses on a subexpression Assumptions = scoped rules Features 10 / 24

Other features Extensibility, user-defined tools Some source code features (mainly syntax highlighting) Export filters HTML with Javascript or CSS LaTeX Possibility to #include documents Hyperlinks between documents Other minor features Features 11 / 24

Development 12 / 24

People The programming work has been carried out by computer science and computer engineering students from Åbo Akademi, who have been employed as programmers at the Gaudi Software Factory. The bulk of the work has been done during the two summers of 2002 and 2003, when four programmers worked full-time. Some part-time work during the semesters. Several different teams, altogether 11 individuals have been working as programmers on the project. Development 13 / 24

Extreme programming Short iterations Pair programming Unit tests Continuous refactoring Development 14 / 24

Development tools Python language Linux PCs xemacs editor Gaudi Sourceforge on xprog0.cs.abo.fi Task tracking Bugtracking Development 15 / 24

Architecture, design and implementation 16 / 24

Stepwise Feature Introduction (SFI) A bottom-up, incremental software development methodology. Software is built in thin layers where each successive layer introduces a new feature and does not break the functionality of previous layers. Classes in a new layer become subclasses of the corresponding classes in previous layer, i.e. the application is extended by inheritance of its classes. Overridden methods should preserve functionality from previous layers. The different components (packages, modules, classes) and the layer hierarchy are orthogonal partitionings of the software. Architecture, design and implementation 17 / 24

Layer structure of Mathedit Architecture, design and implementation 18 / 24

Layer structure of Mathedit (Continued) Command Frame Text MV Edit CmdList Outline1 Outline2 Format Derivation Main window, menu, toolbar and command pattern. Multiple (empty) windows. Text editing (unicode) with the QTextEdit widget, Open, Save, Save As, Save All. Our own document model. Multiple views of the same document, New View command. Copy, cut and paste text. Support for undo/redo of editing commands. Extended the document model with a command list. Extended the document model and editing capabilities of the text widget to support an outlining structure. Support for collapsing and expanding an item. Collapse hides all lines indented deeper than the current line, expand shows them again. Rich text formatting of text. Formula syntax. Is is possible to define mathemathical expressions, which the editor parses Architecture, design and implementation 19 / 24

Layer structure of Mathedit (Continued) Profile Filter Highlight Hook according to its grammar. Perform mathemathical derivations by applying rules on expressions. Possibility to add own profiles. Filters for export to HTML and LaTeX, import of LaTeX. Syntax highlighting for programming languages. Possibility to connect custom functions to hooks in mathedit. Architecture, design and implementation 20 / 24

Special solutions to aid in SFI Naming conventions. Each class/subclass name is prefixed with Layername_ to identify the layer it belongs to. Example: Text_Document, Outline1_Document, Derivation_Document,... Store metadata, e.g. the list of layers. Possible to find out the layer of any class as well as the layer's position in the hierarchy. Import modules by try-and-catch. Reduces the amount of factory methods. layers = [ Command, Frame, Text,... ] layeri = layers.index(layer) while layeri>=0: try: exec("import "+layer+"_"+modulename) except ImportError: layeri -= 1 layer = layers[layeri] else: return eval(layer+"_"+modulename) raise "No module " + modulename Architecture, design and implementation 21 / 24

Advantages of SFI Works well with incremental software development Each layer can be run as a standalone application, making it easier to track down bugs Unit tests can follow layer hierachy Architecture, design and implementation 22 / 24

Disadvantages of SFI Can make some refactorings difficult Changes to existing features may not fit well into the hierarchy Large number of classes and deep inheritance hierarchies may be difficult to deal with Architecture, design and implementation 23 / 24

Implementation Python 2.2 Interpreted, object-oriented language Easy to learn Garbage collection Highly dynamic Introspective power www.python.org Qt 3.1 A cross-platform C++ widget toolkit Language bindings for Python (PyQt) www.trolltech.com Architecture, design and implementation 24 / 24