Custom software solutions developed by experienced software professionals. Application software development for your business. Custom database development.

Custom Software Primer

Custom Software for Your Business

Does Your Business Really Need Custom Software?

 

As a software development company, we receive custom software requests on a daily basis. In some cases these requests are well presented and clearly indicate the need for a unique, non-existent software product. In many cases, however, the requester is seeking a custom software solution to perform functions that could be addressed by existing software already in their possession readily available for licensing or purchase. In these cases custom software is clearly a waste of time and money. The following process can help you define your software requirements and help you determine if custom software development is suitable for your project:

What are your software objectives: This should be a high level definition of what you want the software to do for you. These objectives should be broad in nature and not attempt to address how the task will be accomplished, but rather to categorize what needs to be accomplished. Examples of software objectives could include: records retention for electronic storage and archival of office records or software to control routing on automated warehouse conveyor system. Once the major objective has been defined, sub-tasks should be added to the definition. For example, records retention system must support multiple inputs such as scanning of documents, electronically saved documents, fax images routed from fax server, etc. An example for the conveyor system would be that the software must be capable of transmitting and receiving programmable controller messages, software must operate in 'real time' mode while the conveyor is in motion, etc. Once the list of requirements has been completed, priorities should be assigned (must have, should have, could have, wish list) and the list should be reordered by priority.

Define the user audience: Who will be using the software? Users could be humans who would directly interact with the software, computers that would interact through automated or server processes, or both. Once the users are identified the definitions should be expanded to describe how the users will interact with the software. A human user might connect to the software locally on your interior network, remotely via the Internet, or both. Computer processes could be local or remote and could represent a standalone process (such as a monitor / email notification service) or a process that interacts with other computers or users. You will also need to identify the various levels of users: system administrator, management, supervisor, staff, etc.

What are the security requirements: Security is a significant issue when planning custom software development and an entire article could easily be devoted to the subject. As such, and in the interest of brevity, we will only touch on some of the key issues here. First, will the software require user level security (manager, staff, etc.)? Is user level security adequate or will your software require security restrictions at the individual user level? If you intend to allow web-based users, will there be a public group (anyone) and an administrative (internal to your organization) group? Will SSL secure transmissions be required? Are there other security requirements that might limit your options on how the software is used or where the software is hosted? Accurate security requirements are an essential element of any software design.

Gather sample reports: The reports may represent copies of existing reports or renditions provided by the software users as wish list items. These reports can be used as the basis for a preliminary database requirements list and should be ordered in must have, should have, etc. fashion. The information can be used to formulate a data dictionary that will be useful in evaluating packaged software or, if custom software is required, will provide a foundation for the database development effort.

Inventory your environment: Determine which operating systems (if any) are currently in use at your organization. If possible, try to get the actual version numbers such as Windows Server 2003, HP/UX Unix 11.0, Red Hat Linux ES4, etc. Do you have access to other OS licenses not currently in use? What databases are installed / available? Is there a web server available? What software packages are currently installed and is source code available?

Now that you have some basic functional requirements, you should be able to determine if you really need custom software development. The initial step is to compare your requirements to the capabilities of the software that you already have in your possession. In some cases you will find that you already have the tools necessary to accomplish your goals. If not, you should conduct an Internet search for a software product using key words from your software objectives definition (such as document retrieval software). If you find something that looks like it could fit your needs you can then check the software capabilities against your user, security, reporting, and OS requirements. You may also be able to download an evaluation copy of the software or arrange for a demonstration by the vendor. If you don't find what you are looking for then it's time to contact a professional custom software developer. After all, you now have the information that they will require when helping you development your unique software product.