A Symons Mark II Function Point Counting Example

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.

premium house cleaning Wilmette ..
In The News:

The Fox News AI newsletter gives you information on the latest AI technology advancements, and about the challenges and opportunities AI presents now and for the future.
Anthropic investigates alarming AI abuse case where hacker automated entire cybercrime campaign using Claude, stealing sensitive data from defense and healthcare firms.
TikTok, Meta and YouTube restrict Charlie Kirk shooting videos with age gates and warnings while X faces criticism for allowing continued circulation.
Cybercriminals use fake troubleshooting websites to trick Mac users into running terminal commands that install Shamos malware through ClickFix tactics.
San Francisco startup Fable launches Showrunner, an AI platform dubbed the 'Netflix of AI' that generates animated episodes from text descriptions with Amazon support.
Apple raised iPhone prices for some models despite receiving tariff relief from President Donald Trump, with the new lineup starting at $799 for the base model.
A two-story 3D concrete printed home in Western Australia demonstrates faster construction methods that could reshape American housing amid rising costs.
Credit scores remain important during retirement for insurance rates and housing applications, while seniors become prime targets for identity theft and financial scams.
Scammers now send unexpected packages with QR codes that redirect victims to fraudulent websites or download malicious software to steal sensitive information.
Meeting AI tools record private conversations alongside work discussions, creating privacy risks that can be managed with proper settings and awareness.
Hotel privacy concerns are valid but rare, with methods to detect hidden tech using smartphone flashlights, mirror tests and scanning apps.
Improve your Wi-Fi speed and reliability with 10 simple router optimization tips that don't require special apps or expensive subscriptions.
A Columbia University breach exposed names, Social Security numbers and academic records of nearly 869,000 people, with notifications beginning in August.
Rental car drivers use AI-powered apps like Proofr to protect themselves from unfair damage fees as major companies deploy automated inspection tools.
Fox News' AI newsletter brings you the latest on technology advancements around artificial intelligence.
OnTrac data breach between April 13-15, 2025, exposed personal information of over 40,000 people including Social Security numbers and medical records.
A woman named Wika announces her engagement to an AI chatbot sparking worldwide debate about virtual relationships and technology.
The notorious people search site National Public Data relaunches despite a previous breach affecting 3 billion individuals, raising fresh privacy concerns.
Revolutionary TRAUMAGEL gel controls life-threatening bleeding from gunshot wounds and traumatic injuries, helping first responders prevent prehospital deaths.
Protect your home network by enabling proper encryption, creating strong passwords, checking connected devices and using VPN and antivirus software.
The Navy's solar-powered Skydweller drone flew nonstop for 73 hours in Mississippi, proving renewable energy can power long-endurance military missions.
Moving and downsizing expose seniors to identity theft and scams as data brokers collect real estate records and personal information to sell to criminals.
ShengShu's Vidar technology revolutionizes humanoid robot training by using AI-generated synthetic video, reducing required training data from hours to just 20 minutes.
Apple's older Mac computers face security risks without regular updates, but 10 essential tips including FileVault encryption and strong passwords can keep aging Macs protected.
Self-driving trucks from PlusAI could reshape freight transportation by 2027, addressing driver shortages and reducing logistics costs for businesses.

Microsoft Great Plains 8.0 Brazilian Version ? Overview For International Consultant

Microsoft Great Plains has substantial mid-market share in the USA... Read More

Business Planning Software

Once a business idea is selected, it is highly recommended... Read More

Crystal Reports - Geterogeneus databases: SQL Server, Oracle, Unidata, Btrieve ? Tips For Developer

Crystal Reports is the most flexible tool on the market... Read More

Microsoft Great Plains FA: Fixed Assets ? Overview For Consultant

Great Plains Fixed Assets Management module is a robust tool... Read More

Great Plains Dexterity Customization Options ? Overview For Developers

Looks like Microsoft Great Plains becomes more and more popular,... Read More

C++ Tutorial 2, Input and Variables

This is the tutorial where we really get into programming.... Read More

What To Do When Windows Wont Boot

When Windows fails to boot it is normally caused by... Read More

How to Make Attractive and Effective PowerPoint Presentations

Microsoft PowerPoint has dramatically changed the way in which academic... Read More

Manufacturing Outsourcing: Microsoft Great Plains Implementation, Customization & Reporting

Manufacturing in the USA is far away down from mid... Read More

How to Choose the BEST Charting Software

I suggest that you do not spend a lot of... Read More

DVD Burning Tips

CD and DVD replication is a process that works by... Read More

S is for Spying, Surveillance -- and for Software as Well

Words we choose to describe things and phenomena often show... Read More

Create ASP in Minutes

DBxtra goes ASPGetting to the information hidden within corporate databases... Read More

Run Your Own Search Engine

Our hosted solution allow you to run your own search... Read More

Begun, The Browser Wars Have

As Mozilla Firefox nears 10% market share, with well over... Read More

COSMIC: A Small Improvement on the Symons Method

The COSMIC FP (function point) software quality metric, is no... Read More

When is a Software Engineer Not a Software Engineer?

The title of "software engineer" has got to be among... Read More

Instant Messenger Clients

If you have been using the Internet for any amount... Read More

Tripwire for Linux File Integrity

What is Tripwire?Tripwire is a form intrusion detection system (IDS)... Read More

Microsoft CRM Messaging through Lotus Domino eMail Server - Balanced Solution

Microsoft CRM and IBM Lotus Notes Domino seem to be... Read More

Microsoft Great Plains ? Licensing & Product Versions

Current Microsoft Business Solutions Great Plains has more that 10... Read More

Microsoft Great Plains RW: Report Writer

Microsoft Business Solutions Great Plains is marketed for mid-size companies... Read More

Great Plains Dexterity Programming ? Overview For Developer

Looks like Microsoft Great Plains becomes more and more popular,... Read More

OEComplete ? A Personal Information Manager

OEComplete is a utility for managing the personal information of... Read More

Free Software: How Not To Get More Than You Bargained For!

I completed an experiment recently. I wanted to find out... Read More

personalized cleaning services Deerfield ..