Achieving maximum benefits from formal reviews/inspections strategies and case studies Fran O’Hara Insight Consulting 114 Granitefield, Dun Laoghaire, Co. Dublin, Ireland Phone/fax: +353-1-2854510 E-mail: fran.ohara@insight.ie Abstract Formal reviews/inspections are currently a ‘hot topic’ with many references and case studies detailing, in quantitative terms, the benefits that can be achieved. They have been practiced for over twenty years and yet there are many organisations not using them to anywhere near their full potential. Indeed, many examples exist where introducing a review/inspection process and/or maintaining an effective process have failed. This paper analyses some case studies from the real world of dubious success (and sometimes even failure) and focuses on some of the key issues which caused problems. The aim is point out the pitfalls and highlight the key elements in achieving maximum benefits from introducing and maintaining a formal review/inspection process. A strategy to deploy the process is presented which encapsulates some of the lessons learnt. 1. Introduction What are the key elements of a cost-effective formal process? There are many implementations of review and inspection from quite informal approaches through to the most formal and rigorous. ‘Formal’ for the purpose of this paper is a process which meets or exceeds the requirements of Peer Reviews as defined in the SEI’s Capability Maturity Model [CMM, 1993]. As such, processes based on Fagan’s Inspection technique [Fagan, 1976] and the Gilb/Graham [Gilb, 1993] approach most certainly meet and in most cases greatly exceed these requirements. In simple terms, ‘formal’ therefore implies, at a minimum, the following: the goal of the process is to rigorously identify and fix defects (especially major/critical defects) a secondary goal is to prevent defects reviews/inspections are planned explicitly in the project schedule review leaders/facilitators and reviewers receive specific training a shared understanding of the work products under review is obtained In terms of the process activities, the following is implied: an entry check is performed to ensure the material is ready for review reviewers/inspectors spend time individually checking the work product using appropriate parent or ‘source’ documents to help find defects. These work products may be code, design documents, requirements documents, project plans, test plans, 1 procedures, etc. An overview meeting has usually been held to discuss optimum checking rates, to assign individual reviewers additional checking roles, to focus the reviewers on criteria/rules to be checked, etc. a meeting is held to log the issues that have been found. Discussion is kept to a minimum. New issues are identified. the author investigates issues and fixes any problems. data on the review process, the work products, etc. is collected and used for example to determine the effectiveness of the review/inspection process, the optimum checking rates, the quality of work product, etc. if defect prevention is a main goal then some activity relating to defect causal analysis should take place (see for example the process brainstorming meeting concept [Gilb, 1993]). If defect prevention is a secondary goal then capturing improvement suggestions as related issues during logging meetings may suffice. etc. Notice the above description advocates some discussion rather than zero discussion at logging meetings. This is so in order to help achieve the process goal of establishing a shared understanding of the work product under review (and to train/educate). However, any discussion should be strictly limited and controlled to facilitate clarification of issues only. Solutions should not be discussed. If this goal were not required then zero discussion would be advocated. The point is to link the process activities to the required process goals. There is still much confusion around as to the difference between peer reviews, inspections, walkthroughs, technical reviews, etc.. The main difference between these approaches lies in the purpose, level of formality and the amount of effort required. Formal inspections [Fagan, 1976, 1986], [Gilb, 1993] have greatest formality and incorporate some statistical quality improvement and defect prevention. Informal reviews and walkthroughs, on the other hand, may focus more on consensus/buy-in and training respectively rather than rigorously trying to identify and fix defects. An in-depth discussion is beyond this paper (and has been provided elsewhere [Gilb,1993],[Knight, 1993]). A key point to remember is that there should be an explicit relationship between the process activities and the goals of the process. For example, if defect prevention is not an initial goal of the process then the related defect causal analysis activities are not necessary, resulting in a simplified process. What are the benefits of such a process? The main benefits are time saving, improved quality and reduced costs. This is obtained: by finding more defects by finding them early in the development lifecycle by preventing defects The improvement in quality as a result of finding more defects before your customer does is obvious. The fact that they are found early is the key point associated with the prevention/early detection principle of modern best practices1. It is well accepted that the earlier one finds a defect in the development lifecycle, the cheaper it will be to fix. Figure 1 shows an example of the relative cost of fixing defects in the development lifecycle2. Costs associated with the For example, the Systematic Test and Evaluation Process (STEP), the testing approach from Bill Hetzel’s company SQE - note the importance of evaluation and that formal reviews/inspections are the obvious vehicle for Evaluation 2 These were minimum figures with the maximum ratio being 1000 to 1 rather than 40 to 1. The IBM average was 82 to 1 [Gilb, 1993] 1 2 maintenance phase are also reduced because of a higher quality product with fewer defects and better documentation to support it. [Gilb, 1993] provides many specific examples and quotes the following as typical results from organisations which have introduced inspection: net productivity increase of 30% to 100% (less rework so productivity improves) net timescale reductions of 10% to 30% test execution costs and timescales reduced by a factor of 5 to 10 since there are fewer defects left to find reduction in maintenance costs by one order of magnitude early or on-time delivery of systems (no defect-correction backlash at systems integration time, since most defects are treated earlier) The time savings are obvious from the above discussion in terms of reduced rework, etc. but ultimately the prevention of defects by designing quality in to the work products will yield the greatest time saving. Another benefit is to help build effective technical teams with an associated enhancement in the flexibility of individuals to take over each other’s work when required. This point is often as significant a point as the direct benefits described above. Formal reviews/inspections are a form of on-the-job training where a broad knowledge of the work products and associated quality issues is rapidly learned by less experienced participants. They are invaluable as a form of communication especially when different functional areas such as development and test are brought together to review a work product such as a requirements specification. Work products improve as a result of a review but they also tend to improve before review simply because they are going to be reviewed. The development of a quality culture in general is often strongly linked to the introduction of formal reviews/inspections. Capers Jones [Jones, 1996] recently reported that formal reviews/inspections had the highest empirical evidence of success with almost no failures. They ranked top position in structured methods along with JAD (Joint Application Development) and QFD (Quality Function Deployment) in terms of Return on Investment (RoI). The industry data collected showed an RoI of 10 at four years! This figure is backed up by many examples including Thorn EMI in [Gilb, 1993]. Even informal reviews had a RoI of 4 at four years according to Jones’ data. Cost of fixing defects 40 40 35 30 30 25 20 15 15 O peration Accept. D ev. Test 3 C oding 1 D esign 0 R eqs. 5 R elative C o st 10 10 From an analysis of 63 projects (Boehm 1981) Figure 1. The relative cost of fixing defects depending on where they are found during the development lifecycle. 3 2. What are the practical experiences? Four case studies are outlined below. The first two relate to the introduction of the process and the second two are concerned with issues and improvements surrounding an existing process. 3. Case study - Schaffner Ltd. Background This company is a market leader in the manufacture of Power Supply Automated Test equipment and EMC Systems and Instruments. The Irish division has eight full-time software engineers and a further twelve that are involved in both software and hardware. As with many traditionally hardware-oriented companies, they are becoming increasingly oriented towards developing software, in this case Windows applications. A business goal therefore was to gain more business through the expansion of their software development activities. To achieve this it was recognised that more structure was required in their software development process and Peer Reviews was chosen as one of the process areas on which to focus. A prior initiative in the area of code reviews failed. This was reported to have been due to a lack of training and experience with reviews, which led to informality, and a general lack of review leadership. Reviews degenerated into trivial comments and soon were deemed a waste of time. They re-launched their improvement initiative at the start of 1995 and focused on a number of areas most notably project management3. It was estimated at the time that more than half a person year was being lost each year to fixing operational defects. In January 1996 they received funding for a focused process improvement project under the ESPITI TRI-SPIN program (a case study is available [Schaffner, 1996]). The topic of the 6 month project was peer reviews in the areas of code, design, requirements and test documentation. The purpose was to pilot a peer review process with an aim of reducing operational defects by 25%. It was also hoped that reviews would help drive documentation improvements in the areas such as testing which would be the subject of review. Implementation The process improvement was project managed by the quality manager with the Peer Reviews project a sub-project in the overall improvement program. Peer Review implementation took the form of a 1-day training workshop followed by seven days consultancy support over the six months to help with the implementation of the process and improve its effectiveness. Results The pilot project was viewed as a success. Despite some cultural resistance that had to be overcome, the quality manager noted ‘One of our very first reviews saved us considerable grief and money’. In quantitative terms the following was achieved at the end of the 6 month pilot: they achieved a review efficiency of 1 defect/hr i.e. an average of one defect found for every hour spent either preparing for or attending the review meeting. an overall benefit to cost of 2:1 was obtained i.e. for every hour spent with reviews, two hours was saved on subsequent rework 3 A consultancy ISO9001 audit was performed around this time to help identify opportunities for improvement and to assess the current costs associated with poor quality. 4 Lessons Learnt The following were the key lessons learnt: project management improvement is a pre-requisite to engineering improvement (see for example the Level 2 processes which come before Peer Reviews on Level 3 of the CMM - figure 2.). The progress with the improvement in project management had been less than anticipated so that when the externally funded Peer Review process was being piloted, its implementation was often hampered by resource/schedule issues. This point was made earlier but despite the non-ideal situation, a benefit to cost of 2:1 was achieved. management commitment and support at all levels is crucial. experienced practitioner support and just in time training are key issues when introducing the Peer Review process. The process is very much a people-centered process and requires implementation support after formal training (especially to help review leaders do their job effectively). Also, a time lag between the formal training and the actual piloting was not ideal and reduced the effectiveness of the training. ‘with reviews the cultural issues are probably a bigger part of things than pure techniques’. All of the cultural related activities embedded in an SPI lifecycle model such as the SEI’s IDEAL lifecycle model [IDEAL, 1997] need to be applied to overcome the inherent resistance that such a people-centered process can create. short improvement cycles such as this 6 month pilot can be quite effective at getting some tangible improvements underway. CMM: The key Process Areas assigned to Process categories Processes Categories Management Organizational Engineering Software project planning, management, etc. Senior management review, etc. Requirements analysis, design, code, test, etc. Levels 5. Optimizing Technology Change Management Process Change Management 4. Managed Quantitative Process Management 3. Defined Integrated Software Management Intergroup Coordination 2. Repeatable Requirements Management Software Project Planning Software Project Tracking & Oversight Software Subcontract Management Software Quality Assurance Software Configuration Management Ad Hoc Processes 1. Initial Defect Prevention Software Quality Management Organization Process Focus Organization Process Definition Training Program Software Product Engineering Peer Reviews Figure 2. The SEI’s Capability Maturity Model: Key Process areas assigned to process categories. Note Peer Reviews has been elevated to a Key Process Area in the engineering category at level 3. 4. Case Study - I.T. Department Bank X A review process closely based on Fagan Inspections was introduced into the I.T. department of an Irish Bank. The department consisted of about 200 people. The Software Quality Assurance manager pioneered the process introduction and personally performed internal presentations on inspections. Supporting material including process descriptions/definition, templates, etc. was provided to all the individuals who attended the presentation. 5 Results The following points summarise what happened: overall the process introduction was a failure although there were a few pockets of isolated success where the people involved adopted the process. Elsewhere the process fell into disuse. Only trivial issues were found at these inspections, data on inspections was not returned to the process owner (which was SQA), buy-in was generally poor, the process was viewed as ‘too formal with too many forms’, etc. The I.T. department are now looking to introduce a more practical approach to formal reviews/inspections Lessons learnt The process which was introduced was too formal for the culture and level of process maturity which existed at the time in the department There was insufficient initial training (especially practical exercises) and a lack of on-going experienced practitioner support. The initial presentations only lasted a few hours. A number of generic software process improvement principles were not addressed when trying to introduce the process Improvement needs to be managed as a project with clear goals, detailed planning, sufficient tracking, etc. This was not the case. There was no improvement lifecycle of phases and activities (see for example the ‘IDEAL’ approach from the SEI [IDEAL, 1997]. The pilot phase with a set of clear measures was especially lacking. There was a lack of involvement of the I.T. staff in general in the process definition. As a result no tailoring/customisation occurred and there was a lack of ‘ownership’ of the process by the staff. It was essentially viewed as an ‘SQA process’. There was also a fear of the metrics being introduced – again buy-in had not been achieved re their use. There was a lack of focus on major defects (i.e. those with significant downstream costs), optimum checking rates, etc. 5. Case Study - Telectronics Pacing Systems This case study is about how an existing peer review process can become ineffective and what can be done to improve the situation. Background Telectronics Pacing Systems were a manufacturer of heart pacemakers and implantable defibrillators. This case study relates to the Sydney division who specialise in the implantable defibrillators. During the period to which this case study relates (‘94/’95) there was about 270 people in Research and Development with about 35 in the software department. The implantable defibrillator communicated with an external instrument which had a user interface to allow physicians to customise device parameters to individual patients and to read data logs. The software department was correspondingly divided into implant software, programmer software and test. 6 Formal Reviews were used firstly in the software department and quickly spread throughout the division - they soon became the cornerstone of the quality system. The process followed was similar to that used in Schaffner Ltd. - a major difference however was that no data was collected from the reviews and as such it would not have met CMM requirements. Inefficiencies in the process could not be detected from any data. Neither could the uniformity with which the process was being applied across departments. It became evident however, that some significant problems were present in certain departments and that the effectiveness of the process was being questioned in others. A self-assessment focusing on the review process in the different departments was carried out by the software department. Problems and Solutions The self-assessment identified a number of problems in different departments. As the company wanted a common effective process, a training course was developed to address the problems and improve the company-wide process. Some solutions however were already present in the process but had not been well implemented in certain areas. Others were common sense solutions to new problems that had arisen. The key problems, each reported in at least one department, are outlined below: Cultural issues: reviews were viewed as bureaucratic ‘it’s not my job’ reviews seen as a gate or impediment reviewing the author or forcing the author to do it ‘my way’ poor material submitted for review by authors etc. Process issues inadequate preparation be reviewers conflict in meetings purpose of review unclear reviewers find faults but not omissions focus on style not content meetings were sometimes petty, trivial, slow etc. The training incorporated solutions to all these issues. Some solutions were simply about enforcing aspects of the existing process, others were improvements to the process and/or useful improvement guidelines/tips and others were simply discussions to help achieve more buy-in and address the cultural resistance which was increasing rather than decreasing in some departments. A key point running through many of the problems was the quality of the written material to start with. The importance of this issue was recognised and an effective writing course was also developed and delivered with the help of external consultants. Some of the improvement guidelines and process improvements to address the ineffectiveness issues described above are outlined below. They are grouped by phase of the review process: Preparation: use risk analysis to help select items to review. Everything cannot be reviewed so select items with the greatest risk e.g. the most complex modules of code, the modules supporting the most important function required by the customer, etc. use a pre-writing conference (there is nothing more inefficient than writing the wrong document) 7 author and leader should discuss if the review criteria and the reviewers chosen are appropriate in terms of the number and their skills use same review audiences as the earlier phase e.g. code review audience same as design review leader should proof read document before it is distributed as a readiness for review check distribute supporting material with the item under review e.g. design document and code checklist with code Review meeting: leader should ask how long people spent preparing and defer meeting if it’s not enough leader should constantly monitor and comment on the level of issues being raised (for typos, most style issues, convention deviations, etc. reviewers can simply pass on their marked up copy of the document) raise issues don’t solve them reviewers should be constructive in their criticism don’t waste time in the meeting - this is everyone’s responsibility but ultimately the leaders. Conversations between two individuals for example which are clearly of a nature which can be discussed outside the review (and don’t involve other reviewers) should be noted down as such and the meeting moved along. remember the useful phrase ‘Consider if......’ when noting down an issue which is becoming a source of conflict Follow-up: leader checks decisions and edits of author using original document, minutes and updated version (1 in 6 edits will be incomplete or incorrect according to [Fagan, 1986]) complete edits and checking ASAP re-reviews should use same audience Results and lessons learnt The training was viewed as a success by practitioners and managers alike. As no quantitative data was available however, it really was a case of hoping for the best! The company did receive ISO9001 certification (which places emphasis the importance of reviews) in this time. From a software point of view the bottom line result which may be attributable at least in part to effective reviews was that there was only 10 field detected bugs and no field failures due to software in thousands of years of run time operation. The key lessons learnt were as follows: without metrics the effectiveness of the Peer Review process can only be a subjective judgement. This reduces your ability to respond in a timely manner when inefficiencies arise, it is difficult to control the process, it is difficult to overcome cultural resistance without being able to point to quantifiable benefits and it leaves one with only a subjective opinion of the quality of the work products. formal (re-)training is necessary for effective Peer Reviews. effective writing is a key underlying skill which can be a great asset to an organisation and the individual many ‘solutions’ to the problems above are already embedded in more formal approaches to Peer Reviews. So use a process that is as formal as your current culture can support. 8 6. Case study - Telecommunications Company Y This case study is about a telecommunications software development unit in Ireland consisting of about 40 people. It was recognised that the existing process, which had been loosely based on Fagan Inspections, had become inefficient. It was decided to perform a series of combined assessment/training workshops with all the staff. The purpose was to examine the current process and the associated problems, to provide best practice training on formal reviews/inspections and to identify key improvements (i.e. to effectively refine the existing process) to address the problems and achieve the process goals. A further objective was to achieve buy-in for the process and the improvements. The workshops were very successful generating considerable buy-in and ownership for the improvements that were identified. Interestingly, many of the issues identified were similar to those outlined in the Telectronics case study. The following are some of the actual key improvement suggestions from these workshops that are currently underway: a) Project Management Probably the most significant issue raised by each group was that project management need to allocate resources for reviews in order for them to be effective. Indeed management needed to identify what reviews are to be performed and to schedule this time in the project plan. One idea was to allocate a fixed % of a person-month solely for reviews. This planning process needed to be explicit and defined at the start of the project. b) What to review? Identify which documents were mandatory to review, which were optional and put this into the procedure/lifecycle description functional specifications supplied by the parent organisation should be reviewed by the Irish unit but this usually doesn't happen and indeed the specifications are often not validated till late in development with high rates of requirements creep. This latter issue is a requirements management problem but reviews would help. currently, changes to code/documents arising from test bug fixes, enhancements, patches, customer issues, etc. are not reviewed. Until now only the first pass through the development lifecycle involved some review. After the code was written there was never a review of changes to functional specs, designs or code. There is a need to start reviewing these changes. testers felt that they should review scripts and that resources should be allocated for this. c) When to review? Rather than reviewing code in one big lump at the end, it was thought that chunking the code/spreading it out/reviewing it incrementally along the way would be more effective. The question of how much code to review depends on risk - risk analysis can help here as can complexity analysis tools. d) How to review? The following are number of specific recommendations provided by the groups re the review procedure: use the same team to review functionality, design, code and associated tests i.e. a function thread team. This is much more effective than bring people in 'cold' to review say code and having to educate them on the associated design. 9 keep the reviews as formal as possible with less unnecessary discussion (leader training was identified as crucial here) put a time limit of say 2hrs on reviews develop a better template for recording reviews and/or use immediate on-line entry. METRICS was identified as a key improvement point. Improve the collection, analysis and feedback on data (preparation time, meeting time, fix time, defects) and provide tighter definitions for defects and their classifications. Suggest rules of thumb for preparation rates, for maximum sizes of code/documents to review in one review, etc. use round robin at the review when asking for comments (leader responsibility) improve the criteria/checklists for use when writing the code/document as well as when reviewing it. Checklists need to be brought up to date and new checklists for different types of documents created (and even for patches). if the reviewers are unfamiliar with the parent document (e.g. functional spec. when reviewing the design) the author should give a presentation on the parent document to bring them up to speed before preparation starts. formalise code presentation for reviews e.g. line numbering, develop a code ‘diff’ tool for use when reviewing changes to code to highlight new, old and modified code. ask QA to attend reviews and verify consistent process implementation 7. What do these case studies tell us in terms of deployment strategies? The two main concepts that one can deduce are as follows: implementing a full-blown very formal process to begin with is a questionable strategy, especially if the maturity of your organisation is too low (e.g. CMM level 1 or level 2) a full-blown formal process is very desirable in terms of the additional benefits it can bring and especially because it may help to minimise the ineffectiveness which tends to creep into existing less formal approaches In practical advice terms, one could suggest that an organisation should adopt as formal an approach as the existing culture and level of process maturity will allow. The plan should be to increasing the formality and scope of what the process is trying to achieve once acceptance of the initial deployment has been achieved. Customisation of ‘off-the-shelf’ approaches to reviews/inspections to match the process goals and culture/maturity of the organisation is therefore required. This strategy is also more likely to keep the process ‘alive’ i.e. continuously improving. This is one significant element of what the SEI call ‘institutionalisation’ of a process [CMM, 1993]. The following two stage deployment model may be of use in this customisation exercise: Basic process: focus on identifying major/critical defects in the work products defect prevention (see for example Gilb/Graham) not aggressively pursued - for example process improvement suggestions which inevitably arise during the review meeting are raised as related issues - they are a side-effect rather than a focus use simple and few forms e.g. an entry check to the process should occur but it may not require a separate form to be completed 10 minimise the number of meetings in the process e.g. an entry review or check can occur without a formal meeting, an overview/kick-off meeting can be replaced by informal contacts supplemented by distributing a review summary form containing additional roles4, etc. data collection and analysis is simple, minimal and focused concentrate more on the big questions (like does this design address all the requirements) and the more experienced reviewers ability to find the important problems rather than sophisticated criteria/rules and standards - obviously an increasing use of criteria, checklists, etc. should be aggressively planned. informal use of additional reviewing roles. Again, plan to improve. An example would be to better define what the ‘tester’ reviewing role should focus upon when reviewing say a functional specification. Initially, it would be left to individual testers to provide their perspective before these criteria/checklists become available. facilitators and reviewers involved in the process definition and trained etc. Advanced process: basically adopt more of the elements defined in approaches such as Gilb/Graham e.g. specific meetings/organisational structures to aggressively focus on defect prevention formalise more of the process e.g. through specified documented decision points/meetings increase use of data in decision making, analysis and general quantitative control of the process and work products e.g. in process entry/exit criteria more sophisticated code/document sampling strategies increased use of criteria/rules, checklists, etc. for each type of document to be reviewed formalised use of additional reviewing roles for different types of documents facilitators trained and subject to initial and on-going certification etc. This deployment model may be of use to those who understand and believe in the benefits of a process such as that defined by Gilb/Graham but who know from experience or intuition that they actually require something which is more practical and effective for their particular organisation, at least to begin with. In the initial deployment, the model attempts to retain the essence or key elements of the more formalised approaches in order to maximise the benefits achievable from this powerful engineering technique. 8. What therefore are the critical success factors in achieving maximum benefit from formal reviews/inspections? Customise the process to suit your goals and to match your culture/maturity – start simple but formal. Provide initial training and ongoing experienced practitioner support. This support can be in the form of experienced practitioners leading review meetings during initial deployment, holding clinics to assess the process and the level of acceptance, mentoring, etc. Foster continuous process improvement by continually analysing the existing process quantitatively, piloting improvements, expanding the process goals, etc. 4 Note however, that during the initial introduction of a process, the overview meeting is a practical way to reinforce objectives and approach required. 11 Determine and enforce your the optimum checking rate for key parts of documents (i.e. nontrivial parts where Majors can be found). This will involve initially estimating and then calibrating the rate based on real data from your process. Focus on Major defects (not minors) as they are what give the real return on investment5 Focus initially on upstream documents such as contracts, requirements and functional specifications rather than code - the return is greater. Ensure the results and benefits of reviews are quantified and published to all staff. Place increasing emphasis on improving documentation and the development process is general as a result of the improvement suggestions arising from reviews. In relation to the review/inspection process, the documentation of review criteria/rules and checklists is a key factor. 8. References [Boehm, 1981] B. Boehm, Software Engineering Economics, Englewood Cliffs, NJ: PrenticeHall [CMM, 1993] M. Paulk, et. al., Key Practices of the Capability Maturity Model, Version 1.1, Software Engineering Institute SEI-93-TR-025, 1993 [Fagan, 1976] M.E. Fagan, Design and Code Inspections to Reduce Errors in Program Development, IBM Systems Journal, 15(3), 182-211, 1976. [Fagan, 1986] M.E. Fagan, Advances in Software Inspections, IEEE Transactions on Software Engineering, SE-12(7), July, 744-751 [Gilb, 1993] T. Gilb, D. Graham, Software Inspection, Addison-Wesley, 1993, ISBN 0-20163181-4 [Jones, 1996] C. Jones, Quantifying Software Process Improvements, Keynote address, SP’96, (SPI track), Brighton, 1996 [Knight, 1993] J.C. Knight, E. Ann Myers, An improved inspection technique, Communications of the ACM, Nov. 1993. [Schaffner, 1996] TRI-SPIN Case Study on Schaffner pilot available from http://www.cse.dcu.ie [IDEAL, 1997] See http://www.sei.cmu.edu for details [Gilb, 1996] See http://www.stsc.hill.af.mil/SWTesting/gilb.html 5 See [Gilb, 1996] for a more detailed discussion on how to focus on majors, optimum checking rates, etc. 12