- Automated Defect Prevention: Best Practices in Software Management - PDF Free Download
- Featured channels
- Account Options
- The Practical Guide to Defect Prevention
Automation Helps to Implement and Verify Best Practices and Organizational Standards Automation and use of the supporting technology help enforce organizational best practices and standards. At my current position, there are various teams that are in charge of different areas of development.
There is a development team in charge of coding and implementing the application, an integration team in charge of integrating each subsequent release of functionality from the development team, and the testing team that is in charge of testing each new release from the integration team. All the members within each team have varying levels of expertise while there is even more variation in expertise among individuals from the three different teams. Our various teams attempt to employ the company best practices and standards.
Actually, one of the disappointing results of the aforementioned study conducted by McGarry at the NASA Goddard Space Flight Center  is that it did not demonstrate the productivity advantages of automated tools. However, more recent research that was conducted for selected and well-isolated software processes shows a dramatic improvement in productivity.
In particular, this is true for testing tools where a number of case studies have been performed. For example, James M. Figure 2. We all hate to test, and to keep us all from going completely bonkers, we try to divide it up among individuals. An automated activity that I frequently utilize is visual SQL statement building. This feature directly supports the fourth principle of our methodology: measurement and tracking of project data.
How is the task automated? What is gained by automating the task? This is because no other business relies on continuous change through learning, adaptation, and innovation like the software business does. However, change is unsettling and it can be overwhelming to both the organization and the individuals. A pilot group consisting of talented and motivated people should be selected. The pilot group should be actively working on the code and it should be dedicated to fully implementing the methodology.
To gain the momentum needed to drive an organization-wide implementation of ADP, the pilot group must be a well-esteemed team working on an important project. Once ADP is well-tested and established by the model pilot group, it can be gradually introduced to other teams and ultimately propagated to the entire organization, as shown in Figure 2. Similarly, best practices should be introduced one by one.
One reason why implementation of best practices has historically failed is the overwhelming amount of information that is typically delivered to team members. This prevents the team from being overpowered by having to learn and follow an unmanageable number of new requirements at once—in addition to performing their regular job tasks. One particularly helpful strategy is to divide each practice into several levels—critical, important, and recommended—then introduce each level incrementally. The team could start following only the most critical practices.
Once the team was able to comply with these requirements, it could then proceed to implementing important practices. Once all of these were mastered, the team would phase in the recommended practices. Another useful strategy is to apply new best practices only to activities and project artifacts that started or were created after a predetermined cutoff date. The required infrastructure is created during the initial planning, and is supplemented to meet the needs of the project during the expanded planning. For each of the phases, the use of measurements, tracking, and automation plays a pivotal role in controlling and improving the software development process, as shown in Figure 2.
Extended Planning Design Figure 2. However, there are core activities that take place during each of the phases. During the extended planning and design, the software development plan is created. The project cost and schedule estimates are prepared, based on the product key requirements and the high-level architectural design. This plan is subject to future updates as the product iterations are completed.
During the construction and testing phase, the detailed design is completed by implementing the code. The coding standards for the team are established, together with the policies for the use of source control system, automated build system, and other support technologies. Test-driven development approach is recommended at the service and module level and for algorithmically complex units.
Automated Defect Prevention: Best Practices in Software Management - PDF Free Download
Coding standards are applied throughout the development. The deployment decision is made based on the quality measures collected throughout the product development. During the deployment phase, the automated transfer of the application to the target environment takes place. At that time, the additional user testing of the deployed system is conducted, and the monitoring of the released system starts. All new feature requests and the postrelease defect reports are collected and stored in the problem tracking system.
Not every activity can be automated. It is important that communication lines are open during these activities and that all stakeholders have a chance to voice their opinions. Architectural design does not lend itself to automation. However, recent popularity of architectural patterns opens the door to future automation of some of the design tasks, as automation becomes possible with activities that were previously thought to be unsuitable for automation.
Peer reviews of code and documentation cannot be automated because they require analytical reasoning and understanding of intended code functionality. However, in many situations, one can use automation to streamline processes that require human involvement. For example, assume there are classes that are designed to perform transactions. The transactions inside these classes always have to be properly rolled back if the transaction encounters problems. However, the team knows from prior experience that transaction rollbacks typically have many problems. This rule is so general that it means different things when applied to different pieces of code, so it is virtually impossible to automatically verify whether the code follows this rule.
Consequently, one needs to review all exceptions in transaction-related classes manually. However, if a programmer uses a tool to automatically identify all transaction-related classes that throw exceptions, she is relieved from having to manually search through the entire code base and has more time and energy to dedicate to performing the subjective review that cannot be automated.
Many tasks, however, can be fully automated. Test scripts ought to be automated for repeatability and reliability. Code generators are gaining popularity, especially for database tasks, such as creating and updating tables, or adding and deleting columns. An example is a generator that looks at the database and creates generic procedures and queries such as Insert, Update, SelectAll, or SelectOne, for each table in the database.
The generator also creates the code for the classes that will call the automatically generated procedures. Another set of activities that can be automated include collecting and monitoring project status data and generating project status metrics. A variety of metrics pertaining to requirements volatility and implementation over time can be automatically generated. ADP advocates automation as an essential approach to making defect preventive practices sustainable.
A lot of good articles can be found at the American Association for AI. I think it will require a leap of some kind, if it is possible at all, to move to a system that can generate new and novel programs that are not applications of known principles and concepts. Fourth-generation programming languages are also a step in this direction. Unique or original problems will still require programmers, but if these solutions prove useful they will most likely make it into the common domains. For example, you can create a very complex and unique Web application with many of the modern content management systems with no coding at all.
My site uses Drupal and could have been done without any coding. Of course, I am a geek, so I custom built a few components and tweaked some of the code, but I did not have to. Our second example is mentioned in Section 2.
This software used an integer timing register that was incremented at intervals of 0. However, the integers were converted to decimal numbers by multiplying by the binary approximation of 0. As a result, after hours 3. First, round-off errors should be avoidable. The main causes of the round-off errors can be broken down into four categories: programmers, skills, test methods, and techniques. Then in each category, more detailed root causes are listed. Number of key programmers trained 2. Number of programmers already having required skills 3. Number of programmers that need to be trained Changes in coding standards Consult experts Performing stability testing 1.
Precision must be at least 64 bit. Static analyzer can be used to enforce and track new coding standards. Number of precisionrelated warnings 2. Data type conversion should be minimized. Number of data-type conversion warnings Consult an expert responsible to perform numerical analysis, provide alternative solutions to problems, create new coding standards and review code.
Costs of experts Run for extended time to check for stability and accumulative errors. Policies or standards changed per experts-advice Load testing can be automated with performance test tools, which should be a part of regression test routine. Code units assigning load tests 2. Defect location found through load tests 3.
Number of defects found through load tests New 1. Use interval arithmetic development math technique to check methods the error. The learning of new development methods can be tracked with the human resources database to ensure all developers participate and pass the test. Code location using new methods 2. Train developers to these methods.
The development team members will have the appropriate technology installed on their workstations and integrated into their daily development process to monitor implementation of these standards. The testing team performs integration testing on the entire checked-in project baseline the checked-in work of all project developers by using workstation versions of the standard team technologies and by manually exercising the application as needed.
Then they design and implement a defect prevention mechanism to prevent this defect from recurring. The testing team also adds to the test suite one or more test cases that verify whether the defect has been comprehensively resolved. At that point, the architect asks the responsible developers to correct the problem. Once the new test cases pass, the defect is deemed corrected. These tests verify whether the appropriate best practices have been implemented. Team members can access periodic reports and use EXAMPLES 45 them to assess the effectiveness of the current practices and determine what additional practices would be helpful to implement.
The team can then use this same infrastructure to implement and monitor any process improvements that they decide to adopt. For example, if a requirements team uses a requirements management system, this system should be an integral part of our methodology, seamlessly used by both development and nondevelopment groups. At some point, the company employees noticed that some database records seemed to be missing: they complained that some of the records they remembered entering could not be found later when they searched for them.
They also noticed that duplicaterecords tended to appear around the same time that the other records disappeared. The IT team was made aware of this problem and started to investigate this situation by talking to the users of the database. The team found out that the staff members occasionally input new data to the database by modifying existing records rather than by creating new records. Consequently, when the new data was entered, the old record was overwritten, deleting existing data and causing the missing-record problem.
The IT team then inspected the code to locate the cause of this problem. Thus, the compiler copied the class using a default constructor, and the old data pointer was copied to the new class. Since no new memory was allocated for the entered data, the old data was overwritten with new data, and the newly created object pointed to the same record. This can be understood as an immediate short-term goal. How can one prevent other similar and unpredictable application behaviors? This can be understood as a larger, long-term goal. Asking this question starts the process of defect prevention.
This resulted in the new record being duplicated and the old record being overwritten. Step 2: Find the Cause of the Error. Because the default constructor did not allocate memory for the new data but copied the existing pointer, the same data was used twice. However, is it one particular developer who made this mistake, or is it a common group error that is repeated multiple times? Thus, is there a common solution that can be implemented to automatically prevent this problem from reoccurring? Yes, as explained in the next paragraph.
One solution to ensure that this practice is applied in future development projects is to enforce automated coding standards.
- Freedom and Independence: A Study of the Political Ideas of Hegels Phenomenology of Mind;
- International Business: Theory and Practice?
- The Modern Family Business: Relationships, Succession and Transition!
- Recent Posts!
- The Practical Guide to Defect Prevention | Microsoft Press Store.
- Watch the Skies (Daniel X, Book 2).
- Agile Testing is achieving quality in everything.
Step 5: Monitor the Process. Data collected through automation and tracking is used for measurements, which help in management decisions. A stable process is predictable; its variation is under control e. A process that is under control, but does not meet its target levels, would be considered stable but not capable.
Consequently, the application can be released. The process represented in Figure 2. Thus, although the process is stable, it is not yet capable. It is usually expressed as a percentage with a range of 0— It is used during initialization, not during ordinary assignment. Services in an SOA are modules of business or application functionality with exposed interfaces, and invoked by messages.
Addison Wesley, Prentice Hall, Harper and Row, New York, Why is defect prevention often dismissed by software development organizations? Which of the six principles of software defection prevention would you consider the most critical, or are they all equally important?
- Freely available;
- Legal Discourse Across Cultures and Systems.
- Agile Testing is achieving quality in everything.
- Primary Sidebar!
- The Tantric Path of Indestructible Wakefulness: The Profound Treasury of the Ocean of Dharma, Volume Three.
Give examples of general and customized best practices and explain how if at all they can be automated. Similarly, think of a best coding practice and how it can be automated. Give real-world examples of software development activities that you believe can and should be automated. What cannot be automated? What data, do you think, should be collected in order to facilitate defect prevention throughout the life cycle?
What measurements could be used to support software development— related decisions? Why do you think traditional manual defect prevention approaches are rarely used? Patton, Jr. As we described in the previous chapter, this infrastructure includes both the people and the technology. Factors such as the experience, knowledge, and expertise of the people within the infrastructure must be assessed.
Additionally, the status of the current technologies must be evaluated. For a new project, it is important that the infrastructure is formed early in the life cycle, preferably as soon as the vision for the product has been created. Establishing the infrastructure early in the development cycle supports comprehensive defect prevention during software development: starting from requirements elicitation and tracking, through design, construction, coding, testing, and deployment.
The infrastructure carries defect prevention from one project to another. However, it is an essential best practice to create a Vision and Scope  document at this point.
Created by the project manager or the architect, this document provides a general view of what the project aims to accomplish in the long term, and what restrictions exist in the short term. An existing project has a current version of the product and its supporting technologies. For existing projects with faulty behavior, our methodology will help to remedy the problems by applying root cause analysis and recommending best practices supported by the necessary infrastructure.
For stable projects looking to add product features, our methodology will specify both the infrastructure and those best practices that will verify that previous functionality is not negatively affected and defects are prevented as new features are added. Thus, identifying roles and matching people to roles requires prudent decision-making based on a careful examination of project needs and people skills. Later in this chapter, we will show how these traditional roles should be extended to support ADP.
This minimum technology infrastructure, which will be explained in detail later in this chapter, includes a source control system,b an automated build system,c a problem tracking system,d and an automated reporting system. Many organizations do not have formalized software processes. The process is dictated by the management, the organizational needs, and the type of project—and it should be documented. As described in the previous chapter, the ADP should be introduced into the organization one group at a time. Thus, before practicing our methodology, it is necessary to identify how the organization can be organized into groups that are logical for defect prevention, identify a pilot group to start practicing the methodology, and implement a supporting technology infrastructure for that pilot group.
Once the pilot group is successfully practicing ADP, work can begin on building an infrastructure and training schedule for the second group. This process is repeated until all groups are fully practicing it. However, depending on the project and on the organization size, the groups can be larger, consisting of 10 or even 20 people. Smaller group size, however, facilitates team communication and coordination of tasks. It also helps in fostering positive group culture. Does the project share code with any other projects?
These details could be tracked in a table such as the one shown in Figure 3. Taking an inventory of the projects yields the information needed to determine how those projects can be organized into logical groups.
As a rule of thumb, all developers who are working on shared code or closely related code form a logical group. Thus, the projects referenced in Figure 3. Project F has little in common with the other projects, so it forms its own logical group. However, teams that have a wide geographic distribution do not pose a problem. In fact, the infrastructure can actually help bridge the gap across multiple locations, even when the locations are on different continents.
This is very useful for organizations that outsource work. In these situations, it is common to have management in one location and the developers in a different location. Another common outsourcing situation is to have all project team members concentrated in one remote location. In either case, it is recommended that the infrastructure be placed in the same location as the developers; system performance is improved by having the infrastructure close to developers, and there is no advantage to having the system close to managers.
If the connections are not fast enough, the infrastructure can be mirrored in a remote location. Defect detection responsibilities extend testing roles to include root cause analysis of defects and recording of vital defects in the problem tracking system. Defect prevention responsibilities include the development and implementation of a defect prevention plan based on the root cause analysis performed by the defect detection team. After observing numerous development groups and researching many software process models, including agile development, we have learned that defect prevention works best when the responsibilities of the architects, developers, and testers are extended to include defect detection and prevention tasks.
The project manager is responsible for primary business decisions and relies strongly on the expertise of the architect. The project manager assigns tasks and responsibilities to the team members, including the roles of the defect detection and prevention, and promotes ADP practices. Through feedback loops within the software development life cycle, the architect, in collaboration with the testing team, correlates each vital and severe defect or issue with the particular process, and takes appropriate steps to correct the process.
In some organizations, however, the primary defect prevention responsibilities can be delegated to a lead developer, or a QA group, reducing the burden placed on the architect. At a minimum, this person is responsible for writing source code based on the design created by the architect and verifying that the code is correct. The developers, not testers, are therefore responsible for writing test cases that verify that each piece of code operates as expected.
Test engineers and the architect work together to customize the methodology so that it not only prevents common development problems, but also prevents defects unique to the team and project. The test engineer needs to understand how the code is built, then try to break it to expose any hidden defects. Each severe defect found is then used to fuel the process improvement procedure discussed in the previous chapter. Each time the testing team exposes a severe defect, they work with the architect to diagnose the root cause of the defect, and to design and implement a defect prevention mechanism to prevent this defect from recurring.
Test engineers also add to the test suite one or more test cases that verify that the defect has been resolved. The goal is to expose as many defects as possible to correct any process weaknesses that have permitted unique defects that have eluded the standard defect prevention best practices.
In some organizations, QA groups hold roles similar to those of test engineers. In such cases, QA groups should assume defect detection and prevention roles through collaboration with both the architect and the testing team. System administrator: The system administrator is responsible for maintaining, upgrading, and verifying that the technology infrastructure supporting the project is functioning correctly.
Depending on the organization and project size, one person can assume multiple roles within a single project, or different roles for different projects. We recommend mapping team members to groups and roles by completing a table such as the one depicted in Figure 3. Testing team members need to adopt a new approach to uncovering defects. Each time a severe defect is found, they need to consider what other defects might be related to it and how to abstract a general defect prevention mechanism from it.
The most talented testing engineers have a sharp intuition about where defects originate, and they can write test cases to check whether the anticipated defects are actually present. They attempt to break the system and understand the root cause of defects. This requires that they are familiar with the overall system architecture as well as have an intimate understanding of that part of the architecture related to that defect.
Moreover, to help the team improve the process and monitor attempted process improvements, testing team members must understand the statistics behind measuring, stabilizing, and managing processes, as well as how to identify whether a special case or variation is affecting the process.
The architect needs not only to be able to design the system, but also to ensure that this system is built properly and works properly. Since the pilot group is relatively small, initially this program could be informal and could take place during regular group meetings. However, for our methodology to become an enduring part of the project, it must be supported by a strong group culture. The most important element of such a group culture is the sense of code ownership.
It also serves as a means of communication: developers exchange the majority of their ideas by reading and writing code.
The Practical Guide to Defect Prevention
Just as mathematicians communicate their ideas most precisely with equations, developers communicate their ideas most precisely with code. Thus, by protecting the quality of their code, developers can preserve their best ideas in the clearest, most concise way possible. Developers should show that they care about the code because caring about the code is synonymous with caring about the group. It is thus fundamental that everyone feels they have a stake in maintaining a high-quality product. In an environment where group members feel a strong investment in code quality, any developer who does not care about the code will withdraw from the group.
Conversely, most group developers will soon become frustrated with someone who constantly introduces problems into the code and they will try to help this developer to improve. They include open workspaces, face-to-face communication, pair programming, and a high level of interaction and collaboration. Collaboration and camaraderie are crucial to developing a positive group culture.
When workers work together face to face and interact, they feel more a part of the group. Such a solitary approach often leads to burnout and a poor group culture. Marcelino, Senior Software Engineer Another important aspect of group culture is promoting common work hours among group members. Thus, it is necessary to establish core work hours, for example from 10 a. Some team members could come in early and others later, as long as there is a core time for communication and meetings.
Technologies that assist in software development have become quite sophisticated, often requiring customization and intensive training. Creating an adaptable and sophisticated technology infrastructure is, in and of itself, a production process. Many people in the software industry believe that developers can build their own tools and manage their use. However, in any mature industry, a division of labor is necessary: those who work on production lines do not build the tools used on the production line themselves.
Specialization is essential. If development groups have to write code outside of their area of expertise to build in-house tools, an increased number of defects is inevitable. The key element of the technology infrastructure is an automated reporting system, which we describe in detail in the subsequent sections. It integrates with and gathers information from other elements of the technology infrastructure. Depending on the composition of the technology infrastructure, the reporting system should seamlessly collect data from the source control system, automated build system, problem tracking system, and other systems as needed.
Based on the collected data, the reporting system should calculate project metrics and product status data and generate reports for team members to review. Product metrics may include the number of implemented features, the size of code SLOC , and the number of passed tests.
Reports should be customized to both the needs of the project and the individuals using them. This allows team members to view all the most important work activities that have been assigned to their group without having to access each system separately and without having to analyze an overwhelming number of items that are low priority or assigned to another team. The team members should review the CAL report and reprioritize their activities on a daily basis.
High Module H FileH7 identifier not Medium Module B FileB3 83 nonstandard Unimplemented Not Tested Medium Figure 3. Additionally, the trend indicators of the project progress can be periodically evaluated, and the application of general and customized best practices can be reassessed.
Team members can inspect and evaluate metrics, such as number of tests passed, and whether the style and coding rules are being followed. From the reports, the architect can decide whether the groups are working on the correct requirements needed for the project, and whether the groups are properly refactoring the code.
Many implementation defects can be caught early or prevented altogether based on the information provided by these reports. In addition, reports can be used by the project managers to review project management metrics. The reports can also provide comprehensive views of the project status, including project cost and schedule index.
Figure 3. The bar on the right shows the timeline of the project from the start to the deadline. Dark gray would appear green on-screen to show a project is on schedule, Black would be red on-screen to indicate a project is behind schedule. Throughout this book, we will describe many examples of metrics and reports generated by the reporting system. Developers must embrace the infrastructure, in particular the reporting system, for the successful implementation of ADP.
Making sure that the reporting system is not used to assess performance of individuals is critical and all developers should be made aware of this policy. The reporting system can help identify such a problem quickly and facilitate its resolution. In addition, it is very important that the developers be allowed to run all static analysis scans and tests, and view their own results before they are required to check in their code to the source control system and have their submission used by the reporting system.
Such a self-assessment can prevent unnecessary and misleading reporting and also create a positive sense of accomplishment. This policy should be customized to project and organization needs. These reports should never be used as a management tool for making cursory judgments and subsequently punishing the developers. If misused in this manner, such reports could be frequently misinterpreted by managers and deeply resented by developers. If used appropriately, developers will want to use the reporting system because it gives them instantaneous feedback and helps them improve the code quality.
Limited visibility may lead to a culture of secrecy that will only increase the perception of the system acting as Big Brother. Maximizing system openness and availability for everyone is important for achieving the comprehensive views required to identify trends. Having full visibility within a development group helps the team members see where defects occur, pinpoint the cause of the defects, and determine whether these defects are prevented from happening again.
Reporting System Reports Should Be Reviewed Frequently by All Involved Teams and Individuals Once a reporting system is correctly introduced into the organization, a policy should be implemented for periodically reviewing results from the reporting system; the more frequently the better. If problems are observed, they should be addressed and resolved immediately. The results of regression tests and any new failures that were introduced since the last reporting date are of primary importance for the review.
Similarly, the managers should view the reports in order to assess the project progress status with respect to schedule, milestones, and costs. If delays or budget overruns are observed, their causes can be studied and mitigated early in the cycle. A code compiler is needed to compile any code before it is checked into the source control system. Its purpose is to provide a central place where the team members can store and access the entire source code base. The code is organized, versioned, and accessible to all team members. Automated Build System: An automated build is a process for building an application on a periodic basis by automatically executing the required build steps, including compiling and linking of the code at the scheduled time.
Defects are stored so they can be tracked, analyzed, and ultimately prevented from recurring. Once resolved and prevented from recurring, defects are removed from the repository. The problem tracking system can also be used for storing requirements, feature requests, and tracking feature and requirement changes, if the project does not use a separate requirements management system.
Shared Project Artifact Repository and Other Tools: A shared project artifact repository should be created to store, organize, and access the documents that are created throughout all the phases. This repository can be a directory created in the source control system, a directory on a server with all the documents with a spreadsheet to summarize their information, or even an entire separate system.
By defining the activities during a development process and their mapping to the ODC Triggers, an organization customizes the generic scheme to the local process. Figure 2 depicts the ODC attributes used in this study for defect classification. The defect data were collected from a mini-ERP project. It is an 11 KLOC sized project which was done with a team of 20 members for a period of 4 months. The defect data were classified using ODC to understand the dynamics of defects. Defect trigger characterizes the process issues that allowed the defects to escape into later phases.
A programmer making the correction usually chooses the defect type. In each defect type, a distinction is made between something missing or something incorrect. In this study, the five defect types identified were Algorithm, assignment, function, interface and checking. Figure 4 shows the defect types that affect coding and design of software development.
Algorithm: Defect due to problem in procedure or overloaded function. Assignment: Defects due to values not initialized in few lines of code. Function: Defect that affects end-user interfaces, product interfaces etc which requires the change in design. Figure 4: Defect Type distribution Results and analysis The following information was observed during the implementation of defect prevention model for Mini-ERP project.
Some observations were discovered when looking at Triggers of defect and compared to their Category. Figure 3 shows distribution of triggers and targets attributed to defect types represented from Functional testing and GUI. Analyzing Figure 4 shows how much of these defect targets are attributable to Algorithm, Assignment, Function, Interface and Checking of both coding and design phase. These observations are then analyzed to arrive at best practices approach for defect prevention to come out of these lacunae in the system based on ODC observations which has been tabulated in Table 1 Appendix.
These best practices can be applied and further streamlined along with their leanings to make the development process cleaner and defect free. This will enable the company to have more focus on process and systems than on individuals. The benefits of implementing defect prevention are reducing overall cost, schedule, and resources and increasing the quality of a software product and the same is achieved through defect prevention model proposed in this study.
The defect prevention model proposed in this study helps to eliminate the defects at every stage of software development, take preventive action for defect elimination and to avoid its recurrence. ODC way of classifying defects helped the practitioners point to the process area where preventive action has to be taken. This paper is limited to using some defect attributes of ODC for classification.
As the job is human intensive requiring ODC trained personnel, planning to develop an open source tool which will automatically classify defect data based on ODC and generates a diagnostic report for taking preventive actions against the defect. When such a tool is developed, it will be of cost beneficial to small and medium scale IT industry and also help them to produce defect free IT solutions. Secondary code reviews by the peers or by the lead to be mandated to avoid such errors. The design perspective of each requirement should be understood and dependencies with external interfaces should be taken care.
Formal Design review with key Technical members of the project, Interface teams, Vendors if any , System and Database Administrators should be mandated Design before proceeding with the Coding phase. Any change in Design at a later stage would have a heavy impact in the Project timeline - so should be taken care in the Design phase itself. So, developer should document all Code such negative cases in the Program Specification and it should be reviewed by the Technical Lead for completeness.
It comes Requirement as a part of the experience and the Knowledge Base of the related project can be referred to avoid such errors. A final Sequence approved document on common routines is a must to avoid such errors To be circulated before Source code development.
Icon Code You also may like to try some of these bookshops , which may or may not sell this item. Separate different tags with a comma. To include a comma in your tag, surround the tag with double quotes. Please enable cookies in your browser to get the full Trove experience. Skip to content Skip to search. McDonald, Marc, Computer software developer , author. Published Redmond, Wash. Author McDonald, Marc, Computer software developer , author. Other Authors Musson, Robert, author. Smith, Ross, author.