Wednesday, June 08, 2005

Software Estimation (Part 3) - Working with the factors

Now that we are able to put together a rough estimate of a project based on use cases, the question comes up - How the heck do we put figures on those crazy factors?

I've found little in the way of guidance on setting some of the factor values, especially the ones pertaining to the environment. Here is a list of tables that I use to help put consistent values on the factors. Most of the TCF tables are straight from the function point counting rules, but the Environmental Factors are pretty much just my stab at them. Feel free to comment on places where you think I'm off.

Total Complexity Factors
TCF01: Distributed System
Distributed System describes the degree to which the application transfers data among the components of the application. Distributed System processing functions are a characteristic of the application within the application boundary.
ValueDescription
0Application does not aid the transfer of data or processing functions between components of the system
1Application prepares data for user processing on another component of the system such as a spreadsheet or database
2Data is prepared for transfer, then is transferred and processed on another component of the system (not for end-user processing)
3Distributed processing and data transfer are online and in one direction only
4Distributed processing and data transfer are online and in both directions
5Processing functions are dynamically performed on the most appropriate component of the system (live connection)

TCF02: Response or throughput performance objectives
Response or throughput performance describes the degree to which response time and throughput performance considerations influence the application development. Application performance objectives, stated by the user, in either response or throughput, influence the design, development, installation, and support of the application.
ValueDescription
0No special performance requirements were stated by the user.
1Performance and design requirements were stated and reviewed by no special actions were required.
2Response time or throughput is critical during peak hours. No special design for CPU utilization was required. Processing deadline is for the next business day.
3Response time or throughput is critical during all business hours. No special design for CPU utilization was required. Processing deadline requirements with interfacing systems are constraining.
4In addition, stated user performance requirements are stringent enough to require performance analysis tasks in the design phase.
5In addition, performance analysis tools were or will be used in the design, development, and/or implementation phases to meet the stated user performance requirements.

TCF03: End User efficiency

End-Use efficiency describes the degree of consideration for human factors and ease of use for the user of the application measured. The online functions provided emphasize a design for end-user efficiency.

The design includes:

  • navigation aids (for example, function keys, jumps, dynamically generated menus)
  • Menus
  • Online help and documents
  • Automated cursor movement
  • Scrolling
  • Remote printing via online transactions
  • Pre-assigned function keys
  • Batch jobs submitted from online transactions
  • Cursor selection of screen data
  • Heavy use of highlighting, colors, underlining, and other stylistic indicators
  • Hard copy user documentation of online transactions
  • Mouse interface
  • Pop-up windows
  • Animated interface (count as 4 items)
  • As few screens as possible to accomplish a business function
  • Bilingual support (supports two languages; count as 4 items)
  • Multi-lingual support(supports more than two languages; count as 6 items)
ValueDescription
0None of the above
1One to three of the above
2Four to five of the above
3Six or more of the above, but there are no specific user requirements related to efficiency.
4Six or more of the above, and stated requirements for end-user efficiency are strong enough to require design tasks for human factors to be included (for example, minimize key strokes, maximize defaults, use of templates, etc)
5Six or more of the above, and stated requirements for end-user efficiency are strong enough to require us of special tools and processes to demonstrate that the objectives have been achieved.

TCF04: Complex Internal Processing

Complex processing describes the degree to which processing logic will influence the development of the application

The following components are present:

  • Sensitive control (for example, special audit processing) and/or application specific security processing
  • Extensive logical processing
  • Extensive mathematical processing
  • Much exception processing resulting in incomplete transactions that must be processed again (for example, incomplete ATM transactions caused by hardware/software failure interruption, missing data values, or failed validations)
  • Complex processing to handle multiple input/output possibilities (for example, multi-media or device independence)
ValueDescription
0None of the above
1Any one of the above
2Any two of the above
3Any three of the above
4Any four of the above
5All five of the above

TCF05: Code must be re-usable
Reusability describes the degree to which the application and the code in the application have been specifically designed, developed, and supported to be usable in other applications
ValueDescription
0No reusable code
1Reusable code is used within the application
2Less than 10% of the application can be extracted for use in another project
3Ten percent (10%) or more of the application can be extracted for use in another project.
4The application was specifically packaged and/or documented to ease re-use, and the application is customized by the user at a source code level
5The application was specifically packaged and/or documented to ease re-use, and the application is customized for use by means of user parameter maintenance

TCF06: Easy to install
Installation ease describes the degree to which conversion from previous environments influenced the development of the application. Conversion and installation ease are characteristics of the application. A conversion and installation plan and/or conversion tools were provided and tested during the system test phase.
ValueDescription
0No special considerations were stated by the user, and no special setup is required for installation. ASP model
1No special considerations were stated by the user but special setup is required for installation.
2Conversion and installation requirements were stated by the user, and conversion and installation guides were provided and tested. The impact of conversion on the project is not considered to be important
3Conversion and installation requirements were stated by the user, and conversion and installation guides were provided and tested. The impact of conversion on the project is considered to be important
4In addition to 2 above, automated conversion and installation tools were provided and tested
5In addition to 3 above, automated conversion and installation tools were provided and tested

TCF07: Easy to use
Easy To Use describes the degree to which the application attends to operational aspects, such as start-up, back-up, and recovery processes. Operational ease is a characteristic of the application. The application minimizes the need for manual activities, such as tape mounts, paper handling, and direct on-location manual intervention.
ValueDescription
0No special operational considerations other than the normal back-up procedures were stated by the user.
1-4

One, some, or all of the following items apply to the application. Select all that apply. Each item has a point value of one, except as noted otherwise

  • Effective start-up, back-up, and recovery processes were provided, but operator intervention is required
  • Effective start-up, back-up, and recovery processes were provided, and no operator intervention is required (count as two items)
  • The application minimizes the need for changing backup media
  • The application minimizes the need for paper handling (don't count if your application contains no paper handling)
5The application is designed for unattended operation. Unattended operation means no operator intervention is required to operate the system other than to start up or shut down the application. Automatic error recovery is a feature of the application.

TCF08: Portable
Portability describes the degree to which the application has been developed for multiple locations and user organizations. The application has been specifically designed, developed, and supported to be installed at multiple sites for multiple organizations
ValueDescription
0User requirements do not require considering the needs of more than one user/installation site
1Needs of multiple sites were considered in the design, and the application is designed to operate only under identical hardware and software environments
2Needs of multiple sites were considered in the design, and the application is designed to operate only under similar hardware and/or software environments
3Needs of multiple sites were considered in the design, and the application is designed to operate under different hardware and/or software environments
4Documentation and support plan are provided and tested to support the application at multiple sites and the application is as described by 1 or 2
5Documentation and support plan are provided and tested to support the application at multiple sites and the application is described by 3

TCF09: Easy to Change

Easy to Change describes the degree to which the application has been developed for easy modification of processing logic or data structure. The following characteristics can apply for the application:

  • Flexible query and report facility is provided that can handle simple requests. For example, and/or logic applied to only one internal logical file
  • Flexible query and report facility is provided that can handle request of average complexity, for example, and/or logic applied to more than one internal logical file (count as 2 items)
  • Flexible query and report facility is provided that can handle complex request, for example, for example, and/or logic combinations on one or more internal logical files (count as 3 items)
  • Business control data is kept in tables that are maintained by the user with online interactive processes, but changes take effect only on the next business day
  • Business control data is kept in tables that are maintained by the user with online interactive processes, and the changes take effect immediately (count as 2 items)
ValueDescription
0None of the above
1A total of one item from above
2A total of two items from above
3A total of three items from above
4A total of four items from above
5A total of five items from above

TCF10: Concurrent
Concurrent describes the software's ability to work with simultaneous users.
ValueDescription
0The application runs on a single device used by a single users. Your typical desktop application
1The application can be used by up to 3 users at the same time
2The application can be used by up to 3 users at the same time and record locking is stated in the user requirements
3The application can be used by more than 3 users at the same time.
4The application can be used by more than 3 users at the same time and record locking is stated in the user requirements
5The application must be able to support an unlimited number of users.

TCF11: Include special security features

Special Security Features include all of the technology the application requires to protect the information it houses. Special Security Features include the following:

  • User authentication required to access all or part of the application
  • Multi-factor authentication required to access all or part of the application (count as 2 items)
  • Application uses encrypted channels to move information between components (SSL, SSH, etc)
  • Application manages its own keys
  • Sensitive data is stored in encrypted forms only
ValueDescription
0None of the above items
1One of the above items
2Two of the above items
3Three of the above items
4Four of the above items
5Five or more of the above items

TCF12: Provide direct access for third parties

The application can be used by people or organizations besides the developing organization and the owner of the application. Third party access can include the following characteristics:

  • The application is available to the general public over the internet
  • The application maintains and manages third party integrations.
  • The application is a consumer of third party services (count one for each third party API consumed).
  • The application publishes and documents a public API
  • The application must directly manipulate third party software without a published API. (count as two items)
ValueDescription
0None of the above items
1One of the above items
2Two of the above items
3Three of the above items
4Four of the above items
5Five or more of the above items

TCF13: Special user training facilities are required

User training facilities are added to the project or required during delivery. Score one point for each of the following User Training included in the application except where noted:

  • Context sensitive help files
  • Printed user documentation
  • Automated software tutorials
  • User certification required (score 2 points)
  • Instructor led training courses
ValueDescription
0None of the above items
1One of the above items
2Two of the above items
3Three of the above items
4Four of the above items
5Five or more of the above items

Environmental Complexity Factors

ECF01: Familiar with Rational Unified Process
Familiar with RUP is a measure of how much experience your team has using your Software Lifecycle Management system. I base this on the average number of projects performed by all team members using your formalized process. I only include projects greater than 3 months in length and using at least 3 developers.
ValueDescription
0Less than 1 project.
1One project
2Two projects
3Three projects
4Four projects
5Five or more projects

ECF02: Application experience
Application experience is a measure of how familiar your team is with the project domain. I use the average number of projects built for the particular industry or discipline the application serves. For example, ecommerce applications or applications for the health care industry. I give a little room for cross industry applications of a similar structure. Again, I only count projects larger than 3 months in length with at least 3 developers. I also count multiple versions of the same project individually.
ValueDescription
0Less than 1 project.
1One project
2Two projects
3Three projects
4Four projects
5Five or more projects

ECF03: Object Oriented Experience
Object Oriented Experience is a measure of how familiar your team is with OO concepts. I base this on the average number of projects performed by all team members using object oriented languages (including some object oriented javascript work and object oriented ColdFusion). I only include projects greater than 3 months in length and using at least 3 developers.
ValueDescription
0Less than 1 project.
1One project
2Two projects
3Three projects
4Four projects
5Five or more projects

ECF04: Lead Analyst Capability
Lead Analyst Capability is a measure of your project leads experience. This one can be a little tough because some subjective judgments can certainly come into play here. As a rule of thumb, I just count the number of years the person has been employed as a project lead. I then cap the figure based on the maximum level for the individual's score under ECF01, ECF02 and ECF03. Since there is a tendency to over-value this attribute, I never round up on years of experience.
ValueDescription
0Less than 1 year of experience.
1One year of experience
2Two years of experience
3Three years of experience
4Four years of experience
5Five or more years of experience

ECF05: Motivation
Motivation is a measure of how eager a team is to be successful on the project. This is an extremely difficult measurement to take. As a rule of thumb, I start with each team member's willingness to work an amount of overtime for at least part of the project. If possible, I look at past overtime records as a benchmark. One technique I use for this measure is to poll the team. I ask them to (anonymously) estimate the level of overtime they think the team is capable of the week prior to the rollout of each iteration milestone. I rank each team member and average the results if possible. I reverse the 4 and 5 positions because I find that at that level of overtime, productivity actually falls. I also add one point to each member's score that has a family. I move anybody that is interviewing or that routinely puts in less than 40 hours a week to zero and contractors never score greater than 3. I generally base this on the team members work week and not necessarily the amount of work they put in on the project.
ValueDescription
0No overtime
110% overtime (44 hour work week)
220% overtime (48 hour work week)
330% overtime (52 hour work week)
450% overtime (60 hour work week)
540% overtime (56 hour work week)

ECF06: Stable requirements

Stable requirements is a measure of how much change can be expected to be introduced during the development process. Control of the requirements process includes the following items:

  • Formal requirements document exists and has been signed off on by team members and end user.
  • Formalized change management system is in use.
  • Weekly end user reviews of progress are done
  • The application already exists and this project is porting to a different platform or a subsequent version.
  • A non-working prototype exists.
ValueDescription
0Requirements document does not exist
1One item from above
2Two items from above
3Three items from above
4Four items from above
5Five items from above

ECF07: Part-time workers

Part-time workers measure the amount of the team that is not dedicated full time to the project. This is not to be construed to mean the team member's employment status.

ValueDescription
0Entire team is on the project full time
110% of the team is working on more than one project
220% of the team is working on more than one project
330% of the team is working on more than one project
440% of the team is working on more than one project
550% or more of the team is working on more than one project

ECF08: Difficult programming language

Difficult programming language refers to the level of complexity introduced by the software language being used. I usually add one point to the most complex language if multiple languages are being used.

ValueDescription
0Template driven development - minimal coding
1Scripting based languages (ColdFusion, ASP, PHP, etc)
2Scripting based languages plus comprehensive framework
3Object Oriented languages (.NET, java)
44th generation languages (C, Pascal)
5Embedded systems, assembly language.


Part 1: What Method to Use
Part 2: Nuts and Bolts
Part 3: Working with the Factors

6 comments:

  1. Mike, Thank you so much for your explanation on the Software Estimation. I'm currently project managing an internal system, going through the Use Case analysis, and I was having trouble coming up with an objective estimation until I ran into your Blog.

    Outstanding summary (And the Excel sheet)!

    Danny

    ReplyDelete
  2. I'm so glad you found it helpful, Danny. I think the approach has a lot of promise for doing some quick estimating.

    It's strange that it seems like something like this isn't catching on. I have to think that a lot of that has to do with many cf shops utilizing the "code like hell" method of software lifecycle management. Any estimating is done subjectively just to get managment out of the IT department.

    ReplyDelete
  3. Hi Mike.
    I normally deal with motivation in reverse order, meaning that overtime is a signal of possibly lowered motivation. However the trick with overtime is also a LOT depending on the way it is paid (and the resulting numbers are hugely different if you count worked hours or paid hours).
    In my personal model motivation is a lot depending on the team feeling (is it an interesting project? on a new technology? something people can learn from? a startup idea? and so on) and also a lot from environmental factors, like how the job is perceived, the quality of the workplace, and so on. In this case, being able to detect people's mood is crucial.
    Put in another way this is a measure of how likely you are to experience people dropout during the project.

    ReplyDelete
  4. I agree Alberto, the motivation factor is one of the hardest ones for me to work with. You could easily take a completely different approach to unpaid overtime (which is what I see most of the time, although bonuses may come into the picture). You could logically look at the employees willing to put in overtime as being stupid. They are voluntarily reducing the value of their time.

    The way I like to work with ot is to do 100% comp time. Each requested overtime hour worked = 1 vacation hour earned. And I don't want to see any OT that isn't requested.

    It's been a while since I pulled these guidelines together, and I don't do the motivation score the same way any more. I pretty much just assign that one based on my general feeling about the level of excitement in the team.

    ReplyDelete
  5. How come, "Part-time workers" has a negative weight? Seems like 5-Entire team is on the project full time, is the best, so the weight should be positive.

    ReplyDelete
  6. @Joe,
    Yeah, I built the table backwards here. I'll fix it up.

    ReplyDelete