Requirements Engineering

This looks to be a great course, highly structured with curated quality content. I am sure this is going to be one of the successful courses in coursera!

By the way, here are some observations with regard to requirements gathering: Functional and Non-functional requirements are not generally defined along the lines of ‘What’ and ‘How’ of requirements. Non-functional requirements are generally technical requirements like performance requirements, scalability etc. while functional requirements are aligned with business requirements. At the higher level, the requirements are specified without reference to how it will be implemented while detailed requirements will focus on actual functionality of the system. Non-functional requirements are always related to the technical infrastructure around the application

2 Likes

I’m glad you’re enjoying the course, and thank you for your feedback :slight_smile:

I believe we’re on the same page here when it comes to the definition of functional vs nonfunctional requirements. We just like to think about it loosely in terms of “What” and “How” so it’s easier to ask questions that help learners arrive at these requirements. To summarize, here’s how we define functional and nonfunctional requirements in course 1 week 4:

  • “Functional requirements are those system requirements that can be expressed in terms of a specific functionality, namely, what the system will be able to do to meet the needs of stakeholders”. Loosely thinking about these requirements as “WHAT” the system can do allows the learners to start asking questions about functional requirements (as shown in week 1).
  • “Nonfunctional requirements, on the other hand, are those system requirements you could think of as characteristics or attributes of the system that allow it to function properly. These could be characteristics or attributes related to things like latency, scalability, reliability, cost, or security”. Loosely thinking about these requirements as “HOW” the system accomplishes what it needs to do (i.e. technical specification) allows learners to ask questions that help formulate these nonfunctional requirements (as shown in week 1)

We referenced the book Designing Data-Intensive Applications by Martin Kleppmann as reference. Here’s how these requirements were defined in chapter 1 of this book:

“An application has to meet various requirements in order to be useful. There are functional requirements (what it should do, such as allowing data to be stored, retrieved, searched, and processed in various ways), and some nonfunctional requirements (general properties like security, reliability, compliance, scalability, compatibility, and maintainability).”

We also relied on the general understanding for these requirements in the field of software development. Here are some additional resources in case anyone is interested in diving in further.

3 Likes

Hi, Thanks for the detailed reply. I have noticed now that in a subsequent course’s lecture, this difference has been clearly mentioned in the slide itself. Thanks!

1 Like