Core Software Development Practices Questionnaire
Quality Control
Quality control ensures that developed software meets and complies with defined or standardized quality specifications. It is an ongoing process within the software development life cycle that routinely checks the developed software to ensure it meets desired quality measures.
-
Which code standards do you use?
-
Do you reviewed code according to the coding standard?
-
Are code conventions checked automatically? Which tools do you use?
Integrated Development Environments (IDEs)
-
Which IDEs do you use? Do all teams use same IDEs?
Version Control
-
Which version control system do you use?
-
Do you have different repositories for code, configuration and third party components?
-
Do you check in things (such as generated code) that can be build form other source?
-
Does your version control system have a commit hook to the issue tracking systems?
-
Do you store very sensitive data (e.g. passwords) in the version control system?
-
Do you use branching? What is your branching policy?
Issue Tracking
-
Which issue tracking system do you use?
-
Are all issues (feature requests, bugs, non-functional...) logged?
-
Do you use one issue tracking system for all stakeholders?
Build Process
-
Is your build process fully automated?
-
What tools do you use for building?
-
How is a build triggered? Does it start automatically after every commit?
-
Does the build stop on any failing test?
-
Is the build status visible to everyone? How?
Test Automation
-
How do you do unit testing? Which tools do you use?
-
Do you measure unit test coverage? What is the current coverage? Which tools to you use to measure coverage?
-
How do you do component / integration testing? Which tools do you use?
-
Do you measure component / integration test coverage? What is the current coverage? Which tools to you use to measure coverage?
-
How do you do end-to-end testing? Which tools do you use?
-
Do you measure end-to-end test coverage? What is the current coverage? Which tools to you use to measure coverage?
Capacity Testing
-
Do you do load testing? How often? Are these tests automated? Are they a part of the build pipeline?
-
Do you do stress testing? How often? Are these tests automated? Are they a part of the build pipeline?
-
Do you do endurance testing? How often? Are these tests automated? Are they a part of the build pipeline?
-
Do you do spike testing? How often? Are these tests automated? Are they a part of the build pipeline?
Test Environment
-
Is you test architecture and infrastructure representative (production-like)?
-
How do you create test data? Is test data representative?
-
Are sensitive data protected in test data?
Deployment Process
-
Is the deployment process repeatable?
-
Is the deployment process (fully) automated?
-
How much time a typical deployment takes?
-
Is continuous delivery used?
-
Do you have automated smoke tests after every deployment to all environments?
-
What is your patching policy?
-
Can you deploy the system independently? Does the deployment dependents on deployment of other systems?
Continous Integration
-
Which integration server do you use?
-
Is everything is checked in into a single version control repository?
-
Does everyone check in code changes at least once a day?
-
Is the codebase in a shared ownership?
-
Does fixing a broken build have the highest priority for everyone in the team?
-
Do automated tests run after every commit?
-
Can everyone see the results of integration? How?
Third-Party Dependencies Management
-
How do you manage dependecies to 3rd party libraries and components?
-
Are used 3rd party libraries are kept up-to-date? What is you policy regarding library versions?
-
Do you check if used libraries are still supported?
Monitoring
-
Do you continuously monitor the resource usage? Which tools do you use?
-
Is resource usage monitoring centralized? Which tools do you use?
-
Do you monitor at the level of business transactions? Which variables are you monitoring? Do you use corelation IDs? Which tools do you use?
-
Do you collect log files centrally? Which tools do you use?
-
Do you analyze log files pro-actively? Which tools do you use?
Iterative Development
-
Are you iterations time-boxed? What is time-box size?
-
Is software tested and working at the end of each iteration?
-
Does an iteration start before the specification is complete?
Scrum Practices
-
Is the product owner known to all stakeholders? Is she/he easily accessible?
-
Is the product backlog prioritized by business value?
-
Does the product backlog includes the estimates created by the team?
-
Are project managers (and other) disrupting the work of the team?
Quality Control
Quality control ensures that developed software meets and complies with defined or standardized quality specifications. It is an ongoing process within the software development life cycle that routinely checks the developed software to ensure it meets desired quality measures.
Which code standards do you use?
Do you reviewed code according to the coding standard?
Are code conventions checked automatically? Which tools do you use?
Integrated Development Environments (IDEs)
Which IDEs do you use? Do all teams use same IDEs?
Version Control
Which version control system do you use?
Do you have different repositories for code, configuration and third party components?
Do you check in things (such as generated code) that can be build form other source?
Does your version control system have a commit hook to the issue tracking systems?
Do you store very sensitive data (e.g. passwords) in the version control system?
Do you use branching? What is your branching policy?
Issue Tracking
Which issue tracking system do you use?
Are all issues (feature requests, bugs, non-functional...) logged?
Do you use one issue tracking system for all stakeholders?
Build Process
Is your build process fully automated?
What tools do you use for building?
How is a build triggered? Does it start automatically after every commit?
Does the build stop on any failing test?
Is the build status visible to everyone? How?
Test Automation
How do you do unit testing? Which tools do you use?
Do you measure unit test coverage? What is the current coverage? Which tools to you use to measure coverage?
How do you do component / integration testing? Which tools do you use?
Do you measure component / integration test coverage? What is the current coverage? Which tools to you use to measure coverage?
How do you do end-to-end testing? Which tools do you use?
Do you measure end-to-end test coverage? What is the current coverage? Which tools to you use to measure coverage?
Capacity Testing
Do you do load testing? How often? Are these tests automated? Are they a part of the build pipeline?
Do you do stress testing? How often? Are these tests automated? Are they a part of the build pipeline?
Do you do endurance testing? How often? Are these tests automated? Are they a part of the build pipeline?
Do you do spike testing? How often? Are these tests automated? Are they a part of the build pipeline?
Test Environment
Is you test architecture and infrastructure representative (production-like)?
How do you create test data? Is test data representative?
Are sensitive data protected in test data?
Deployment Process
Is the deployment process repeatable?
Is the deployment process (fully) automated?
How much time a typical deployment takes?
Is continuous delivery used?
Do you have automated smoke tests after every deployment to all environments?
What is your patching policy?
Can you deploy the system independently? Does the deployment dependents on deployment of other systems?
Continous Integration
Which integration server do you use?
Is everything is checked in into a single version control repository?
Does everyone check in code changes at least once a day?
Is the codebase in a shared ownership?
Does fixing a broken build have the highest priority for everyone in the team?
Do automated tests run after every commit?
Can everyone see the results of integration? How?
Third-Party Dependencies Management
How do you manage dependecies to 3rd party libraries and components?
Are used 3rd party libraries are kept up-to-date? What is you policy regarding library versions?
Do you check if used libraries are still supported?
Monitoring
Do you continuously monitor the resource usage? Which tools do you use?
Is resource usage monitoring centralized? Which tools do you use?
Do you monitor at the level of business transactions? Which variables are you monitoring? Do you use corelation IDs? Which tools do you use?
Do you collect log files centrally? Which tools do you use?
Do you analyze log files pro-actively? Which tools do you use?
Iterative Development
Are you iterations time-boxed? What is time-box size?
Is software tested and working at the end of each iteration?
Does an iteration start before the specification is complete?
Scrum Practices
Is the product owner known to all stakeholders? Is she/he easily accessible?
Is the product backlog prioritized by business value?
Does the product backlog includes the estimates created by the team?
Are project managers (and other) disrupting the work of the team?