sorainsm / library-of-lighting-models

Study of light modeling as a physics problem, with the purpose of implementing of a family of lighting models through a library.
0 stars 1 forks source link

Question - System Constraints: What's a Design Decision and What is an Assumption? #4

Closed sorainsm closed 4 years ago

sorainsm commented 4 years ago

I could use more clarification on this.

For example, if I understand the template, saying that the input is always read from a file is a design decision and would go under System Constraints, but saying that I'm only dealing with local illumination vs. local and global would be listed as a scope-level assumption.

I was under the impression that everything is a design decision that inevitable constrains the system - so when does an assumption get moved into the System Constraints?

smiths commented 4 years ago

Great question @sorainsm. The clarifying concept is abstraction. If you are making a concrete decision, that constrains your design, then it is a system constraint. You of course have to make some decisions, or else your specification doesn't say anything. There are levels of abstraction. What level is requirements and what level is design is what you are determining in the SRS. There is some judgement, based on experience, and based on what you are trying to achieve.

For most projects, software constraints are obvious because they are close to code. Deciding to read input from a file could be a requirement, or it could be a design decision. However, specifying a specific file format would definitely be a constraint. The designer is not free to pick the file format; therefore, the design is constrained. This isn't necessarily a bad thing. There might be good reasons for the constraint, such as using an industry standard.

Saying the software shall be implemented in Python would also be a system constraint.

Saying a specific algorithm will be used will also likely be a system constraint (unless the requirements are actually to implement a family of algorithms.)

Most projects in this class will have very few software constraints. None of the things you listed look like system constraints to me. Saying your project has to use OpenGL, would be a system constraint.

I hope this helps.