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.

shuttle from O'Hare Brocton .. Lockport Chicago limo O’Hare
In The News:

Unitree, a Chinese robotics company that developed a backflipping robot, has now introduced a humanoid robot capable of doing a side flip.
Stay up to date on the latest AI technology advancements and learn about the challenges and opportunities AI presents now and for the future.
According to the FBI, cybercriminals are sending extortion letters, threatening to release victims' sensitive information unless a ransom is paid.
FireSat is a satellite project designed to detect and track wildfires early, aiming to detect a fire that's the size of a classroom within 20 minutes.
Tech expert Kurt “CyberGuy" Knutsson reports that researchers have uncovered a Chrome vulnerability used in a cyber espionage campaign.
Preserving voicemails securely on Android: Tech expert Kurt “CyberGuy" Knutsson reveals easy methods to keep memories alive forever.
This phishing kit bypasses 2FA via session hijacking and real-time credential theft. Kurt “CyberGuy" Knutsson offers four ways to stay safe from Astaroth phishing attacks.
Tech expert Kurt “CyberGuy" Knutsson discusses Joby Aviation and Virgin Atlantic planning to launch 200-mph U.K. air taxis linking airports and cities.
Fake Apple virus warnings, security alerts and messages are tactics used to prompt you to call a number or click on a malicious link. The CyberGuy explains how to protect your devices.
The combination of artificial intelligence and neuroscience allows a paralyzed man to manipulate a robotic arm by using his brain to imagine movements.
With the help of artificial intelligence, sophisticated fraud techniques emerging today are virtually undetectable to the untrained eye.
Stay up to date on the latest AI technology advancements and learn about the challenges and opportunities AI presents
If you need to free up space on your Mac, consider deleting duplicate photos in your image library. Apple makes it easy to do, and the CyberGuy explains the process.
Microsoft is discontinuing Skype in May after 22 years of service. Kurt the CyberGuy addresses other options for internet-based phone and video service.
Tron 1, a Chinese company's two-legged robot, is versatile and can walk, roll and pivot, even on rough terrain. Tron 1 stands 33 inches tall and weighs 44 pounds.
Hackers are tricking people into installing password-stealing malware by making them press keyboard shortcuts under the pretense of proving they're not bots.
Saving the voices of loved ones can be a comforting way to keep alive memories. Kurt "the CyberGuy" Knutsson explains how to preserve voicemail messages.
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 FBI warns that some free online document converters load malware onto people's computers, making their private information vulnerable to attack.
Toyota's compact electric FT-Me is designed to tackle challenges of city living while offering an accessible and eco-friendly transportation solution.
Kurt “CyberGuy" Knutsson says 23andMe's bankruptcy raises data privacy fears: Opt out, download and delete data now.
UBTech and Zeekr unite with AI robot swarms to make car manufacturing faster and smarter. Tech expert Kurt “CyberGuy" Knutsson explains how the process works.
Tech expert Kurt “CyberGuy" Knutsson says Apple's Passwords app had a three-month phishing flaw from iOS 18 to 18.2 patch.
Tech expert Kurt “CyberGuy" Knutsson discusses how this super-small electric mini-truck takes a big step toward production.
Artificial intelligence-generated images and videos that use someone’s likeness typically target women without their consent. The CyberGuy unpacks how to protect loved ones.

Is Your Small Business Ready For A CRM Software Solution?

I have yet to see a business that, sometimes in... Read More

Databases ? How We Love to Hate Them!

You've finally created databases that you can actually use to... Read More

Microsoft Navision Customization Upgrade ? Tips For Programmer/IT Specialist

Currently Microsoft Business Solutions is on the way of creating... Read More

Spyware: What It Is and How to Combat It

Spyware is software or hardware installed on a computer without... Read More

How To Identify, Cure and Prevent Spyware/Adware Infections

Just when you thought you were Web savvy, one more... Read More

Three Steps To Windows Safety Heaven

Now there are Three Steps To Heaven Just listen and... Read More

Great Plains Dexterity Customization Options ? Overview For Developers

Looks like Microsoft Great Plains becomes more and more popular,... 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

Software Tools To Help Your Business Sell More

Sales are all about leverage, because there is only so... Read More

Open Source Concepts: Dual Licensing Explained

We were recently faced with a decision: either to let... Read More

Does your Company have Documentum?

Are you lost in the mess of documents that get... Read More

International Support - Microsoft Great Plains VAR/Partner Selection ? Overview for V.P. IT

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

Microsoft Great Plains Integrations ? Retail Management Sample

Microsoft Business Solutions is emerging as very attractive vendor for... Read More

Begun, The Browser Wars Have

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

MSN Messenger Is A Sweet Way To Communicate

MSN messenger is a pretty cool invention. I mean I'm... Read More

Microsoft Navision Integration with Microsoft RMS - Overview for IT Specialist

Microsoft Business Solutions Navision serves both European and American megamarkets.... Read More

Are You Waiting for Microsoft Longhorn Operating System

I love new technology. I am still ready to wait... Read More

Computer Phones ? Facts and Fallacies

The stakes are high when considering security, privacy, and savings,... Read More

The True Meaning of Freeware

The vast majority of us will have, at some point,... Read More

Microsoft CRM Messaging through Lotus Domino eMail Server - Balanced Solution

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

Blind CC (Bcc): Master Its Use When E-Mailing

If you use Microsoft Outlook (or similar applications) for e-mailing,... Read More

Off The Record - Tips For Picking Recording Software

Need software to record your voice, streaming audio or musical... Read More

Brief Notes About Mainframe Software Pricing

We don't think about mainframe software pricing anymore, we just... Read More

RSS: Get Notified When Your Favorite Websites Are Updated

RSS (Really Simple Syndication) is a way for a site... Read More

Windows x: Basic Windows ?Security? Issues

Language development computer: Computer-based method for aiding language development seems... Read More

Chicago charter limousine service Hickory Hills ..