Search This Blog

Loading...

2009-12-04

Estimation using Fuction Point Analysis(Part 3)

What is External Interface File(EIF):

EIF is a user-indentifiable logically related data which is utilized by the applicatin but maintained by some other application.They are not maintained by the application.
For example,if you are using credit card information,or using some kind of payment gateway that are only referencing and application don't have the control directly,then this file ise a EIF.

Complexity Table of EIF:
It depends on two things:
-Record Element type(RET):They are logical sub groupings of DET from user view point.If there is no logical grouping of data then we consider it as one RET. In the following context there are several phone number for a customer,but they are logically grouping.

-Data Element Type(DET):Counting of DET doesn't change for EIF,EI,EO,EQ .


EIF complexity table:


What is Internal Logical File(ILF):
An ILF is a user identifiable group of logically related data maintained by the application.
Application have directly control on ILF.
Identify ILF's:
Stored internal to the application
Maintained through a standarized process of application.
User identified.
Temp file are not count as ILF's.

In the above context if your client thing that there is only one phone number for a customer but still you have maintained it in two tables for scale up your application,then you have to count 1 ILF ,but if a customer has multiple phone number and you require two table(master & details) then the ILF should be 2.

Complexity of ILF: It depends on two things:
-Record Element type(RET)
-Data Element Type(DET)
Complexity Table of ILF:

2009-12-03

Estimation using Fuction Point Analysis(Part 2)


What is External Output(EO)?
External Output(EO)-EO's are functions which manipulate data and present to the user.
Manipulation means derived and calculated informaton.
Some of real time EO examples are(becuse it need complex query along with the calculation) -
-Balance sheet report
-Customer monthly statement
-Complex graphical charts like bar chart ,pie chart etc.
If the same EO data is produced on two different media output should be counted as two EO's.In short if the same data is sent on a web page and also on a mobile will be counted as 2 EO's.
Graphical output of data in Pie chart ,bar chart etc should be counted as EO's.
If a report is generated by report generator it should be counted as EO.One EI should be counted for each report command like search ,sort ,merge etc generated by report generator.

What are not EO's?
ADHOC reporting where the end user can fire SQL and generate report is not a EO.For example ,if you have made a simple query window where the end user can fire and get the data are not EO.
Two report showing the different data with same processing logic (suppose one query output is ascending order and another is descending order)should be counted as on EO

Complexity of EO:
Like EI,Complexity of EO is depends on File type reference(FTR) and Data element type(DET)
DET are fields and attributes.
DET should be unique and user recognizable.
Count DET for each parameter in the report.Suppose you are generating reports based on the user input i.e Cust ID and Cust Name,then the DTE is 2
Count DET for each numerical value in a graphical output.Suppose you are showing graph which showing percentage value or other numeric value,you need to count the DET.
Count DET for summary and totalling fields.Suppose yoy are showing each month summery profit and total year profit ,then you should count 1 DET.
Complexity Table for EO:
Like EI,you can determine the complexity of EO from the Complexity table of EO as follows-


What is External Quaries(EQ):
EQ is a unique request for retrieving data.
EQ does not update any ILF's or EIF's.
EQ doesnot contain derived data it simply retrieves the information where EO retrives complex calculated data.Suppose in customer screen ,customer dropdown is EO because it direct fetch data from Customer Master table.

Example of EQ:
Dynamic dropdown or list display
Simple reports displayed from a single table without data manipulation
Section of data retrieval based on input.
Different graphical display request by a user should be counted as EQ.
Help functionality which displays help text or field sensitive help will be counted as one EQ Perscreen.Suppose you have a screen where F1 key press shows the help,then the EQ will be 1 for that.

Complexity of EO: Like EI,EO,Complexity of EQ is depends on File type reference(FTR) and Data element type(DET)

Complexity Table for EQ:

But remember for complex Query ,calculated output you should consider EO and for simple query you should consider EQ(EQ just go for one ILF and displays information)

Estimation using Fuction Point Analysis(Part 1)

Fuction point is a unit of measurefor software size based on user requirements(not the internal process i.e we should not consider the internal complexity or workflow,only consider the user requirement).It was developed by Mr.Allan Albrecht at IBM in the late 1970s,as an alternative of line of code.(line of code has some limitations like its vary language to language and its difficult to predict).

Software measure is a numerical value assigned to a software project depending on the complexity of project.The complexity of software can be known from "Data Collected" and "ClientArtifacts".It can be-
1)Function Points
2)Use case points
3)Lines of code
and convert to Man days,Man month or Man hours numerical values.


The objective of this tutorial is how to calculate this Function point and arrive to Man days so that you can give a proposal to a client.

First see what are the different operations a user does with an application-


The major element of Function point analysis is Application boundaries.There are two Application boundaries-
-1.Internal:Data which is maintained and directly controlled by application(ILF)
-2.External:When data is referenced to external entities(EIF)
The more you have external application boundary the more complexity.So first differentiate the application boundary before FPA.

Now come to the rest of the elements like EI,EO,EQ,EIF and ILF etc.
EI(External Input)-EI moves the data in to the application from external app boundary to internal boundary.EI mainly updates ILF information.
For every add/update and delete count one EI
Every input screen is not a EI.i.e Query screen ,login screen,menus reports screen cannot be counted as EI even there is a user input.
Process that maintain ILF like windows process or batch process that update database should be counted as EI.

EI has two attributes which basically define the complexity of EI
-1.File type reference(FTR):
FTR is a file or data referenced by EI.
Count 1 FTR for every ILF maintained.
Count 1 FTR for every ILF referenced.
Count 1 FTR for every EIF referenced.

-2.Data element type(DET):
DET are fields and attributes.In the above customer screen Customer code,Customer Name are fields or attributes ,so these are DETs.
DET should be unique and user recognizable.If the customer screen comes again for another operation from another menu we should not count DET.
Foreign keys are also DET's.Suppose customer ID is foreign key of address table ,then this foreign key should be counted as DET.
Auto generated fields are also counted as DET as they are maintained in the ILF.Because we have to write seperate logic to create autogenerate numbers.
Duplicate fields populated by the same user input should be counted as one DET.
Error message are counted as DET.


So In this example there is 12 DET and 3 FTR,So from EI rating table 6 is a complexity level of customer screen
If we consider, 3 is a simple,4 is a medium and 6 is a complex,then from EI complexity table we can get the complexity value "complex" for this Customer screen

2009-12-01

Tutorial 14:Exception Handling

Exceptions are unforeseen errors that happen in your programs. Most of the time, you can, and should, detect and handle program errors in your code. For example, validating user input, checking for null objects, and verifying the values returned from methods are what you expect, are all examples of good standard error handling that you should be doing all the time.
using System;
using System.IO;

class FinallyDemo
{
static void Main(string[] args)
{
FileStream outStream = null;
FileStream inStream = null;

try
{
outStream = File.OpenWrite("DestinationFile.txt");
inStream = File.OpenRead("BogusInputFile.txt");
}
catch(Exception ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
if (outStream != null)
{
outStream.Close();
Console.WriteLine("outStream closed.");
}
if (inStream != null)
{
inStream.Close();
Console.WriteLine("inStream closed.");
}
}
}
}