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.
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.
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.
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.
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:
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.
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.
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.
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.
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.
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.
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)
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.
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.
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.
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.
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.
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.
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:
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.
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.
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.
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:
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.
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.
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.
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)