How to compute % defects removed from release candidate code

June 27th, 2009

Recently someone on StackOverflow.com asked me to explain how to compute the defect removal rate for release candidate software.  There are two methods for producing this number and I teach both in several of my seminars, but I’ll explain the simpler method in this post…

Lawrence Putnam presented this model in his 1992 Book titled Measures for Excellence.  His book reads more like a math text than a software development guide, and suffers from an unfortunate formula typo which has lead to widespread confusion about his models in the industry, but I will  explain his defect removal rate calculation process.  (I hired a math wizard to examine his data and correct the formula!)

1. For a typical project, code is produced at a rate which resembles a Rayleigh curve.  A Rayleigh curve looks like a bell curve with a long-tail.  See my ASCII graphics below:

        ||||
    |||||||||||
 |||||||||||||||||
|||||||||||||||||||||||

2. Error ‘creation’ typically happens in parallel and proportional to code creation.  So, you can think of errors created (or injected) into code as a smaller Rayleigh curve:

        ||||
    |||+++|||||
 ||||+++++|||||
||||+++++++||||||||

where ‘|’ represents code, and ‘+’ represents errors

3. Therefore, as defects are found, their ‘detection rate’ will also follow a Rayleigh curve.  At some point your defect discovery rate will peak and then start to lesson.  This peak, or apex, is about 40% of the volume of a Rayleigh curve.

4. So, when your defect rate peaks and starts to diminish, factor the peak as 40% of all defects found, then use regression analysis to calculate how many defects are still in the code and not found yet. 

By regression analysis I mean if you found 37 defects at the apex after three weeks of testing, you know two things:  37 = 40% of defects in code, so code contains ~ (37 * 100/40) = ~ 93 errors total, and your finding about 10.2 defects per week, so total testing time will be about 9 weeks.

Of course, this assumes complete code coverage and a constant rate of testing.

Hope this is clear.

Mike J. Berry
www.RedRockResearch.com

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • Fark
  • Netscape
  • StumbleUpon
  • Technorati
  • YahooMyWeb

A Free Software Requirements Specification Template (SRS)!

May 19th, 2009

Need a good software requirements specification (SRS) template?  Use an industry-standard SRS.  Can’t find one?  Well now you have-get it here for free.  Enjoy!

Mike J. Berry
www.RedRockResearch.com
Software Developement Process Guidance

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • Fark
  • Netscape
  • StumbleUpon
  • Technorati
  • YahooMyWeb

25 Most Dangerous Information Security Programming Errors

January 18th, 2009

Want to visit ground-zero for data security?  Experts from SANS, MITRE, SAFECode, EMC, Juniper, Microsoft, Nokia, SAP, Symantec, and the U.S. Department of Homeland Security’s National Cyber Security Division last week presented a listing of The Top 25 Most Dangerous (Information Security) Programming Errors.  Expect to see future government and big-money RFP’s mandate these items be addressed.

Mike J. Berry
www.RedRockResearch.com

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • Fark
  • Netscape
  • StumbleUpon
  • Technorati
  • YahooMyWeb

Anatomy of an Execution Plan

January 11th, 2009

Have you been challenged with performing a high-risk task like upgrading a prominent server, for example?

Here’s an execution plan template that you can use to guide you.

I. Executive Summary
Brief overview of intended event.

II. Review of Discovery
Details of what efforts were made to research what is listed in the following sections.  Meetings, Vendor consultations,  OnLine Resources, and Conventional Wisdom can be included.

III. Pre-Upgrade Procedures
Steps identified to be taken before the event.

IV. Upgrade Procedures
Steps identified to be taken during the event.

V. Post-Upgrade Procedures
Steps identified to be taken after the event.

VI. Test Plan
Verification procedures to confirm the event was a success.  This section should define the success criteria.

VII. Rollback Plan
In case the worst happens, what to do.

IIX. Situational Awareness Plan
After-the-event steps to validate the success of the event with the system’s business users.  This would include a two-way communication between your group and the business users, announcing the success, and providing contact information for them to contact you in case there is still a problem.

IX. Risk-Management plan
A plan listing risks associated with the steps above and recommendations as to how to lower those risks.

X. Schedule
If the event spans many hours or days, you may want to draft a schedule for the benefit of all involved.  Include on the schedule the ‘rollback point,’ which would be the latest time a rollback could be successfully performed.  Your success criteria whould have to be met by this point to avoid a rollback.

Be sure the Execution Plan is in a checklist format, not a bullet-list format.  Require participants in the event to ’check’ completed checklist items and sign-off sections they are responsible for. 

For critical areas of high-risk, (ie: setting up replication), for example, you may want to require two individuals to perform the checklist steps and sign their names when that section is complete.   

If you like, add a ‘lessons learned’ section to be completed later, and keep a copy of the execution plan for historical purposes. 

Mike J. Berry
www.RedRockResearch.com

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • Fark
  • Netscape
  • StumbleUpon
  • Technorati
  • YahooMyWeb

Excellence over Heroics

November 12th, 2008

I value Excellence over Heroics. 

‘Excellence’ can be defined as “the crisp execution of established procedures.”  Think about that for a minute.

Do you know of a software development shop where several prominent developers often stay up late into the night, or come in regularly over the weekend to solve high-profile problems, or put out urgent mission-critical fires?

The thrill of delivering when the whole company’s reputation is at stake can be addictive.  I remember once staying up 37 hours in-a-row to deliver an EDI package for a bankers convention.  I was successful, delivering the application just before it was to be demo’d.  I went home and slept for 24 hours straight afterwards. 

The problem with ‘Heriocs’ is that the hero is compensating for the effects of a broken process.  Think about that for a minute.

If heroes are needed to make a software development project successful, then really something upstream is broken. 

Most problems requiring heroics at the end of a project stem from improper effort estimations, inability to control scope, inadequate project tracking transparency, mismanaged Q/A scheduling, unnecessary gold-plating, or inadequate communication between the development team and the project users/stakeholders.

A well-organized development group humms along like a well-oiled machine.  Proper project scoping, analysis, design deconstruction, estimating, tracking, and healthy communication between development and the users/stakeholders will bring that excellence that trumps heroics.

Hey, I hear that Microsoft is looking for some Heroes.

Mike J. Berry
www.RedRockResearch.com

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • Fark
  • Netscape
  • StumbleUpon
  • Technorati
  • YahooMyWeb

NewsCHIME.com passes the 100+ repeat visitor mark!

October 23rd, 2008

NewsCHIME.com, the ‘News from everywhere, every 10 minutes’ website has officially passed the 100+ repeat visitor mark!  This site was launched in May of ‘08 with no advertising at all, and now enjoys more than 100 repeat visitors, and over 1000 unique visits per month. 

I classify a ‘repeat visitor’ as somebody who has come back four or more times.   The number four is kind of arbitrary, but I think somebody who comes back only once or twice is not really a captive audience participant.  They are more link a potential customer peering into the store window.

NewsCHIME.com was created to bring headline news to people who, like me, love to read the news.   We love it so much, in fact, that that’s all we want to see on the site–news headlines and nothing else. 

Have a BlackBerry and a few spare minutes between (or during) your meetings?  Go to NewsCHIME.com and check out what’s happing across the world!

Need to do research for education, work, or personal interest?  You can search for headlines topics from the past 18 months or so on the search page.  

This works great if you are expected to know about something newsworthy in a short amount of time.

For example, a search for ‘Obama’ or ‘McCain’ and a quick headline perusal will give you a one-sentence summary of everything noteworthy these candidates have done for the past 18 months.  10 minutes on NewsCHIME and you be more infomed about the upcoming presidential election than more than 300 million other people.

Need research project material on the mortgage meltdown, type ‘mortgage’ and you’ll see the unfortunate play-by-play.

Be sure to take note of what you will NOT see at NewsCHIME.com.  You will not see lots of useless links to various websites that have nothing to do with your topic.  You will not see pictures of dancing people,  and you will not see ads from GM, Chevy or eHarmony. 

I almost forgot to mention, NewsCHIME has free news alerts!  That’s right, Free!  Sign up and select which search criteria you want, and as those terms are named in news events you’ll be the first one to know about them. 

So, impress your friends, impress your boss, impress you teacher.  The faster you can get at information, the more beneficial your decisions will become.  Enjoy.

Mike J. Berry
www.RedRockResearch.com

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • Fark
  • Netscape
  • StumbleUpon
  • Technorati
  • YahooMyWeb

Book Review: Motivating Employees

June 23rd, 2008

Employee motivation is an ever-present concern for most proactive managers.  Interestingly enough, motivation can come from both functional and dysfunctional sources. 

I’ve seen employees motivated for many different reasons: recognition, financial incentive, empowerment, personal growth, tension release, fear, and finally there’s that weird Lord of the Flies thing where employees get motivated together against another employee. 

In their book, Motivating Employees, Anne Bruce and James S. Pepitone describe the most effective ways to motivate a team.  They describe the three C’s which are vital to functionally motivating employees:

1. Collaboration: Be sure to involve employees in decisions and discussions where their efforts are involved.

2. Content: As they produce suggestions, act on those suggestions immediately.

3. Choice: Be sure to offer choices to your employees–even if you can predict what they will decide. 

These three techniques actually empower your employees.   Involving employees in decisions that affect them, or the outcome of what they are working on produces a level of buy-in that is hard to match any other way.

Bruce and Pepitone continue with an examination of Theory-X and Theory-Y motivation and management styles.  These styles were originally presented in the 1960’s by Douglas McGregor. 

McGregor states that Theory-X managers proceed from the assumption that their employees are uninformed, lazy, and needy of high-structure. 

Theory-Y managers, however, proceed from the assumption that their employees are qualified, intelligent, and capable of making proper decisions provided they are given proper goals, accountability, authority, and resources to accomplish their tasks.

Although Theory-X is the most effective approach during some situations, if you consider the amount of college-educated employees in the workforce today, it’s easy to see how Theory-Y, if applied properly, yields much higher performance.

The authors continue with a formula for encouraging Entrepreneurial Thinking.   Their five-step formula is:

1. Explain the organization
2. Demonstrate how the organization operates and generates income
3. Help your employees understand the competition
4. Encourage intelligent risk-taking
5. Inspire innovative thinking

Another great idea the authors present is to link motivation to performance.  They suggest you develop a written-list of performance standards for meeting and exceeding the expectations you’ve agreed upon during collaborative sessions with them.

The authors talk about how important it is to weave fun into everything your organization does.   This may sound like a unusual suggestion at first, but the authors point out that there is a direct correlation between fun on the job and employee productivity, moral, creativity, satisfaction, and most importantly–retention.

The final few chapters in the book discuss de-motivating factors (or individuals), and how to deal with them.  There is also a good chapter on conducting effective employee-reviews.

Overall I recommend this book to any manager.   It’s a great book to re-read every so often.

Mike J. Berry
www.RedRockResearch.com

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • Fark
  • Netscape
  • StumbleUpon
  • Technorati
  • YahooMyWeb

www.NewsChime.com

June 3rd, 2008

The value of information…

Here’s a fun site if you are a news junkie.  www.NewsChime.com is a simple site that grabs news headlines from major news sites and lists them in an easy-to-peruse text-only format. 

I’ve got the site on my PDA which makes reading news articles perfect for that boring meeting or that inconvenient 10-minute wait you hadn’t planned on.

An interesting feature on www.NewsChime.com is the ability to search for keywords in past news headlines.  Want to know what has been newsworthy about Hillary Clinton, or Barack Obama?  Housing Crisis?  Gas Prices?  You can easily search for past headline keywords with this feature.

www.NewsChime.com also allows you to get news alerts sent to your phone or email.  I have news alerts sent to my phone about mortgage prices, home-loans, home-lending, and foreclosure because we talk a lot about this at work.  It’s been fun to be the first one at the office to know the latest.

www.NewsChime.com is a free service.  Enjoy.

Mike J. Berry
www.RedRockResearch.com

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • Fark
  • Netscape
  • StumbleUpon
  • Technorati
  • YahooMyWeb

Software Production Support

May 20th, 2008

In a conversation with a friend once, they jokingly described their inability to play racquetball against other seasoned players as ”They are playing racquetball, while I am just hitting a ball around the room.”

I’ll borrow that reference and apply it to Software Production Support.

Is your Software Production Support group ”playing racquetball,” or are they “just hitting a ball around the room?”

From a distance they can appear like the same activities.  On closer inspection however, one is much more organized, elegant, patterned, and proactive–while the other is only reactive. 

Finding the order from all the choas separates the effective from the ineffective.

There are three particular areas your Software Production Support team should be focus on.  These three areas are:

1. Maintaining Systems
2. Managing Customer Expectations
3. Become a Quick-Reaction Force

1. Maintaining Systems:

Think of your production servers like a fleet of cars.  In a fleet plan, the company sends every car to get an oil change after x number of miles, a tire rotation after y number of miles, and a general tune-up, fluid change, etc. after z number of miles.  This pattern repeats itself for the life of the car that is serviced by the fleet manager.

How often are your server hard drives defragmented?  How often are the transaction-logs backed up?  How often are the indexes reindexed, and the statistics updated?

How often are memory settings adjusted for performance? Latest patches applied? How often are your servers checked to see if there any impending disk space issues? 

To maximize system performance, create a “fleet plan” for your servers which checks all of these items at regular intervals.

2. Managing Customer Expectations:

If a server fails, do you know which systems depend on it? If a database goes corrupt, do you know which applications need it, and which corresponding business units will be impacted when that happens? 

Do you have a way to communicate to those groups immediately?

Create a dependency map for your products.  A dependency map illustrates which servers host which databases, and then which databases are used by which applications, and finally the names, numbers, and email groups of the business users that are affected by that server/database failure.  This will enable your team to proactively manage your customers expectations.  You can notify them before they have to notify you.

3. Become a Quick-Reaction Force:

The SWAT team, the FireStation, and the Ambulance services all have something in common: they are ready to take action at a moment’s notice.

They have the information they need available to them, and additional services available with a simple call.

Do your products have support information organized and readily available?  Do you have the names and numbers of your account representative for each third-party product or tool you support?  Do you have the product-support phone numbers and your support plan credentials readily available?

Do you know who knows what about each application in your enterprise?  Who programmed it originally?  Who has supported it lately?  Which business units use it?  Where is the source code located?

Keeping information about each system updated in a central location should also be part of your “fleet plan.”

Another effective tool for a Quick-Response group is a monitoring system.  Something that indicates the overall attitude of each of your production servers?  Disk Space available? Will the system reply to a ping?  Is SQL Agent running? Is that required Windows Service up and running?  Monitoring tools like Nagios can do this for you.

 Another great idea is to keep a lessons-learned log for each component you support.  Track problems, fixes to problems, assumptions to be confirmed, and ways to test if the component is functioning properly. 

All of these pieces in place will make your production support much more effective.

So, think about it…is your Software Production Support team playing racquetball, or are they just hitting a ball around a room?

Mike J. Berry
www.RedRockResearch.com

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • Fark
  • Netscape
  • StumbleUpon
  • Technorati
  • YahooMyWeb

What does it mean to be a Professional?

April 10th, 2008

Decades ago I had a friend tell me this question was posed to their High School class. I never found out what the class concluded.

Over the years I have thought often about the answer to this question.

My earlier conclusion was that professionalism meant a separation of work and personal life.  This is something that I think the older generation is better at.  The younger generation seems more transparent about personal matters in the workplace. 

As the years go by, however, my experience doesn’t support this conclusion as a definition of professionalism.  I find many professionals are actually quite personable.

This has caused me to re-evaluate the answer to this question.

I think the answer I would give now is that professionalism means ownership.  It means responsibility and accountability for producing the appropriate results.

I walked into a CostCo last week looking for a large household item.  I found a smiling attentive employee with whom I asked where I might find the item I was looking for.  He said “I’m new here,” and shrugged his shoulders.

There was this moment of pregnant miscommunication.

No doubt he was unable to help me due to his present unfamiliarity with the store layout, but as a customer I felt neglected.

I thought to myself, “Well, are you going to get someone for me who knows where this item is?” And then I realized I had, perhaps, misaligned expectations for customer service from a new employee at a wholesale warehouse selling everything from car tires to margarine.

Then the light bulb went on—a more professional employee would have “owned” my problem.  They would have found someone who did know where my item was and would have walked with me until my problem was solved. 

Suddenly I realized I had the answer to my decades-old question: Professionalism means ownership.   Ownership of issues.  Ownership of assignments.  Ownership of tasks.

My thanks go out to the anonymous clueless employee.  After several decades, I finally have my answer.

How would you answer this question?

Mike J. Berry
www.RedRockResearch.com
 

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • Fark
  • Netscape
  • StumbleUpon
  • Technorati
  • YahooMyWeb