Software Engineering: It’s Much More Than Programming!

12
CS 3500 SE - 1 Software Engineering: It’s Much More Than Programming! Sources: “Software Engineering: A Practitioner’s Approach - Fourth Edition” Pressman, Chapter 1 HP Software Engineering via Martin Griss “Code Complete” McConnell, Chapters 1-3

description

Software Engineering: It’s Much More Than Programming!. Sources: “Software Engineering: A Practitioner’s Approach - Fourth Edition” Pressman, Chapter 1 HP Software Engineering via Martin Griss “Code Complete” McConnell, Chapters 1-3. Early years Batch Limited distribution Custom software. - PowerPoint PPT Presentation

Transcript of Software Engineering: It’s Much More Than Programming!

Page 1: Software Engineering: It’s Much More Than Programming!

CS 3500 SE - 1

Software Engineering:It’s Much More Than

Programming!

Sources:

“Software Engineering: A Practitioner’s Approach - Fourth Edition” Pressman, Chapter 1

HP Software Engineering via Martin Griss

“Code Complete” McConnell, Chapters 1-3

Page 2: Software Engineering: It’s Much More Than Programming!

CS 3500 SE - 2

Software Eras (Pressman Figure 1.1)

Early years Batch Limited

distribution Custom

software

Second era Multiuser Real-time Database Product

software

Third era Distributed

systems Embedded

“intelligence” Low cost

hardware Consumer

impact

Fourth era Powerful

desk-top systems

OOP Parallel Internet

1950 1960 1970 1980 1990 200x

Incr

easi

ng

Am

ou

nts

of

So

ftw

are

The fifth era?• Cloud computing• Smart phones• Multi-core

Page 3: Software Engineering: It’s Much More Than Programming!

CS 3500 SE - 3

The 50+ Year “Software Crisis”

Hardware advances faster than the ability of software to take advantage of the hardware

Demand for new programs exceeds our ability to produce them

Computers are pervasive; reliability is key; major damage is possible on failure

We struggle to build reliable, high quality software Support and enhancement of existing programs is

expensive and error prone due to poor design and inadequate resources

Many, many projects are started but never finished

Page 4: Software Engineering: It’s Much More Than Programming!

CS 3500 SE - 4

Aspects of Software Crisis

Techniques that work for small programs don’t scale Big systems live on beyond original author(s) Most effort expended after first release Requirements change rapidly User expectations increase rapidly Most software late, expensive, buggy or inadequate Last minute testing can’t ensure quality

What can you add to this list?

Page 5: Software Engineering: It’s Much More Than Programming!

CS 3500 SE - 5

Software vs. Hardware

Time

Fai

lure

rat

e

Wear out

Infant mortality

Time

Fai

lure

rat

e

obsolescence

Hardware failure rates (Pressman 1.2)

Idealized software failure rates (Pressman 1.3)

Why the difference?

Page 6: Software Engineering: It’s Much More Than Programming!

CS 3500 SE - 6

Software Failure Rates

Time

Fai

lure

rat

e

obsolescence

Time

Fai

lure

rat

e

Change

Side effects

Idealized software failure rates (Pressman 1.3)

Actual software failure rates (Pressman 1.4)

Why the difference?

Page 7: Software Engineering: It’s Much More Than Programming!

CS 3500 SE - 7

Software Myths Management Myths

– We have books of standards.

– I work very hard to put the latest, greatest, fastest, state-of-the-art hardware in front of all my programmers.

– We have the greatest CASE tools around.

– If we get behind, we can just add more programmers.

Customer myths– A general statement of objectives is sufficient to start coding, we can

fill in the details later

– Project requirements change constantly, but change is easy because software is flexible.

Programmer myths– Once the program is written and working, our job is done.

– Until the program is running, there is no way to assess quality.

– The only deliverable for a successful project is the working program.

Page 8: Software Engineering: It’s Much More Than Programming!

CS 3500 SE - 8

Solution: Disciplined Software Engineering

ComputerScience Psychology,

HCI

Systems Management, Sociology

SoftwareEngineering

“More than just programming and algorithms”

Page 9: Software Engineering: It’s Much More Than Programming!

CS 3500 SE - 9

Software Lifecycle

Development phases:– Analysis [What do we need?] (14-22%)– Design [How do we do it?] (16-21%)– Coding [Implement it] (30-39%)– Testing [Make sure it works] (25-37%)

Relative time to fix defect after release depends on origin:– Analysis >> design >> coding >> test

Average time in maintenance – Only 25-45% of entire lifecycle spent in development– Fixing defects is 20-30% of lifecycle; enhancing the

program is 35-45% of lifecycle– Half of maintenance time is spent figuring things out

Page 10: Software Engineering: It’s Much More Than Programming!

Software Development Processes

Traditional Waterfall Process- Address each step completely before moving to the next- Each step might take many months- Premium on getting things right the first time- Emphasis on management hierarchies and written reports

Agile Process- Iterate repeatedly through each step, gradually growing the

system- Each iteration produces an incomplete but usable system- Design changes and code refactoring are the norm- Premium on frequent and rapid interactions among clients and

developers- Emphasis on face-to-face interactions

Page 11: Software Engineering: It’s Much More Than Programming!

CS 3500 SE - 11

What Will We Study?

C# Programming using Visual Studio 2010

Software Construction Tools and Techniques– Version control (SVN)– Testing– Debugging– Performance profiling– Code inspections– Object-oriented design patterns– Program organization and coding style– Documentation– UML (Unified Modeling Language)– Scripting

Page 12: Software Engineering: It’s Much More Than Programming!

What Will We Study?Software Architectures

– Pipe and filter– Object-oriented– Client/server– Event-driven– Model-view-controller

Working Individually, in Pairs, in Small Groups– Via programming projects

Other Topics– Requirement gathering– High-level design– Intellectual property– Professional ethics