Both together, the asynchronous service components using the publish/subscribe pattern and the synchronous service components are now managed by the service broker and work in a given context. The ability of a client-dependent component resolution allows to operate flexible SaaS scenarios. So soon you'll read here about our projects.
Tuesday, 27 February 2007
The next step
Both together, the asynchronous service components using the publish/subscribe pattern and the synchronous service components are now managed by the service broker and work in a given context. The ability of a client-dependent component resolution allows to operate flexible SaaS scenarios. So soon you'll read here about our projects.
Posted by
mue
at
12:09 AM
0
Comments
Link
Labels: smalltalk
Thursday, 22 February 2007
List, priorize and link
What lists do you need? First of all it's the project vision. It doesn't have to be very detailed and the mission statements should cover clear user scenarios on a business process level. It's just an outline of what the final product will look like viewed as a whole. The contained statements have to be priorized by their importance for the customer. So his input is very importand. The result has to be a list with identifiable statements in a clear order from "must have" down to "nice to have". You know, this list can and will change while the project is in progress. But it builds the foundation for the next steps.
Based on the vision the list of features will be created. Each feature has to be linked to at least vision statement. Even non-functional requirements have to be listed as a feature and linked to a vision statement. If features without a clear vision statement exist that list isn't complete. Each feature inherits the major priority from the highest priorized linked vision statement. But typically there are much more features than vision statements. So they need a minor priorization controlling the order of equal major priorized. Additionally, to make this list useful for the daily work, you'll need a field where you name the responsible person for the realization and a simple status showing if the realization is in progress, finished, tested or if this feature is allready integrated. There's much more useful information, but keep in mind that this list shouln't be too complex. An optimal software could handle this in different views.
A very importand list you've got to maintain during the whole project is the risk management list. It contains individual risks, their possibility of an occurrence, their lost if they occur and counteractive measures. The possibility of occurence has to be defined in percentage, the list in a comperable size - most time this will be money. *smile* Both together multiplied result in the probable loss which controls the priorization. Risks can have multiple links to vision statements, features, or issues. But they also can be without a link, e.g. when the risk is based on the personnel situation.
As allready written above there's another type of lists: the issue list. An issue is typically a problem with the system or a former risk that occured. Each issue has also to be priorized in two steps. This time the first one is based on the quality of the issue as a "show stopper" down to "not so nice". The second priority is this time the priority of the linked vision statement, feature or risk.
Those few lists, maintained in an open accessable tool and used as a base for your daily work and communication will allready help a lot.
Posted by
mue
at
6:09 PM
0
Comments
Link
Labels: project management
Featured blog: Presentation Zen
Posted by
mue
at
9:22 AM
0
Comments
Link
Labels: blogging
Monday, 19 February 2007
The power and beauty of dynamic typed languages
My intention has been to provide a generic hierarchical system, easy to read and use, with a seamless integration into Smalltalk and the possibility to read and write XML. Yes, me too. *smile* But XML is not the major access language, it's only an additional feature to read and store external configurations in closed applications. My typical way to use the configuration shall be the Smalltalk API.
Result is the set of the three classes
CslConfiguration, CslConfigurationValue and CslConfigurationError. The entry class is just a wrapper with nil as superclass, passing almost all message sends to the wrapped configuration value. But it has the own message withDefault: which expects a block as argument. What is the idea behind it? Imagine an access to a configuration value that doesn't exist. The call would befoo := cfg foo withDefault: [#bar].
foo := cfg foo withDefault: [#yadda].
cfg foo: #yadda.
foo := cfg foo.
CslConfiguration has no methods foo: or foo. It just uses doesNotUnderstand: to map the message to a setter or getter of an internal dictionary key. And if the key doesn't exist and a getter is called it returns a new nested CslConfiguration instance. So you can also do things likecfg database connection poolSize: 10.
CslConfiguration understands isNil, ifNil:, and ifNil:ifNotNil: and behaves like nil if is empty. So it's no problem to perform statements likecfg foo bar isNil ifTrue: [...].
Posted by
mue
at
12:20 AM
0
Comments
Link
Labels: smalltalk
Wednesday, 14 February 2007
Book order
Posted by
mue
at
9:11 AM
0
Comments
Link
Labels: misc
Tuesday, 13 February 2007
Service bus in Smalltalk
First tests showed a very high performance, I've been impressed. It will now get an extension for processing contexts to handle states between message handlings and a mechanism for an automatic routing of answer messages back to the sender. I'll also integrate our execution time measuring and create a better test scenario. So I'll be able to present you more informations about the performance soon.
Posted by
mue
at
10:53 PM
0
Comments
Link
Labels: smalltalk
SOS improvements
CslRuntimeEnvironment and the new CslConfiguration. Also the file handling has been refactored. The directory and file structure is now better to manage, the needed directories are created on demand. The background write process is now a one shot process started after a commit and only if it is not allready running. So less resources are consumed.
Posted by
mue
at
10:33 PM
0
Comments
Link
Labels: smalltalk
Don't worry, embrace change
Also in my daily job as a senior consultant I'm surrounded by changes. Changes of software requirements, changes of development proesses, changes of the organization, changes of the customers I work with. All around almost nothing is constant but much is varying. It seems to be totally natural. So what is allways astonishing to me is how many people have problems with changes. If you talk to them they are scared about there future and what every alteration brings.
Many psychologists research and discuss about it. I'm not really interested in the reasons. But as I can't stop the fact that everything is changing I've learned to make my best out of it. The besting wording I've found for it is embrace change. I've heard it the first time in the context of agile processes. The idea behind it is to take each rearrangement and see it as a chance. You are forced to think about your habbits and routines and lay them down or improve them. OK, sometimes it's really cushy to bank on own experiences and familar knack. But many of them get just older and doesn't fit into new needs.
So I'll continue to embrace change. *smile*
Posted by
mue
at
10:27 PM
0
Comments
Link
Labels: misc
Saturday, 10 February 2007
Where are you creative?
Posted by
mue
at
11:23 AM
0
Comments
Link
Labels: misc
Wednesday, 7 February 2007
Zen and the art of ODBMS
- The support for queries (e.g. with OQL) is often bad.
- The access through different languages often is difficult.
- Schema evolution sometimes isn't supported very good. OK, that's hard for RDBMS based apps too.
Posted by
mue
at
11:05 PM
0
Comments
Link
Labels: smalltalk, software architecture
Monday, 5 February 2007
KISS, YAGNI, DRY
So, if they help a programmer in develop a good piece of software, why shouldn't they help a project manager accomplish a good project? Let's take a deeper look into each acronym.
KISS
Keep it simple, stupid - it can't be repeated often enough. There's so much literature or training about project management with many processes, standards, and documentation templates. Many of them are really good and very detailed. They show a broad spectrum of methods, formalities, and artefacts regarding their special subject. This may be the requirements engineering, software cost estimation, risk management, architecture and design, coding, testing, and much more. Each time specialists write about their own area of expertise providing a more than 100% solution for the topic. This is not bad, you get a very deep insight. But this does not mean that you shall use everything in your project.
Depending on your customer, your team, your management and inhouse standards all your partners have different needs. The customer is interested in a good consultation and a fulfillment of his requirements, your management has commercial requirements and needs a reporting, your QM has defined quality standards, and your developers need a productive environment with the right toolset. To achieve all you can use your know-how and build a superset of all demands together with a safety belt out of your books or trainings. But if you would draw this on a piece of paper you could see that this cloud contains by far too much overhead for you and many of the involved people. It is too much to remember everything and does not allow an undisturbed flow of work. The bureaucracy kills the productivity and creativity of your team.
YAGNI
You ain't gonna need it - so you've got to strip it down to the most important intersections and try to negotiate a priorization about each wish that's expressed by only one person or a single group. Try to compare how much each request is really worth and what it does cost to get a good argumentation basis. And also negotiate with yourself about the ideas out of your books and trainings. Even if processes and ideas really sound good and productive you've got to check if this is suitable for you project, your environment, and your situation. As a project manager you're a service provider for the customer, your team and the management. So parts of the work shouldn't be ends in itself.
DRY
Don't repeat yourself - define a clear and simple process, adjust it with your team, communicate it to everyone, publish it at a central place in your intranet with news announcements and a history, and take care that everybody gets informed if and why something changes. So, over the time, you change your environment to live its own simple and aligned process and the project management as an integral part of the software development instead of a disturbing evil ordered by the manager.
Posted by
mue
at
5:57 PM
0
Comments
Link
Labels: project management, software architecture
Sunday, 4 February 2007
The last steps finishing the Tideland Smalltalk Object Store
So for the official beta testing only the unit tests for the queries and enumerations on named roots and a locking mechanism against concurrent access are missing.
Follow the related link for details.
Posted by
mue
at
11:03 PM
0
Comments
Link
Labels: smalltalk
Friday, 2 February 2007
Domain specific languages
An almost similar idea has been implemented by MetaCase. Their tool MetaEdit+ allows to design and execute a graphical DSL. Additionally they allow to generate source code out of the model. So they combine model-driven software development (MDSD) with DSL. It is a very nice tool written in VisualWorks. The developers told me that they are really Smalltalk enthusiats. Developing this tool in an other language would have been much more time-consuming. Even if this isn't really astonishing it is allways good news.
Altogether there seems to be a trend in to compensate the lack of simpleness and dynamic evaluation of the UML with domain specific languages. They try to fill the gap in understanding between the customer and the devloper. Like the natural language is too weak and unformal for a development the UML is too complex and bulky for the customer. The risk of misunderstanding is too high, so approaches like the explorative modeling with domain specific languages are needed. And languages like Smalltalk as a base for that are really powerful. Smalltalk is easy to understand, metaprogrammable, highly interactive, and has a rich set of tools. Even the development of simple UIs - not for design but as an interface for the evaluation - is really simple.
So I'll try to find an evaluation project in my professional environment.
Posted by
mue
at
5:30 PM
0
Comments
Link
Labels: smalltalk