comp.lang.ada
 help / color / mirror / Atom feed
* Ann: ArchiCheck v0.1
@ 2017-06-07 22:06 Lionel Draghi
  2017-06-08  1:04 ` Randy Brukardt
  2017-06-08  7:29 ` Ann: " Simon Wright
  0 siblings, 2 replies; 6+ messages in thread
From: Lionel Draghi @ 2017-06-07 22:06 UTC (permalink / 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


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2017-06-09  3:27 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-07 22:06 Ann: ArchiCheck v0.1 Lionel Draghi
2017-06-08  1:04 ` 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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox