----boundary-LibPST-iamunique-2095614731_-_-
Content-type: text/plain
Bob,
Thank you for turning a poorly stated problem into an elegant discussion. -Doug
Bob Walkden wrote:
Unfortunately I don't think we're going to see a true cross-platform
version of Blackbox, and translating a few modules such as Host
probably won't be enough to guarantee the portability you're after.
Parnas explained the fundamental principles of writing portable code
in several papers which are available on the web and in the collection
"Software Fundamentals". They are very well worth rereading:
Designing Software for Ease of Extension and Contraction
On the Criteria to be Used in Decomposing Systems into Modules
and others.
The key principle is to identify and isolate those parts of your
software that are most likely to change.
It's quite difficult to do, and an email can't really do justice to
the idea or explain it properly. Some time ago I thought it would be
useful to prove the principle by writing several versions of one of
the classic model software problems (the library problem) and showing
how the resulting modules (perhaps written in entirely different
languages) can be interchanged easily. Parnas set a similar exercise
for one of his classes in the early days, and it proved very
successful.
However, as is usual with me, the project ran into the ground for lack
of time. But I will have a dig around and see if I have anything in a
good enough state to post as an example. I'm convinced there's a
worthwhile book to be written around this idea.
The most important thing is the module structure. It is vital to keep
to distinct layers with dependencies in one direction only. For
example, your user interface layer will depend on the abstract model
layer (your 'real world' classes), but you cannot under any
circumstances allow your model layer to depend on the user interface
layer. This is where Parnas's first paper cited above is outstanding.
It's very easy to make the abstract model layer portable between
environments.
You must also isolate your storage layer in a similar way. In fact,
the storage layer needs to consist of several distinct sub-layers. For
instance, you need to be able to switch between modules which use a
SQL database, and those which use, say, ISAM. Within the SQL-aware
modules you need to be able to switch easily between say Oracle and
SQL Server. The way I've done that is to keep the SQL itself in
resource files, loaded at run-time. This has the added benefit under
BB that I can test the SQL very easily from a console.
It's not very fashionable in these days of 'Extreme Programming', but
what is needed is Big Design Up Front.
--
Regards,
Bob
I think the bottom line is "job security". I would like to
be able to
move my
BlackBox/Component Pascal knowledge to other platforms such as Linux
and be able to produce code that others can use. Yes I would like
the GUI interface to remain unchanged BUT that is not critical.
What is critical is that the interface be graphical with buttons
and sliders, etc. Half Baked refers to my idea of using Oberon V4.
I am simply looking for a way to be able to pick up and drop the
BlackBox environment onto other OS's (again for job security).
I know that all of the "Host" code would need to be rewritten
to make BB portable. If it were to V4 then each function would
need to be represented as a V4 call. If it were to Java then
platform independent Java libraries would need to be called.
I am very skeptical about Bluebottle simply from the number
of technical problems that keep arising in the discussion group.
The code does not appear to be "elegant", in my opinion.
I've used V4 for many years and no longer like the
interclicks. I much prefer the BlackBox GUI.
I think that answers your questions?
-Doug Danforth
--- BlackBox
--- send subject HELP or UNSUBSCRIBE to blackbox{([at]})nowhere.xy
--- BlackBox
--- send subject HELP or UNSUBSCRIBE to blackbox{([at]})nowhere.xy
----boundary-LibPST-iamunique-2095614731_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"
e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwIEJvYixccGFyDQpUaGFuayB5b3UgZm9yIHR1cm5p
bmcgYSBwb29ybHkgc3RhdGVkIHByb2JsZW0gaW50byBhbiBlbGVnYW50IGRpc2N1c3Npb24uIC1E
b3VnXHBhcg0KXHBhcg0KQm9iIFdhbGtkZW4gd3JvdGU6IFxwYXINClxwYXINClx0YWIgVW5mb3J0
dW5hdGVseSBJIGRvbid0IHRoaW5rIHdlJ3JlIGdvaW5nIHRvIHNlZSBhIHRydWUgY3Jvc3MtcGxh
dGZvcm1ccGFyDQpcdGFiIHZlcnNpb24gb2YgQmxhY2tib3gsIGFuZCB0cmFuc2xhdGluZyBhIGZl
dyBtb2R1bGVzIHN1Y2ggYXMgSG9zdFxwYXINClx0YWIgcHJvYmFibHkgd29uJ3QgYmUgZW5vdWdo
IHRvIGd1YXJhbnRlZSB0aGUgcG9ydGFiaWxpdHkgeW91J3JlIGFmdGVyLiBccGFyDQpcdGFiIFxw
YXINClx0YWIgUGFybmFzIGV4cGxhaW5lZCB0aGUgZnVuZGFtZW50YWwgcHJpbmNpcGxlcyBvZiB3
cml0aW5nIHBvcnRhYmxlIGNvZGVccGFyDQpcdGFiIGluIHNldmVyYWwgcGFwZXJzIHdoaWNoIGFy
ZSBhdmFpbGFibGUgb24gdGhlIHdlYiBhbmQgaW4gdGhlIGNvbGxlY3Rpb25ccGFyDQpcdGFiICJT
b2Z0d2FyZSBGdW5kYW1lbnRhbHMiLiBUaGV5IGFyZSB2ZXJ5IHdlbGwgd29ydGggcmVyZWFkaW5n
OlxwYXINClx0YWIgXHBhcg0KXHRhYiBEZXNpZ25pbmcgU29mdHdhcmUgZm9yIEVhc2Ugb2YgRXh0
ZW5zaW9uIGFuZCBDb250cmFjdGlvblxwYXINClx0YWIgT24gdGhlIENyaXRlcmlhIHRvIGJlIFVz
ZWQgaW4gRGVjb21wb3NpbmcgU3lzdGVtcyBpbnRvIE1vZHVsZXNccGFyDQpcdGFiIFxwYXINClx0
YWIgYW5kIG90aGVycy5ccGFyDQpcdGFiIFxwYXINClx0YWIgVGhlIGtleSBwcmluY2lwbGUgaXMg
dG8gaWRlbnRpZnkgYW5kIGlzb2xhdGUgdGhvc2UgcGFydHMgb2YgeW91clxwYXINClx0YWIgc29m
dHdhcmUgdGhhdCBhcmUgbW9zdCBsaWtlbHkgdG8gY2hhbmdlLlxwYXINClx0YWIgXHBhcg0KXHRh
YiBJdCdzIHF1aXRlIGRpZmZpY3VsdCB0byBkbywgYW5kIGFuIGVtYWlsIGNhbid0IHJlYWxseSBk
byBqdXN0aWNlIHRvXHBhcg0KXHRhYiB0aGUgaWRlYSBvciBleHBsYWluIGl0IHByb3Blcmx5LiBT
b21lIHRpbWUgYWdvIEkgdGhvdWdodCBpdCB3b3VsZCBiZVxwYXINClx0YWIgdXNlZnVsIHRvIHBy
b3ZlIHRoZSBwcmluY2lwbGUgYnkgd3JpdGluZyBzZXZlcmFsIHZlcnNpb25zIG9mIG9uZSBvZlxw
YXINClx0YWIgdGhlIGNsYXNzaWMgbW9kZWwgc29mdHdhcmUgcHJvYmxlbXMgKHRoZSBsaWJyYXJ5
IHByb2JsZW0pIGFuZCBzaG93aW5nXHBhcg0KXHRhYiBob3cgdGhlIHJlc3VsdGluZyBtb2R1bGVz
IChwZXJoYXBzIHdyaXR0ZW4gaW4gZW50aXJlbHkgZGlmZmVyZW50XHBhcg0KXHRhYiBsYW5ndWFn
ZXMpIGNhbiBiZSBpbnRlcmNoYW5nZWQgZWFzaWx5LiBQYXJuYXMgc2V0IGEgc2ltaWxhciBleGVy
Y2lzZVxwYXINClx0YWIgZm9yIG9uZSBvZiBoaXMgY2xhc3NlcyBpbiB0aGUgZWFybHkgZGF5cywg
YW5kIGl0IHByb3ZlZCB2ZXJ5XHBhcg0KXHRhYiBzdWNjZXNzZnVsLiBccGFyDQpcdGFiIFxwYXIN
Clx0YWIgSG93ZXZlciwgYXMgaXMgdXN1YWwgd2l0aCBtZSwgdGhlIHByb2plY3QgcmFuIGludG8g
dGhlIGdyb3VuZCBmb3IgbGFja1xwYXINClx0YWIgb2YgdGltZS4gQnV0IEkgd2lsbCBoYXZlIGEg
ZGlnIGFyb3VuZCBhbmQgc2VlIGlmIEkgaGF2ZSBhbnl0aGluZyBpbiBhXHBhcg0KXHRhYiBnb29k
IGVub3VnaCBzdGF0ZSB0byBwb3N0IGFzIGFuIGV4YW1wbGUuIEknbSBjb252aW5jZWQgdGhlcmUn
cyBhXHBhcg0KXHRhYiB3b3J0aHdoaWxlIGJvb2sgdG8gYmUgd3JpdHRlbiBhcm91bmQgdGhpcyBp
ZGVhLlxwYXINClx0YWIgXHBhcg0KXHRhYiBUaGUgbW9zdCBpbXBvcnRhbnQgdGhpbmcgaXMgdGhl
IG1vZHVsZSBzdHJ1Y3R1cmUuIEl0IGlzIHZpdGFsIHRvIGtlZXBccGFyDQpcdGFiIHRvIGRpc3Rp
bmN0IGxheWVycyB3aXRoIGRlcGVuZGVuY2llcyBpbiBvbmUgZGlyZWN0aW9uIG9ubHkuIEZvclxw
YXINClx0YWIgZXhhbXBsZSwgeW91ciB1c2VyIGludGVyZmFjZSBsYXllciB3aWxsIGRlcGVuZCBv
biB0aGUgYWJzdHJhY3QgbW9kZWxccGFyDQpcdGFiIGxheWVyICh5b3VyICdyZWFsIHdvcmxkJyBj
bGFzc2VzKSwgYnV0IHlvdSBjYW5ub3QgdW5kZXIgYW55XHBhcg0KXHRhYiBjaXJjdW1zdGFuY2Vz
IGFsbG93IHlvdXIgbW9kZWwgbGF5ZXIgdG8gZGVwZW5kIG9uIHRoZSB1c2VyIGludGVyZmFjZVxw
YXINClx0YWIgbGF5ZXIuIFRoaXMgaXMgd2hlcmUgUGFybmFzJ3MgZmlyc3QgcGFwZXIgY2l0ZWQg
YWJvdmUgaXMgb3V0c3RhbmRpbmcuXHBhcg0KXHRhYiBJdCdzIHZlcnkgZWFzeSB0byBtYWtlIHRo
ZSBhYnN0cmFjdCBtb2RlbCBsYXllciBwb3J0YWJsZSBiZXR3ZWVuXHBhcg0KXHRhYiBlbnZpcm9u
bWVudHMuXHBhcg0KXHRhYiBccGFyDQpcdGFiIFlvdSBtdXN0IGFsc28gaXNvbGF0ZSB5b3VyIHN0
b3JhZ2UgbGF5ZXIgaW4gYSBzaW1pbGFyIHdheS4gSW4gZmFjdCxccGFyDQpcdGFiIHRoZSBzdG9y
YWdlIGxheWVyIG5lZWRzIHRvIGNvbnNpc3Qgb2Ygc2V2ZXJhbCBkaXN0aW5jdCBzdWItbGF5ZXJz
LiBGb3JccGFyDQpcdGFiIGluc3RhbmNlLCB5b3UgbmVlZCB0byBiZSBhYmxlIHRvIHN3aXRjaCBi
ZXR3ZWVuIG1vZHVsZXMgd2hpY2ggdXNlIGFccGFyDQpcdGFiIFNRTCBkYXRhYmFzZSwgYW5kIHRo
b3NlIHdoaWNoIHVzZSwgc2F5LCBJU0FNLiBXaXRoaW4gdGhlIFNRTC1hd2FyZVxwYXINClx0YWIg
bW9kdWxlcyB5b3UgbmVlZCB0byBiZSBhYmxlIHRvIHN3aXRjaCBlYXNpbHkgYmV0d2VlbiBzYXkg
T3JhY2xlIGFuZFxwYXINClx0YWIgU1FMIFNlcnZlci4gVGhlIHdheSBJJ3ZlIGRvbmUgdGhhdCBp
cyB0byBrZWVwIHRoZSBTUUwgaXRzZWxmIGluXHBhcg0KXHRhYiByZXNvdXJjZSBmaWxlcywgbG9h
ZGVkIGF0IHJ1bi10aW1lLiBUaGlzIGhhcyB0aGUgYWRkZWQgYmVuZWZpdCB1bmRlclxwYXINClx0
YWIgQkIgdGhhdCBJIGNhbiB0ZXN0IHRoZSBTUUwgdmVyeSBlYXNpbHkgZnJvbSBhIGNvbnNvbGUu
XHBhcg0KXHRhYiBccGFyDQpcdGFiIEl0J3Mgbm90IHZlcnkgZmFzaGlvbmFibGUgaW4gdGhlc2Ug
ZGF5cyBvZiAnRXh0cmVtZSBQcm9ncmFtbWluZycsIGJ1dFxwYXINClx0YWIgd2hhdCBpcyBuZWVk
ZWQgaXMgQmlnIERlc2lnbiBVcCBGcm9udC5ccGFyDQpcdGFiIFxwYXINClx0YWIgLS1ccGFyDQpc
dGFiIFJlZ2FyZHMsXHBhcg0KXHRhYiAgQm9iIFxwYXINClx0YWIgXHBhcg0KXHRhYiAgIFxwYXIN
ClxwYXINClx0YWIgXHRhYiBcdGFiICAgXHBhcg0KXHRhYiBcdGFiIFx0YWIgICAgICAgXHBhcg0K
XHBhcg0KXHRhYiBcdGFiIEkgdGhpbmsgdGhlIGJvdHRvbSBsaW5lIGlzICJqb2Igc2VjdXJpdHki
LiAgSSB3b3VsZCBsaWtlIHRvIFxwYXINClx0YWIgXHRhYiBiZSBhYmxlIHRvIFxwYXINClx0YWIg
XHRhYiBtb3ZlIG15XHBhcg0KXHRhYiBcdGFiIEJsYWNrQm94L0NvbXBvbmVudCBQYXNjYWwga25v
d2xlZGdlIHRvIG90aGVyIHBsYXRmb3JtcyBzdWNoIGFzIExpbnV4XHBhcg0KXHRhYiBcdGFiIGFu
ZCBiZSBhYmxlIHRvIHByb2R1Y2UgY29kZSB0aGF0IG90aGVycyBjYW4gdXNlLiAgWWVzIEkgd291
bGQgbGlrZVxwYXINClx0YWIgXHRhYiB0aGUgR1VJIGludGVyZmFjZSB0byByZW1haW4gdW5jaGFu
Z2VkIEJVVCB0aGF0IGlzIG5vdCBjcml0aWNhbC4gIFxwYXINClx0YWIgXHRhYiBXaGF0IGlzIGNy
aXRpY2FsIGlzIHRoYXQgdGhlIGludGVyZmFjZSBiZSBncmFwaGljYWwgd2l0aCBidXR0b25zIFxw
YXINClx0YWIgXHRhYiBhbmQgc2xpZGVycywgZXRjLiBIYWxmIEJha2VkIHJlZmVycyB0byBteSBp
ZGVhIG9mIHVzaW5nIE9iZXJvbiBWNC4gIFxwYXINClx0YWIgXHRhYiBJIGFtIHNpbXBseSBsb29r
aW5nIGZvciBhIHdheSB0byBiZSBhYmxlIHRvIHBpY2sgdXAgYW5kIGRyb3AgdGhlIFxwYXINClx0
YWIgXHRhYiBCbGFja0JveCBlbnZpcm9ubWVudCBvbnRvIG90aGVyIE9TJ3MgKGFnYWluIGZvciBq
b2Igc2VjdXJpdHkpLiBccGFyDQpcdGFiIFx0YWIgSSBrbm93IHRoYXQgYWxsIG9mIHRoZSAiSG9z
dCIgY29kZSB3b3VsZCBuZWVkIHRvIGJlIHJld3JpdHRlbiBccGFyDQpcdGFiIFx0YWIgdG8gbWFr
ZSBCQiBwb3J0YWJsZS4gIElmIGl0IHdlcmUgdG8gVjQgdGhlbiBlYWNoIGZ1bmN0aW9uIHdvdWxk
IFxwYXINClx0YWIgXHRhYiBuZWVkIHRvIGJlIHJlcHJlc2VudGVkIGFzIGEgVjQgY2FsbC4gIElm
IGl0IHdlcmUgdG8gSmF2YSB0aGVuIFxwYXINClx0YWIgXHRhYiBwbGF0Zm9ybSBpbmRlcGVuZGVu
dCBKYXZhIGxpYnJhcmllcyB3b3VsZCBuZWVkIHRvIGJlIGNhbGxlZC5ccGFyDQpcdGFiIFx0YWIg
XHBhcg0KXHRhYiBcdGFiIEkgYW0gdmVyeSBza2VwdGljYWwgYWJvdXQgQmx1ZWJvdHRsZSBzaW1w
bHkgZnJvbSB0aGUgbnVtYmVyIFxwYXINClx0YWIgXHRhYiBvZiB0ZWNobmljYWwgcHJvYmxlbXMg
dGhhdCBrZWVwIGFyaXNpbmcgaW4gdGhlIGRpc2N1c3Npb24gZ3JvdXAuICBccGFyDQpcdGFiIFx0
YWIgVGhlIGNvZGUgZG9lcyBub3QgYXBwZWFyIHRvIGJlICJlbGVnYW50IiwgaW4gbXkgb3Bpbmlv
bi5ccGFyDQpcdGFiIFx0YWIgXHBhcg0KXHRhYiBcdGFiIEkndmUgdXNlZCBWNCBmb3IgbWFueSB5
ZWFycyBhbmQgbm8gbG9uZ2VyIGxpa2UgdGhlIFxwYXINClx0YWIgXHRhYiBpbnRlcmNsaWNrcy4g
IEkgbXVjaCBwcmVmZXIgdGhlIEJsYWNrQm94IEdVSS5ccGFyDQpcdGFiIFx0YWIgXHBhcg0KXHRh
YiBcdGFiIEkgdGhpbmsgdGhhdCBhbnN3ZXJzIHlvdXIgcXVlc3Rpb25zP1xwYXINClx0YWIgXHRh
YiBccGFyDQpcdGFiIFx0YWIgLURvdWcgRGFuZm9ydGhccGFyDQpcdGFiIFx0YWIgXHBhcg0KXHRh
YiBcdGFiIC0tLSBCbGFja0JveFxwYXINClx0YWIgXHRhYiAtLS0gc2VuZCBzdWJqZWN0IEhFTFAg
b3IgVU5TVUJTQ1JJQkUgdG8gYmxhY2tib3hAb2Jlcm9uLmNoXHBhcg0KXHRhYiBcdGFiIFxwYXIN
Clx0YWIgXHRhYiBccGFyDQpcdGFiIFx0YWIgXHBhcg0KXHRhYiBcdGFiICAgICBccGFyDQpccGFy
DQpcdGFiIFxwYXINClx0YWIgLS0tIEJsYWNrQm94XHBhcg0KXHRhYiAtLS0gc2VuZCBzdWJqZWN0
IEhFTFAgb3IgVU5TVUJTQ1JJQkUgdG8gYmxhY2tib3hAb2Jlcm9uLmNoXHBhcg0KXHRhYiBccGFy
DQpcdGFiIFxwYXINClx0YWIgICBccGFyDX19AFpsSUdF
----boundary-LibPST-iamunique-2095614731_-_---
Received on Sat Jan 27 2007 - 19:46:53 UTC
This archive was generated by hypermail 2.3.0
: Thu Sep 26 2013 - 06:31:53 UTC