Software Quality, Development and Coding Standards…

The best applications are those that are not only coded properly but also easy to add, debug and maintain. The concept of ‘maintainable code’ is easy to contemplate about but difficult to practice. Developers code in specific and individualistic styles. Their styles of coding become their second nature and they continue to use that in everything they create. Such a style might include the conventions used to name variables and functions ($password, $Password or $pass_word for example). Any style should ensure that the team can read the code easily.

However, what happens when we start to code bigger projects and introduce additional people to help create a large application? Conflicts in the way you write your code will most definitely appear.

This is where the concept of ‘CODING STANDARDS’ comes into play.

Coding standards are very articulate and deeply formulated to be consistent and when developers follow these standards, it makes the end result more uniform, even if different parts of the application are written by different developers. Knowing these standards and the language is always easy, but the catch is in deciding which standard to apply when & where.

I have found that the entire process of testing & quality assurance becomes relatively simpler when developers have followed coding standards. This also goes a long way in improving the performance of the application. When coding standards have been adhered to it results in easy and quick grasping of what the application is supposed to do and what it is not supposed to. During maintenance phase, it undoubtedly, enhances readability which leads to better maintainability. By adhering to these standards testers do not feel disconnected or bowled over when they begin working with the application. I believe it’s even more relevant in the current scenario, when different processes of applications are built by different set of developers (internal teams, vendors, etc).

Some of the secure coding practices, I believe that are high priority:

  • Validate input data
  • Heed compiler warnings
  • Architect and design for security policies
  • Sanitize transferred data
  • Mitigate model threat
  • Checklist

I understand that it is not possible to apply all coding standards at all times, but if applied appropriately, it would enhance performance and reduce scientific misconduct. What are your views on coding standards and its impact on software testing?

Janhavi Hunnur | Marketing | Zen Test Labs

Advertisements

3 thoughts on “Software Quality, Development and Coding Standards…

  1. Good topic Janhavi. I have realized over the years too that testing and testers cannot work in silos. During my work with a particular client I realized that there could be few more activities to ensure software quality maintenance from the initial stage of development. I have tried breaking it up into these 4 areas; i.e.,:

    •Unit testing
    Unit testing should be done religiously by the developers. It is effective when developers refer to the test scenarios framed by testers, thereby making the code more robust, minimizing defects, and in turn resulting in reduced test rounds & a quick delivery.

    •Design document
    In some cases a design document is either not created on time or is incomplete. This might result in a developer trying to implement his thoughts, at times resulting in rework, functionality with loopholes & in-turn delivery at risk. It’s the responsibility of a solution architect to ensure its in place before the developer starts coding.

    •File Check in-Check out process
    There are chances of errors while developing new features, making enhancements, defect fixes or a previously working functionality being broken now. Developers need to follow the file check in-check out process systematically by working on the latest code version always, ensuring that they are taking updates, compiling the code & adding comments before check in.

    •Code coverage analysis
    It’s a good practice for developers, to use code coverage analysis tools like “Clover”.
    More info on ‘clover’:
    http://www.appnovation.com/code-coverage-clover

    Vikram Deshmukh | Senior Manager | Zen Test Labs
    http://www.zentestlabs.com

  2. “Until an understanding is archived by everyone involved with software development that:
    Software development is a social art and hence no single person, department or tricks can ensure the quality of a software in isolation. Everyone must contribute towards attaining it.
    Quality cannot be an after taught,it has to be from the ground up. From the moment a client decide they want something you should start thinking quality”

    I belief you are talking about coding style when you mention “Coding standards” i.e how you format you code etc, this should no longer be a problem if you use tools like checkstyle http://checkstyle.sourceforge.net/.
    Tools like this gives the first “static” analysis of potential problems with the codebase. QA/Test teams should never be concerned about the coding standard or design patterns as this should be completely invincible.
    The only coding standard developers should be concerned with is “clean code”. Regardless of your style, standards as long as you code is clean any developer can get going with the least amount of effort. see http://www.tud.ttu.ee/material/kallik/JOOP/Clean_Code_-_A_Handbook_of_Agile_Software_Craftsmanship.pdf

    Now if you mean application patterns now i.e say tabular data should be rendered the same way across an application then yes that will be nice. This becomes more difficult if there is no way to reuse code/artifacts which is where tools like confluence http://www.atlassian.com/software/confluence/overview come into play.

    Without a process unit-testing, source code management and all other neat tricks could amount to a wasted effort but defiantly will result in a lot of effort .
    A step to achieving the quality and a faster time to market will be wrapping it all up in a process say “Agile” or some form of it. see http://en.wikipedia.org/wiki/Agile_software_development

    Time has taught me that if you want quality software that works well to specification :

    1. You need a Team
    2. You need a Process
    3. You need a Leader
    4. You will never achieve 100% bug free system but you will be close

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s