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.

Brookfield car service from Midway ..
In The News:

A ported phone number scam is leading to more people having their identities stolen by sophisticated scammers. Kurt “CyberGuy" Knutsson tells you what you need to know.
The Great Pacific Garbage Patch, a vast marine debris vortex, is being tackled by The Ocean Cleanup’s innovative technologies. Kurt “CyberGuy" Knutsson explains.
Discover easy solutions to tame autocorrect frustration on iOS and Android devices. Turn off, customize and add personal touches to your typing experience.
Kurt “CyberGuy" Knutsson reveals the six top things to do right now before it’s too late: Tech and life choices that can keep your safer on and offline.
Kurt “CyberGuy" Knutsson shows you some simple steps to discreetly hide apps or an entire app page on your iPhone for decluttering or confidentiality.
The ambient light sensors on smartphones may be turned into cameras, according to researches at MIT. This could pose a threat to people's privacy.
The Autonomous Road Repair System from tech firm Robotiz3d uses artificial intelligence technology to locate potholes and promptly seal them.
Scammers have stooped to using artificial intelligence to scan obituary websites to create fake obituary websites to target the grieving.
Stay up to date on the latest AI technology advancements and learn about the challenges and opportunities AI presents now and for the future.
A Mercedes-Benz Manufacturing factory in Hungary is using humanoid robots to help with human staffing shortages on the factory floor.
Some video games act like unregulated banks, according to CFPB, which has begun monitoring the situation. The agency says children may be most at risk.
Ascender the robot is capable of climbing stairs with heights up to 8.7 inches, and it can give every corner of your home a deep cleaning.
Tax-return scams are on the rise, and one tax expert from a cybersecurity firm says filing your taxes on time is one way to avoid tax scams.
The innovative XPENG Robot Unicorn is inspired by the mythical unicorn, and you may forget the robot is not actually a living creature.
Stay up to date on the latest AI technology advancements and learn about the challenges and opportunities AI presents now and for the future.
The Federal Trade Commission, the federal agency to report scams to, is being impersonated as part of a new sophisticated phone scam.
Eatrenalin is a restaurant in Germany with a Floating Chair innovation that makes the 17,000-square-foot venue feel like an amusement park.
U.S. Air Force Secretary Frank Kendall met with the Senate Appropriations Committee on Tuesday and said he plans to ride in an autonomously-operated aircraft this Spring.
Kurt “CyberGuy" Knutsson reveals advice from a reader who files debit card fraud claims all day. Here are eight do's and don'ts to prevent debit card fraud.
Kurt “CyberGuy" Knutsson shows you how to update your password, PIN or pattern on your Android to keep your device safe and secure from hackers.
Tech expert Kim Komando explains how to use Google Maps tricks like looking at your childhood home, planning trip times, and virtually visiting buildings and shipwrecks
Kurt “CyberGuy" Knutsson reveals how hackers have unleased a new, more powerful version of the Vultur banking Trojan that's capable of taking full control of your Android device.
Take your online tasks offline: Kurt “CyberGuy" Knutsson shows you how to print your Reminders app lists on your iPhone to take wherever you go.
Two types of malware are designed to trick Mac users and steal data. So, it's important to make sure your private data is locked down.
Eve is a new artificial intelligence-powered humanoid robot from 1X that can help with household chores, including folding the laundry.

The Top 5 Wrong Reasons For Not Hiring Testers

Considering whether or not your software company should hire a... Read More

Great Plains Dynamics on Pervasive/Ctree support ? overview for consultant

All of us know that Microsoft bought former Great Plains... Read More

Microsoft Moves to Small Business Accounting/Retail Market ? Stakes and Thoughts

In this small article we will be looking at the... Read More

Alien Intruders!

You probably didn't casually invite, or extend a formal attendance... Read More

Data Quality Best Practices for Salesforce.com

Executive SummaryAn effective plan for entering, cleaning and updating the... Read More

Introduction To ISDN, Part II

In the previous ISDN article, we looked at how and... Read More

Microsoft Great Plains customization ? Freight Forwarding/Transportation industry example

Microsoft Business Solutions Great Plains version 8.5, 8.0, 7.5, Great... Read More

Looking for an Alternative to Microsoft Office? You Should Be!

Now is the time to look at an alternative to... Read More

Microsoft CRM Customization Secrets ? Second Edition

This article is for advanced Microsoft CRM SDK C# developers.... Read More

Five Tips For A Great Software Demo

Whether you need to close a sale, gather end-user feedback,... Read More

Microsoft Great Plains Customization and Development ? Overview for Programmer

When Great Plains Software was designing and developing Great Plains... Read More

Microsoft Great Plains Subcontracting ? Overview for Microsoft Business Solutions Partner

Microsoft Business Solutions Great Plains is very popular ERP/MRP applications... Read More

Free Software - Powerful Alternatives to Budget-Busting Software

When you buy a computer, it most likely comes with... Read More

What Stands Behind The Software Description?

With thousands of web pages added to the Net every... Read More

Microsoft Great Plains Dynamics on Pervasive SQL.2000 Data Repair ? Overview For DBAs

Some introduction into Great Plains Software products, now Microsoft Business... Read More

How To Develop Software For Your Business

Software development is a risky business.Many software developers are barely... Read More

Microsoft Business Solutions VAR/Partner Selection ? Overview for IT Director/Manager/Controller

Microsoft Great Plains and Microsoft CRM become more and more... Read More

Unofficial Windows 98 SE Service Pack 2.0 RC2

Microsoft has never released a service pack for Windows98 SE,... Read More

Microsoft Business Solutions Partner ? How to Launch New IT Consulting Practice

In the new era of internet marketing the problem of... Read More

C++ Tutorials: 3, Program Flow (If, Else, While, For)

Program Flow is what you think it is. How the... Read More

Microsoft Great Plains Implementation in Russia ? Overview for Consultant

Microsoft Business Solutions Great Plains is very popular ERP platform... Read More

Free PDF Publishing Software

In a previous article, I wrote about OpenOffice... Read More

Cross-Platform Custom Software Development & Integration ? IT Strategy for Large Corporation

Microsoft Business Solutions products: Great Plains, MS CRM, Navision, Axapta,... Read More

Microsoft Great Plains Chemicals & Paint Industry Implementation & Customization Notes

Microsoft Great Plains fits to majority of industries, in the... Read More

Microsoft Great Plains - Typical Problems And Fixes ? Overview For IT Administrators

How to delete the user? This is the first problem... Read More

taxi from Midway Andalusia ..