Monday, August 1, 2011

ArgoUML: Revisiting CASE Tools

If there's only one martial art I would recommend, it would be Aikido and The Secret Teachings of Aikido as guide because it's the only one designed as antithesis of war, using your opponent's strength as their weakness to subdue their aggression, and promotes peace and reconciliation.

Ironically, Computer Aided Software Engineering (CASE) tools are powerful software development aids whose strength proved to be its very downfall, thus they seem to be a rarity nowadays; the 1990s may have been the peak of its popularity, but it doesn't mean the idea behind it is already obsolete. Conceptualizing, designing and software development would be better coordinated using CASE tools and ArgoUML turns out to be a free, functional and practical system (not to mention the great documentation it has) that can aid in software development, be it for small to medium-scale development on tight budget (IBM Rational if you have cash to burn, I'm not paid to recommend this mind you).

Frankly, I was hunting for a free alternative to what used to be a free Rapid Application Development (RAD) tool to generate Zend Framework-based PHP applications, but then realised that having a CASE tool built around a specific framework, language or methodology, in this scenario tied to PHP and Zend Framework, would render that CASE tool limited and may go obsolete very fast (as of this writing Symfony 2 just got out).

What Makes a CASE Tool a CASE Tool
CASE tools though disparate when used in orchestration have to have most if not all of below to be considered:
  • Planning, modelling, analysis and design - Tools for this task, speaking like legalese, include but not limited to ER diagram, data flow diagram, decision trees, unified modelling language
  • Software project management - In conjunction with planning, task schedule and progress monitoring are features especially for time to market critical application development. 
  • Integrated user interface design and programming environment - considered to be the core functionality around which all the other tools are working in coordination with. User interface design and development was a revolution we can attribute to NeXT (now Apple) and their Interface Builder.
  • Platform-, language- and framework-specific - There was once C++ and Microsoft Foundation Class (MFC) for Windows or Borland Object Window Library (OWL) with C++ for Windows and OS/2 platform development, these tightly integrated language and framework bundle were supposed to aid in fast, defect-free software development.
  • Rapid application development - More of an ideal rather than a feature, this is the supposed end result of using the previously mentioned tools in orchestration to produce a software product. This includes code generation for faster application code structure design and software development.

Why CASE Tools Went South
First off, the platform- and language-specific strength of CASE tools proved to also be their weakness. Platforms come and go, referring to my post on dead tech OS/2 and BeOS are such examples. Microsoft Windows was a formidable platform to contend with in the 90s but with the reboot of the Macintosh platform, the proliferation of free and open source platforms like GNU/Linux and BSD, the rise of the internet in general and the web in particular as a platform (i.e. cloud computing) and recent trend towards mobile/handheld computers, complicated the development process using only one fixed set of programming language and framework.

Second, for programming languages, Visual Basic would be so 1990s (obsolete) because, in Microsoft's agenda as of this writing, .NET and C# are the showcase. Apple's Objective-C and OpenStep/Cocoa is a tandem that replaced C/C++ or Pascal and CodeWarrior or Macintosh Programmer's Workshop as preferred Macintosh software development tools. In web development, WebObjects, Java Server Pages and Active Server Pages were popular web application platforms, now PHP5 adds to the mix and is very popular along with its wide range of frameworks like Zend Framework, Symfony and Yii, further complicating the selection process for those that plan to roll out web apps.

Third and most importantly, software development trend and methodology change. Some CASE tools have been especially designed around specific methodologies like waterfall development, incremental development, spiral development or rapid application development; with this focus and specialization on specific methodology as strength was also its weakness and tragically had no room to grow and work on new methodologies like agile software development, feature driven development or test driven development.

Why ArgoUML and CASE Now?
ArgoUML being a Java application, I may have to express a disclaimer on its performance on your computer, but as I have already expressed initially, ArgoUML being not tied to a particular framework or programming language, while enabling planning and code generation for supported albeit limited number of programming languages, provided the flexibility and good enough starting point for further software engineering and development.

Free of specific framework or methodology, we can use ArgoUML primarily for it's planning and design capability, where in my opinion, more time should be spent when initiating or maintaining a project or system, to produce and consistently maintain a high quality work. The only downside I see is the rewrite of the auto-generated skeleton code, but this can be alleviated with the included documentation tools for the individual or group of objects within that project.

Summarily, CASE in general and CASE tools in particular as an idea were wrongfully implemented. If they were implemented free from bondage of language, platform, framework and methodology, fast development and deployment of defect-free, high performance software systems would have already been realized long ago.

No comments:

Post a Comment