Software forges: good practices and first results
By Olivier Léal, Projects Director, Bull France
Olivier Léal has an MSc (a Diplôme d’Etudes Supérieures Spécialisées) in electronics and image processing, and is technical director and director of projects at Bull France.
With its Open Source development factory NovaForge™, Bull is recognized as a pioneer in software forges, and has a wealth of experience gained both by using them internally in its services teams, and as a result of supporting customers in implementing these tools. As a result, Bull is ideally placed to make a preliminary assessment of the ways forges can be configured and used. It is clear from this, that configuring forges requires both method and expertise, and that their cultural impact must never be underestimated.
With the needs of businesses and technologies both changing fast, and with increasingly challenging economic conditions against the background of the ongoing crisis, software development is under pressure. IT Departments must constantly be better, faster, and more cost-effective; and the only way to do this is to industrialize their processes. But this kind of approach depends on having the right tools, which is why we are now seeing a growing interest in software forges, because they provide the means to structure, optimize and systematize development processes.
Although the development environment is focused around the tools needed by individual developers, a software forge is aimed at the entire project team. It offers integrated and centralized tools for shared working and control (forum, wiki, reporting…) to enable effective project management and documentation. Bull was one of the earliest to tackle this emerging need for collaborative tools specifically aimed at software projects and the industrialization of development methods. It developed NovaForge, which it now maintains and uses internally as an Open Source development factory capable of tackling software creation as an integral cycle from initial expression of needs right through to conformance testing.
Capitalizing on its experience gained on a huge number of different projects, Bull benefits from a unique understanding, which it can draw on configuration and implementation of software forges. The benefits of this experience enables the company to constantly enrich the solution and the related professional services it delivers, so that NovaForge can rapidly and reliably deliver the benefits customers expect in terms of project management, individual productivity, the quality of deliverables, the re-use of existing elements, and risk management.
1. Take your time
From the day it was launched, NovaForge was spectacularly successful, mainly because of its openness: it can fit in with any development methodology, and can interface with existing tools (continuous integration, configuration, testing, de-bugging, project management, Electronic Documentation Management…). NovaForge can be installed very quickly, and integrates naturally within the project team’s working environment, with no need to do away with existing methods. But this apparent ease of use is, however, accompanied by one pitfall: development teams can dive head-first into getting the forge up and running, endeavoring to set parameters up-front, in an absolute way, without considering the specific needs of the project it will be used for. Depending on the scope of the operation, its nature or the composition of the team, not all projects have the same needs. Some critical or risky developments have to be monitored very closely indeed. Others, carried out by small specialized teams, work just fine with a basic sub-set of functionalities. The forge is a very flexible tool, eminently customizable for any kind of task, and all the more powerful when it is appropriately configured for the task in hand. Following an initial exploratory phase to investigate the forge’s functionalities and ergonomy, we recommend proceeding methodically, step by step, to optimize the configuration.
2. Set up the forge in stages
Configuring the forge requires a series of steps during the initial phases of the project, in parallel with the definition of the project scope.
- Starting from the criteria set out in the technical specification, the technical components needed to build the project architecture are entered into the central repository, along with a database of business requirements.
- By choosing the tools needed by the developers involved, a standard working environment is set up. Standardizing this environment, and making it available to everyone via the forge will make it easier to bring new team members onto the project.
- The Quality Assurance plan for the project lists the indicators to be used in reporting: tolerance levels when applying development standards, how much additional commentary is required, unit test code coverage rates, anomaly rate thresholds, acceptable timescales for corrections…
- The functional and architecture specifications are built to meet the specific requirements of the project.
- At this point, everything ready so that the specifications repository can be populated; so testing tools can be deployed, and the content of testing specifications is available and ready to be integrated.
- All items can now be combined to construct the ‘build’ and code analysis script. The continuous integration tools are now ready for development work to start. Finally, the databases containing technical data for future phases of Aptitude Verification (AV), Verification of Regular Service (VRS) and of guarantee are initialized.
3. Support for project management
Once the environment has been prepared in this way, development work can begin. The forge immediately delivers practical and direct advantages in two areas: project control and communication within the team.
- The logging of metrics during the continuous integration phase enables the forge to automatically generate a report on the project’s main quality assurance indicators. A dedicated tool measures how well both technical and functional requirements are being met by the code and the tests being carried out. Control is automated and centralized, and requirements can be traced right down to a single line of code. Day-by-day reporting facilitates transparent project management, and provides early warning of any potential problems.
- In parallel, the forge has a significant impact on how team members communicate with one another. Documents are only exchanged via the forge. A special configuration management area is allocated right from the start of the project. Bull recommends that all technical or functional questions are posed via forums, since this is the best way of maintaining the project knowledge capital. Because the whole aim is to share information, it is vitally important to discourage one-to-one communication. Similarly, distribution lists should be used for communicating with the different project teams and sub-teams, best practice should be captured in the project wiki, and even, if it can be applied universally, in the wiki of the repository that is common to all the projects associated with the forge.
4. Looking ahead
Within the enterprise, software forges can be much more than just a development tool, reconfigured for each project in turn. Their ability to capitalize on, share and analyze information offers huge scope for identifying and communicating good development and project management practices, as well as for good governance of an entire project portfolio. Because they provide a broad historical and consolidated view of past projects, they enable the organization to evaluate risks, establish priorities, and assign resources accordingly. The forge therefore enables a direct link from corporate strategy right down to individual lines of code to be established, and this optimizes development work as a whole. Forges and meta-repositories today offer one of the most promising avenues for development.
Bull has clearly seen the tangible benefits brought about by implementing good practices such as those described above, both in-house and in its customers’ projects, as well as the advantages of using a software factory, particularly in terms of the availability, sharing and accuracy of information. But because it directly affects working habits and methods, there are other consequences of implementing a software forge. Some initial observations are set out below.
- Managing transparency
Thanks to the forge, the key project indicators (traceability, coverage rates, code quality...) are monitored and reported virtually in real time. Project managers appreciate this automation because it gives them perfect visibility of progress on the project and frees them up to devote time to more operational tasks. Teams and managers alike, however, must be prepared for such transparency – just as you can immediately see which aspects of the project are advancing well, it will no longer be possible to mask shortcomings or certain other arrangements, such as transferring resources discreetly between tasks where staffing has been under- or over-estimated. From now on these management actions, which are of course still essential, will have to be made explicit and acted upon.
- A decisive step towards capitalizing on knowledge
IT Managers have long dreamed of being able to re-use blocks of code developed as part of earlier projects, and simply assemble existing modules for new projects. Now thanks to forges, that dream is more accessible than ever. Because more often, the main problem with capitalizing on former developments is a lack of documentation and the contextual information that would enable team members to rapidly locate the right elements and understand why particular choices were made. By making it possible to centralize, structure and conserve project information – both technical and functional – the forge can provide a decisive solution. Of course, it is still important to brief everyone involved about knowledge management practices, both up-front, to ensure information is preserved and later on, to ensure it can be re-utilized.
- Virtual Shore: a reality
The forge constitutes a virtual workspace that is standardized and centralized. Wherever you are located geographically, it provides an easy way of getting involved in a project – providing a single point of access to the various tools being used – and a way of communicating with the others involved. This ease of use and deployment means the team can be built with an unprecedented degree of freedom. This new possibility of mixing and combining people with different origins, areas of expertise and skill levels to optimize the collective output, is what Bull calls the ‘Virtual Shore’ approach. However, while it can facilitate both communication and commitment to a project, tools are not the answer to everything. On the contrary, good management is all the more crucial in a virtualized situation, and project managers must be even more effective when it comes to organizing and mobilizing the project community.
- Developing a community spirit
It has become clear that using a software forge fosters a real community spirit within user teams and enterprises. Organizations quite naturally find they want to move closer to the NovaForge community to mutually enrich their development projects and their experience. Relationships between Bull teams and customers involved with this tool are characterized by a profound desire to exchange ideas and to make progress. And users themselves at every level, from project leaders to developers, rapidly adopt the community way of thinking, inventing in their turn new good practices when it comes to using software forges.
Conclusion: more than just a tool – a whole new culture
Born out of a need to industrialize the software development process, and drawing on the possibilities offered by networks, software forges have proved their relevance by rapidly bringing substantial benefits in each of the key success criteria for IT projects: cost, quality and timescales. However, our initial experiences of this new culture show that the impact of software forges goes well beyond these first considerations. Much more than just a tool, the forge brings with it a new culture. A culture of transparency, of capitalizing on knowledge, a culture of the collective. Above and beyond its configuration, this tool will only reach its full potential if this cultural dimension is sufficiently taken into account, and if the change is supported. Bull continues to draw on its expertise and experience to help its customers understand and deal with these challenges.