comp.lang.ada
 help / color / mirror / Atom feed
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


             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