-
Notifications
You must be signed in to change notification settings - Fork 25
Questions
Jacques Carette edited this page Sep 21, 2021
·
12 revisions
This is a question-driven exploration of future work on Drasil.
- What artifacts occur in software projects?
- it would be useful to know the relative frequency, as a very crude means of prioritization
- what kinds of software projects? A: for the purposes of artifacts, 'any'. The more popular the project, the higher weight it can be given.
- where to find software projects? A: github (and gitlab and ...)
- how many projects in sample? A: as many as automated tools will support
- projects may be missing important artifacts/ infrequent important artifacts, even in large sample? A: how important can an artifact be if it's rare? As an artifact, it can't be. Note that the information that ought to be in such artifacts (example: requirements) really could be missing.
- does frequency in the sample truly reflect best practice? A: absolutely not. It reflects common practice only.
- what can we do with this information? A: get a sample of artifacts used in common practice, and reverse-engineer from them the information that they contain.
- it would be useful to know the relative frequency, as a very crude means of prioritization
- What information is contained in those artifacts?
- more precisely, how can the information be classified into different kinds?
- relationships between classifications? is this information useful? A: the definition of the kinds would be tailored to be useful, by construction. So yes, it is entirely possible to created kinds that may be 'explanatory' from a human perspective, but be useless from the point of view of generate everything.
- frequency of information between artifacts? which classifications? information shared between classifications? A: like the above, any classification would be for the purpose of making generation easier.
- more precisely, how can the information be classified into different kinds?
- How would one encode those different kinds information (so as to be re-usable)?
- ex: math expressions, sentences, semi-structured sentences, semi-structured sets of these, 'theories', etc.
- best practice? A: As this is currently not done (from the perspective of generation) outside of code generation, there isn't really much 'best practice' that exist. All current practice is experimental.
- other practices? novel ways of encoding such information? A: some people use ontologies. Others use DSLs. Some config files are kind of related. Some people embed this information directly in generators. There's a hodge podge of stuff.
- optimize? A: way too early to think of that. It needs to 'work', as a binary optimization problem...
- ex: math expressions, sentences, semi-structured sentences, semi-structured sets of these, 'theories', etc.
- What is the provenance of that information?
- provenance will reveal meta-artifacts that may not typically be in projects, but exist nonetheless
- how to trace? A: don't know
- categorize provenance? A: don't know
- categorize meta-artifacts? A: don't know
- what to look for? A: don't know
- how to formalize such information in the projects? A: don't know
- how can this help in future projects? A: don't know
- provenance will reveal meta-artifacts that may not typically be in projects, but exist nonetheless
- When taking all the information in a set of of artifacts as a coherent whole,
- what is the joint information?
- what is the unique information?
- How does one transform encoded information into the form it appears in final artifacts?
- i.e. this is a reverse operation to the encoding step(s) above
- How to store a 'database' of such information so that it can be reused?
- How does one specify a set of transformations that makes up a 'recipe' from information to artifacts?
- How does one make that set of transformation modular?
- Observation: a software system (like Drasil) is itself a software project - could Drasil be encoded in Drasil?
- inspired by compilers, micro-passes is probably a good way to go
Stuff to add to above:
- new backends (Matlab, C, Rust, ...)
- testing as a cross-cutting approach
- version control
- workflow, idealized (Drasil) process
- very different domains
- embedded computational knowledge
- best practices
- generalized definition of developer productivity
- Home
- Getting Started
- Documentation (of Drasil specifics)
- Design
-
Readings
- Drasil Papers and Documents
- Related Work and Inspiration
- Writing Documentation
- Compression as a Means to Learn Structure
- Glossary, Taxonomy, Ontology
- Grounded Theory
- Model Driven Scrapbook
- Model Transformation Languages
- ODE Definitions
- The Code Generator
- Suggested Reading
- Sustainability
- Productivity
- Reuse
- Formal Concept Analysis
- Generative Programming
- Software Documentation
- Units and Quantities
- Misc.
- WIP Projects