04/02/2016 at 17:51 #3960
I am hoping someone in the community can help clarify some questions I have regarding Data Groups and Data Movements. As I could not find explicit answers in the available documentation for this, I am hoping the community can help;
1. Lets say we have a functional process that has 2 functional users. If both functional users Enter different attributes of the same data group into the process, do I count both entries. For example, if the Data Group was “Employee” lets say User 1 entered First Name, Last Name, Middle Initial, and Last 4 of SSN (Entry). The data is the sent out (Exit) to a service (or another piece of software) that returns the Employee’s ID number (Entry). From there the employee data is saved to persistent storage (Write). The question is, do I count both entries? Current documentation states to count both entries if 2 unique functional users enter 2 unique data groups. It does not clearly state what to do if 2 unique functional users enter unique attributes of the same data group.
2. Assume that for a given piece of software, which deals with Lab Records, we have identified several data groups which describe a lab record. Those Data groups are as follows;
Header Info (I.e base info)
Next Of Kin
When first being imported into this software the above data comes in the form of an XML. When the database fails to import the XML data and successfully parse and place the data in the corresponding data tables a record is created in the database with the XML data saved in a single field. The software has functionality that allows a user to view this log record and more importantly view that XML field to determine why the data import failed. My question is, since that XML field is made up technically of all the data groups I listed above, do I have to count a READ for each data group when that XML field is retrieved?
Any help is appreciated.
05/02/2016 at 17:10 #3964
Hi, thanks for your questions.
The answer to your first question is very straight-forward and is ‘yes’, count two Entries in this functional process (FP). The FP has an Entry E1 of name and SSN from functional user 1 (FU 1), then sends a request (Exit) to FU 2, which replies with Entry E2 giving the employee’s ID. The two Entries move two different data groups DG1 and DG2 respectively (different because they have different attributes) though both describe the same object of interest (employee). When the FP joins the employee ID with the name + SSN to Write these data to presistent storage, this is now a movement of a third data group DG3. All of this is consistent with the definition of a data group and with the data uniqueness rules which you correctly quote. A data group is defined as ANY set of attributes describing an object of interest; the definition does not state that it only applies to ALL attributes describing the OOI.
Re the second question, what you are describing is a log of XML records that failed import, all with a single field (the non-parsed data), regardless of all the types of lab records. So ‘yes’ this is now one DG descrbing the OOI ‘failed XML record’, so count only one Read for the FP that the user needs to display any of these records to examine what’s wrong. The Guideline for sizing Business Application Software v1.2 has an example in section 4.4.6 very close to your example.
I hope this is clear.
08/02/2016 at 19:46 #3983
Thank you Charles. I have a follow up question.
If I have a functional process, lets say it is a records search, when would the functional process essentially start? Would the process start when the user requests the Search page and data is retrieved from the database to populate the dropdown lists which serve as search parameters? Or does the process only start once the user clicks the Search button. I ask because I can’t determine whether I need to count the data being retrieved to populate dropdown lists for search purposes or not. Furthermore should loading of the search page be its own functional process?
08/02/2016 at 21:20 #3987
James, my impression is that you are thinking too much in terms of physical implementation and not enough interms of the functional user requirements (FUR). The FUR for the search process that you describe is that the user must enter search parameters (one Entry) to retrieve data from the databse (1 or maybe more Reads) and display the output (1 or more Exits). That part is extrmely simple. See the example in section 4.1 of the Guideline for sizing Business Application Software, which exectly fits this case. The one Entry has the parameters (attributes) of the object of interest of the enquiry.
In this example, the search parameters are attributes of the ’employee’ object of interest, so even if they are implemented as drop-down lists that are required to be displayed for selection, that would make no difference to the functional size of this process.
Suppose, however, we have a more complex search such as in a car hire system that offers the user a search for names of customers who hired a car within a given month (e.g. December 2015) of a given model (e.g. Ferrari) and suppose the month and the model-type must both be obtained from drop-down lists. Month and car-model are both separate objects of interest, about which valid data are stored and can be maintained. For each of these you should count a Read and an Exit in the search functional process to obtain and display the possible search parameter values. (Do not think of the retrieval and display of parameters as a separate functional process; the user is assembling the input data for the one Entry of the search functional process.)
So this process would have:
2 Reads + 2 Exits for the retrieval and dispaly of the month and car-model
1 Entry for the set of search parameters that describe the OOI ‘the set of customers who hired a car of a given model in a given month’
1 Read of car-hire records (I’m guessing here; maybe more)
1 Read of the customer records to find the names of the customers associated with those hires
1 Exit for the display of the customer names
Maybe you would want to display the search parameters on the screen that outputs the list of customer names (2 Exits)
Error message in case no names found
Total 11 CFP
I think this analysis sounds correct to me, having just made up this example whilst typing. Does this help?
08/02/2016 at 22:01 #3988
Yes, your feedback is definitely helping. I think my issue is trying to determine if the values in a dropdown list are in fact describing a separate OOI. Let me try to give an example of one of the functional processes I am trying to size;
Functional Process Name: User Rights Report (essentially a Role membership report)
Purpose: Return all user role memberships that match specified search parameters.
Parameters: Organization, Users, Health Condition Category, Status of role membership (all selectable from dropdown lists)
Returns: First and last name of user, name of Organization they are affiliated to, role name, health condition category, status of role membership
Note: All data is being pulled and sent to a web service.
Based on this info my count was the following;
OOI = User role memberships
1 Entry, 1 Exit – Retrieve organization names for dropdown list (List of all organizations known to system)
1 Entry, 1 Exit – Retrieve user names for dropdown list (List of all users known to system)
1 Entry, 1 Exit – Retrieve Health conditions for drop down list (List of all Health Conditions known to system)
– I counted nothing for Status (i.e. Active or inactive) drop down list because it was an attribute of the identified OOI.
1 Entry, 1 Exit – Search parameters sent to web service to retrieve user role memberships that match.
1 Entry, 1 Exit – user first name, last name, role name and status of role membership (OOI)
1 Entry 1 Exit – Health Condition Category
1 Entry 1 Exit – Organization Name
1 Entry, 1 Exit – Exception/Confirmation message
Total = 16 CFP
Is my calculation correct?
11/02/2016 at 22:03 #3992
James, apologies for the delay. I posted a reply yesterday, then discovered it did not register. Here goes again.
I find it quite difficult to give a definite answer to your question. Here is an answer based on some assumptions from what you have written
I assume a context diagram in which the software A you want to measure has a human functional user (FU) and the web-server software B functional user. What is not 100% clear is where the data is stored that is needed to assemble the enquiry parameters.
The functional process of Software A that you want to measure provides a screen to the human FU to enter four parameters via drop-downs. There seem to be three possible cases.
a) Role membership status. This is either active or inactive. Software A presents the choice as a drop-down. No other data is stored about this status (obviously), so it cannot describe an OOI, so you are correct not to count any data movement for this.
b) Organization: Does software A store a list of valid organization names? If ‘yes’, does it store any other info about Organization? If ‘no’ then organization is also not an OOI, deal with same as for ‘status’. If yes, then Organization is an OOI and you need a Read and Exit to display organization names.
But you state that ‘All data is being pulled and sent to a web service’. If that is the case for Organization, then software A must send an Exit to the web-server B to ask for the list of Organizations from wherever. Organization is now an OOI, even if we are only seeking a list of names. The list comes back as an Entry and must be displayed to the human FU for selection. 3 CFP’s for this task.
The same must hold for Health Condition Category. So for each of these two parameters, the answer could be 0, 2 or 3 CFP.
c) User names are surely not held on software A, so it must get the list for this drop-down via 3 CFP, as for Organization
Now we have the four parameters of the search, there must be an Entry for all this, an Exit to send it to the web-server, an Entry to get back the list of names that satisfy the search parameters, and an Exit to display them, total 4 CFP, plus 1 x Exit for all possible error/conformation messages. (See the rules on this in the Measurement Manual.)
In addition, the FP will need to display the two other search parameters (Organization and Health Condition Category), so we have another 2 x CFP.
My guess of the most likely total is:
9 CFP for obtaining the data for the drop-down lists for three search parameters
5 CFP for the search itself plus 2 CFP to remind the user of two key parameters
Total 16 CFP. But note I get to this same total as you by a quite different route (I think: there are a lot of assumptions in all this)
14/02/2016 at 13:14 #3993
James, on further thought, I must correct an error in my last reply. The following statement from this reply is wrong: ‘In addition, the FP will need to display the two other search parameters (Organization and Health Condition Category), so we have another 2 x CFP.
In fact there are four input parameters (user, organization, HCC and status). These define one set ‘the group of user role memberships’. The final output of the enquiry has two Exit-types, first the four parameters (the one data group of four parameters that defines the set), and second the individual users, idenitifed by name, that are members of the set. (A set and members of a set are obvuously not the same thing; they are in a 1:n relationship.
So this functional process has one fewer CFP than I measured in this last reply.
You can also see why my answer is wrong because:
– Organization and HCC are 1:1; they are both attributes of the same data group
– I did not mention ‘status’, another attribute of this group
I hope this is OK now.
14/02/2016 at 18:12 #3999
Charles, first I want to thank you for the continued help. This conversation has been very helpful. The only portion I am having trouble with is this last part where you are talking about the search parameters being returned. I am returning a data set that matches the search paramters. Based on our discussion I assumed that result set represented 1 data group. So I am trying to understand where the return of search parameters comes in to play as I cannot see where I would return the parameters.
14/02/2016 at 18:18 #4000
James, that’s a perfectly reasonable question. I should have written that I ASSUMED the search parameters would need to be displayed on the output (as well as being input) so that the user could understand the results of the search. If your users do not need this info, then there is one less Exit.
14/02/2016 at 19:09 #4001
Ok, that makes sens. Thanks again for all your help!
- You must be logged in to reply to this topic.