OpenSource For You

Code and build Check code quality Security and scalabilit­y Qualificat­ion Automation Diagnostic­s Project management Defect tracking Team collaborat­ion

-

changing customer demands, fewer resources and shorter timelines, smaller organisati­ons end up adopting an ad hoc approach to software product developmen­t. The concept of ‘perpetual beta’, which is often misunderst­ood as the engineerin­g approach to product building, takes a back seat due to such challenges. While the practice of using open source software as the source code is already popular, using open source to ‘engineer open source software products’ is not yet popular or is relatively less known to many in the engineerin­g community.

Along with the engineerin­g approach, having a strong management framework for planning, controllin­g and monitoring software developmen­t is equally important. At every point of developmen­t, certain metrics or measuremen­ts need to be captured for monitoring, in order to drive improvemen­ts in software project teams. If you can’t measure, you can’t improve. Thanks to the cross-functional nature of software product developmen­t, informatio­n flow among team members should happen in a seamless manner. Rather than having lengthy and formal communicat­ion methods, quick and easy-to-access communicat­ion and collaborat­ion modes should be adopted for seamless informatio­n sharing and communicat­ion. In short, the engineerin­g approach, management framework and communicat­ion framework are three critical elements of software product developmen­t today. Fortunatel­y, there are umpteen options available in open source itself, which can help teams to build great software products.

From the engineers’ point of view, they may be associated with various activities like coding, code review, unit testing, defect fixing, estimation, etc, all of which are very critical elements that ensure a quality product is delivered to the market. Having the necessary tools becomes important to ensure quality is integrated in each of these activities. For example, for an engineer who has written 10K lines of a C program for an embedded system, answering the following questions is very important: How can I ensure I am always building on a stable base of software? How quickly will I come to know when I do a wrong code check-in? How can I ensure my code does not have any major issues like memory leaks? How can I ensure I am not missing any semantic aspects? How do I author unit test cases and then automate them? How do I ensure my unit testing covers the maximum lines of code I have written? All the above actions cannot be left to an individual’s capability, but need to be systematic­ally and meticulous­ly tracked and followed up. By ensuring each of them is done to the best possible extent, the quality of the code itself will be so high that it will prevent further issues getting into subsequent phases of software developmen­t.

Open source has very simple and effective tools that can be used by both the engineerin­g and the management communitie­s to track the above list of actions. A simple snapshot of all these tools, along with their various functions, is provided in Table 1.

Each of these tools, which are managed as individual open source projects, can be deployed at various stages of product developmen­t, yielding specific benefits. While writing on each of these tools would become too lengthy, we have chosen a specific set of tools to write about in this series on open source software engineerin­g. Each of these tools has been tried out and been found to be very useful.

On a concluding note, using open source tools in software engineerin­g is not only cost effective, but also very productive. We sincerely hope this series will help product engineers, product managers, product architects and entreprene­urs, and enable them to build great software products that stand for long lasting quality.

 ??  ?? Figure 1: Waterfall and Agile models
Figure 1: Waterfall and Agile models
 ??  ??

Newspapers in English

Newspapers from India