Measuring projects and estimating software applications
It's so easy to measure time. It's so easy to measure distance, too. Temperature,
speed, and so on. Miles, degrees, hours - these are pretty understandable
metrics. The problem occurs when it comes to measuring a project, estimating a software or an application.
How to measure an application?
There are numerous ideas - one worse than another, though. The problem is an increasing complexity, thereupon no direct methods can be used.
For quite a lot of time, the number of lines of application code was thought
to be the most meaningful, but that worked not exactly the way it
should. Basically, there are numerous programming languages that can
be used to reach one goal.
Each of these languages is different and requires different number of data, and - as a consequence - different number of lines of code. Due to that, the same complex application could consist of thousand of lines if written in C++, and of only two hundred lines if designed in Visual Basic, for instance.
Once the "internal" method have failed, people began thinking about estimating and measuring software from the end user's point of view. And the second method was even worse than the previous one, because final functionality
has nothing in common with application's actual complexity. Why did this method fail, too?
It is important to keep in mind that every application's interface is designed as simple as possible. Consider the most popular
example - booking flight tickets. What is the customer (application's end user) asked to do? The only thing he needs is to input the destination
and flight date. He's not obliged to choose the line and compare each
proposition - system's task is to find and present appropriate connections
only. Even though it's all a matter of a few clicks by the customer,
whole system is extremely complex and bases on thousands of particular software algorithms.
How to solve a problem?
What people do to solve complex problems? What they do to answer complex
questions?
When we have a problem that consists of two particular aspects,
we should consider taking care about each aspect separately. Once the
first of problems is solved, we can turn to another. After that, everything
left is to check whether the particular solutions work well together with greater problem.
Back to measuring application complexity, here is where function points play
important role.
Basically, the analysis based on function points can
be compared to slicing the problem into smaller parts. With FPA (Function
Points Analysis) systems are divided into smaller software components, what makes
them easier to analyze and understand.