Modern day software development is complex not because we have to write more complex logic but more so because of the size of software's and the number of people involved and the increasing amount of integration that is desired between different systems. Also the end users expectations has gone above the roof as more and more people are getting comfortable with the notion of using software's and computers. Smart phones and mobiles has only made it more mandatory, the need of writing great software.
In such large scale complex software development, good tools are mandatory. In spite of all the right
ideas and technologies, lack of good development and management tools is a sure shot recipe to disaster. In this post, we will focus on tools that help in implementation phase and will not touch on the tools of Product features management. I will assume that you are armed with Software requirements, use cases and mock screen shots to start with and ready to write the first line of code. I am making the situation over simplified as no project ever happens with such clean requirements to start with. ;) , but this will keep us focused on the development management tools.
ideas and technologies, lack of good development and management tools is a sure shot recipe to disaster. In this post, we will focus on tools that help in implementation phase and will not touch on the tools of Product features management. I will assume that you are armed with Software requirements, use cases and mock screen shots to start with and ready to write the first line of code. I am making the situation over simplified as no project ever happens with such clean requirements to start with. ;) , but this will keep us focused on the development management tools.
Source code Control System
If this word looks alien to you, believe me you are in trouble even if you are a single person development team. If one minimum tool you need in your development environment, it is Source code control system. In a team of more than one, it's suicide to do development without Source code control, What source code control systems do? At a high level, it helps in following:
- Maintaining the source code in a repository which every developer can access.
- Maintains a history of all the changes done with comments.
- Provides capability to branch and tag builds which helps in maintaining release builds and research branches.
If possible, use some repository provider who can also make a backup of your source code so that in case of disaster, you can recover out of it. There are many choices available both open source and proprietary. Pick one as per your needs but pick one.
Task and Bug Management System
The other almost must to have tool is task and bug management system. Also it's ideal if your Source code control system and this system is integrated. Many offerings in market provide this integration. This is a neat way to track which changes were done for which task or bug. The advantages that task and bug management system provides is:
- History of a task or bug in terms of who raised it and why it was raised. Also what changes were done to fix it.
- Provides a history to new comer and even old timers about why something was done.
Make it a rule that no changes go into source code control system without an associated id from task and bug management system. These systems are also the heart of agile development as tasks/bugs can be grouped as part of a sprint.
Continuous Integration System
I have done my coding and I have done my unit testing and let me check in the code. However present day software structures are not simple as your code might be used by many other parts of the system however it's not feasible to test all integration at a developer level. It's also not the right bang for bucks. So here comes continuous integration system
- They continuously build the system as the code is checked in. Very large scale system might go for nightly builds and smaller systems can build on every check in. This way any problem is uncovered immediately.
- Most of these systems provide ability to send emails to the developers who has checked in the code for the last increment build.
Test case automation
A good regression suite is more than anything else provides a guarantee to good sleep in night. It's very important for development teams to spend bandwidth on automated test case suites. and let them run on regular basis. Usually a good idea is to integrate test case automation ecosystem with Continuous integration system. The moment build is created let it get deployed on the automation environment and and let the regression suite run over it. Advantages:
- You will have a good sleep. Jokes apart it's the best way to keep your code in sane state.
Integrated Development Environment
Integrated Development Environment or IDE is not really a software management tool but it's the centre point of all action. It's important to have a good IDE especially have an IDE which has good integration with your source code control system. I would not get deeper into IDE but just want to emphasize that adopt an IDE, no matter which environment you are working in. Without IDE is like doing a heart operation without a cardiogram.
No comments:
Post a Comment