Project management Flashcards
What is software engineering PM
ensuring that software is delivered on time and on schedule and in accordance with the requirements of the organizations developing and procuring the software.
Two categories of difficulties with building software
essence - conceptual structure
Accidents - realizing conceptual structure in executable form
Some PM tools
MS teams, Discord, Monday.com, Slack, Asana
Scope
Functions and features to be delivered to end-users
Data that are input and output
Content that is presented to users as consequence of using the software
performance, constraints, interfaces and reliability that bound the system
two ways to define scope
narrative description of software scope
set of use cases
how to determine feasibility
Given scope, determine resources required
Do we have the resources to build this software?
Resources to consider: people, hardware and software tools, reusable components
Stakeholder
Someone impacted by project
Goals need to be smart. What does smart stand for?
S - specific, significant, stretching
M - measureable, meaningful, motivational.
A - agreed upon, attainable, action oriented
R - realistic, relevant, results oriented
T - timeboxed, trackable
Deliverables
LIst of items that have to be delivered to meet the goals
Say when needs to be delivered
Quality standards
Human resource plan
Describe the number and type of people needed
describe roles and responsibilities
start dates, duration and how to get them
Communications and management plan
who needs to be informed bout the project
how will they receive the information
Risk management plan
identify all risks and be prepared if anything happens
Range of management activities (4 P’s)
People - project manahgers, leaders, software team, customers, end users
Product - scope and decomposition
Process - software dev life cycle, unified process
Project - size estimation, scheduling, risk management, tracking
13 essential roles in small software dev teams
course developer - prep and organization of training database designer implementer integrator process engineer - management of dev process project manager project reviewer software architect system administrator system analyst system tester test manager user interface designer
how to choose people
cv
people worked with before
interviews
references and recommendations
Activity
Task that takes time - duration, due date, precursor
Milestone
completion of activity, check points throughout project life cycle
initiate -> plan -> execute -> close
Deliverable
project result that is delivered, tangible
Why software metrics
plan and manage software dev project
- estimate resources required for each activity
- metrics measure some aspect of software development
metrics are smart
Examples of smart metrics
counts, percentages, sums or totals, averages, ratios
Process metrics
Measure some aspect of development process
- cost to date
- time spent
- the above can change all the time
Product metrics
measure some aspect of the software product
- analysis models
- test plans
- program code
Result metrics
measure outcomes - current cost of project
aka control metrics - used to determine how management control should be exercised
- measurement of the current level of progress in the project used to decide if action is necessary (to bring project back onto schedule)
Predictor metrics
quantify estimates for project resource requirements
measure some aspect of a software product that is used to predict another aspect of the project/product progress (e.g. predict that system will be difficult to maintain)
Are software metrics worth it?
useful for prediction and resource estimation
Validity of predictor metrics is base don these three assumptions …
you can measure something useful
that measure actually predicts something worthwhile
the relationship is real and can be expressed in model/formula
Why do software engineers think that metrics are not importatn
used to monitor developer performance - ethical and management issues
Metrics for OO development
Application size class size ability of package to absorb change (this partially depends on the ratio of abstract classes to all classes)