comp.lang.ada
 help / color / mirror / Atom feed
From: Lucas Redding <lucas.redding@gmail.com>
Subject: Re: How to best organize and build large projects?
Date: Mon, 21 Sep 2015 05:03:00 -0700 (PDT)
Date: 2015-09-21T05:03:00-07:00	[thread overview]
Message-ID: <cc5673bf-2020-4fc0-ac1f-3535ef0eb411@googlegroups.com> (raw)
In-Reply-To: <428ab038-94ac-4549-ae3b-0b06f4fb80a8@googlegroups.com>

On Sunday, September 20, 2015 at 5:42:44 PM UTC+1, John Smith wrote:
> Hi all,
> 
> In your experience, what are some good approaches in case I want to organize and then build an application with many files and resources.  Would you split the project up into source, resources, build_scripts, etc?  Would you use makefiles to build the whole thing or some other tool?

In my humble opinion it is always good to break down your product/system:
Create subsystems, within the subsystem create products, and within products create classes/Ada packages depending on the size/distribution of the application. My example below talks about a very large application.

Manage your products/classes/subsystems and system (Main build) in a hierarchy (nesting) of self contained/independent libraries using gpr with possibly a single build script per GPR whether you decide to use gprbuild/gnatmake/make etc it can be independent to the gpr.

Each subsystem/product/package needs to be as self contained/independent as possible; i.e. compiles into a libary which is reused within the hierarchy, or compiles into an executable application. This aids the design/development, maintenance, verification down the line. This way you can distribute the development of the system to separate teams each responsible for a subsystem/product/package. A little effort upfront to design your system as such saves a huge amount of effort down the line.

Bottom up as well, look to maintaining single units, down to separates. Again, you have individual control down to the lowest common denominator ; i.e. if a separate changes, no need to impact the rest of the package, and a recompile is quick.

There is no silver bullet so all the above may be good but you may want to balance it due to the nature of your project. For instance disregard the separates because you dont' need the bottom up control etc.

Hope that helps

  parent reply	other threads:[~2015-09-21 12:03 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-20 16:42 How to best organize and build large projects? John Smith
2015-09-20 18:42 ` gautier_niouzes
2015-09-20 18:58 ` David Botton
2015-09-20 19:45 ` Dmitry A. Kazakov
2015-09-22 18:02   ` John Smith
2015-09-21 10:31 ` Georg Bauhaus
2015-09-21 12:03 ` Lucas Redding [this message]
2015-09-21 15:19   ` Simon Wright
2015-09-21 15:28     ` David Botton
2015-09-21 16:38       ` Simon Wright
2015-09-21 16:50         ` David Botton
2015-09-21 16:52       ` Dmitry A. Kazakov
2015-09-21 17:17       ` Shark8
2015-09-21 16:59     ` Dmitry A. Kazakov
2015-09-21 21:36       ` Simon Wright
2015-09-21 21:52         ` Dmitry A. Kazakov
replies disabled

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