Professional Documents
Culture Documents
Notes taken from: Object Oriented Software Engineering text; Art of Software Architecture (Stephen Albin) Use Case Analysis (Bittner and Spence); Use Cases Requirements in Context (Kulak and Guiney) Some notes from Rational Software Corporation slides Other personal notes
36
Supplement the Use-Case Descriptions For each use-case realization Find Classes from Use-Case Behavior Distribute Use-Case Behavior to Classes For each resulting analysis class Describe Responsibilities Describe Attributes and Associations
Non-Functional Requirements
We have a: good understanding of the nature of the analysis classes and their responsibilities collaborations required to support the functionality described in the Use Cases via analysis classes
Non-Functional Requirements
The purpose of identifying non-functional requirements is to get a handle on these absolutely necessary requirements that are normally not functional.
During Analysis, this information is speculative. Will be refined later. Philosophy: Capture now; Realize later (Essential points in design)
36 3
36
Types of Requirements
Functional
Describe
requirements
Non-functional
Consists
requirements
of Constraints that must be adhered to during development (design and implementation) Operative word: Constraints.
36
Functional requirements
What What What
inputs the system should accept outputs the system should produce
data the system should store that other systems might use computations the system should perform
What
The
36
Non-Functional requirements
Mostly not unique to a single use case. Generally thread themselves throughout some use cases
Transcend locality
Some of these conflict with each other Some support efficiency of code and inefficiency in maintenance Lets contrast functional and nonfunctional requirements
36 7
not verifiable then there is no indications that these requirements have been satisfied.
Some
Some
requirements are measurable, such as response time; availability time, etc. Some may be directly measured; some measured via simulation.
We
All constrain the design to meet desired quality levels of usability, efficiency, reliability, maintainability and reusability Examples: Response time particularly important for processes that process a lot of data or use networks a great deal. Requirements might stipulate < two second response.
Response time may be considered a functional requirement for some real time systems.
Throughput for computationally-intensive applications or for heavy transaction-oriented systems, the number of transactions per minute or number of computations per minute can/must be measured. Resource usage Application cannot use > xxMB of memory Very practical in a large multiprogramming / multiprocessing 36 9 system.
Reliability typically Mean Time Between Failures (MTBF) (number of failures per week; define failure.) Availability Measures the time application is up and the period of down time, when down.
Recovery from failure Mean Time To Repair: (MTTR) critical to some applications; not so for others; checkpoint restarts; auto-saves, etc. If you specify the detailed procedure to follow, then this is a functional requirement.
Allowances for Reusability may specify that a certain percentage of the system must be designed generically to support reusability
36
10
Platform
What hardware / software the software must be able to work on. Normally indicate least platform e.g. Windows XP, Vista; 120 MB free disk space.
Programming language; database system. All individuals are familiar with these languages / database nuances. May/may not reduce need to train people
36 11
Technology to be used
Development Process/Methodology
A Bigee!! Usually a very important constraint. Usually found in the Contract for the system or in a separate project 36 plan. 12
always clear that a requirement is nonfunctional and functional. If requirement is a fundamental part of the applications functionality, then it should be stated as a functional requirement
Think performance of a real time / manufacturing app. Think reliability of a safety-critical application
If
requirement is a constraint on design or some kind of restriction on design, then the requirement is almost always non-functional. Certainly the presented list is not exhaustive!
36 13
Quality Models from a different source: from Art of Software Architecture (p.70-72) Note the different categories for Quality Modeling according to this source: Product Operation Quality: Accuracy, Reliability, Efficiency, Integrity, and Usability Product Revision Quality are: maintainability, flexibility, testability Product Transition Quality are: Interface facility, reusability, transferability
36 14
More attributes(2 of 2)
Accuracy and comprehensiveness; simplicity of use, operational flexibility, ease of development, maintenance and extension, security and control, resource efficiency, recovery
And there are numerous other lists.. These are presented to show you that there are different takes on quality and what determines quality
36 15
Functional models such as use cases, typically drive object-oriented projects (although they certainly dont have to) Attributes such as modifiability are not easily expressed in purely object-oriented terms and need supplemental text descriptions to represent the design.
Each attribute MUST be considered during design and usually requires the architect to make multiple passes as a design.
Second pass to incorporate modifiability constraints while making sure that the functionality is not compromised. Sometimes, multiple passes are needed to incorporate various requirements and to evaluate the design tradeoffs.
How can these methods be efficient and yet maintainable? Efficient and yet reusable? Reusable yet modifiable?
36
16
Many competing non-functional requirements. Architect must find a design that realizes a balance among them. Example:
Performance design techniques, however, usually incorporate fewer levels of indirection and optimizations to data structures in order to improve operation execution times. Performance gains may bring decreased maintainability / reusability features. Cost is usually competing with everything else and it is common that usability is sacrificed first!
36
17
Use Case Modeling Bittner and Spence p. 43 In the RUP, we place the non-functional requirements in the Supplementary Specifications But this is usually considered a standard.. Consider:
Quality attributes of the system to be built must include usability, reliability, performance, supportability requirements
Constraints placed on the design and implementation of the system such as operating system, environments,
Others
36
18
Supplementary Specifications
Very misleading to think supplementary specs are inferior or lesser than functional specs. Many projects have run amuck because they did not consider these requirements. May have formed a major part of the overall critical success criteria. Consider the following problems / results:
E.g. System must support 300-500 simultaneous users; On entry into user acceptance testing, system supported eight simultaneous users; Developers had concentrated on the user interface and completely ignored this supplementary spec item. Upon further review, it was noticed that the developer did not investigate any of the requirements beyond the scope of the most basic flow of events. Not surprisingly, the system was never deployed.
36 19
Note use cases can capture non-functional requirements especially those that apply within the context of a single use case.
Use Supplementary Specs to capture non-functional requirements that are global in nature or do not vary from one use case to the next.
Within the Use Case: Typically, if the amount of interaction in use cases is large, the majority of requirements will be captured here and there may be just a few, global, non-functional requirements. Within the Supplementary Specifications: Conversely, if the amount of interaction in the use case is small, then the majority of requirements may be captured as non-functional requirements and found in the Supplementary Specifications. Keep a balance between using the use cases and non-functional requirements. We need both if the overall requirements objectives are to be met.
36 20
Identify the non-functional requirements Validate with appropriate stakeholders Document the requirements Capture its name, its effect, both the system and business degradation that would result if the requirements are not satisfied Best time to capture them when exploring the functional requirements Document it right away from your sources of information (interviews, questionnaires, ) Ask users about response times, what bothers them now; what is fine. Be certain to differentiate between business-related concerns which can often be added to a use case description, with non-functional requirements.
36 21
Sometimes accommodating non-functional requirement may cost more than implementing the use case.
There is no free lunch, and some things are not worth the cost to accommodate.
e.g. Infinite availability; levels of performance. Dont let [a users] initial assumptions drive you into an architectural nightmare.
Use a template to document the non-functional requirements, as found in our Use Case book, ~ p. 79.
36 22
Use something like the table below. You may add column attributes as needed.
NonFunctional Category* Number Non Functional Requirement Name Description Applies to Use Case(s): Exceptions
You may wish to categorize these (or not). If not, omit column. 36 You may wish a priority column! 23 You may also wish to add columns.
Examples
NonFunctional Category* Number Non Functional Requirement Name Description Applies to Use Cases: Exceptions
Persistency
Student objects need to be persistent System Administrator actor needs to be authenticated The Profile Database must be available 95% of the time
Where Student Objects are Updated Those Use Cases that access the Profile Database All Use Cases that require authentication
None
Security
None
Availability
None
36
24
Supplementary Specifications
Inserted table(s) into Supplementary Specifications. The Supplementary Specifications document constitutes an additional artifact that we will be using. Note also that in some cases, the non-functional requirements are called analysis mechanisms (RUP)
Have persistency mechanism; security mechanism, etc. Means that there will be some process to accommodate persistency, security, etc.
36
25
Supplement the Use-Case Descriptions For each use case realization For each Analysis Class describe
responsibilities, etc.
..
their responsibilities, the analysis mechanisms / non-functional requirements that these analysis classes need to implement (persistence, security, legacy, ) and the collaborations required to support the functionality described in the use cases.
Unify Analysis Classes: Now lets review everything to ensure it is complete and consistent before moving on.
Checkpoints
36
27
<<boundary>>
Name of analysis class should capture role; (e.g. EnrollmentForm) Description of class should capture role played by class in the system. Merge classes that define similar behavior or represent the same thing. Merge entity classes that define the same attributes Aggregate behaviors of merged classes. If you do any of these things, make sure you update any supplemental use case descriptions where necessary.
36
<<control>>
<<entity>>
<<entity>>
28
Glossary
Analysis Classes
Supplementary Specification Are Are Are Are Are the Names appropriate? the Descriptions accurate? classes that should be merged actually merged? appropriate entity classes merged? aggregations captured? 36
Use-Case Model 29
If one class is sending messages to another, there is a collaboration needed. If one class defines an array of objects from another class, have we modeled this as an aggregation! etc.
Very important that you evaluate your results at the 36 conclusion of Use Case Analysis.
30
Find Classes from Use-Case Behavior Distribute Use-Case Behavior to Classes Describe Responsibilities Describe Attributes and Associations Qualify Analysis Mechanisms
Unify Analysis Classes Checkpoints - Check the quality of the model against criteria that the Designer looks for
36
31
Are the classes reasonable? Does the name of each class clearly reflect the role it plays? Does the class represent a single welldefined abstraction? Are all attributes and responsibilities functionally coupled? (What does this mean to you?) Does the class offer the required behavior? Are all specific requirements on the class addressed?
36
(continued)
32
Note: All checkpoints should be evaluated with regards to the use cases being developed for the current iteration.
The class should represent a single well-defined abstraction. If not, consider splitting it. The class should not define any attributes and responsibilities that are not functionally coupled to the other attributes or responsibilities defined by that class. The classes should offer the behavior the use-case realizations and other classes require. (These will be methods later) The class should address all specific requirements on the class from the requirement specification the Use Cases in our case. Remove any attributes and relationships if they are redundant or are not needed by the use-case realizations.
36
33
Have all the main and/or sub-flows been handled, including exceptional cases?\ Have all the required objects been found?
What is the purpose of Use-Case Analysis? What is an analysis class? Name and describe the three analysis stereotypes. What is a use-case realization? Describe some considerations when allocating responsibilities to analysis classes. Describe the role of non-functional requirements in complementing functional requirements. Describe the tie-in of non-functional requirements to use cases. 36 35