Developing Software MGMT 661 - Summer 2012 Night #8.

19
Developing Developing Software Software MGMT 661 - Summer 2012 Night #8

Transcript of Developing Software MGMT 661 - Summer 2012 Night #8.

Developing SoftwareDeveloping Software

MGMT 661 - Summer 2012

Night #8

OutlineOutline

Types of Software

Critical Success Factors

Phases of Development

Writing Software

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.

new software product

component integration

re-engineered product

heroic maintenance

Project Types

Stable Requirements

Accurate Estimations

Attention to Risks

Teamwork and Unified Vision

Critical Success Factors for Software Projects

Source:lots of reading by Dannelly

Selecting Critical Success Factors

textbook Figure 14-3

Goal Statement

Purpose = Managing Expectations

Desirable Properties: States both why and what Measurable Short Doable Communicated

Life Cycle ModelsLife Cycle Models

Waterfall

Incremental

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