Hi all,
We are currently discussing software componentization on several scope levels:
* General discussion about componentization without direct relation to specific existing description format or solution. * Minimal Viable Product (MVP) related discussion, where MVP is defined as minimalistic CLI tool which should be able to assemble buildable project from SW components. * CMSIS pack specific discussion with focus on gaps identification.
I would like to share few resources and observations related to dependency resolution as part of general discussion.
There is segment of tools called EDAhttps://en.wikipedia.org/wiki/Electronic_design_automation. Such tools use various design rules checkers based on logic rules evaluation. Another segment is design of logic circuitshttps://en.wikipedia.org/wiki/Logic_gate especially area of circuit optimizationhttps://en.wikipedia.org/wiki/Logic_optimization#Circuit_minimization_in_Boolean_algebra. Optimization could be done by application of Boolean algebrahttps://en.wikipedia.org/wiki/Boolean_algebra or by more user friendly methods listed in switching circuit theoryhttps://en.wikipedia.org/wiki/Switching_circuit_theory. Specific methods of optimization are:
* Karnaugh maphttps://en.wikipedia.org/wiki/Karnaugh_map * Quine-McCluskey algorithmhttps://en.wikipedia.org/wiki/Quine%E2%80%93McCluskey_algorithm * Espresso minimizerhttps://en.wikipedia.org/wiki/Espresso_heuristic_logic_minimizer Result of those methods is minimized standard expression. Dependency resolver should be able to transform expression into minimized standard form.
Another typical issue is Boolean satisfiability problem https://en.wikipedia.org/wiki/Boolean_satisfiability_problem (SAT). Dependency resolver should be able to validate whether expression could be resolved.
Example libraries and references:
* PyEDAhttps://pyeda.readthedocs.io/en/latest/expr.html#from-constants-variables-and-python-operators (example of Boolean manipulation) * https://doc.opensuse.org/projects/satsolver/11.4/ * http://www.lifl.fr/LION9/presentation_orator/lion9.pdf * Solving Linux Upgradeability Problems Using Boolean Optimizationhttps://arxiv.org/pdf/1007.1021.pdf * https://www.cril.univ-artois.fr/documents/nanjing-leberre.pdf * https://www.sat4j.org/
This is result of brief research, I have no personal experience with SAT libraries. Do you have any specific experience with SAT ?
Regards, David
David Jurajda Software Engineer MCU Software NXP Semiconductors david.jurajda@nxp.commailto:david.jurajda@nxp.com [http://bigm.ea.freescale.net/microsites/guide/nxp_secure.png]
open-cmsis-pack-dev@op-lists.linaro.org