Monday, May 4, 2020

Basic Expectations

When interacting with any software, there is a fundamental set of overall ‘properties’ that the users expect. If these are not met by the system or product, they should be considered as software bugs, even if it isn’t explicit misbehavior in the sequence of instructions. It may be very hard for the programmers to fix some of these issues, depending on the state and organization of their code.


Availability

  • The system is available when the system is needed.
  • If part of the system is currently unavailable then the user will be notified before they start doing any work in that part of the system.
  • If part of the system was unavailable, there is somewhere the user can go to see that that had occurred.


Correctness

  • If the system provides a calculation or computation, then the results of that work are either correct or it produces a specific error.
  • If the system provides a calculation or computation, then if the user redoes the work with the same context, it will produce the same results (repeatability).
  • If data is displayed on the screen with a label or attributes, then that labeling is correct (trustworthy).


Completeness

  • If someone can add some data, they should be able to modify and delete that data.
  • If someone can perform an action in a given context, then they can perform the same action in any similar context.
  • If a system has data, at least one interface exists to display that data.


Context

  • If there are a series of context-based operations that are reversible, then when reversing, all of the in-between context states are reachable.
  • For example, if you scroll through a list of links, then jump to one, hitting back will return you to the last position of the scroll, not the top of the list (very common bug).


Composable

  • If you can do an operation in bulk by building up the context, it should work correctly to apply that bulk operation to everything (stability and performance).
  • If the composition gets too large, then the system will warn about a limitation, but not undo the current composition.


Visibility

  • If a user enters data, the default scope (visibility) is to just to that user.
  • If the scope is widened, either the user-initiated this or is aware of this (transparency).
  • For any data, there is a way to see it’s current scope (transparency).


Searchability

  • If the system allows for searching, there is some composable way to narrow down the search to any specific item.
  • If the system allows for searching by a category of items, then the results only contain that category.
  • If an item exists in the data, then it can be found in the search.


Performance

  • Any computations done will be bounded (finish).
  • Any resources used will be bounded (estimatable).
  • The worst-case time for the largest amount of work is still reasonable (usable).
  • If the computation will take longer than expected, the user will be notified (progress bar).
  • If the work takes a sufficient enough time, it can be stopped (cancelable).

No comments:

Post a Comment

Thanks for the Feedback!