I provide, here clear explanations and a count of function points, using the Symons Mark II method.
We start by identifying the subprocesses (entry, exit, read, write) for each functional process; The size of a functional process is the sum of its data movements (entry, exit, read, write) and the size of a piece of software is the sum of the sizes of all of its functional processes.
So the Function Point Index (FPI) for an application is: FPI = Wi * SNi + We * SNe + Wo * SNo, where ‘S‘ means the sum over all Logical Transactions, and the industry average weights per Input Data Element Type, Data Entity Type Reference and Output Data Element Type are, respectively:
Now here is an example of this in practise, intended to demonstrate the practicalities of performing the count, see the Simmons counting point manual (CPM) for information about the rules used.
Specification:
Let us assume a data model for a simple software system intended to keep track of the sales, products, and stock (inventory) of a pizza restaurant.
The system should be able to have sales details entered, including the type and number of each product in each sale This allows a receipt to be printed for the customer.
It also allows the inventory(stock) to be automatically updated. It should be possible to add new products, delete existing products, or modify the recipe of a product. It should be possible to produce a product report listing all the products available.
As well as listing each product, this report will also show, for each product, the product no., the product description, its constituent item nos., item descriptions, and quantity used. A weekly report should be produced automatically, each Monday at 8am, showing the quantity of each product sold in the previous week.
The process of sending orders to suppliers is not shown in the model. This is because each authorised supplier has access to the restaurant system and is expected to dispatch a standard quantity, with its invoice note, when the stocks of any items which it supplies fall below the minimum order quantity. When a consignment arrives from a supplier, it should be possible to enter on the system the details of the items/quantities/prices, so that the inventory(stock) is automatically updated.
At the end of each month the accountant inspects the invoices and pays the bills. It should be possible for her to record that an invoice has been paid. Access to the system is through a single menu.
Generic assumptions:
1) This Function count was obtained using MkII version 1.3.1 of the CPM based on a project viewpoint, only logical transaction sizes are given since there is no data for effort.
2) As per rule 1 of the CPM, only functional requirements directly referenced in the user specification are considered, corrections are only made to provide such functionality therein.
3) Given that there is no historic data about effort required in previous systems, I have used the following industry standards weighing: 0.58 for Wi, 1.66 for We and 0.26 for E0.
4) The intention is to present an abstract, theoretical view of the major entities and relationships needed for management of electronic resources.
5) This pizza restaurant is not very service oriented and does not allow customers to mix and or match toppings.
6) This is a 'McDonald' style system where products are quantity controlled by weight.
Transactional Functions:
[a] Enter sale details (External input);
Assumptions:
1) Receipt number is automatically generated .
2) “Product_Description” is assumed to be a summary entry of about 60 characters, including the name
3)Product entity requires the attribute “Type_Of_Item”, to store category data, there is a distinction between the manufactured goods sold such as soft drinks and the pizzas that are created in-house.
Inputs:
1) Select new sale (control); User action expressed by selection of command [Sale: Receipt_No].
2) Select product type (business); User choses from categorised drop-down list of pizza related product types [Product: Type_Of_Item].
3) Select product “name” (business); User choses from a drop-down list of pizza related goods. [Product: Product_Description > Receipt_No & Product_No].
4) Select number of item (business); Customer may order 3 large margarita pizzas [Item_sale: Quantity_Sold].
5) Confirm sale (control); This is a recursive menu selection system.
Outputs:
1) Error/conformation (control); End of sales data interaction cycle.
Entities: 1) Sale; Occurrence of a sale recorded here [Write All data].
2) Item_sale; Functional relationship to sale entity (List of products for this sales) [Write all data].
3) Recipe; Required to determine the inventory items to be subtracted from the inventory_item entity [Read all data].
4) Inventory_item; Required to change the inventory(stock) level for items used [Read Item_No, Write Quantity_In_Stock] (Quantity of Item x - Recipe:Quantity_Used).
5) System; Provides the automatically generated sales receipt number and Date.
FPI count: (0.58*5) + (1.66 * 5) +(0.26*1) = 11.46
[b] Add new products (External input); Assumptions:
1) Product & item numbers are automatically generated.
2) The inventory included food items and related products such as recipe ingredients for the piazzas and both the can, boxes and plastic utensils.
Inputs: 1) Select new product (control); User action expressed by selection of command [Product: Product_No, Recipe: Item_no, Inventory_item: Item_no].
2) Select type of item (control); Required for product classification [Product: Type_Of_Item > Inventory_item: Type_Of_Item];
2a) Or enter new product type (control);
2b) Enter product type name (business); [Product: Type_Of_Item];
3) Enter product description (business); Product description [Product: Product_Description].
4) Select item (business); [Recipe: Product_no > Inventory_item: item_no].
4a) Or enter Item Description (business); Goods description, [Inventory_item: Item_Description].
4b) Enter stock level (business); [Inventory_item: Quantity_In_Stock].
4c) Enter item reorder level (business); [Inventory_item: Minimum_Order_Quantity].
5) Enter quantity (business); Quantity of the item per sales unit a bit ridiculous for products that do not require ingredients [Recipe: Quantity_Used].
6) Add ingredient to product (control); Optional, not all products require additional items.
6a) Enter Item Description (business); Good description, [Inventory_item: Item_Description].
4b) Enter stock level (business); [Inventory_item: Quantity_In_Stock].
4c) Enter item reorder level (business); [Inventory_item: Minimum_Order_Quantity].
Outputs: 1) Error/conformation (control); End of sales data interaction cycle.
Entities:
1) Product; Occurrence of a product recorded here [Write all data].
2) Recipe; Link entity, for the inventory required to deliver the project [Write all data].
3) Inventory_item; Stores the stock data for the goods ,[Write all data].
4) System; Provides the automatically generated product and item numbers..
FPI count: (0.58*14) + (1.66 * 4) +(0.26*1) = 15.02
[c] Delete existing products (External input); Assumptions:
1) Despite being required to make the system efficient, inventory control operations are not included here.
2) Here Delete refers to the recipe entry.
Inputs:
1) Select product deletion (control); User action expressed by selection of command.
2) Select product type (business); User choses from categorised drop-down list of pizza related product types [Product: Type_Of_Item].
3) Select product “name” (business); User choses from a drop-down list of pizza related goods. [Product: Product_Description > Receipt_No & Product_No].
4) Select deletion (control); “This will delete selected product. Continue [Y/N]”
Outputs:
1) Confirmation to user (control);
Entities:
1) Product; Occurrence of a product recorded here [Read all data];
2) Recipe; Stores the inventory data required for the product, [Read all data].
FPI count: (0.58*4) + (1.66 * 2)+ (0.26*1) = 5.9
[d] Modify product recipe (External input); Assumptions:
1) Recipe refers only to the ingredients and amounts required.
Inputs:
1) Select product Modification (control);
2) Select product type (business); User choses from categorised drop-down list of pizza related product types [Product: Type_Of_Item].
3) Select product “name” (business); User choses from a drop-down list of pizza related goods. [Product: Product_Description >Recipe: Product_No].
4) Select deletion (control); “This will delete selected item. Continue [Y/N]”
5) Change quantity of item (business); User choses from a drop-down list of pizza related goods. [Product: Product_Description > Recipe: Quantity_Used].
6) Add ingredient to product (control); Optional, not all products require additional items.
6a) Enter Item Description (business); Good description, [Inventory_item: Item_Description].
6b) Enter stock level (business); [Inventory_item: Quantity_In_Stock].
6c) Enter item reorder level (business); [Inventory_item: Minimum_Order_Quantity].
Outputs:
1) Confirmation to user (control);
Entities: 1) Product; Occurrence of a product recorded here [Read all data];
2) Recipe; Stores the inventory data required for the product, [Read all data].
FPI count: (0.58*9) + (1.66 * 2) (0.26*1) = 8.8
[e] Report all available products (External output);
Inputs:
1) Select Report products (control); User action expressed by selection of command.
Outputs: 1) Time and date;
2) Heading;
3) Product_No;
4) Product_Description;
5) Item_No;
6) Item_Description;
7) Quantity_Used;
Inventory_item: Type_Of_Item];
2a) Or enter new product type (control);
2b) Enter product type name (business); [Product: Type_Of_Item];
4) Select item (business); [Recipe: Product_no > Inventory_item: item_no].
4a) Or enter Item Description (business); Good description, [Inventory_item: Item_Description].
4b) Enter stock level (business); [Inventory_item: Quantity_In_Stock].
4c) Enter item reorder level (business); [Inventory_item: Minimum_Order_Quantity]. 5) Enter quantity received (business); Additional Quantity of the item [Invoice_item: Quantity_Added> Inventory_item: ].
Outputs:
1) Confirmation to user (control);
Entities:
1) Product; Occurrence of a product recorded here [Read all data];
2) Inventory_item; Stores the inventory data required for the product, [Read all data].
3) Invoice_item; Stores the inventory data required for the product, [Read all data].
FPI count: (0.58*9) + (1.66 * 4) (0.26*1) = 12.12
[i] Record payment of invoices (External input); Inputs:
1) Select orders (control);
2) Select product type (business); User choses from categorised drop-down list of pizza related product types [Inventory_item: Type_Of_Item].
3) Select product “name” (business); User choses from a drop-down list of pizza related goods. Inventory_item: Item_Description > Invoice_item: item_no ].
4) Select payment received (business); User records that an invoice has been paid.
Outputs:
1) Confirmation to user (control);
Entities:
1) Inventory_item; Stores the inventory data required for the product, [Read all data].
2) Invoice_item; Stores the inventory data required for the product, [Read all data].
3) Invoice; Occurrence of a consignment recorded here.
FPI count: (0.58*4) + (1.66 * 3) (0.26*1) = 7.56
Virtual system entity functions:
[a] Generate receipt number (business);
[b] Generate date and time stamp (business);
[c] Error reporting (control);
[d] Generation primary keys indexes (business);
[d] Process conformation (control)
I am the website administrator of the Wandle industrial museum (http://www.wandle.org). Established in 1983 by local people determined to ensure that the history of the valley was no longer neglected but enhanced awareness its heritage for the use and benefits of the community.
![]() |
|
![]() |
|
![]() |
|
![]() |
How would you like to prevent spyware and adware from... Read More
The title of "software engineer" has got to be among... Read More
And kill the best layout software in the process of... Read More
Collaboration SoftwareCollaboration Software, also known as group collaboration software or... Read More
Microsoft Office program is a programming tool called Visual Basic... Read More
Microsoft Business Solutions Great Plains has many years of successful... Read More
Microsoft Great Plains fits to majority of industries, in the... Read More
Microsoft CRM and IBM Lotus Notes Domino seem to be... Read More
When reading an article where some term is used often,... Read More
Let's first look at your ERP system selection (without Retail... Read More
In linux, one of great commands for finding out information... Read More
Did you ever give a thought to the number of... Read More
Microsoft Business Solutions CRM and IBM Lotus Notes Domino, being... Read More
The cornerstone of successful automated office systems is the ability... Read More
Mike Dunville* had a decision to make. As the new... Read More
Microsoft Great Plains - Microsoft Business Solutions accounting and ERP... Read More
With this small article we are continuing Microsoft Business Solutions... Read More
Microsoft Great Plains and Microsoft Retail Management System (Microsoft RMS)... Read More
This is the tutorial where we really get into programming.... Read More
SyncUp, a file synchronizer is designed to assist the home... Read More
Let's say that you have a software project that's under... Read More
Microsoft Business Solutions is emerging as very attractive vendor for... Read More
Hi, Guys,I believe a lot of programmers are trying to... Read More
Language development computer: Computer-based method for aiding language development seems... Read More
Some introduction into Great Plains Software products, now Microsoft Business... Read More
ERP (Enterprise Resource Planning) Overview covers What is ERP, Brief... Read More
Music downloads are off the charts! We're listening to digital... Read More
Microsoft Great Plains is main Microsoft Business Solutions accounting package... Read More
Disclaimer: All the thoughts expressed are my views only! Your... Read More
Document Management or Enterprise Information Management is perhaps one of... Read More
Looks like Microsoft Great Plains becomes more and more popular,... Read More
Whether you are a small consultancy firm, a medium sized... Read More
Since technology changes so quickly, it is hard to begin... Read More
XML parser is a software module to read documents and... Read More
Microsoft Great Plains is becoming more and more popular and... Read More
The software giants don't do everything and don't always produce... Read More
Microsoft Business Solutions Great Plains is marketed for mid-size companies... Read More
The destruction of the Soviet Union about 15 years ago,... Read More
While paper labeling CDs and DVDs may appear to be... Read More
Microsoft Business Solutions CRM and IBM Lotus Notes Domino, being... Read More
Following tips help you to learn a software in lesser... Read More
Adware is a type of Spyware program that displays some... Read More
Great Plains Fixed Assets Management module is a robust tool... Read More
Microsoft Business Solutions ? Great Plains has captured the US... Read More
An operating system (abbreviated OS) is essentially the path through... Read More
Microsoft Great Plains - Microsoft Business Solutions accounting and ERP... Read More
This short paper will expand on two key reasons to... Read More
It would be easy to think, like most people apparently... Read More
Traditionally we were considering functionally rich systems, such as SAP,... Read More
With many manufacturing shops heading over seas in favor of... Read More
Document Manager and Version HistoryIn previous articles I have discussed... Read More
Anyone who has ever used Microsoft Word knows that it... Read More
Scrapbooks are very popular these days. I think that almost... Read More
Handling character strings in Java is supported through two final... Read More
Before September of 1995, Microsoft ignored the Internet because their... Read More
Language development computer: Computer-based method for aiding language development seems... Read More
Follow the steps below to quickly design, generate, and deploy... Read More
Once a business idea is selected, it is highly recommended... Read More
Should one use Windows Update?This topic has good and valid... Read More
Microsoft Great Plains as ERP and Microsoft CRM as... Read More
Usually, the easiest way to tell you have spyware is... Read More
Microsoft Great Plains serves majority of US based horizontal and... Read More
.Net Framework is a platform or development environment to seamlessly... Read More
And kill the best layout software in the process of... Read More
Java has come along a long way. Many would agree... Read More
I have recently created my first Php program. I wanted... Read More
Software |