Reality shows that software developers are poorly prepared to provide high quality products. According to the report of the British Computer Society [BCS, 2004], the rate of successful software products is 16?34 %. That rate has decreased in the last decade. Software is intended to improve somebody’s work and therefore his/her life. Low quality software is often produced for public funds. A lot of ethical and social issues deal software production and use.
Problems with software quality derive from the economic system, which emphasizes first of all economic figures, like profit, time, number of products released on a market, factors of efficiency at work and productivity, etc. Software factories prefer so called hard methodologies, in other words plan-driven methods. Software designers and programmers work usually under the pressure of time. Software companies do just that what bring them profit. In addition, software products seem to be helpful tools in mcdonaldization of society ? they support activities which are effective, calculative, predictable (repeatable), and allow to manipulate people by offering them self-service methods instead of a true service. Today’s methods work till requirements concern routine situations. If changes occur frequently during a software development and information system is supposed to support problems met in the real world then the system fails or at least falls short of users’ expectations.
The underlying reasons for the great popularization of the plan-driven methods seem to be not only economic ? their fundamental issues come also from education. Academic teachers lecture willingly mathematical background of computer science and technical aspects in software engineering. In general, formalisms are beloved by scientists. Human values are passed over. Students of computer science and software engineering are taught, first of all or even only, hard methodologies, which are based on rigorous plans and technical factors. Students learn techniques of object modeling and design, they create data bases and exercise programming in several languages but they never experience language required to communicate with users. In all educational process teachers and students treat direct and indirect users like a monolithic group ? the homogeneous whole. Quality appears a marginal subject at the university of technology. The attitude shaped at university is then transferred to software companies.
At the same time students work individually at most subjects. Notes are assigned separately to each of them. So they are usually not experienced in a teamwork. Also any academic teacher tries to make his/her individual carrier. Students rarely hear about soft methodologies and techniques, which consist in a constant communication and cooperation with users ? everyday classes are usually held far away from practice.
The described situation may be changed. In this paper there are proposed approaches and methods, which are recommended in software engineering in an academic practice. Students should know principles underlying user-oriented methodologies and develop the required competencies. Software production is a social activity so social impacts require more attention. The suggestion to extend the CMM model is given ? the maturity level of a process of user-developer cooperation is under assessment as an integral part of a maturity of all development process and it is related to mutual relationships between developers and users.