Switch "runnable case studies" to RunnableSoftware Systems rather than Specification systems
Contributes to #3260
Recall:
data SystemKind =
Specification
| RunnableSoftware
| Notebook
| Website
whatsTheBigIdea :: System -> IdeaDict
whatsTheBigIdea si = whatKind' (_kind si)
where
whatKind' :: SystemKind -> IdeaDict
whatKind' Specification = nw Doc.srs
whatKind' RunnableSoftware = runnableSoftware
whatKind' Notebook = nw Doc.notebook
whatKind' Website = website
...
data System where
...
{ _sys :: a
, _kind :: SystemKind
...
The SRS and Notebook artifact generators (not the website generator!) use the whatsTheBigIdea information directly (the kind information) in their artifact generation, and we want this information to be captured in Drasil with a chunk that is somehow related to the system.
Switching the system "kind" from Specification to RunnableSoftware means changing the whatsTheBigIdea (the "what kind of system is being defined" information) of the corresponding systems to "runnable software."
Is that wrong? I don't think so. The intention of the two systems are distinct. One is just a specification (Specification) and the other is a specification and (I believe) either a concrete Choices packet (about how the code generator should work) or ([thinking out loud] somehow) a range of Choices with some prefilled options or constraints imposed on Choices. For example, the prefilled options could include ODE libraries or impose a restriction that $X$ language is not suitable.
So how do we really go about fixing this? We need to capture more, it appears. For example:
data RequirementsSpecification = ?
data SolutionSpecification = ?
data SystemKind =
Specification RequirementsSpecification
| RunnableSoftware RequirementsSpecification SoftwareSpecification
| Notebook
| Website
whatsTheBigIdea :: System -> IdeaDict
whatsTheBigIdea si = whatKind' (_kind si)
where
whatKind' :: SystemKind -> IdeaDict
whatKind' Specification{} = nw Doc.srs
whatKind' RunnableSoftware{} = runnableSoftware
whatKind' Notebook = nw Doc.notebook
whatKind' Website = website
At this point, the SRS artifact generator would need to inspect what kind of system it was given, assert that it was either a pure Specification or a RunnableSoftware, pull out the necessary RequirementsSpecification and use that to pull the actual "idea" it wanted (i.e., "software requirements specification").
What do we think?
Thinking out loud a bit more regarding:
data RequirementsSpecification = ?
data SolutionSpecification = ?
RequirementsSpecification would pull in things like IMs, DDs, GDs, etc. from System, and SolutionSpecification would pull in things like configFiles (a list of file names -- these are used in GlassBR to give it some usable run data, but I'm not entirely sure of all the specifics, so this is wishy-washy), Choices, etc.
I agree that something along the lines of
data SystemKind =
Specification RequirementsSpecification
| RunnableSoftware RequirementsSpecification SoftwareSpecification
| Notebook
| Website
is the way to go. Each system kind has its own set of choices -- I'm sure Notebook and Website will grow to have some too!
Stable has changed, and I don't think in a good way. Something that used to be titled "Software Requirements Specification" is now called "Runnable Software" and that's not the intent. The 'system kind' is correctly 'runnable software' but the SRS is.. a SRS! Something went awry, and the 'document kind' got confused with the 'system kind'. [In some sense, this is great, as it helps us find the differences between these.]
Well darn, I messed up the merge. I shouldn't use the web editor to do merges. Will fix.
Ok, now that the merge has been fixed, there's still the problem that the name of the SRS has changed, and it should not have.