How to choose the right application development technologies

By Sean McGrath, ITworld.com |  Development Add a new comment

Soft on the outside, hard on the inside ...

Most application development tasks these days require the careful stitching
together of a variety of different technology pieces. At a software level, there
has never been a wider range of programming languages, data manipulation languages
and knowledge capture languages to choose from. Adding to that, there has never
been a wider range of application environments in which to embed new systems.

Example of the former range from the obvious candidates such as Java, C#, XSLT,
SQL to the more specialized such as Microsoft DTS and Autodesk Autolisp. Examples
of the latter range from Facebook to Microsoft Sharepoint to Eclipse RCP.

Application design can involve dizzying oscillations as a result of the power
of these technologies. Should you start with a C# application and embed bits
of XSLT as required? Or, alternatively, should you start with XSLT and step
out into C# if/when required?

To develop that cool application with the word process functionality, should
you start with the word processor and use its templates/macros/extension features
when required? The alternative is to create your own master program and to embed
the word processor within it?

How to choose?

There are a number of useful rules of thumb. No absolutes I'm afraid. The first
thing I look for is expressive power.

First, it is a very important in my opinion that the top level of your application
"stack" be as flexible and as general-purpose as possible. Take for
example, the not-uncommon problem of transforming XML from one form to another.
An obvious first port of call for this would be XSLT. Now, XSLT is a language
specifically designed for XML transformations. It is not a general purpose programming
language. (Yes, I know that it is Turing Complete. Yes, I also know that XSLT
implementations tend to provide an extensibility framework so that they can
theoretically "do anything". Bear with me for a moment.)

Faced with an XML processing task, do you start with an XSLT script as the
main application layer or do you make the main application layer a Java/C#/Python
application and invoke the XSLT parts from within it?

I generally favor the latter. Applications that do XML transformation have
a habit of developing requirements in areas such as logging, security, progress
metering, user input of variables, user interactions half way through transformations...that
sort of thing. Even if they are not on the table when you start, some of them
will be by the time you try to finish. Mark my words.

Now, to implement these ex-post-facto features, what makes the most sense?
To do them outside of the XSLT environment or to try to achieve them using the
extensibility hooks that XSLT environments tend to provide? This is where you
run up against the "Well, in theory..." arguments. Yes, in theory,
you could do everything from within. It will probably involve some contortions,
debugging may prove an interesting problem, finding people with necessary knowledge
may prove very interesting indeed...

No thanks. I prefer to start with a general purpose - mainstream and boring
toolset - and invoke domain-specific, specialized languages from within. Nine
times out of ten, I find this to be the pragmatic trade off.

That is what I mean by "soft on the outside and hard on the inside."
I like the main driver application environment to be as soft and squishy as
possible. Maximum flexibility. Less malleable - but powerful tools - like XSLT
and SQL - on the inside.

Of course, care is required. I have seen applications that consist of a 3 line
driver program in Java and 1000 lines of a specialist scripting language invoked
from within it. That is unlikely to be a good example of the pattern I'm suggesting.
Equally, the 10,000 lines of general purpose C++ that could be replaced by 100
lines of SQL represents an equally unbalanced example.

Deciding which way to go is becoming undeniable harder. Back in the days when,
say, SQL-like languages were very limited, developers had little choice but
to embed them in, say, Cobol master applications. These days domain languages
are becoming so powerful that they can serve as master application drivers themselves.

Take all due care before you make the decision. It can be a very expensive
proposition to take an application crafted as an A-within-B design and turn
it into a B-within-A design.

    Add a comment

    Post a comment using one of these accounts
    Or join now
    At least 6 characters

    Note: Comment will appear soon after you have activated your account.
    Obscene/spam comments will be removed and accounts suspended.
    The information you submit is subject to our Privacy Policy and Terms of Service.

    ITworld LIVE

    DevelopmentWhite Papers & Webcasts

    White Paper

    HP NonStop SQL Fundamentals whitepaper

    This whitepaper offers a detailed look into the fundamentals of HP NonStop SQL solutions. See how this system delivers unprecedented levels of application availability with fail-safe data integrity and meets the needs of enterprises with large-scale business critical applications.

    White Paper

    Nebraska Medical Center case study

    See how the Nebraska Medical Center implemented a SQL solution to make information more readily available to streamline operations, improve patient care and facilitate medical research with an enterprise solution running on HP NonStop servers.

    White Paper

    Concepts of NonStop SQL/MX

    For DBAs and developers who are familiar with Oracle solutions and want to learn about NonStop SQL/MX, this whitepaper provides an overview of the similarities and differences between the two products-with a specific focus on implementation.

    White Paper

    6 Things Your CIO Needs to Know About Requirements

    If your organization is not predictably successful on technology projects, there is likely an issue in requirements. CIOs must take action and own requirements maturity improvement. There are 6 main things a CIO must know about requirements.

    Webcast On Demand

    User Experience Monitoring

    In this webinar, you will learn hints & tips for improving end-user response times from Forrester Research analyst, Jean-Pierre Garbani.

    Sponsor: Nimsoft

    See more White Papers | Webcasts

    Ask a question

    Ask a Question