Originally Posted on November 27, 2010 by Tariq
My purpose of this article is not to present very technical information to my reader. For this article I am considering my reader is aware of what computer software can do? He/she may be planning for a customize development in near future or just interested to know about customize software development.
Before starting any customized development we should consider following points.
Point # 1: Problem to solve
If you consider all software around you, they solve some sort of problem in your daily life. So very first question that should come in our mind before starting any customized development
- What problem we are planning to solve with this?
- How this software will make your life easy or better?
Point # 2: Requirements analysis
- Initial requirement analysis is not software vendor’s responsibility. Firstly we should do requirement analysis at our end. This gives us a clear picture what features we are looking for and how big or small this development can be.
- Requirements analysis can be a very descriptive task for big corporate with in-house IT department. In the minimum, we should know what output we required and what input we can provide.
- At the time of defining our output we should not be over ambitious with information. We should keep an eye on the actual problem we are trying to solve or if needed we should revise our problem.
- Our existing software/manual records are good to start for requirement analysis.
Point # 3: Existing software study
This is the one of most important factor in customized software development that usually companies and developers missed in designing. In the later stage of software development life cycle its integration takes lots of time and resources, and ultimately increase budget of the software that lead to dissatisfaction on both sides. During analysis of existing software we should consider these points
- Existing data to import – Our existing software may have records for many years. We may need to merge this data for analysis purpose or some time just for record purposes(Legal requirements)
- Limitations of the existing software (to overcome in new version)
- Important features of the existing software (that should exist in new development)
- Sometime it may require to develop a new software in stages. We may need to develop new modules such that they can be integrated with existing software.
- Do we have code for existing software?
- Do we have documentation of the existing software?
- Do we have any contact with the developer of the existing software?
Point # 4: Environment
I understand decision for the environment of customized software is a tuff decision for non technical persons. I feel following information will clear the picture somewhat.
Normally software environments fall in following broad categories
- Browser based
- Desktop based
- Handheld devices
It may possible that our software require all the three environments.
Following are some basic points that can help us to understand our requirement better
- who will use this solution
- My staff
- My organization (staff, customers and suppliers)
- General public
- Where they will use
- Local system
- Web based
- Handheld Devices
- Level of control on user system. Means can we control operating system, browser and install additional software if needed
- Types of social networking applications, it should integrate like twitter, facebook etc.
Point # 5 : Technology
Deciding which technology we should use for our software is really not an easy decision. Here is some information that your vendor would like to know before presenting options for technologies to use.
- Your existing software’s technology
- Your existing database
- Existing IT staff skill level
- Liking for any specific open source technology
Point # 6: ROI
Once we had finalized our requirement, environment and technology, its time to think how this will return the cost of ownership. To better understand ROI of the software we should consider
- How it will save time to complete any operation?
- How it will reduce man hours?
- What Information this software can provide instantly that was not possible before or not feasible due to time or resource constrain?
- We should consider all such benefits that we can achieve with this.
- These all finally comes to a cost saving and will also allow us to analyse how much budget we can allocate for this development. Once we have this information we can go for development.
Point # 7: Dedicated Account Manager
- Before starting any customized development project we should appoint a dedicated person for this task. He/she should be responsible for each and every decision that needed during development. It’s very natural that this person may not take all decision and he/she may have to consult many departments. In any case vendor should get reply from one person. This will reduce inter communication delay.
- Same way we should ask our vendor for dedicated account manager. He/She will be involved during the complete phase of software development from requirements finalization to implementation. (if we are planning for external software vendor)
Point # 8: Options for Development
Once we had finalized the budget we can allocate for this development. It’s time to decide how we want to develop this software. We mainly have two options
- We can hire a software team (in-house)
- We can outsource our work to any customize software development company
- Both features have their pros and cons. Points which we had discussed above will be applicable in both cases
I can say its not comprehensive list of requirement but as per my experience I tried to summarize those problems we usually face in our projects. I welcome suggestions and comments to all readers so that we can make a better list.
Thanks for reading.