Skip to main content

Project Estimation Technique


There are several estimation technique which differs based on project to project.

Some of the technique are:

1.    Expert Suggestion
2.    Historical Data
3.    Function Points
4.    Story Points
5.    Lines of Code
6.    COCOMO
7.    Use Case Points
8.    Wideband delphi
9.    Test case point 
10.  Parkinson Law 



Expert Suggestion
This is mos widely used technique.In this estimation technique, you have to rely on his expert experience.Based on his domain and technical capabilities he estimates things for multiple iterations until reached on some consensus.

Historical Data
Based on data available for similar project which has been delivered earlier.You have to compare if somewhat similar project has been completed earlier, approximately same amount of estimate will be for this project as well.

Function Points
In this Estimate technique we take multiple factors for deciding estimation.

Input
Output
Internal Queries
External Queries

based on no of input, output, enquiries, reading/writing  from internal database or reading from external read only database function points has already decided after several research we just have to count them & sometimes multiply by some adjust factor (based on implicit requirements like performance etc). After getting function points we multiply it by productivity factor ( how much function points in any particular will take how much efforts) & get required days or person months.Its one of most standard technique for estimation across industry).


Story Point 
This technique is mostly used in Agile methodology where we do relative estimate & give some points based on complexity.

There may be many scale & one common scale used as  Fibonacci series (1, 2, 3, 5, 8, 13, 21).  There could be other possible scale. More complex user story is more high number in series. Bigger then 13 or 21 can be break into smaller task.

Planning Poker is a estimation game in agile where we decide complexity with help of story point cards.

SLOC
Software line of code. It may be physical means all the lines count including comment & blank line or may be logical which means executable line of codes.We may divide task to sub tasks to sub task & estimate line of code. It get counted in KLOC. 

Cocomo Model
This is very extensive estimation model which is available as basic, intermediate & advance sub models.

Use Case Points
In this technique we divide functionality based on use cases. We assigned some weight to use case category which could be simple, average, Complex, very Complex etc.  So after multiplying weigh factor to no of use cases of that category we get some estimations.

Wideband delphy
Team members give their individual advice. Based on their estimate we discuss why some one things its more complex & more time or someone who things its trivial & will take less time. Then we try to come at come consensus where everyone agrees about complexity & duration.

Test Case Point
In this technique we take test case as input.We estimate size of testing project project with this style or technique.

Parkinson Law
Count efforts on man months. This estimation is based on resource available. If a project required 10 month & we have 5 resource needed to work on it so work will be 50 man months.




Comments

Popular posts from this blog

Conversion from Clob To String in java and Vice versa

/***reading Clob data from oracle table and setting to Pojo**/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import oracle.sql.CLOB;

import com.poc.one.pojo.StagedMessage;

public class MessageDao {
private static String url = "jdbc:oracle:thin:@172.22.22.198:1521:ORACLE";
private static String username = "ABC123";
private static String password = "ABC123";


public  List readClobToBO() throws Exception {

Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection(url, username, password);
PreparedStatement stmt = conn
.prepareStatement("SELECT ID, STORE_ID, MESSAGE_DATA FROM STAGED_MESSAGE ");
ResultSet resultSet = stmt.executeQuery();
List msgList= new ArrayList();

while (resultSet.next()) {

StagedMessage message = new StagedMessage();

message.setId(resultSet.getInt(1));
message.setStoreId(r…

Portable Java 8/ JDK8 setup without admin rights

Some time we got machine to work where we don't have access rights to install anything or if you do not want to install. You can get latest jdk running by this trick. Just follow step step & do comment if you like it.

Step by Step details to get running java from .exe setup without any admin rights. Get portable 7 zip from portableapps.comdownload java 8 from oracle  http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htmlopen 7 zip & extract jdk-8u102-windows-x64.exeyou will see below folders                .data                .pdata                .rdata                .reloc                .rsrc                .text                CERTIFICATE

          5.Go inside E:\jdk-8u102-windows-x64\.rsrc\1033\JAVA_CAB10you will find 111 file.

         6.extract it it some folder where you can find tools.zip again extract that to some folder say Java & copy it to very first folder of setup along with .data,.rsrc etc.
         7.Go to folder where you have co…

Multi Threading , Producer consumer problem in Java

Multi threading is topic which is always fascinating for java developer. I feel its more about practical the theory. So here i wanted to present sample examples which clear understanding for several multi threading concept.

In Theory basically thread which is light weight process.Thread shares mostly same memory space.
I said mostly because there is some space called thread local which is not common to threads & separate for each thread. We create thread whenever we wanted to use multicore of processor although that doesn't mean single core cant use it. In single core context switching works among different running thread.

for example suppose there is website which is showing latest price as well as offer as well as doing order booking all these things can be assigned to different thread to provide parallel processing.



There are 2 ways for creating a thread.

Extend a thread & Implement a Runnable class. Extending a class is little avoided since it closed possibility for e…