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.

In The News:

Stay up to date on the latest AI technology advancements and learn about the challenges and opportunities AI presents
Apple recently notified a small number of iPhone customers in 92 countries that their phones may be under attack by mercenary spyware.
An artificial intelligence-powered home security system can fire paintballs and tear gas at trespassers. The camera identifies human faces and animals.
Technology expert Kim Komando gives her tips and tricks on enhancing your user experience a smartphone and other devices you use everyday.
A new camera called NUCA uses artificial intelligence to create deepfake photos of subjects by stripping away clothing in close to real time.
The Kimberley Kube trail-ready camper has a compact but spacious design and combines luxury, functionality and ruggedness for a weekend getaway.
Stay up to date on the latest AI technology advancements and learn about the challenges and opportunities AI presents now and for the future.
Emails instructing you to reset your password for an account may be legitimate, or they may be scams. Kurt "CyberGuy" Knutsson explains.
Northrop Grumman's Manta Ray uncrewed underwater vehicle aims to revolutionize undersea missions — it glides through the ocean without human assistance.
Learn how to work Google's calendar application to streamline and organize your daily tasks from technology expert Kim Komando.
If you do not want Facebook to have automatic access to your private photos, follow our tips to protect yourself. Kurt “CyberGuy" Knutsson shows you how.
Kurt “CyberGuy" Knutsson goes into detail about Apple’s recent iOS update that allows iPhone users to instantly translate spoken language simply by using the Action Button.
Safeguarding your digital life with a reliable physical backup isn't just a precaution, it's a necessity. Kurt “CyberGuy" Knutsson provides the essential backup checklist.
Kurt “CyberGuy" Knutsson reveals how a Redditor exposed false recycling claims at their apartment, highlighting a report that only 21% of U.S. recyclables are processed.
Kurt "CyberGuy" Knutsson offers a travel toolkit featuring five technology tools to help you with booking flights and hotels for your summer vacation.
The bubble behind the clock on your iPhone can appear in different colors. Kurt "CyberGuy" Knutsson explains what each of those colors mean.
Scammers are using the power of artificial intelligence to mimic voices of people and are using the fake voices to commit crimes, like kidnappings.
Stay up to date on the latest AI technology advancements and learn about the challenges and opportunities AI presents now and for the future.
Tech guru Kurt "CyberGuy" Knutsson explains the science behind the Invisibility Shield, a 6-foot shield that makes people become invisible.
The International Olympic Committee on Friday announced plans to use AI in various Olympic aspects, including athlete identification, training and judging.
Tech guru Kurt "CyberGuy" Knutsson explains an easy trick to avoid squinting while working or surfing the web by zooming in on your personal computer.
Streaming giant Roku has recently been targeted by a pair of cyberattacks, and the company confirmed over a half million Roku accounts were compromised.
The Land Aircraft Carrier combines an all-terrain, six-wheeled vehicle with a two-seat aircraft, which features electric vertical takeoff and landing.
The European Union has sent TikTok a "request for information" on the video sharing platform's newest app, TikTok Lite, under the Digital Services Act, with the aim to clean up social media.
Stay up to date on the latest AI technology advancements and learn about the challenges and opportunities AI presents now and for the future.

Marketing Your WinRunner Team

It won't matter how effective your WinRunner Team is if... Read More

Great Plains Dexterity: Customizations & Source Code Programming

Great Plains Software Dynamics, Dynamics C/S+, eEnterprise were written on... Read More

Review of TikiWiki Content Management System

TikiWiki is open source software - it is written in... Read More

Collaboration Software: Index of Collaboration Software Technologies

Collaboration SoftwareCollaboration Software, also known as group collaboration software or... Read More

Microsoft Great Plains version 8.5: Upgrade, Customization, VBA, Crystal Reports - Highlights

Microsoft Great Plains is one of the Microsoft Business Solutions... Read More

Reduce Pop-ups and Annoying Ads

There is many things more frustrating than surfing a website... Read More

How To Avoid Getting Hooked By Pfishing

"Pfishing", sometimes spelled "Phishing", is a word that's used to... Read More

Groove Network. Are you in it?

If you are in a business that passes documents around... Read More

Snort for Network IDS

What is Snort?Snort is an open source network intrusion detection... Read More

Hear It in Digits

Music downloads are off the charts! We're listening to digital... Read More

Destination: Desktop for Google

First we had the original Google search that evolved into... Read More

SQL scripts for Project Accounting: Microsoft Great Plains series ? overview for developer

Microsoft Business Solutions Great Plains has Project Accounting module where... Read More

Bill of Lading ? Custom Reporting for Microsoft Great Plains ? Overview for Consultant

Bill of Lading is required report for Logistics and Freight... 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

Cisco Certification: Introduction To ISDN, Part V

The major reason I recommend getting your hands on real... Read More

.NET :Solving the Multiple Inheritance Issue Under .NET Platform

.NET platform does not support multiple inheritance. Do not confuse... Read More

Microsoft CRM Implementation for Large Corporation ? overview

Microsoft Business Solutions CRM is now approaching the phase of... Read More

Why Java RDBMS?

It is a well known fact that Java as a... Read More

Microsoft CRM Programming Secrets ? Tips For Developers

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

Microsoft Great Plains Installation ? Overview for IT Director/Controller

Microsoft Great Plains is main mid-market application from Microsoft Business... Read More

Database Guru James F. Koopmann Reviews DBxtra Reporting and Query Tool

DBxtra is a powerful query and reporting tool that hides... Read More

10 Ways to Learn a Software

Following tips help you to learn a software in lesser... Read More

Alien Intruders!

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

Microsoft Retail Management System (RMS) SQL Customization ? Overview for Programmer

Microsoft Retail Management System serves retail single store as well... Read More

Adware, What Is It?

Adware is a type of Spyware program that displays some... Read More