IT cycles
Initially I wanted to write about the development cycles, but there is more to support the web site than development. There are three cycles I can think of: development, QA, and production. It all depends which project management model is selected for the business. Development starts with analyzing what is needed, maybe competition is doing something that your business is not doing, or maybe it's the next step in the evolution of a company. People are needed for this task to be successful. People are needed for all three phases. It's important that those people are independent. The developers have objectives that they are capable of meeting. QA people know what they are testing, know what is expected to deliver. System admins have resources available to them to support the changes in the production environment. If these departments are not independent, they would have influence from each-other and often conflicting objectives.
Primary goal of the developers is to take the company forward or to fix critical issues. Ideas may come from different people. Developers themselves, QA personnel, system admins, call center people, management. or people from the outside. Developers are good at developing features, but they may struggle on setting the priorities, or they may know the full picture of what is going on. Please don’t expect the developers to do this function. This task should be in the hands of different people or automation. If this is not done, developers may go in different directions, or the priorities may be all over, and the developers may not see a clear path forward.
QA team validates feature development. Sometimes the QA team can be seen as a balance. But the existence of this team will prevent unneeded changes to go into the production environment. Of course the developers can do the validation, but the framework needs to exist that will prevent unsupported changes from going into the production. Framework needs to exist even for the QA people to validate the changes. Some of the validation can be done by the developers, but it is dangerous to have conflicting priorities for the same people that develop and do the feature validation. It depends on which development model is selected. If it is selected to release small changes to production more often, then it is easier to test small changes than big ones.
Having a dedicated QA team can be avoided, if a good management team is in place, or there is software that ranks the features or bugs. Or if a bug fix is limited in scope, and only deals with the impacted area. How to know if bug fix only targets a specific area? First of all there must be clear steps of how to reproduce an issue. It is not sufficient to say that the checkout page is slow. It may be slow with over 100 items in it. Someone needs to make that call of what is the likelihood of having over 100 items in a shopping cart? What is the effort to fix the issue? Is there a workaround to this issue? Is it possible to submit multiple orders?
Not all of the bugs are “created” equal. Some are obvious, and some are not. Some bugs have low probability and low impact, other bugs may have the opposite - high probability and high impact. It is the goal of a manager, or the management team to set the priorities which bugs to fix. Priorities can also be set by developers themselves. At the end they are those who will be implementing a fix.
For example, a call center person may find a bug on the web site that is impacting people. But he or she may not know that the feature is on a path of deprecation. The bug is actual, and is impacting the people. What that person may not know is that a fix is in development and other people are aware of it, or the feature will be removed very soon. However, if a person may be the first one to discover a bug, and the feature is active, and the steps to reproduce a bug are valid. This information is valuable, and needs to be accepted and prioritized. Regular updates need to be made to that person, with a status of fixing an issue.
Steps to reproduce a problem are also important. Just to say that the checkout page has an issue is not sufficient. Where to look? It may be obvious for the person reporting a bug, but it may not be so obvious for a developer that often has conflicting priorities, and has no time to search for yet another issue. If it takes too long for a bug to be fixed, the person who reported the bug may lose the desire to report more issues, when they happen. He or she needs to know the latest status of the submission that was made. Such people may need recognition and possibly monetary assistance.
Some companies are open to recognizing that issues may exist. These companies let some of the validation to be done by the users themselves. They experience issues first hand, and they can report these. Such users can be developers, qa personnel, sys admins, management or people from the outside that are impacted by a bug. The issues need to be analyzed first. The issues even if they are real may have low probability and the low impact on users, such issues, even so they are actual, can be accepted. For example the checkout page will be slow to load, if it has over five hundred items in it. The issue is real, and it may impact users, but its occurrence is so low compared to the usual size of a basket, that this issue can be accepted. Is there a workaround is another question to ask, if the checkout page is slow with the five hundred items in it, can this person call in to a support desk, or submit multiple orders, while the company evaluates a bug report. How many people are impacted is the question that needs to be asked and answered as well. It is also important to know how complex an update is. If it is very complex, then it would be difficult to test it. If it only fixes a specific issue, then it is possible to validate, if a software update fixes that issue or not.
One more thing to add to this, is how we look at the software, what are our expectations. If the expectations are that everything must be perfect, then it is difficult to reach that goal. If the expectations are that some bugs will exist, but there is a plan to fix these, then let’s use that plan. It doesn’t mean to ship buggy software, that it is OK to do so. It means that incremental improvements will be made. That a bug fix is planned.
The last step in this process is to support production code. The new code had been developed and tested. Now it is time to deploy it to production environment and monitor for any issues that arise there.
Website Development FAQs
1. What are the different cycles involved in website development?
There are three primary cycles: development, quality assurance (QA), and production. These cycles are often intertwined and depend on the chosen project management model.
Development: This phase involves analyzing needs, identifying features, and creating the website or updates.
QA: QA focuses on testing and validating the developed features to ensure they function as expected and meet quality standards.
Production: This phase involves deploying the tested code to the live website environment and monitoring its performance.
2. Why is it important to have independent development, QA, and production teams?
Independent teams ensure objectivity and prevent conflicts of interest. Each team has its own expertise and goals, leading to more effective and balanced decision-making.
Developers focus on creating and implementing features.
QA specialists ensure quality and identify bugs.
System administrators manage the production environment for optimal performance.
3. How are priorities set for bug fixes and feature development?
Prioritization can be determined by managers, development teams, or even automated systems. Factors to consider include:
Impact: How significantly does the bug affect users?
Probability: How likely is the bug to occur?
Effort: How much time and resources will it take to fix?
Workarounds: Are there temporary solutions available?
Feature Deprecation: Is the affected feature being phased out?
4. Can we avoid having a dedicated QA team?
While dedicated QA is ideal, it can be avoided with effective management, bug-tracking software, or if releases are limited in scope and impact. However, a robust framework for validation and testing is crucial regardless of who performs the QA tasks.
5. How can user feedback contribute to website improvement?
Companies can encourage users to report issues directly. This feedback provides valuable insights into real-world experiences and helps identify bugs that might have been missed during internal testing.
6. What factors should be considered when evaluating user-reported bugs?
Validity: Are the steps to reproduce the bug clear and accurate?
Impact: How significantly does the bug affect users?
Probability: How frequently does the bug occur?
Workarounds: Are there any temporary solutions available?
Complexity: How challenging would it be to fix the bug?
7. What is the role of the production support team?
After development and testing, the production support team deploys the code to the live website. They monitor the website's performance, address any arising issues, and ensure smooth operation.
8. Is it realistic to expect a completely bug-free website?
Striving for perfection is admirable, but it's essential to acknowledge that some bugs are inevitable. A more practical approach is to have a plan for addressing bugs promptly, prioritizing them based on severity, and continuously improving the website through incremental updates.
Study Guide
Cycles in Software Development:
Development Cycle: This cycle focuses on creating and improving software features. It involves analyzing needs, gathering ideas, prioritizing tasks, and writing code.
QA Cycle: This cycle concentrates on testing and validating software changes. The goal is to ensure that new features work as expected and that bug fixes are effective. This cycle often involves creating test cases, executing tests, and reporting issues.
Production Cycle: This cycle involves deploying tested software to the live environment where it's used by customers. It includes monitoring performance, troubleshooting problems, and applying necessary updates.
Bug Management:
Bug Reporting: Effective bug reports are crucial. They should include clear steps to reproduce the problem, the observed behavior, and the expected behavior.
Bug Prioritization: Not all bugs are equally critical. Prioritization should consider the severity of the bug (impact), the frequency of occurrence (probability), and the availability of workarounds.
Bug Fixing: The development team fixes bugs based on their priority. It's important to have a clear process for tracking bug status and communicating updates to reporters.
Bug Acceptance: Sometimes, bugs with low impact and low probability might be accepted if fixing them is too costly or complex compared to the potential benefit.
Key Considerations:
Team Independence: Development, QA, and production teams should have clear roles and responsibilities. This independence helps prevent conflicting priorities and ensures each team can focus on its objectives.
Development Models: The chosen software development model (e.g., Agile, Waterfall) influences the frequency of releases, testing procedures, and the overall development process.
User Feedback: User feedback is invaluable for identifying bugs and areas for improvement. Companies should encourage users to report issues and provide mechanisms for doing so effectively.
Quiz
Instructions: Answer the following questions in 2-3 sentences each.
Why is it crucial for development, QA, and production teams to be independent?
What are the main differences between the development, QA, and production cycles?
What information should be included in a good bug report?
Explain the concept of bug prioritization and why it's necessary.
Why might a company choose to accept a bug rather than fix it?
How can user feedback contribute to improving software quality?
What role does the chosen software development model play in the bug management process?
Why is it important to provide regular updates to individuals who report bugs?
What is the purpose of having a framework in place for software validation?
Describe the potential downsides of having developers handle both feature development and feature validation.
Answer Key
Answer: Independence ensures that each team can focus on its objectives without conflicting priorities. For example, QA can objectively test software without pressure from developers to overlook issues.
Answer: The development cycle focuses on creating new features and code. The QA cycle focuses on testing and validating those changes. The production cycle manages the deployment and ongoing support of the software in the live environment.
Answer: A good bug report should clearly describe the problem, including steps to reproduce it, the observed behavior, and the expected behavior. It should also include system information and any relevant logs or screenshots.
Answer: Bug prioritization assigns a level of importance to each bug based on factors like severity, frequency, and the availability of workarounds. This helps teams focus on fixing the most critical issues first.
Answer: A company might accept a bug if the cost of fixing it outweighs the potential benefits. This could be the case for bugs with very low impact or probability, especially if a workaround exists.
Answer: User feedback provides real-world insights into how software is used and can uncover issues that might not be found through internal testing. This helps developers prioritize fixes and improvements.
Answer: The software development model dictates the frequency of releases, testing procedures, and how bug fixes are integrated into the workflow. For example, Agile methodologies often involve frequent releases and bug fixes, while Waterfall models have longer cycles.
Answer: Regular updates keep bug reporters informed about the progress of their issue and demonstrate that their feedback is valued. This encourages continued reporting and improves user satisfaction.
Answer: A validation framework provides a structured approach to testing and ensures that changes meet defined quality standards. It helps prevent untested or poorly tested code from reaching the production environment.
Answer: Combining development and validation roles can introduce bias. Developers might be less likely to find flaws in their own code, leading to insufficient testing and an increase in bugs reaching production.
Essay Questions
Discuss the importance of a comprehensive bug tracking system and outline the key features such a system should have.
Analyze the advantages and disadvantages of different software development models (e.g., Agile vs. Waterfall) in the context of bug management.
Explain how effective communication between development, QA, and production teams contributes to a successful software development life cycle.
Discuss the ethical considerations involved in bug management, particularly when deciding whether to accept a known bug.
Explore the role of automation in streamlining and improving the bug management process, considering both its benefits and potential limitations.
Glossary of Key Terms
Bug: An error, flaw, or fault in a computer program that causes it to produce incorrect or unexpected results.
Software Development Life Cycle (SDLC): The process of planning, creating, testing, deploying, and maintaining software.
QA (Quality Assurance): The process of ensuring that software meets specified requirements and quality standards.
Production Environment: The live environment where software is deployed and used by end-users.
Bug Report: A formal document that describes a software bug, including steps to reproduce it and its impact.
Bug Prioritization: The process of ranking bugs based on their severity and impact to determine the order in which they should be fixed.
Bug Acceptance: The decision to accept a known bug without fixing it, usually because the cost of fixing outweighs the benefits.
Software Development Model: A framework that defines the process for developing software (e.g., Agile, Waterfall).
Validation Framework: A set of guidelines, procedures, and tools used to test and verify that software meets requirements.
Workaround: A temporary solution or method used to avoid or mitigate the impact of a bug
Comments
Post a Comment