Upload
baldric-fox
View
213
Download
0
Tags:
Embed Size (px)
Citation preview
Ten Years of Rapid DevelopmentTen Years of Rapid Development
Mark Roseman
University of Calgary
TeamWave Software Ltd.
Sonexis Inc.“Independent Developer”
Benefit from the Pain of OthersBenefit from the Pain of Others
• Tcl experience papers• Range of systems• Growing systems• Development practices• “Soft” issues
In a nutshell…In a nutshell…
Tcl/Tk good.
You can convince others of that.
But it really helps if you know what you’re doing!
Even for bigger systems.
Today’s TalkToday’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 SystemsCollaborative Systems
• Groupware• Conferencing• Highly interactive• Networking• Usability• People issues
When did you discover Tcl/Tk?When did you discover Tcl/Tk?
• 1992 @ U Calgary• Prototypes - TK / BYO• … oops, better finish
that damn thesis!• Tcl-DP
Tcl/Tk BenefitsTcl/Tk Benefits
• Learning curve
• Higher level programming — faster
• Rich widget set
• Cross-platform
Typical Prototyping Usage…Typical Prototyping Usage…
• Prototypes, small apps
• Small number of developers, even novices
• Limited time
Problems solvable more quickly and easily by individuals & small groups.
So far so good…So far so good…
• Ad hoc development practices– Coding style– Modularity– Testing
• Some bleeding-edge gotchas
• Some performance issues
Starting to GrowStarting to Grow
• Modest financing– 5-10 developers
• Moving to the web– Users in education, virtual communities– Download a deterrent
Rewrite in Java?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.
Tk LibraryProxy Tk Java Applet
Proxy TkProxy Tk
Tcl Application Code
Tk API
OS Windowing System
User’s Workstation Server
Tcl Application Code
Tk API
AWT
Proxy Tk Library
Get all that?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
Proxy Tk Java Applet
Tcl Application Code
Tk API
AWT
Proxy Tk Library
Web Site ManagementWeb Site Management
• Application Service Provider model
• Manage accounts, rooms, scheduling…
• Originally cgi.tcl
• Later AOLserver
• Centralized Metakit datastore
Growing PainsGrowing 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
Development Practices:Development Practices:Coding StyleCoding Style
• Lots of advantages to using one
• Pick anything
• Tcl Engineering Manual / Style Guide
• Tcl code base as example
Development Practices:Development Practices:ModularityModularity
• Namespaces, objects, …
• Follow commands like ‘file’, ‘string’– Toplevel parsing routine (entry point)– Dispatch to other internal procedures– Naming, variable access, etc.
Development Practices:Development Practices:Automated TestingAutomated Testing
• Tcl excels here• Benefits• Tcltest• Single language• Other automation…
Development Practices:Development Practices:SummarySummary
• Traditional approaches work well in Tcl
• This will slow you down (a bit…)
• Better than the alternative!
Common MisconceptionsCommon Misconceptions
• Tcl is unstructured
• Tcl is hard to hire for
• Tcl is unsupported
Larger Systems IssuesLarger Systems Issues
• Integration
• Configurability
• Reliability
• Performance and Scalability
ConfigurabilityConfigurability
• Adjust for different customers– Feature sets– Extensions– Appearance changes– Branding
ReliabilityReliability
• AOLserver • Two language solution
– Application features in Tcl– Core engine in C
• Multiple process model– Easy in Tcl– Fault tolerant
Performance and ScalabilityPerformance 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 ScalabilityPerformance and Scalability
• AOLserver • Monitoring performance
– Add telemetry– Scalability test harness
• Migration to C
• Multiple processes (vs. threads)
Bottom LineBottom 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.
PitfallsPitfalls
• Interactive web applications
• Web site development
• Tcl best practices?
• Image problem?
Still Great to be a Tcl DeveloperStill Great to be a Tcl Developer
• Core Tcl/Tk• Tcllib• Activestate• Tclhttpd• Metakit• Tclkit/Starkit• Wiki• …
Shameless PlugShameless Plug
• CourseForum– Wiki + discussion for education– Multiple areas, users, versions, tracking…– Ease of use – Easy deployment
• Uses “a little bit”of Tcl
SummarySummary
Tcl/Tk good.
You can convince others of that.
But it really helps if you know what you’re doing!
Even for bigger systems.