13. RAD2PY: platform+IDE for solid & predictable Rapid Application Development

Type:
Poster
Audience level:
Novice
Category:
Best Practices/Patterns
March 11th 8 a.m. – 8:05 a.m.

Description

Can we develop software faster without compromising quality, schedule or cost? Do we have the right tools? Do we measure and estimate well? Are we good developers? This research attempts to answer these concerns, combining automated statistical methods with a lightweight but complete IDE for wx/web2py, alternative to IDLE resembling VB, for QA & self-improvement using Personal Software Process.

Abstract

This project is aimed to provide a simple, feature-full and totally integrated IDE tool for Python (specifically something similar to Visual Basic classic, knowing its drawbacks and lesson learned after using it). To prevent common pitfalls of Rapid Application Development, this aproach will follow Personal Software Process guidelines to measure and gather metrics in order to help to estimate and improve quality.

The goal of this project is to be as lightweight as possible, with a structure similar to IDLE, but solving its annoyances using a modern GUI toolkit and a web framework, integrating the Python development tool-chain. This work is being done initially as part of an academic research (degree thesis), and it is intended to be used either for educational purposes and in real world commercial applications.

Further information at: http://code.google.com/p/rad2py/

Poster outline

Introduction

Current similar tools

2nd and 3rd generation PSP tools (Java):

Proposed solution

"4th generation PSP tool": rad2py is a platform (foundations -methodology and process- + framework + tools) including:

  • ide2py: integrated IDE with automatic metric collection
  • psp2py: web app to track historical data and estimation
  • web2py: framework to develop web apps (enhancements required)
  • gui2py: framework to develop GUI apps using web2py and wxPython

Implementation

  • Python tools and libraries used/inspired by: IDLE / PythonWin, wx.STC, PDB, wx.Py, PythonCard, PyFlakes/PEP8, Py2Exe, etc.
  • Why web2py as framework? uniques features that made this possible at this stage
  • Why wxpython as gui toolkit? advanced python-made features and interesting alternatives
  • Architectural diagram and internal design details

ide2py major modules:

  • main.py: AUI/MDI, .ini, PyAUIFrame + mixins
  • editor.py: wx.STC: syntaxis, autocompletion, basic calltips
  • browser.py: webkit (gtk/linux) or ie (windows)
  • shell.py: wx.Py (wx.PyShell): integrated to console and debugger
  • debugger.py: bdb, single thread/process (~ IDLE and PythonWin)
  • repo.py + repo_hg.py: Mercurial tree + change notifies
  • web2py.py: embedded WSGI webserver (mainloop)
  • psp.py: defect list, time grid, toolbar (shelve/pickle -> simplejsonrpc)
  • wxpydiff.py: integrated visual diff tool

Current Status

  • Progress report: Roadmap
  • Issues found & lessons learned
  • Initial conclusion and topics where help is needed

Field experiments

Projects to be developed to gather metrics for empirical validation:

"Zero Defects" Challenge:

You could help testing this tools and sending statistical data to formally prove the hypothesis of this research regarding that quality software can be developed faster with Python! Also, not only you'll be teaching/learning python, you'll be practising sound software engineering principles to see if you can improve your skills, I bet you will ;-)

Details to be defined

Screenshot:

ide2py debugging an web2py app

References

  • [AGILDIR03] Abrahamsson, P., Warsta, J., Siponen, M. T., and Ronkainen, J. (2003). New directions on agile methods: a comparative analysis. In Proceedings of the 25th international Conference on Software Engineering (Portland, Oregon, May 03 - 10, 2003). International Conference on Software Engineering. IEEE Computer Society, Washington, DC, 244-254.
  • [AISEMA09] Irina Diana Coman, Alberto Sillitti, Giancarlo Succi. Free University of Bozen-Bolzano, Italy. A case-study on using an Automated In-process Software Engineering Measurement and Analysis system in an industrial environment. Proceedings of the 31st International Conference on Software Engineering IEEE Computer Society Washington DC, USA ©2009 ISBN: 978-1-4244-3453-4; http://www.inf.unibz.it/~gsucci/publications/images/ACase-studyonUsinganAutomated In-processSoftwareEngineering.pdf
  • [HUMPHREY95] Humphrey, Watts S. A Discipline for Software Engineering. Reading, MA: Addison-Wesley, 1995.
  • [ISEMA07] Philip M. Johnson. Requirement and Design Trade-offs in Hackystat: An in-process software engineering measurement and analysis system. Proceedings of the 2007 International Symposium on Empirical Software Engineering and Measurement, Madrid, Spain, September, 2007.; http://csdl.ics.hawaii.edu/techreports/06-06/06-06.pdf
  • [MUKESH08] Mukesh Jain. Delivering Successful Projects with TSP and Six Sigma: A Practical Guide to Implementing Team Software Process. Auerbach Publications, November 2008. ISBN 978-1420061437
  • [PROCEEDINGSTSP10] 2010 TSP Symposium Proceedings Document. Carnegie Mellon University. Software Engineering Institute; http://www.sei.cmu.edu/tspsymposium/past-proceedings/2010/2010_TSP_Proceedings.pdf
  • [PSP00] Watts S. Humphrey (2000) The Personal Software Process; Software Engineering Institute, Carnegie Mellon University
  • [PSPA05] Raymund Sison, David Diaz, Eliska Lam, Dennis Navarro, Jessica Navarro. Personal Software Process (PSP) Assistant. In Proceedings of APSEC'2005. pp.687~696; http://www.csie.ntut.edu.tw/labsdtl/95-summer/0823-1.pdf
  • [PSPBEY03] Johnson, P. M. et al (2003) Beyond the Personal Software Process: metrics collection and analysis for the differently disciplined. In Proceedings of the 25th international Conference on Software Engineering (Portland, Oregon, May 03 - 10, 2003). International Conference on Software Engineering. IEEE Computer Society, Washington, DC, 641-646.
  • [PSPBOK09] PSP BOK Official Release.The Personal Software Process (PSP) Body of Knowledge, Version 2.0. Special Report. August 2009 (Revised February 2010). CMU/SEI-2009-SR-018; http://www.sei.cmu.edu/library/abstracts/reports/09sr018.cfm
  • [PSPDAT98] Disney, A. M. and Johnson, P. M. (1998) Investigating data quality problems in the PSP. In Proceedings of the 6th ACM SIGSOFT international Symposium on Foundations of Software Engineering (Lake Buena Vista, Florida, United States, November 01 - 05, 1998). SIGSOFT '98/FSE-6. ACM Press, New York, NY, 143-152
  • [PSPEMP97] Will Hayes, James W. Over (1997) The Personal Software Process: An Empirical Study of Impact of PSP on Individual Engineers, Technical Report; Software Engineering Institute, Carnegie Mellon University
  • [RAD91] James Martin, (1991) Rapid Application Development; Macmillan Publishing Co., Inc.
  • [RADRSK00] Agarwal, R., et al (2000). Risks of rapid application development. Communications of the ACM 43, 11es (Nov. 2000)
  • [RADSTN98] Stephen E. Cross (1998) Toward Disciplined Rapid Application Development, Department of Defense Software TechNews; Volume 2 Number 1 - Rapid Application Development (RAD) issue; http://www.dacs.dtic.mil/awareness/newsletters/technews2-1/toc.html
  • [ROIPSP] Rico, David F., What is the Return on Investment (ROI) of PSPSM (página web) http://davidfrico.com/roi-psppdf.htm
  • [ROISPI04] Rico, David F. (2004) ROI of Software Process Improvement: Metrics for Project Managers and Software Engineers; J. Ross Publishing; http://davidfrico.com/
  • [ROISTN02] Rico, David F. (2002) How to Estimate ROI for Inspections, PSPsm, TSPsm, SW-CMM®, ISO 9000, and CMMIsm, Department of Defense Software TechNews; Volume 5 Number 4 - Return-On-Investment from Software Process Improvement; http://www.dacs.dtic.mil/awareness/newsletters/stn5-4/
  • [SWQ01] Baltus, B et.al. , Software Quality: State of the Art in Management, Testing, and Tools; Springer
  • [WEB2PY10] Massimo Di Pierro, School of Computing, DePaul University. Web2py Enterprise Web Framework, 3rd Edition. Lulu.com. October 2010. ISBN 978-0557604142; http://www.web2py.com/book
  • [WEB2PY11] Massimo Di Pierro, "web2py for Scientific Applications," Computing in Science and Engineering, vol. 13, no. 2, pp. 64-69, Mar./Apr. 2011, doi:10.1109/MCSE.2010.97