Link between use case and functional requirement - requirements

I have a list of functional requirements
FR nr 1
FR nr 2
...
And have a list of use cases that describe the requirement from the actors point of view. I mean use case nr 1 describe FR nr 1 and so on.. But do I need to create a link in the use case to the FR? Problem is that FR and use cases are located in different pages in Wiki.

Use-cases are derived from functional requirements. It's not necessary to have a 1-1 correlation between a requirement and a use-case; actually in most situations a single use-case will be based on several requirements and a requirement may appear in several use-cases. The reason for this is that a use-case doesn't describe just any activity in the system but a high-level activity triggered by an external source. On the other hand, functional requirement usually describes internal or partial activity and yields a functional block inside use-case.
It's not necessary but it can be nice from documentation perspective to have links from use-cases to relevant requirements.

While not strictly necessary given the ease of doing this with a wiki I would say yes you should just do it. It will enhance traceability. On the usecase diagram I would include an attached note with the FR reference and in the usecase document use the identifier.

Related

Is this an intelligent usecase of Optaplanner?

I'm trying to build an intelligent field mapper and would like to know whether Optaplanner is the correct fit. The requirement is as follows
I have a UI which accept source and target xml field schema.
The source and target schema contains multiple business fields which can be further classified to multiple business groups. There will be certain rules (which we can consider as constraints as per optaplanner) which needs to be considered during the field mapping. The objective of the tool is to find the field mapping ( Each source field needs to find its best fit target field)
Can optaplanner be used to solve this problem ? I'm confused whether this is a mathematical optimzation problem or a machine learning predictive model problem (For this to work, i need to work on building sufficient labelled mapping data )
Any help will be much appreciated.
From the top of my head, there are 3 potential situations to be in, going from easy to hard:
A) You can use a decision table to figure the mapping decision. Don't use OptaPlanner, use Drools.
B) Given two mapping proposals, you can score which one is better, through a formal scoring function. Use OptaPlanner.
C) You don't know your scoring function in detail yet. You have some vague ideas. You want to use training data of historical decisions to build one. Don't use OptaPlanner, use Machine Learning.

Multiple roles performing a single task

How can I model a task that is performed by multiple roles?
Example 1: 3 roles have to meet in order to discuss an issue
Example 2: 3 roles collaborate in order to create a concept
-
Your problem is thoroughly addressed in this excellent BPMN blog:
Activities cannot be placed common neither between pools nor lanes, and this is a common mistake. While this blog proposes possible solution I don't treat it as optimal and recommend you to check this answer on almost similar question as yours.
In my opinion you have to choose from these two options:
Either place your common activity inside separate collaborative lane which will be semantically equal to all your three roles.
As it fairly stated in the above answer, lane semantics is not strictly described in BPMN standard, so we can freely address any entities through it.
Or place your collaborative activity into separate pool. It's what BPMN collaboration diagrams are designated for.
You should choose the proper variant based on the semantics of your process.
How can I model a task that is performed by multiple roles?
Example 1: 3 roles have to meet in order to discuss an issue
Example 2: 3 roles collaborate in order to create a concept
Any activity can have only one performer. It is (your question) mean, that 3 roles (performers) do the same activity at the same time and produce "something".
As it is the same task for all users using a multiple instances parallel activity can be a solution.
In this scenario task definition is actually the same for all users: they need to meet other members to discuss an issue or collaborate.
there is a semantical difference in having the same task in separate lane as opposed to having the same task in a unique role lane. The former doesn't highlight a joined effort compared to the later. In other words, 3 people in separate rooms thinking about it, as opposed to 3 people brain-storming together in the same room.

Data Structure for Exam type app

I'm trying to create a test (examination) app. However, I'm having difficulty designing my models. Can somebody suggest a good UML diagram to accommodate the following features:
Hierarchy:
Module has Unit(s)
Unit has Exam(s)
Exam has Question(s)
Question types: (True or False, Identification, Multiple Choice, Matching Type)
So far this is my original design:
With this design I can't accommodate a 'Matching Type' kind of question. In addition, how can I persist my previous exams and easily check correct answers?
When you are not sure, how to connect two classes, think, if you should use one more class between them.
You can create class diagram like this (created with SPARX Enterprise architect)
But associations between classes depend on functional requirements. E.g. One Exam belongs only to 1 particular Unit in this example, but you may need Exam that can belong to 0..N different Units. So this is just an example.
Also the way how to persist and check answers depends on further functional requirements. The simplest thing would be to store the Student's Answers with a link to a particular Question.
Adding matching type question complicates things a bit, here are few ideas:
The model uses generalization - Option is an abstract class with two inherited classes ListOption and MatchingTypeOption. When you need to store details about answers the similar must be done with SelectedOption because you need to store selected pairs of options for matching type.
But you can also store just info was the answer correct - yes/no.

How do I find whether a document on the web is semantically related to some other document?

My question here is that given a document d1 on the web and a document d2 how do I tell that d1 and d2 are semantically related. Are there some API's that can do some amount of natural language processing that might give me a hint as to d1 is a probably connected to d2.
I need it badly and uregently.Please Help!!
You can use special microformats. See more at http://microformats.org/
Simple example:
cc by 2.0
Rel-License is one of several microformats. By adding rel="license" to a hyperlink, a page indicates that the destination of that hyperlink is a license for the current page.
For semantically relating documents you can use special vocabularies like SKOS and relate them in an ontology. Or you can use - as silex mentioned - microformats directly in your documents.
For natural language processing, there exist different tools like GATE which can extract information. But this is not a trivial task.
Perhaps you can refine what you want to do? Do you want to define which documents are related? Or do you want a software to find out which documents may be related?
You need to look into "named entity extraction" i.e. natural language processing to extract likely entities that are common to both documents. These are generally people, places, events, times, organisations.
Take a look at OpenCalais http://www.opencalais.com/ for some real-world applications of this type of technology.

Service Design (WCF, ASMX, SOA)

Soliciting feedback/thoughts on a pattern or best practice to address a situation that I have seen a few times over the years, yet I haven't found any one solution that addresses it the way I'd like.
Here is the background.
Company has 3 applications supporting 3 separate "lines of business" that are very much related to each other. Two of the applications are literally copy/paste from the original. The applications need to be able to grow at different rates and have slightly different functionality. The main differences in functionality come from the data entry fields. The differences essentially fall into one of the following categories:
One instance has a few fields
that the other does not.
String field has a max length of 200 in one
instance, but 50 in another.
Lookup/Reference fields have
different underlying values (i.e.
same table structures, but coming
from different databases).
A field is defined as a user supplied,
free text, value in one instance,
but a lookup/reference in another.
The problem is that there are other applications within the company that need to consume data from these three separate applications, but ideally, talk to them in a core/centralized manner (i.e. through a central service rather than 3 separate services). My question is how to handle, in particular, item D above. I am thinking a "lowest common denominator" approach might be the only way. For example:
<SomeFieldName>
<Code></Code> <!-- would store a FK ref value if instance used lookup, otherwise would be empty or nonexistent-->
<Text></Text> <!-- would store the text from the lookup if instance used lookup, would store user supplied text if not-->
</SomeFieldName>
Other thoughts/ideas on this?
TIA!
So are the differences strictly from a Datamodel view or are there functional business / behavioral differences at the application level.
If the later is the case then I would definetly go down the path you appear to be heading down with SOA. Now how you impliment your SOA just depends upon your architecture needs. What I would look at for design would be into some various patterns. Its hard to say for sure which one(s) would meet the needs with out more information / example on how the behavioral / functional differences are being used. From off of the top of my head tho with what you have described I would probably start off looking at a Strategy pattern in my initial design.
Definetly prototype this using TDD so that you can determine if your heading down the right path.
How about: extend your LCD approach, put a facade in front of these systems. devise a normalised form of the data which (if populated with enough data) can be transformed to any of the specific instances. [Heading towards an ESB here.]
Then you have the problem, how does a client know what "enough" is? Some kind of meta-data may be needed so that you can present a suiatble UI. So extend the services to provide an operation to deliver the meta data.