Must Custom Software Be Created From Scratch?

April 15th, 2009

One common misconception that we often encounter is that all custom software development needs to start from nothing. Not only is this untrue, but a complete, stand alone development project might actually be counter-productive. Here’s an example:

Client requires custom software to track unique, specialized product build process and desires to integrate it with their accounting system. Because the legacy accounting software provides only rudimentary software integration features, client is requesting that the software development project include the build process as well as some (or all) of the accounting features. Assuming that valid pay-back opportunities exist, one approach might be:

Review and finalize the software design and software requirements.

Create a software development plan.

Replace the accounting software with a COTS (commercial off the shelf) package that provides one of the following:

SDK (software development kit). An SDK is a set of developer tools that provide software developers a controlled environment through which they can interact directly with the parent software (in this case, the accounting system). These tools typically include accessibility objects such as APIs (Application Programming Interface), debugging tools, and other utilities designed to assist the developer in the creation on companion software products. A significant advantage of development using an SDK is that the SDK ‘protects’ the parent software from developer induced problems by only allowing non-injurious (code doesn’t produce errors or database irregularities) software development. Another advantage is that subsequent updates to the accounting software product don’t require a conformity review of the custom software.

Import / Export utilities capable of running unattended on a scheduled basis. This choice is typically inferior to the SDK environment but, if not other practical option exists, sometimes must be considered. The major drawbacks are the lack of real time interaction between the software components, the ‘snap shot’ nature of scheduled data exchange, susceptibility to development errors and software failures encountered during product updates.

Run parallel tests and convert to the new accounting software.

Create a test environment using the baseline accounting software. Do not develop against a live, operational business software system.

Develop the product build software utilizing the SDK or, if utilizing the import / export method, develop the software and necessary data exchange software objects.

Test the product build software interaction with the accounting software in the test environment.

Install finalized product build software in the production environment.

5 Things to Consider Before Custom Software Development

April 6th, 2009

1) Document your software requirements. The easiest way to fail on a custom software development project is to skip the requirements gathering process. If you want to build it right you need a concise blueprint of the features and functions to be included in the application. A quality software design will include documentation of each user interaction with the software (use cases), detailed information about all outputs from the software, and documentation on any interfaces that need to be addressed by the software.

2) Decide how the custom software will be used. Is the application intended for a broad audience that would be best served by an internet application or is it an internal application to be used by members connected to your local area network? If you have determined that you need an internal application you will still need to decide if you want a smart-client desktop application or a web based Intranet application. Desktop software tends to perform faster while browser based software is generally slower but does not require client software updates.

3) Determine if your software already exists. Do some research. Commercial Off The Shelf Software (COTS) has the advantage of being mass distributed and its cost is spread over many installations, so it is always a less expensive option than custom software development. If your requirements involve financial or accounting applications and you can’t find a COTS solution that addresses your needs then you should consider a base product that has an SDK (software development kit) like QuickBooks. Software development on this type of platform is very reliable and requires far less effort than a full custom software solution.

4) If you do need to build custom software, choose a database. There was a time when one might question the need for a database but that time has long passed. Quality free database offerings such as MSSQL Express, MySQL, and Oracle 10g Express, combined with the performance advantages of stored procedures, triggers, and referential integrity, make the database inclusion a must for any quality custom software application. You do, however, need to be careful when selecting the database, particularly if you are using one of the express databases as they do have limitations on number of databases, database size, and upward mobility.

5) Pick a platform / language. There are many schools of thought regarding the choice of Windows vs. Open Source (typically Linux) operating systems and their supported development languages. Some languages such as Java will run in both environments while others, such as .NET operate only on Windows platforms. In general, either choice can provide a reliable software environment providing careful attention is given to the capabilities of the language and its suitability for your chosen deployment environment.

Technorati Profile

viagra