Skip to content
This repository was archived by the owner on Nov 26, 2025. It is now read-only.

Commit 0750fd4

Browse files
committed
agile: close sprint 29
1 parent 2861415 commit 0750fd4

1 file changed

Lines changed: 7 additions & 275 deletions

File tree

doc/agile/v1/sprint_backlog_28.org

Lines changed: 7 additions & 275 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
** Active
1414

1515
#+begin: clocktable :maxlevel 3 :scope subtree :indent nil :emphasize nil :scope file :narrow 75 :formula %
16-
#+CAPTION: Clock summary at [2020-11-01 Sun 16:36]
16+
#+CAPTION: Clock summary at [2020-11-02 Mon 08:29]
1717
| <75> | | | | |
1818
| Headline | Time | | | % |
1919
|-------------------------------------------------------------+---------+-------+-------+-------|
@@ -205,7 +205,8 @@ Time spent creating the demo and presentation.
205205
***** Create an identification model
206206
***** Rename injection to codec
207207
***** The logical-physical space
208-
*** STARTED Sprint and product backlog grooming :story:
208+
*** COMPLETED Sprint and product backlog grooming :story:
209+
CLOSED: [2020-11-02 Mon 08:29]
209210
:LOGBOOK:
210211
CLOCK: [2020-11-01 Sun 16:34]--[2020-11-01 Sun 16:36] => 0:02
211212
CLOCK: [2020-10-23 Fri 09:41]--[2020-10-23 Fri 10:31] => 0:50
@@ -597,7 +598,8 @@ final location:
597598
- =aspect_properties=: c++ and c#. Features are still located in TS
598599
specific namespaces.
599600

600-
*** STARTED Issues with emacs :story:
601+
*** COMPLETED Issues with emacs :story:
602+
CLOSED: [2020-11-02 Mon 08:29]
601603
:LOGBOOK:
602604
CLOCK: [2020-10-02 Fri 14:51]--[2020-10-02 Fri 16:00] => 1:09
603605
:END:
@@ -607,7 +609,8 @@ Time spent troubleshooting emacs issues.
607609
- problems loading very long lines in log file. Tried using [[https://www.emacswiki.org/emacs/SoLong][so-long]]
608610
and fundamental, but still could not solve the problem.
609611

610-
*** STARTED Rename =name= to =codec= name :story:
612+
*** POSTPONED Rename =name= to =codec= name :story:
613+
CLOSED: [2020-11-02 Mon 08:29]
611614
:LOGBOOK:
612615
CLOCK: [2020-09-24 Thu 20:38]--[2020-09-24 Thu 20:58] => 0:20
613616
:END:
@@ -618,277 +621,6 @@ Notes:
618621

619622
- variability is also using the name class.
620623

621-
*** Move c++ helper related classes to logical model :story:
622-
623-
Classes to move:
624-
625-
- =helper_descriptor=
626-
627-
*** Move default constructor work from resolver :story:
628-
629-
At present we are populating the default constructor for the bundle in
630-
the resolver:
631-
632-
#+begin_src c++
633-
void resolver::resolve_feature_template_bundles(const indices& idx,
634-
entities::model& m) {
635-
for (auto& pair : m.variability_elements().feature_template_bundles()) {
636-
auto& fb(*pair.second);
637-
for (auto& ft : fb.feature_templates()) {
638-
resolve_name_tree(m, idx, fb.name(), ft.parsed_type());
639-
if (ft.parsed_type().is_current_simple_type())
640-
fb.requires_manual_default_constructor(true);
641-
}
642-
}
643-
}
644-
#+end_src
645-
646-
This is very confusing because one would assume the resolver just
647-
resolves. We need to move this logic to =technical_space_properties=.
648-
649-
*** Create a technical space specific property for default functions :story:
650-
651-
In assistant we have:
652-
653-
#+begin_src c++
654-
bool assistant::supports_defaulted_functions() const {
655-
return !is_cpp_standard_98();
656-
}
657-
658-
bool assistant::supports_move_operator() const {
659-
return !is_cpp_standard_98();
660-
}
661-
#+end_src
662-
663-
This should really be in =technical_space_properties=. Check to see if
664-
we missed any.
665-
666-
*** Default constructor incorrectly generated in C++ 98 :story:
667-
668-
We have this logic in =technical_space_properties_transform=:
669-
670-
#+begin_src c++
671-
/*
672-
* In C++ 98 we must always create a default constructor because
673-
* we cannot make use of the defaulted functions.
674-
*/
675-
if (is_cpp_standard_98 || src_tsp.requires_manual_default_constructor())
676-
dest_tsp.requires_manual_default_constructor(true);
677-
#+end_src
678-
679-
This is actually incorrect: we can use default constructors in C++ 98,
680-
as long as there are no other constructors. The problem is we are
681-
relying on the default constructor in test data generator so if we fix
682-
this with an =&&= instead of an =||= we break that code. We need to
683-
figure out what the correct implement is.
684-
685-
*** Detect absence of configuration in bundles :story:
686-
687-
It would be nice if when we call =make_static_configuration= it would
688-
populate some flag stating whether none of the config was
689-
populated. The specific use case is that we may want to detect absence
690-
of all elements and do something in that case (for example, missing
691-
streaming properties).
692-
693-
*** Refactor streaming properties processing :story:
694-
695-
At present we copied across the logic from =text.cpp= where the
696-
streaming properties are stored as a class and the final processing
697-
happens in assistant. However, when we get rid of helpers, we could do
698-
all the processing in the streaming processing transform and store it
699-
in attributes.
700-
701-
*** Add method to check if string is valid enum :story:
702-
703-
We have a method to convert a string to an enum, but sometimes we just
704-
want to know if its valid without converting. We should have a method
705-
that just returns true or false, or throws, if the string is not a
706-
valid enum.
707-
708-
*** Consider renaming =text= to =logical_physical= :story:
709-
710-
This is really the right name for the model; the text processing part
711-
are the transforms that are done on the model.
712-
713-
Notes:
714-
715-
- rename =logical_physical_region= to just =region=.
716-
717-
*** Create a de-normalised representation of archetype properties :story:
718-
719-
At present we have a two-step process: we first read the global
720-
configuration for a model, create the corresponding properties
721-
(e.g. backend, facet, archetype properties) and then we post-process
722-
these to create the =denormalised_archetype_properties=. However, we
723-
never really need to think about the individual properties because
724-
they are always used in the context of an artefact, which means we
725-
care about the de-normalised archetype properties only. Therefore we
726-
should:
727-
728-
- have a =archetype_properties= that is composed of all other
729-
properties;
730-
- change the =meta_model_properties_transform= to create internal
731-
indices of properties as a first step for the final property
732-
generation but do not expose these containers.
733-
734-
Notes:
735-
736-
- we can't remove the top-level containers just yet because they are
737-
used within the formatables namespace. However, these appear to be
738-
legacy use cases, so we should be able to do so when we get rid of
739-
this namespace.
740-
741-
*** Validate no two artefacts have the same ID :story:
742-
743-
At present it is possible to generate two artefacts with the same path
744-
(which is the physical ID) and then have them overwrite each
745-
other. This causes diffs that are very difficult to get to the bottom
746-
of. It would be better to fail with a validation that detects
747-
duplicates.
748-
749-
*** Fix name of configuration tracing file :story:
750-
751-
This name looks incorrect:
752-
753-
: 00000-configuration--initial_input.json
754-
755-
*** Move C# locator into physical model :story:
756-
757-
As per C++ model.
758-
759-
*** Move directive group generation to physical model :story:
760-
761-
- handle header guards as well.
762-
- consider renaming this to relative paths.
763-
- consider the role of parts in the directive groups.
764-
765-
*** Move inclusion into physical model :story:
766-
767-
- try to use artefacts to store dependencies.
768-
769-
*** Move assorted c++ and c# properties into meta-model properties :story:
770-
771-
List of properties to move:
772-
773-
- =aspect_properties=
774-
- =test_data_properties=
775-
- =streaming_properties=
776-
- =cpp_standards=
777-
- =build_files_expander=: requires updating logical model with the
778-
properties, and then creating transforms.
779-
- =assistant_properties=
780-
- =attribute_properties=
781-
782-
Create a transform to read these properties or add it to the existing
783-
meta-model properties transform.
784-
785-
*** Move helpers to text and physical models :story:
786-
787-
- move helper properties to text model.
788-
- move helpers as text transforms to text model. Refactor them to use
789-
the new text model transform interface.
790-
791-
*** Remove formatables namespace :story:
792-
793-
When all types have been moved, we can delete the formatables types
794-
and namespace.
795-
796-
*** Move all text transforms in c++ and c# models into text model :story:
797-
798-
- rename namespaces to fit the hierarchy of LPS.
799-
800-
*** Analysis on org-mode outstanding work :story:
801-
802-
Notes:
803-
804-
- map dogen types to a org-mode tag. The tags must replace =::= with
805-
an underscore, e.g. =masd_enumeration= for
806-
=masd::enumeration=. Mapping is done by detecting stereotype in the
807-
stereotype list and removing it from there. Non-tagged headlines
808-
default to documentation (see below).
809-
- any non-tagged section will be treated as documentation. On
810-
generation it will be suitably converted into the language's format
811-
for documentation (e.g. doxygen, C# docs etc). We need meta-model
812-
elements for these such as "section", etc. Annoyingly, this also
813-
means converting expressions such as =some text=. This will be
814-
trickier.
815-
- in an ideal world we would also have entities such as paragraphs and
816-
the like, to ensure we can reformat the text as required. For
817-
example, the 80 column limitation we have in the input may not be
818-
suitable for the end format (this is the case with markdown).
819-
- we are using qualified names, e.g. =entities::attribute=. These need
820-
to be removed. We need to move the graphing logic into =codec=. See
821-
story for this.
822-
- All models should have a unique ID for each element. The ID should
823-
be based on GUIDs where possible, though there are some difficulties
824-
for cases like Dia. We could create a "fixed" function that
825-
generates GUIDs from dia IDs. For example:
826-
827-
: <dia:childnode parent="O64"/>
828-
829-
We could take the id =O64= and normalise it to say 4 digits: =6400=
830-
(noticed we removed the =O= as its not valid in hex); and then use a
831-
well-defined GUID prefix:
832-
833-
: 3dddc237-3771-45be-82c9-937c5cef
834-
835-
Then we can append the normalised Dia ID to the prefix. This would
836-
ensure we always generate the same GUIDs on conversion from Dia. If
837-
the GUIds change within Dia, then they will also change in the
838-
conversion. This ID is then used as the codec ID. Note that its the
839-
responsibility of the decoder to assign "child node IDs". For JSON
840-
this must already be populated. For Dia its the =childnode=
841-
field. For org-mode, we need to infer it from the structure of the
842-
file. In org-mode we just need to use the =:CUSTOM_ID:= attribute:
843-
844-
: :CUSTOM_ID: 7c38f8ef-0c8c-4f17-a7da-7ed7d5eedeff
845-
846-
- qualified names are computed as a transform via the graph in codec
847-
model.
848-
849-
Links:
850-
851-
- [[https://writequit.org/articles/emacs-org-mode-generate-ids.html][Emacs Org-mode: Use good header ids!]]
852-
853-
*** Analysis of MDE papers to read :story:
854-
855-
Links:
856-
857-
- [[https://ulir.ul.ie/bitstream/handle/10344/2126/2007_Botterweck.pdf;jsessionid=AC6FF39BA414E6065602C7851860C43D?sequence=2][Model-Driven Derivation of Product Architectures]]
858-
- [[https://madoc.bib.uni-mannheim.de/993/1/abwl_02_05.pdf][A Taxonomy of Metamodel Hierarchies]]
859-
860-
*** Nightly nursing and other spikes :story:
861-
862-
Time spent troubleshooting environmental problems.
863-
864-
*** Rename =org_mode= model :story:
865-
866-
Seems like a better name is needed for this model. Perhaps =orgmode=?
867-
Or just =org=? Just don't like =org_mode=.
868-
869-
*** Rename "model-to-X" to TLAs :story:
870-
871-
Given that model-to-text (M2T) and text-to-model (T2M) - to a lesser
872-
extent - are well known TLAs in MDE we should make use of these in
873-
class names. The names we have at present are very long. The
874-
additional size is not providing any benefits.
875-
876-
*** Order of headers is hard-coded :story:
877-
878-
In inclusion expander, we have hacked the sorting:
879-
880-
: // FIXME: hacks for headers that must be last
881-
: const bool lhs_is_gregorian(
882-
: lhs.find_first_of(boost_serialization_gregorian) != npos);
883-
: const bool rhs_is_gregorian(
884-
: rhs.find_first_of(boost_serialization_gregorian) != npos);
885-
: if (lhs_is_gregorian && !rhs_is_gregorian)
886-
: return true;
887-
888-
This could be handled via meta-data, supplying some kind of flag (sort
889-
last?). We should try to generate the code in the "natural order" and
890-
see if the code compiles with latest boost.
891-
892624
** Deprecated
893625

894626
*** CANCELLED Add primitives to the archetypes model :story:

0 commit comments

Comments
 (0)