Monday, July 14, 2008

What is a method?

It is always valuable to get back to the basics to stand back and eventually change direction. I'll try in future posts to make returns on some notions, maybe the occasion to discuss about them with readers.
So why not start today with the ground notion of a Method?

To make short, the object of a method is to help engineers to design a system under development by garanteeing :
  • achievement of customer requirements
  • quality
  • deadlines and costs
  • maintenability
  • extensibility
  • safety
  • security
  • documentation
  • team work
  • information sharing
  • and so on...
To sum up, a method helps us to take into account all the functionnal and non-functional requirements of the customer, expressed explicitly or not.

A method must focus on three main aspects to be considered imo as a usable method :
  1. choice of formalisms, and artefacts
    • diagrams
    • elements of modelization
    • elements of representation
  2. definition of a process
    • phases and steps
    • activities of producing artefacts
    • deliveries
    • follow up
  3. instrumentation of this process
    • modelisation tools
    • control of the models
    • development tools
    • tests handling
    • software configuration management
The method scope can be the entire lifecycle of the application development, or only a phase in this life cycle. We may even have several methods corresponding, each, to different phases and all these methods together becoming the overall method, e.g. a method for specification, another one for architrecture, another one for analysis, and again one for design. Even if I prefer a more homogeneous approach, this way of doing can be relevant when for instance specifying a domain which is very particular needs its own formalism.

You'll object me that many companies, many people use methods to develop applications without using all this stuff... Sure, but what I describe here is an ideal toolbox designed to guarantee the quality of the application wrt the customer expectations. It is a kind of roadmap. Once you have this roadmap in mind you can choose in conscience what you want to choose, what you can choose to achieve your goals and the ones of your customers. You don't undergo events, you play with them... and it is in fine a big difference.

No comments: