comp.lang.ada
 help / color / mirror / Atom feed
From: Andrew Shvets <andrew.shvets@gmail.com>
Subject: Re: Proposing/Recomending Ada Usage At Work
Date: Sun, 29 Oct 2017 18:43:38 -0700 (PDT)
Date: 2017-10-29T18:43:38-07:00	[thread overview]
Message-ID: <8347a499-b7ba-42c3-bcf1-0bcf446e7a0c@googlegroups.com> (raw)
In-Reply-To: <f81d4dce-848e-48de-b6fc-a8472531cfab@googlegroups.com>

On Sunday, October 29, 2017 at 9:36:05 PM UTC-4, Shark8 wrote:
> At work there's a system (simulator + scenario-editor) being used in studies which is in desperate need of an upgrade -- particularly/specifically in terms of the editor's usability, as the time to create a scenario is rapidly ballooning to fill up all the time allocated to a study.
> 
> This issue has spurred a drive for suggestions and solutions, and while much of the issue is indeed more of a UI issue, there are implementation considerations which impact the amount of time needed to make a scenario.
> 
> Both the editor and simulator are written in Java, the editor in particular started off as two other programs/collections-of-programs which were merged together in an unholy amalgamation (Java Swing & AWT, IIRC) of stylistic solutions and as such has no real "unifying concept" which, in turn, means that there's all sorts of ways that either the editor proper or the underlying scenario can be put into an invalid state, either forcing a restart or saving a corrupt scenario.
> 
> The saves themselves are subdirectories containing a few custom-language scripts and massive XML files, on which a good chunk of post processing is run, and the logfiles are /gigantic/ for some of these scenarios (like 6GB) -- both of these are, at various points, run through various parsers to have information extracted and reconstructed.
> 
> So, considering all of this, I'm considering proposing a rewrite in Ada (and SPARK, where possible), as w/ Ada we can define the components in the model in ways that they cannot be put into invalid states, as well as making a system where the [need for] post processing is eliminated or greatly mitigated.
> 
> The editor is also plagued with things like timing errors (race conditions), and certain operations like certain "copy" functions not copying underlying links [and thus leading to an inconsistent simulation state].
> 
> So, we can address some of these as follows:
> (1) Properly modeling the problem-space,
> (2) ensuring that model cannot be inconsistent (at least insofar as the type-system can ensure/model this),
> (3) creating a standardized serialization method, ideally ASN.1, which would aid in:
>   (a) unifying the external saves [and logs],
>   (b) reducing transfer-bandwidth via compact encodings,
>   (c) could be used to output/serialize-to XML or [possibly] current text-logs.
> (4) use the TASK construct to offload a lot of the confusion of multithreading,
> (5) the DSA could be used to distribute the load between processing computers [running the large-scenarios takes the majority of a 24hr day],
> (6) if Ada 2020 is considered, then the PARALLEL block could be used to take advantage of massive parallelization.
> 
> ------------------
> Anyway, what are some suggestions and tips for presenting this or making my case?
> Also, what are the points/features I'm missing?

I would emphasize that Ada/SPARK does reduce risk in the long-term.  Add in AUnit and contracts and you will have a solid application that withstand just about anything that you throw at it.


  reply	other threads:[~2017-10-30  1:43 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-30  1:36 Proposing/Recomending Ada Usage At Work Shark8
2017-10-30  1:43 ` Andrew Shvets [this message]
2017-10-30  7:43 ` Brian Drummond
2017-10-30 14:45   ` tclwarrior
2017-10-30 14:46   ` tclwarrior
2017-10-30 15:13     ` Lucretia
2017-10-30 17:53     ` Shark8
2017-10-30 17:57     ` Shark8
2017-10-30 14:37 ` Lucretia
2017-10-30 21:13 ` Shark8
replies disabled

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