- Half Baked

From: Douglas G. Danforth <"Douglas>
Date: Sat, 27 Jan 2007 13:46:53 -0500

----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