Win a copy of The Little Book of Impediments (e-book only) this week in the Agile and Other Processes forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Question on NFR

 
AnkitKumar Singh
Greenhorn
Posts: 16
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
From Book: Sun Certified Enterprise Architect for Java EE Study Guide (Exam 310-051) (Certification Press) by Allen and Bambara

2. Which of the following are nonfunctional requirements?
A. Scalability, availability, extensibility, manageability, and security
B. Performance, reliability, elaboration, transition, documentation, and security
C. Specification, elaboration, construction, transition, use cases, and security
D. Performance, availability, scalability, and security
E. Reliability, availability, scalability, manageability, and security

Answer
2. ®3 D is correct. The nonfunctional service level requirements discussed are performance
(I: The system needs to respond within 5 seconds); availability (II: The system needs to have
a 99.9 percent uptime); scalability (III: An additional 200,000 subscribers will be added); and
security (IV: HTTPS is to be used). Hence, choice D is correct.
®° A, B, C, and E are incorrect. There is no mention of extensibility (ability to easily add or
extend functionality) and manageability (ability to monitor the health of the system). Hence,
choice A is incorrect. Specification, elaboration, construction, transition, documentation,
and use cases are not nonfunctional service level requirements. Hence, choices B and C are
incorrect. While scalability and reliability may be related (Will the system perform as reliably
when more users operate on it?), there is no mention of reliability in the question. Hence,
choice E is incorrect.

Why is A and E incorrect? Also in the same book below is written

The nonfunctional requirements supported by JEE are divided into six categories:
n Scalability Concurrent connections, data growth rates, user-population
growth rates, storage capacity, compute capacity, performance characteristics,
and response-time requirements can be solved by connection pooling and
application server clustering.
n Security Application-level security is handled by JEE via deployment
descriptors, protection domains as well as network security, OS security, and
database security.
n Adaptability Extensibility of the application; flexibility of the
configuration; and the adaptive nature of the compute, storage, and network
resources to changing demands from the application and application
infrastructure are supported by JEE.
n Compatibility JEE provides multiplatform support (all UNIX, Win XP),
cross-certification of application infrastructure solutions, multiple client
devices, and back-end connectivity to legacy resources.
n Manageability Change management, problem management, asset
management, and network/systems management.
n Availability Platform reliability, application infrastructure stability, and
uptime requirements.

For me the answer of the question 2 should be A, D and E. Can someone please explain and correct me. Thanks in advance.
 
K. Tsang
Bartender
Posts: 3585
16
Android Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Welcome to the Ranch.

There is a difference between non-functional requirement and system qualities/capabilities. In the Allen's book table 2-2 lists out the system qualities. Some of these are also NFR.

In the book these system qualities include:
  • Availability
  • Reliability
  • Manageability
  • Flexibility
  • Performance
  • Capacity
  • Scalability
  • Extensibility
  • Validity
  • Reusability
  • Security


  • Among those the bolded ones are NFR. You can argue reliability is also one depending on how you look at it.

    Looking at that question, options A and E have manageability which is not a NFR.
     
    AnkitKumar Singh
    Greenhorn
    Posts: 16
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Thanks K. Tsang for your quick reply.
    Sorry but I am still not clear why does this book say them as NFR as I wrote in the last post.

    The nonfunctional requirements supported by JEE are divided into six categories:
    n Scalability Concurrent connections, data growth rates, user-population
    growth rates, storage capacity, compute capacity, performance characteristics,
    and response-time requirements can be solved by connection pooling and
    application server clustering.
    n Security Application-level security is handled by JEE via deployment
    descriptors, protection domains as well as network security, OS security, and
    database security.
    n Adaptability Extensibility of the application; flexibility of the
    configuration; and the adaptive nature of the compute, storage, and network
    resources to changing demands from the application and application
    infrastructure are supported by JEE.
    n Compatibility JEE provides multiplatform support (all UNIX, Win XP),
    cross-certification of application infrastructure solutions, multiple client
    devices, and back-end connectivity to legacy resources.
    n Manageability Change management, problem management, asset
    management, and network/systems management.
    n Availability Platform reliability, application infrastructure stability, and
    uptime requirements.

    wikipedia also says many of them like Reliability, extensibility, usability as NFR.
    https://en.wikipedia.org/wiki/Non-functional_requirement
     
    K. Tsang
    Bartender
    Posts: 3585
    16
    Android Java
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Simply put NFR can be qualitative and quantitative (measurable).

    Performance (response time), security (X-bit encryption), availability (up-time), scalability (no of concurrent users) are clearly measurably.

    Maintainability, extensibility manageability etc can't be measured. One person may think this architecture/code is "easy" to manage/enhance etc but another person may disagree.

    Most of the time those measurable qualities (NFRs) are those that can be stated in design specs. As developer or architect, the qualitative qualities are also worth considering but not stated explicitly.
     
    Christian Nicoll
    Ranch Hand
    Posts: 132
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    I had the same issue like Ankit when I saw the question in the book. For me the answer is also not clear. I find it great how K.Tsang explained this answer, but I'm yet not totally convinced about this explanation.

    For me is maintainability also a NFR that can be measured quantitative. If you have similar business requests to two different applications that have a different maintainablity you will be able to measure the different effort that is required to implement this change. Further you can measure over a longer term how many bugs were produced while the maintenance of these applications, for example a system which a high automated test coverage will provide a better maintainability than those applications with a low coverage.
     
    AnkitKumar Singh
    Greenhorn
    Posts: 16
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Thanks Christian and K.Tsang for your explanation. I am not clear about the definition of NFR (Answer of the question in the book).

    I read below lines from wikipedia:
    Non-functional requirements are often called "quality attributes" of a system. Other terms for non-functional requirements are "qualities", "quality goals", "quality of service requirements", "constraints" and "non-behavioral requirements".[2] Informally these are sometimes called the "ilities", from attributes like stability and portability. Qualities—that is non-functional requirements—can be divided into two main categories:
    Execution qualities, such as security and usability, which are observable at run time.
    Evolution qualities, such as testability, maintainability, extensibility and scalability, which are embodied in the static structure of the software system.


    The above definition is different & more clear than answer of the asked question explained in the book.
    I still think that manageability is a part of NFR and the answer of the question should be A, D and E. Sorry but my doubt is still not clear.
     
    Igor Makarov
    Greenhorn
    Posts: 6
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Oracle releases errata for that book.
    There was just a mistake with correct answer.
    https://www.mhprofessional.com/downloads/products/0071826785/errata0071826785.txt

    The correct answers are: A, D, E
     
    • Post Reply
    • Bookmark Topic Watch Topic
    • New Topic