What is Software Engineering Management?

Master initiating, planning, enacting, and measuring success.


 

Software engineering management (SEM) encompasses the application of management principles, concepts, and practices to software engineering. It involves planning, organizing, staffing, directing and controlling software projects. Software engineering management (SEM) is performed by a software engineering manager or a software engineer. The goal is to deliver quality software products and services efficiently, effectively, and to the benefit of stakeholders.

SEM deals with making decisions for software projects, including choosing and tailoring software processes, methods, and tools. It also involves planning, estimating, measuring, monitoring, controlling, and reporting on software tasks and deliverables. A key aspect is managing technical personnel, teams, and risk to deliver software on time, within budget, and meeting requirements.

Software engineering management (SEM) covers project initiation, determining scope and requirements, feasibility analysis, planning, scheduling, cost estimation, resource allocation, risk analysis, process implementation, progress monitoring, performance reviews, and project closure. Measurement, metrics, and tools for managing software projects are also important SEM topics. Project management software can help automate and manage many SEM activities.

SEM principles apply at multiple levels – organization, project, process, and product. Organizational management sets policies and infrastructure to enable project success. Project management involves planning and directing single or related software projects. Process management deals with defining, planning, measuring, and improving software processes. Product management focuses on delivering quality software products efficiently.

Software engineering management (SEM) integrates technical, business, and human aspects of software projects. Technical management ensures proper methods and tools are used for development and maintenance. Business administration aligns software capabilities with organizational strategy and objectives. People management deals with team dynamics and leadership skills to enable collaboration. An engineering leader or engineering manager oversees these activities.

Software engineering management (SEM) is essential for successfully managing modern software projects which are complex, rapidly evolving, business critical, and involve multiple, interdependent stakeholders. It maximizes value delivered by software to users and the organization.

 

Read more about software engineering management in the Software Engineer Book of Knowledge (SWEBOK)

 

Initiation and Scope


Project initiation involves reviewing requirements and determining need, scope, feasibility, and authorization for embarking on a software project. Thorough project initiation activities enable a shared understanding of objectives, realistic plans, and processes to handle change. They set the stage for project success. The key components are described below.

Requirements Determination and Negotiation

This involves eliciting and analyzing requirements from different stakeholders, specifying and validating them. Requirements provide the foundation for all subsequent software engineering projects. Their determination and negotiation is critical as stakeholders often do not know exactly what they need or want. Requirements must be carefully discovered through reviews of objectives, interviews, prototypes, use cases etc. They need analysis for clarity, consistency, feasibility and traceability. Specified requirements must be validated with stakeholders to ensure alignment with needs. Any conflicts must be resolved through negotiation. Dynamic requirements must be accounted for via change control processes. Clear, validated requirements get documented in requirement specifications or project charters.

Back to Top


 

Project Scope Identification

This establishes the boundaries for the project – what will be delivered and what will not be. The scope sets expectations on project objectives, deliverables, costs, timelines, resources needed and quality levels. It clearly defines what stakeholders will receive if the project succeeds. The scope must be realistic based on organizational constraints, requirements, available resources and technology. It gets documented in scope statements, project charters etc.

Back to Top


 

Feasibility Analysis

Feasibility analysis evaluates if the proposed solution is the best approach considering constraints like technology, resources, finances, and changes to ethical, environmental and socio-technical factors. It develops a clear project description and evaluates alternative solutions. Work breakdown structures, schedules, resource needs, and effort/cost estimates are prepared. The feasibility analysis identifies risks and may require prototyping for proof-of-concept. It determines if the project has a viable approach with available resources and checkpoints for success.

Back to Top


 

Requirements Review and Revision Process

This process establishes how requirements will be revisited during the project to address changes in stakeholder needs, greater understanding of issues, changing conditions etc. Since changes are inevitable, stakeholders must agree on change management processes like impact analysis, negotiation, approvals etc. Requirements traceability helps monitor status against original and changed requirements. Reviews at predetermined milestones assess requirements satisfaction and guide decisions on stopping or continuing activities. Flexibility enables value delivery amidst changing needs.

Back to Top


 

Project Planning


Project planning develops detailed plans for executing software projects based on initiation decisions. Thorough project planning enabled by predictive SDLCs is key for controlling risk and costs. But adaptivity must be embraced when uncertainties prevail. Key aspects are:

Back to Top


 

Selecting SDLC Models

The software development life cycle (SDLC) model provides a framework for the processes, activities, tools etc. needed to build the software. Models span a predictive-adaptive continuum. Predictive models like waterfall involve detailed upfront planning and minimal iteration. Adaptive models like Agile rely on short cycles and progressive elaboration. Choosing the right SDLC model depends on factors like requirements stability, system complexity, team expertise, and project constraints. Hybrid models are often used. The chosen lifecycle must be documented and tailored if needed.

Back to Top


 

Predictive Planning

For predictive SDLCs, detailed plans are developed upfront based on known requirements, architecture, risks etc. Deliverables, schedules, processes, resources, tools, costs etc. are defined early for the entire project. Progress follows this pre-defined plan with minimal deviations. Predictive planning reduces risk and cost but lacks flexibility to change. It works for stable requirements and clear constraints.

Back to Top


 

Determining Deliverables

All work products and artifacts generated during the project must be identified and characterized based on requirements and SDLC phases. This includes documents, code, reports, prototypes etc. Reuse opportunities within/outside the organization must be evaluated to maximize value. Deliverables get documented in WBS, activity lists etc.

Back to Top


 

Scheduling and Estimating

This involves estimating the effort, timelines, resources, and costs to deliver the identified work products. Historical data, past experience, prototyping, simulations, and commercial estimation tools are used to develop estimates. Dependencies are mapped to determine task sequences. Detailed schedules with timelines, milestones etc. get developed and documented in project plans, Gantt charts etc.

Back to Top


 

Resource Planning

Appropriate personnel like software engineers, computer science engineers, data scientists, and other technical roles, along with equipment, and facilities must be allocated to deliver project tasks per the schedule. Skills, experience, availability, budget etc. guide resource allocation. Responsibilities are assigned for deliverables and project completion. Resource management ensures optimum usage and collaboration.

Back to Top


 

Risk Management

Potential issues that may impact objectives must be identified, analyzed for probability and impact, prioritized, and mitigated with contingency plans. Risks specific to software projects include unclear requirements, unrealistic schedules, inadequate skills, complex integration etc. Regular risk analysis throughout the project lifecycle is needed for success.

Back to Top


 

Project Enactment


Project enactment involves executing the plans developed during project planning. It focuses on adhering to selected processes and satisfying requirements to achieve project objectives. Thorough monitoring, disciplined change control, and effective reporting enable successful project delivery amidst complexities. They maximize business value. Some key aspects of project enactment are described below.

 

Read more about software engineering management in the Software Engineer Book of Knowledge (SWEBOK)

 

Back to Top


 

Plan Implementation

Project activities should follow the defined plans and processes documented in SDLC models, project plans, quality plans etc. Work products like code, reports, and prototypes are developed by software engineers using allocated resources like personnel, tools, and funds. Plan implementation ensures a systematic approach to building software.

Back to Top


 

Software Acquisition

This involves contracting with suppliers to obtain project resources like hardware, software components, cloud infrastructure, and technical services. Different acquisition options like COTS purchase, open source licensing, custom development etc. must be evaluated to balance costs, risks, and benefits.

Contracting best practices must be followed to establish scope, deliverables, timelines, quality levels, intellectual property ownership etc. in supplier agreements. Procuring quality products/services at optimal costs within schedule constraints is the goal.

Acquired items must be verified for completeness, consistency, and correctness per architectural specifications before integration. Supplier relationships must be managed throughout for successful delivery.

Back to Top


 

Measurement Process Implementation

The software measurement process must be performed per the project plan to get data for monitoring status, progress, and issues. Measures based on process models, standards like CMMI, PSM, and organizational metrics must be collected, stored, analyzed, and reported at defined intervals for insights. Automated tools can support measurement activities.

Integrating measurement into technical and management processes is key for informed decision-making. Useful data depends on carefully defined measurable indicators based on information needs.

Back to Top


 

Progress Monitoring

Adherence to plans must be continually assessed by comparing status against schedules and completion criteria. Deliverables are evaluated via technical reviews, testing, and demonstrations to ensure satisfaction of quality requirements. Effort, budget, timeline variances must be analyzed. Risks should be re-evaluated.

Data analysis techniques must be used to detect patterns, trends, outliers etc. Relevant insights must be reported to stakeholders like project managers at defined intervals and as needed when thresholds are exceeded.

Back to Top


 

Process Control

Monitoring provides the basis for deciding project changes, corrections, preventive/corrective actions etc. when deviations occur. This may involve retesting, adjusting schedules/resources, or updating plans.

All decisions must adhere to change and configuration management processes. Impacts must be analyzed before approving changes. Decisions should be recorded along with rationale. Plans and documents must be updated accordingly.

Control processes ensure adherence to scope, costs, schedule, quality and requirements. But flexibility must be balanced with rigor.

Back to Top


 

Reporting

Clear, timely communication of project status and health to relevant stakeholders is essential for transparency, oversight, and decision-making. Reports must provide insights tailored to audience needs at organization and team levels. They anchor trust and collaboration.

Back to Top


 

Software Engineering Measurement


Software engineering measurement involves defining, collecting, analyzing, and reporting data regarding software products, processes, projects, and resources to support effective management. Key activities include:

Back to Top


 

Establishing Measurement Commitment

This involves defining organizational measurement objectives, scope, resources, and team responsibilities based on business goals, risks, and problems. Leadership must formally commit to measurement and ensure adequate resourcing and support. Staff must be trained on performing measurement activities. Sustained commitment to measurement is crucial for success.

Back to Top


 

Planning Measurement Process

This entails defining measurable indicators linked to information needs derived from organizational objectives and project requirements. Indicators must be selected based on collection cost/effort, reliability, analysis, and reporting considerations. Procedures must be instituted for data collection, storage, verification, analysis, reporting, and configuration control. Evaluation criteria for information products and indicators must be defined. Resources must be allocated for automated tools, technologies etc. needed. The plan must be reviewed and approved by stakeholders.

Back to Top


 

Performing Measurement Process

This involves integrating procedures for data collection, analysis, and reporting into relevant software processes with minimal disruption. Training and support may be needed for project teams performing measurement. Reliable data must be consistently collected per indicators and procedures defined in the plan. Analysis should yield indicators that inform conclusions and recommendations. Results must be documented and communicated to stakeholders at specified intervals.

Back to Top


 

Evaluating Measurement Outcomes

The information products, indicators, analysis, insights, and reports must be evaluated against established criteria to determine strengths and weaknesses. Potential improvements must be identified and analyzed for costs vs. benefits. Approvals must be sought for implementing improvements. Lessons must be shared to strengthen organizational measurement capabilities.

Effective measurement requires careful planning, consistent execution, and active evaluation for improvement. Useful indicators help manage software products, processes, and projects successfully. For example:

Back to Top


 

Product Measurement

This monitors internal code quality to identify risks early before external impact. Code structural metrics like coupling, cohesion, and complexity inform design and construction processes. Defect analysis guides improving quality assurance.

Back to Top


 

Process Measurement

Metrics like requirements volatility and development efficiency track health of development and management processes. Phase completion rates and lead/cycle times monitor schedule performance. Process capability measurements can enable improvements.

Back to Top


 

Project Measurement

Size and effort data help estimate and plan future projects. Schedule and cost variances track project health. Customer satisfaction surveys determine product acceptance. Defect removal rates help assess quality levels. Measurements enable better control and delivery.

Carefully defined and managed measurement programs with effective analysis techniques are key to data-driven software management and engineering. Aligning indicators to organizational objectives provides meaningful insights to guide actions.

Back to Top


 

Conclusion


Software engineering management integrates multiple disciplines to deliver value through software products and services. It deals with initiating projects based on determined and agreed requirements, detailed multi-dimensional planning, disciplined enactment of plans, rigorous monitoring and course correction, process improvements, and project closure. SEM measurement programs provide indicators to inform data-driven decision-making and improvement.

SEM is both a science and an art. The science involves knowledge of models, methods, metrics, and tools to systematically plan, build, control, and improve software work. The art lies in balancing rigor with flexibility, predictive planning with agile adaptation, discipline with creativity, and technology with people skills. SEM must harness software’s malleability amidst ever-changing user needs, technologies, and business contexts to maximize success.

Effective SEM requires understanding the unique nature of software, expertly integrating technical and managerial best practices, and focusing on delivering continuous stakeholder value through adaptable high-quality software products and services. SEM capabilities are critical for organizations to gain competitive advantage using software in today’s dynamic digital world.

 

Read more about software engineering management in the Software Engineer Book of Knowledge (SWEBOK)

 

Inside the Computer Society