Problems, methods and specialisation

Software engineering is not a discipline; it is an aspiration, as yet unachieved. Many approaches have been proposed, including reusable components, formal methods, structured methods and architectural studies. These approaches chiefly emphasise the engineering product; the solution rather than the problem it solves. An approach to understanding and classifying software development problems in terms of problem frames is suggested. In addition to such general approaches, specialisation is essential; the established branches of engineering are all specialisations. Some specialisations have arisen in software development, notably in compiler construction and software for personal computers; more are needed.