From: Lionel Draghi <Lionel.nospam.Draghi@Ada-France.org>
Subject: Ann: ArchiCheck v0.1
Date: Thu, 8 Jun 2017 00:06:01 +0200
Date: 2017-06-08T00:06:01+02:00 [thread overview]
Message-ID: <593878c9$0$3316$426a74cc@news.free.fr> (raw)
Hi all,
Archicheck is a simple tool to describe and enforce architecture/design
decision that are not easily checked by languages and compilers.
This code was written twelve years ago, and even announced on
comp.lang.ada
(http://groups.google.com/group/comp.lang.ada/browse_thread/thread/4a195a443fce793e/41bb2cb527464bab?q=comp.lang.ada+example+of+layered+software#41bb2cb527464bab)
in November 2005, but never released.
Here it is, essentially as it was in 2005, build in the same environment
(Darcs, Gnat, NaturalDocs, Dia, OpenToken, etc.).
This tool was written because of my frustration that simple design
decision where not complied with.
A classical and recurring case was that for a bug fix, someone adds a
“with” in the code, that created a visibility to a package supposed to
be in an upper layer.
(Refer to slides 5 to 8 in this 2004 (!) pdf :
http://lionel.draghi.free.fr/ArchiCheck/Doc/Archicheck Overview.pdf for
a graphical view of this).
Few month of such a code spaghettization resulted in subtle elaboration
order problems, and obviously in code degradation.
Another classical design decision not so easy to verify is to forbid any
dependencies on OS specific code, except in an appointed “portability”
package.
Ada couldn’t prevent this (not to mention other languages), and I found
no external tools able to verify it.
This is why I started the Archicheck project, as a tool that read a text
file containing in simple statements the architecture description, and
check the code compliance.
Consider the my_rules.txt file :
Presentation_Layer contains A B C packages
Application_Layer contains D E F packages
Domain_Layer contains G H I packages
Presentation_Layer is a layer over Application_Layer
Application_Layer is a layer over Domain_Layer
Only Hardware_Abstraction_Layer can use Interfaces.C
Just put
archicheck my_rules.txt –I ./my_src
in your make file, and that’s it.
This is a POC, the code is not at all robust, or even well tested, and
it check only Layer rules at this stage (cf. Tests section here :
http://lionel.draghi.free.fr/Archicheck/index.html).
Any feedback or comment is welcomed (even on the tool’s name!).
More info on http://lionel.draghi.free.fr/Archicheck/index.html
Lionel
next reply other threads:[~2017-06-07 22:06 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-07 22:06 Lionel Draghi [this message]
2017-06-08 1:04 ` ArchiCheck v0.1 Randy Brukardt
2017-06-08 10:33 ` lionel.draghi
2017-06-09 3:27 ` Randy Brukardt
2017-06-08 7:29 ` Ann: " Simon Wright
2017-06-08 10:21 ` Lionel
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox