Context for TonightContext for Tonight
29% of IT project finish on-time, within budget, and meeting all requirements
30% to 40% projects are significantly late
very many projects don't fulfill all requirements
textbook section 14.1
WHY?WHY?
Types of Software
System Software example: operating system
Middleware example: network interface software
Embedded Software example: your car's engine
Application Software ex: Microsoft Word, a CRM, cellphone apps, etc.
Stable Requirements
Accurate Estimations
Attention to Risks
Teamwork and Unified Vision
Critical Success Factors for Software Projects
Source:lots of reading by Dannelly
Goal Statement
Purpose = Managing Expectations
Desirable Properties: States both why and what Measurable Short Doable Communicated
Waterfall Model
older style
still used on VERY large projects
works well only when requirements are known at the beginning
Spiral Model
well suited to ill-defined problems and new domains
major drawback is little requirements stability
Project Initiation
How to decide "go" v "no go"? standard issues such as ROI, match to corporate
strategy, etc chance of success
Buy It or Build It? frequently cheaper to buy than to build use a scoring model to decide which to buy
• see Table 14-2 in textbook
Analysis Problems
Determining what is critical
Avoiding mission creep
Conflicting views
Ease of omitting obvious info
Identifying the experts and getting authority to talk to people
Incomplete understanding of the problem on the part of the user/customer
Being complete, without being constraining
Sticking with “what” and not “how”
How Programming WorksHow Programming Works
DevelopmentEnvironment
Algorithm
Sourc
e Cod
e
Program
Analyze the Problemand Design a Solution Programming
Software translates the Source Codeinto Machine Code (1s and 0s)
Example ProgramPrompt the user
Get First number
Print total / count
Get Next number
Is it -1
add one to countadd number to total
Yes
No
Information to Track:1.number that was input2.count of numbers3.total of all numbers
The Problem:•Read a list of numbers then print the average.•The list ends with -1.
main ()
{
integer: value, count, sum;
print "Enter your numbers";
input value;
while (value <> -1)
sum = sum + value;
count = count + 1;
input value;
end while;
print "Average = ", sum/count;
}
Example: The Source Code
Prompt UserGet 1st number
Loop to add up the sum and count the number of inputs
Print the average
Ask the OSfor memory
Testing, testing, …Testing, testing, …
Finding errors
User Interface Evaluation
Recovery Testing
Security Testing
Stress Testing
Performance Testing
Beta Testing
How much testingHow much testing
What level of Quality should we shoot for?What level of Quality should we shoot for?
Quality
$ Cost of SoftwareQuality Assurance
Cost of Failure
Cost ofProduction and
Operation
Optimal Quality Level
SummarySummary Software development is part Art and part Engineering
A software project that tries to please everyone is doomed to please no one
Accurate Analysis and Managing Expectations are as important as technical ability
Buying an off-the-shelf software product is almost always cheaper than building your own custom software
Software has bugs because bugless software is too expensive
Top Related