Software Engineering Management
Introduction
Software Engineering Management can be defined as the application of management activities - planning, coordinating, measuring, monitoring, controlling, and reporting - to ensure that the development and maintenance of software is systematic, disciplined, and quantified.
The software engineering management therefore addresses the management and measurement of software engineering. While measurement is an important aspect of all topics of software engineering, it is here that the topic of measurement programs is presented.
While it is true to say that in one sense it should be possible to manage software engineering in the same way as any other process, there are aspects specific to software products and the software life cycle processes which complicate effective management - just a few of which are as follows:
- The perception of clients is such that there is often a lack of appreciation for the complexity inherent in software engineering, particularly in relation to the impact of changing requirements.
- It is almost inevitable that the software engineering processes themselves will generate the need for new or changed client requirements.
- As a result, software is often built in an iterative process rather than a sequence of closed tasks.
- Software engineering necessarily incorporates aspects of creativity and discipline—maintaining an appropriate balance between the two is often difficult.
- The degree of novelty and complexity of software is often extremely high.
- There is a rapid rate of change in the underlying technology.
With respect to software engineering, management activities occur at three levels: organizational and infrastructure management, project management, and measurement program planning and control.
Aspects of organizational management are important in terms of their impact on software engineering - on policy management, for instance: organizational policies and standards provide the framework in which software engineering is undertaken. These policies may need to be influenced by the requirements of effective software development and maintenance, and a number of software engineering-specific policies may need to be established for effective management of software engineering at an organizational level. For example, policies are usually necessary to establish specific organization-wide processes or procedures for such software engineering tasks as designing, implementing, estimating, tracking, and reporting. Such policies are essential to effective long-term software engineering management, by establishing a consistent basis on which to analyze past performance and implement improvements, for example.
Another important aspect of management is personnel management: policies and procedures for hiring, training, and motivating personnel and mentoring for career development are important not only at the project level but also to the longer-term success of an organization. Software engineering personnel may present unique training or personnel management challenges (for example, maintaining currency in a context where the underlying technology undergoes continuous and rapid change). Communication management is also often mentioned as an overlooked but major aspect of the performance of individuals in a field where precise understanding of user needs and of complex requirements and designs is necessary. Finally, portfolio management, which is the capacity to have an overall vision not only of the set of software under development but also of the software already in use in an organization, is necessary. Furthermore, software reuse is a key factor in maintaining and improving productivity and competitiveness. Effective reuse requires a strategic vision that reflects the unique power and requirements of this technique.
Organizational culture and behavior, and functional enterprise management in terms of procurement, supply chain management, marketing, sales, and distribution, all have an influence, albeit indirectly, on an organization’s software engineering process.
The Software Engineering Management consists of both the software project management process, in its first five subareas, and software engineering measurement in the last subarea. While these two subjects are often regarded as being separate, and indeed they do possess many unique aspects, their close relationship has led to their combined treatment in software engineering. Unfortunately, a common perception of the software industry is that it delivers products late, over budget, and of poor quality and uncertain functionality. Measurement-informed management - an assumed principle of any true engineering discipline - can help to turn this perception around. In essence, management without measurement, qualitative and quantitative, suggests a lack of rigor, and measurement without management suggests a lack of purpose or context. In the same way, however, management and measurement without expert knowledge is equally ineffectual, so we must be careful to avoid over-emphasizing the quantitative aspects of Software Engineering Management (SEM). Effective management requires a combination of both numbers and experience.
The following working definitions are adopted here:
- Management process refers to the activities that are undertaken in order to ensure that the software engineering processes are performed in a manner consistent with the organization’s policies, goals, and standards.
- Measurement refers to the assignment of values and labels to aspects of software engineering (products, processes, and resources) and the models that are derived from them, whether these models are developed using statistical, expert knowledge or other techniques.
- The software engineering project management subareas make extensive use of the software engineering measurement subarea.
- Software Requirements, where some of the activities to be performed during the Initiation and Scope definition phase of the project are described
- Software Configuration Management, as this deals with the identification, control, status accounting, and audit of the software configuration along with software release management and delivery
- Software Engineering Process, because processes and projects are closely related.
- Software Quality, as quality is constantly a goal of management and is an aim of many activities that must be managed.
Source: Hung Vo, https://cnx.org/contents/zx4yYVWR@1.1:zSSxeFKA@1/Software-engineering-management
This work is licensed under a Creative Commons Attribution 4.0 License.