The way to successfully organize a project, sort and split the work in a team of developers.
Last updated:
Friday, 23 April 1999
This page has been accessed
8,796
times
Object Oriented, Client/Server, Multiplatform development scream for a new way to organize how to handle a software project
Abstract:
This presentation suggests ways to inegrate the RAD and Object Oriented responsibility driven concepts with the Obsydian repository and Object model.
It provides strategies to achieve success in Obsydian projects: analyzing the components of the project, the people involved and where to pay critical attention.
Special attention is given to maximizing the sharing of the developers' resources, tracking the project completion, and structuring the distributed generation process to avoid unnecessary conflicts and regenerations.
Nicola Zordan is a consultant with over 10 years experience in the IT industry. He worked with Obsydian at Synon Italy since 1995 as a mentor, speaker and project leader.
He is Italian and in 1997 moved to the USA in San Francisco to work at Axis Consulting International, to start up and lead the Obsydian team.
You can find his resume at: http://www.mclink.it/personal/MC2074/Synon/Obsydian.htm
|
Author's notes http://www.bigfoot.com/~ObsydiaNik |
|
A Project is a request to development to provide a software feature for the business. The salesman, the person that goes out and sells the service, is very important, he makes the deal, he is trusted able to provide the service. He play his reputation. And have to deal with the competition. I guess he should be involved in the phases of the project. The Project Leader is the one that always knows the state of the project. If late, on time, if it can be done. Knows timing and resources requirements. Developers, humans, good, bad, ugly, but normally each has his own strength on something, if you find it you have more chances of success Remotes, by e-mail, ftp, conference-calls. Telecommuting is slowly gaining and still have a long way to go. And Obsydian make it so much possible and easy to do. We should have more projects involving telecommuting |
|
Internal: Not many projects are done internally now-days, and unfortunately they are normally underestimated. In house project really deliver, the company did invest on Obsydian and they what to get the results. Outsourcing is great today, the consulting company knows is going to deliver because of the many Obsydian features. Distributed development and specialized applications will use most of the ability of Obsydian to integrate in a complex application, Like specialization by branches or Nationality |
|
The Project Manager has the handle and knows what is going to be done, the goal, and the state of the project. He knows if there are enough resources, developers, time, and most of all if there are the right skills to complete it. A project is big when with Obsydian it involves more than 5 developers. The project manager (or an application architect) is deeply involved in the methodology used and will drive the direction for it. |
|
The Project Leader does most of the set-up for the project and for the structure of the development team and environment. There are several way to trace the state of completion of a project, I will suggest one. He drives the meetings that will be kept short and focused on a level that involves all the developers, without going into the details of single problems that will be discussed separately. Strategic decision about Requirements, Reuse, Timing need to be made to reuse the object and meet the deadline The PM will define how and who will handle changes, modifications and maintenance |
|
The Data Model is useful also to define (other that the scope of the project naturally) how to assign responsibilities to the parts of the project. It define strict dependencies, "no bill of materials can be built if the material table is not there yet", we will see about this |
|
Class specialists will be able to define abstract objects to be reused intensively throughout the project. The constructors are specialized in defining the logic The beginners will learn, not only technology wise, and the speed of learning depend on the person and on the skills he already have You will hardly find people belonging only to one of these categories but this helps to see the potential of each developer and understand what he can provide to the project |
|
I haven’t seen any other development tool that allows remote development as well as Obsydian does with Local Models and multi-platform generation. Naturally to work from far away is harder than being there, but it can be done, and we will be looking in that direction with what Obsydian offers. The communication strategy is very important, we all know sometime how important is to get to know how something is done, and if we cannot get to talk to the right person immediately, it gets very hard. With remote developers the need for a Model Administrator is stronger and the figure gets more importance The biggest problem with remote development and several remote generation sites is being able to keep them up to date, unless developers work on almost completely independent subsystems. |
|
RAD, Rapid APPLICATION Development, NO PROTOTYPES This is what Obsydian delivers You don’t create prototypes with Obsydian
Avoid the layers of knowledge that prevent the knowledge to completely go through, you always loose some part when telling it to somebody else, end even if not may be the person you are talking to will not understand it all or the importance of a little detail. |
|
The Data Model will tell you who (which group) will have most of the knowledge and responsibility on the project Developers spend a lot of time trying to understand who did this or that to see how it works, and understand it Give objects responsibilities, INCAPSULATION Object Orientation is all about providing services. An object cannot mess around with the data of another object, I think Development structure should follow the same directive Naming the objects properly will make the difference between understanding what the objects do or leave as in the dark with the need to talk to the owner to be able to understand them. I hate naming conventions, prefixes. With Obsydian we have enough space (characters and scoping) to use the right name for each object |
|
To provide timing is the main skill of the Project Manager (it still need to be adjusted to the developer team he leads) Adding people later will require them to spend time to learn how the application is engineered and the others to explain it to them. It is necessary to expand the team if the goals expands, but it must be planned somehow. Weekly meeting, and discussing abstract objects features helps a lot the engineering of the project, and saving time. DO NOT SPLIT RESPONSIBILITY IN LAYERS |
|
Trying too hard to avoid a design change, like a database change, will end up in a harder solution to implement and mostly will be harder to maintain data and functions. |
|
The Dependency Schedule is what I advise as a way to monitor the progresses, and we will see it The Dependency Schedule will show you that "Billing and Invoicing will not be able to deliver if no Addressing is available" (who will they bill to?) It is a good idea to set up a learning environment after every switch in team people or after a phase delivery. |
|
Group communication should fill in the details the inter group meeting will not reach. The users you will talk to need to have the power to ask for a change, otherwise the process of getting what the user need can be cumbersome. It is way easier to document while developing than afterwards. I also saw situation where a special group was dedicated to create the documentation for all the subsystems, and surprisingly they did a great job. |
|
90% of the planning on what object to generate first will be clear in the Dependency Schedule It also can be useful to see the boundaries of the subsystems |
|
The most important for the deadline is the % tested. Even if the knowledge of the development work still to do is given by the completion ratio of the Dependency Schedule The Delay rating needs to be associated with some sort of Task sizing, Group efficiency, and workload |
|
|
|
The developers need to be RESPONSIBLE for their objects to be efficient Normally conflicts will not occur because no developer should change an object belonging to another (the concept should be extended to groups) Responsibility can be granted by object permissions in Obsydian easily. Implementation name conflict will occur because of the object interrelations. Backing up group models need to be done in a single step, backing up all the group models in the network of GM in the project. Obsydian does not allow GM to be out of sink. |
|
Versioning is a very powerful tool that Obsydian gives us. We should use it a lot. Even if there are some little trouble with authorities and object permissions. I saw so little situations where it has been applied. |
|
Unfortunately Changes on Standards happens often, especially at the beginning. Is the way we learn. Recognizing a pattern I think is the idiosincrasy of the Object Orientation. Still OO is a powerful tool. |
|
The generation of the message file on the AS400 can be an issue, if developers changes or add messages often. It can be helped generating the messages in separate libraries for each developer and merging the file in a common message file. Still for changed message the last generated message file will win and update with older messages the messages that other developers merged before. I hope that Sterling will find a better solution for this |
I am a consultant with over 10 years experience in the IT industry
and I worked with Obsydian since it was first released in 1995
as a mentor, speaker and project leader.
In 1997 I moved to the USA to work wit Axis to start up and
leade the Obsydian team.