DEV Community

Cover image for Is "startup software" a use case?
FagaoMBSE
FagaoMBSE

Posted on • Edited on

Is "startup software" a use case?

Question:

Can "startup software" be considered a use case? When software starts, it typically needs to instantiate some objects, read some configuration files, etc. So, Are “start software” and “shut down software” use cases? Or are they extensions of other use cases?

Answer:

No, it is not.

Use cases are requirements. Requirements describe the necessary behaviors (functionality, performance, constraints) of a system as a whole (black box) - "it won't work without this."

Let's break it down:

(1) Is "startup software" something that stakeholders consider "it won't work without this"?

Actually, it's not.

Stakeholders are interested in the core value that our system provides. If our system could be used continuously from the moment it faces stakeholders, calculating whatever they need without requiring startup, stakeholders would be delighted. How to achieve this? It's not a matter of requirements.

(2) "Software usually needs to instantiate some objects, read some configuration files (during startup)" - this is likely not a requirement.

"Instantiating", "reading", "loading" are actually design assumptions that arise from a design perspective.

Image description

The system is a black box; there's no "instantiating", "reading", "loading". Remove these, then ask "why, what might happen without this?" The answer might be "without this, when performing certain calculations, the time from input to output might be longer, and we'd fall behind competitors" - this is what the system as a whole must satisfy.

(3) Is it relevant to the current system and current use cases?

Some might argue that the system needs to start first. However, this is universally understood and doesn't have a specific relationship with the current system or use cases, so it doesn't need to be explicitly stated as a use case.

Unfortunately, many people are inclined to treat "startup" as a use case, including it in every project without much thought. This can be an easy way to pad project documentation, but it doesn't add value.

Of course, if "startup" is the core value of the target system, then it is a use case. For example, for software that provides a “remote cross-platform application launch” service.

Top comments (0)