Software Development
Tools and Methodologies
Software Projects
The 4 P’s
People — the most important element of a
successful project
Product — the software to be built
Process — the set of framework activities and
software engineering tasks to get the job done
Project — all work required to make the product a
reality
Software Projects
Factors that influence the end result ...
• size
• delivery deadline
• budgets and costs
• application domain
• technology to be implemented
• system constraints
• user requirements
• available resources
Project Management Concerns
product quality?
risk assessment?
measurement?
cost estimation?
project scheduling?
customer communication?
staffing?
other resources?
project monitoring?
Why Projects Fail?
• an unrealistic deadline is established
• changing customer requirements
• an honest underestimate of effort
• predictable and/or unpredictable risks
• technical difficulties
• miscommunication among project staff
• failure in project management
Software Teams
The following factors must be considered when selecting a
software project team structure ...
the difficulty of the problem to be solved
the size of the resultant program(s) in lines of code or
function points
the time that the team will stay together (team lifetime)
the degree to which the problem can be modularized
the required quality and reliability of the system to be built
the rigidity of the delivery date
the degree of sociability (communication) required for the
project
Organizational Paradigms
closed paradigm—structures a team along a traditional
hierarchy of authority (similar to a CC team)
random paradigm—structures a team loosely and depends on
individual initiative of the team members
open paradigm—attempts to structure a team in a manner that
achieves some of the controls associated with the closed
paradigm but also much of the innovation that occurs when using
the random paradigm
synchronous paradigm—relies on the natural compartment-
alization of a problem and organizes team members to work on
pieces of the problem with little active communication among
themselves
Defining the Problem
establish scope—a narrative that bounds the problem
decomposition—establishes functional partitioning
Melding Problem and Process
To Get to the Essence of a Project
Why is the system being developed?
What will be done? By when?
Who is responsible for a function?
Where are they organizationally located?
How will the job be done technically and
managerially?
How much of each resource (e.g., people,
software, tools, database) will be needed?
Critical Practices
Formal risk analysis
Empirical cost and schedule estimation
Metrics-based project management
Earned value tracking
Defect tracking against quality targets
People aware project management