Do You Know The Size Of  Your Application???

"For example, who of YOU that wants to build a tower does not first sit down and calculate the expense, to see if he has enough to complete it? Otherwise, he might lay its foundation but not be able to finish it, and all the onlookers might start to ridicule him,  saying, 'This man started to build but was not able to finish.'"-Luke 14:28-30(NW).

The context of the above statement shows that Jesus was not just giving some common-sense advice for mundane undertakings. He really was talking about counting the cost of  becoming his disciple. However, the basic principle still applies and is often overlooked in producing software.

How do you start any structure? You want to know the cost first, don't you? Well, the cost is connected to the size of the project.
Once you have the size you can determine scheduling, development complexities, level of effort, and staffing. So what is a method for determining the size of a software project?

One method that is considered one of the best methods in software measurement is function point analysis(FPA). This is a method for counting inputs, outputs, queries, and logical data groupings. (An extension of this method is called feature point counting. This method is still in it's early stages and takes into account key algorithms.) The results of function point counting are predictable and can be used to determine how long it takes to develop different different aspects of a software project.

I will not go into detail on how to calculate function points. There are more references at the end of this article on counting function points. I will talk about the benefits of FPA.

Take a look at this picture:

This is a picture of an application that was taken from a discussion on function points at http://www.rdisoft.com the home site of Geneer Software Development Partners (Very good information there. Check it out). This application has a size or function point count of unadjusted total of 29 function points (Go to the Geneer site at  http://www.geneer.com/pub/expertise/whitepapers/samplefpa.asp
for information on how the count was determined.). This total  is then adjusted by assigning a ranking of 0 to 5 to each of the 14 general system characteristics according to their degree of impact on the application which include

  • Data Communication
  • Distributed Function
  • Performance
  • Heavily Used Configuration
  • Transaction Rates
  • On-Line Data Entry
  • Design for End-User Efficiency
  • On-Line Update
  • Complex Processing
  • Reusability
  • Installation Ease
  • Operational Ease
  • Multiple Sites
  • Facilitate Change

  • The above application consists of 2 files and around 70 different fields called data element types in FPA.

    Now, how long would it take you to write this application in Clarion? A couple of  hours? Maybe half a day depending on you skill level.  So now you know how many function points you can complete over a certain time period.

    Lets say you're a real Clarion hotshot and you can write this app in an hour , then we can reasonably say you can write 30 function points an hour (or by the end of the day, if not, in one morning, using standard Clarion tools including templates, data dictionary configuration, OOP classes, etc). If this was part of a larger system say 1000 function points with like complexity. One skilled Clarion programmer can complete the entire system for beta testing in about 34 hours. Two programmers can write it in 17 hours. Well what just happenned here? We sized the system, staffed, and we can start putting it on a timeline. Of course, you need to have baseline timimg information (Dev Monitor from Steslth Software is great for timing) to know how much it takes to complete a given procedure. Then you'll need to size that procedure  in function points.Collect this kind of data into a database and you will be able to size, staff, and schedule almost any project. I'll leave the other details to you.

    What else can a Clarion programmer do with FPA? If you go to http://www.rdisoft.com/pub/expertise/whitepapers/fpsoftletter1.asp , you'll learn that the average output for a windows client-server application programmer might
    end up being about 12 function points per month. You read correctly. Check it out at the Geneer site!. If you track your function points you will have very useful data for comparing your estimates against your competitors. You can do your own marketing with FPA.

    Function point analysis is not a complex engineering method. It's quite simple once you get the hang of it. It is being evaluated as a method of determining the value of software by the IRS, also to determine software quality, make-versus-buy scenarios, etc ...
    So stop relying on wild guesses. With function points you can be more confident about your software estimates.

    Below are important FPA websites:

  • Engineering Function Points and Tracking System, by Donald C. Umholtz and Arthur J.Leitgeb
  • Scientific American Article (December 1998) by Capers Jones entitled "Sizing Up Software"
  • International Function Point Users Group
  • Software Productivity Research
  • Geneer Software Development Partners

  • For books on the subject check out these sites:

    Amazon.com
    (For comprehensive discusion of software metrics with empirical data, statistics and graphs, I recommend Applied Software Measurement : Assuring Productivity and Quality by Capers Jones, T. Capers Jones / Hardcover / Published 1996 )

    ComputerLiteracy.com
     
     

    Send me comments and questions.
     

    Mike Pasley
    Team Topspeed - Internet Connect
     
     
     

    Questions? Comments?
    Email MikePasley at mpasley@logicentral.com
     
     

    An mp.jpgSite Development - Copyright 1998