Ten Years of Rapid Development - PPT

Download Report

Transcript Ten Years of Rapid Development - PPT

Tcl/Tk 2002
Ten Years of Rapid Development
Mark Roseman
University of Calgary
TeamWave Software Ltd.
Sonexis Inc.
“Independent Developer”
Welcome to AOL Digital City…
Yeah ok, maybe not.
Them
Us
(not to scale)
Benefit from the Pain of Others
•
•
•
•
•
Tcl experience papers
Range of systems
Growing systems
Development practices
“Soft” issues
In a nutshell…
Tcl/Tk good.
Even for bigger systems.
You can convince others of that.
But it really helps if you
know what you’re doing!
Today’s Talk
• Development phases
– Prototyping (GroupKit)
– Desktop apps (TeamRooms/TeamWave Workplace)
– Web apps (various)
• Growing pains / solutions
• Tcl in the Hot Seat
– Integration, Configurability, Reliability, Scale
– Strengths, Misconceptions, Roadblocks
Collaborative Systems
•
•
•
•
•
•
Groupware
Conferencing
Highly interactive
Networking
Usability
People issues
When did you discover Tcl/Tk?
• 1992 @ U Calgary
• Prototypes - TK / BYO
• … oops, better finish
that damn thesis!
• Tcl-DP
GroupKit
• Prototyping shared
applications
• Internal/external use
• Lots of
experimentation
Tcl/Tk Benefits
•
•
•
•
Learning curve
Higher level programming — faster
Rich widget set
Cross-platform
Typical Prototyping Usage…
• Prototypes, small apps
• Small number of developers, even novices
• Limited time
Problems solvable more quickly and
easily by individuals & small groups.
TeamRooms
•
•
•
•
•
“Real” app
Rooms
Tools
Client-server
Cross-platform
TeamWave Workplace
•
•
•
•
Spin-off company
2-3 developers
Rapid changes
< 50k loc
So far so good…
• Ad hoc development practices
– Coding style
– Modularity
– Testing
• Some bleeding-edge gotchas
• Some performance issues
Onwards…!
Starting to Grow
• Modest financing
– 5-10 developers
• Moving to the web
– Users in education, virtual communities
– Download a deterrent
Rewrite in Java?
•
•
•
•
Keep code base (time to market)
Client-side Java risky
Still a small team, tight schedules
Rapid change
– Virtual community
– Music sharing
– E-Learning
– Web presentations
– Online meetings
– Etc.
Proxy Tk
User’s Workstation
Server
Tcl Application Code
Tcl Application Code
Tk API
Tk API
ProxyTk
TkLibrary
Java Applet
Proxy Tk Library
OS Windowing
AWT System
Get all that?
•
•
•
•
•
Application code moves to server
Still uses Tk API
Tk implementation replaced by Proxy Tk
Messages sent to Java applet on client
Events sent from Java back to server
Tcl Application Code
Tk API
Proxy Tk Java Applet
AWT
Proxy Tk Library
Web Site Management
•
•
•
•
•
Application Service Provider model
Manage accounts, rooms, scheduling…
Originally cgi.tcl
Later AOLserver
Centralized Metakit datastore
Growing Pains
• Growing code base
– 90k loc Tcl, 35k loc C, 10k loc Java
• Ramping up new developers
–
–
–
–
Tcl learning curve still okay
Finding integration points
Coding styles
Breakage
• Not exactly a shock
Software Engineering… with Tcl?
Development Practices:
Coding Style
•
•
•
•
Lots of advantages to using one
Pick anything
Tcl Engineering Manual / Style Guide
Tcl code base as example
Development Practices:
Modularity
• Namespaces, objects, …
• Follow commands like ‘file’, ‘string’
– Toplevel parsing routine (entry point)
– Dispatch to other internal procedures
– Naming, variable access, etc.
Development Practices:
Automated Testing
•
•
•
•
•
Tcl excels here
Benefits
Tcltest
Single language
Other automation…
Development Practices:
Summary
• Traditional approaches work well in Tcl
• This will slow you down (a bit…)
• Better than the alternative!
Tcl in the Hot Seat!
Obvious Strengths
• Higher level programming
• Cross platform
• Easy licensing
Common Misconceptions
• Tcl is unstructured
• Tcl is hard to hire for
• Tcl is unsupported
Larger Systems Issues
•
•
•
•
Integration
Configurability
Reliability
Performance and Scalability
Integration
•
•
•
•
“Glue”
Extensions
COM
Web services
Configurability
• Adjust for different customers
–
–
–
–
Feature sets
Extensions
Appearance changes
Branding
Reliability
• AOLserver 
• Two language solution
– Application features in Tcl
– Core engine in C
• Multiple process model
– Easy in Tcl
– Fault tolerant
Performance and Scalability
USER
USER
USER
USER
USER
USER
USER
USER
USER
USER
USER
USER
USER
USER
USER
USER
USER
USER
USER
USER
USER
USER
USER
USER
Performance and Scalability
• AOLserver     
• Monitoring performance

– Add telemetry
– Scalability test harness
• Migration to C
• Multiple processes (vs. threads)
Scalability Results
• Approximately 1000 users
• 2500 Tcl interpreters!
Many legal bills later…
Bottom Line
• Tcl worked for us
• From prototypes to robust/scalable
commercial apps
With Tcl, could take this work much
further on fewer resources than if using
conventional development tools.
Pitfalls
•
•
•
•
Interactive web applications
Web site development
Tcl best practices?
Image problem?
Still Great to be a Tcl Developer
•
•
•
•
•
•
•
•
Core Tcl/Tk
Tcllib
Activestate
Tclhttpd
Metakit
Tclkit/Starkit
Wiki
…
Shameless Plug
• CourseForum
–
–
–
–
Wiki + discussion for education
Multiple areas, users, versions, tracking…
Ease of use
Easy deployment
• Uses “a little bit”
of Tcl
Grab a Beta Version @
www.courseforum.com
Summary
Tcl/Tk good.
Even for bigger systems.
You can convince others of that.
But it really helps if you
know what you’re doing!
Questions?
Comments?
Entertaining War Stories?
www.markroseman.com