Last week, I was talking about this month's blog post with my coworker and friend Gustavo and he asked: "Can I write one post to your blog?". Of course, was the one possible answer I could say. So, I have a pleasure to annouce, this month's blog post was writted by Gustavo Reis. He is fascinated with software engineering, agile and DevOps. I have no doubt that he has a lot to contribute with us! Enjoy the post and leave comments to him!
The term cognitive computing has been around for some time. It covers the use of different techniques such as artificial intelligence, machine learning and natural language processing. At IBM, Watson is already a reality and its APIs and products are being used to leverage all kind of business. It is very common, for example, to come across a virtual agent when interacting with a company's online channel. However, is not usual to find applications that use cognitive computing to directly support software delivery. Or it wasn't.
Still a beta service but already part of Bluemix DevOps Toolchain we have IBM Cloud DevOps Insights, one of the first tools using cognitive analysis to enable companies measure and track development team progress on DevOps practices. The tool is listed in the Learn phase of Bluemix Garage Method as an important resource to understanding your DevOps implementation and improve your team's competitiveness.
Today DevOps Insights has four main features that allow you to understand how your team works, reinforce good habits and identify process improvements that can impact delivery quality.
- Developer Insights indicates which files are most likely to have errors based on commit history of your project. For this, it analyzes historical trends, developer experience, frequency of changes, weight of change and other factors.
- Team Dynamics provides insight into developers interaction, showing who changed a fellow developer's code and so on. It can be used for example at the end of a sprint, allowing your team to review what has been changed and why, encouraging information sharing and positive feedback. In addition, it is possible to use a longer time frame to determine if a resource is critical and understand how its absence can threaten project quality.
- Deployment Risk analyzes the results of unit tests, functional tests, application scans, and code coverage tools on specified parts of your deployment process. With this it's possible to have a quick and easy view of risks, avoiding for example that a deploy whose tests did not complete cover core features goes to production.
- Delivery Insights is a bit different from the previous three because it is a dedicated IBM UrbanCode Deploy feature. Working in an integrated way, it is possible to measure detailed statistics and metrics of one or more servers, tracking deployment data, success and failure.
All these insights lead the team to a better behavior, more aligned to DevOps practices, which in turn favors efficient delivery of software. As stated earlier, this is a first addition of cognitive features to the software development lifecycle, but it certainly will not be the last. Other applications are possible such as using Natural Language Processing as in Watson Conversation and Watson NLC to extract and generate data from textual requirements (maybe create test cases from requirements identified in a vision document). We're just scratching the surface and the future looks promising!