|
Large Scale Software Development can be a complex effort involving hundreds of technology professionals working together with the precision, coordination and expertise similar, in many ways, to a talented symphony orchestra. The spread of technology demonstrates the success of global software efforts. Mistakes can lead to major outages that can adversely impact hundreds of thousands of users. Testing, Quality Management and CM best practices are essential in any successful software development effort. Read on if you’d like to discuss some of the important ways in which CM, Software Testing and Quality Management partner to create successful software development efforts. What is QA Anyway? The terms “Software Testing” and “QA” are often confused and used incorrectly. This author has held a number of positions as a testing manager, usually with the added responsibility of developing automated testing (regression) tools. Quality Assurance is not software testing. The QA plays an essential role confirming that the application conforms to established standards. Quality Management is usually a broader responsibility that encompasses QA, Testing and Source Code Management. Often the QM person is heavily involved with large scale Software Process Improvement throughout the entire Software Development LifeCycle, including establishing Best Practices and Standards. Reading through many texts on the subject (e.g. Watts Humphrey) and you will see that SQA is largely an audit and control function. Some of these terms may be confusing and it is worth spending the time to read the literature and learn more about each of these important functions. There is also much debate on these roles and the terminology and frankly I am looking forward to the emails that I will receive from my colleagues offering input on how their organizations structure the Software Testing, QA and Quality Management functions. Software Testing however is not QA and it is not Quality Management either. There are also many different areas of testing (e.g. regression, unit and integration just to name a few). In all of these efforts good CM practices are essential to ensuring the success of the Software Testing effort and overall software Quality Management. CM practitioners who learn more about these practices are positioned well to contribute to the organization in many important ways. Back in the Band… Well if you must know I used to play the baritone horn in the school band (both marching and concert). After a few eye operations I switched to flute to avoid the strain of blowing a large horn. Back then I was blind and I truly loved playing the music as part of a large team. It was rather exciting because I couldn’t even see the conductor, let alone some little wand that she used to wave around. My hearing and love for the music helped me play with the band and I truly enjoyed this experience. Large software development efforts require a huge amount of coordination too. In many ways CM is the glue that makes this all possible. What’s the Goal? The goal of effort is preventing defects and delivering high quality applications at the lowest possible cost. Strong CM best practices enable the development team to track changes, reliably tag(e.g. label) production releases and even reliably provide different builds of the same code (e.g. production and test builds). Having a Release Management process is essential if you want to be certain that the build of your code for the automated test tools (including a few essential test drivers) is exactly the same as the production build (optimized for speed and performance). Through all of the efforts, the goal is to develop Quality Code. Software Testing is a hard job. Being able to identify changes can help managers make best choices on how to devote their (often) limited testing resources. Release Maps identify which components have changed, which can help testers be more effective at shaking out software bugs in a timely and effective way. Variant management through effective branching allows for bug fixes to the code without the risk of unexpected changes causing the code to regress. We call this branching off of a version label and is essential when a short 2 line fix can address a regulatory issue without the risk of causing unexpected (and undesirable) problems. The Test Team will really appreciate your efforts which make their jobs possible with today's incredibly tight deadlines and limited resources. The integration between source code management tools and defect tracking systems is also a powerful tool that mature software development teams should consider as a required best practice. Often this is most effective when a critical application is stable and has reached maintenance mode. Using these techniques a Software Development Manager can search for similar problems and trace the exact changes made to address a particular problem. Quality Management, QA, Software Testing, and SQA are indeed complex and challenging areas. Successful CM practitioners realize that there is a great deal of synergy between CM, Testing and Quality Management and take the time to study each of these areas. Developing quality software is a difficult task and CM practitioners are essential members of any development team that is productive and successful in today’s challenging IT environment. Bob Aiello is a Senior Editor for CM Crossroads and an Associate Director at a major financial services firm in NYC, where he has company wide responsibility for Software Configuration and Release Management best practices. Bob is on the Steering Committee of the NYC Software Process Improvement Network (CitySPIN), where he is also the chair of the CM SIG which meets in Midtown NYC. Mr. Aiello has a Masters in Industrial Psychology from NYU and a BS in Computer Science from Hofstra University. You can reach Mr. Aiello by email at bob.aiello@cmcrossroads.com
Set as favorite
Bookmark
Email this
Hits: 9738 Trackback(0)Comments (0)
|
| Last Updated on Tuesday, 01 April 2008 11:02 |



