The current state of traditional software development is surveyed and essential problems are investigated on the basis of system theoretical considerations. The concept of optimisation cycle is presented. The relationship between several different kinds of local optimisation cycles with known techniques for user-participation is discussed and integrated into a general concept of participatory software development. The pros and cons of essential problems known to obstruct optimal software development and possible ways of solving them are considered.