Download - CS4/542- Software Engineering

Transcript
Page 1: CS4/542- Software Engineering

CS4/542- Software CS4/542- Software EngineeringEngineering

Software Design and Development Required Text -- Code Complete

by Steve McConnell (Focuses on the problems of

designing programs that WORK!) Recommended Text -- UML Distilled

Second Editionby Martin Fowler

Page 2: CS4/542- Software Engineering

Software EngineeringSoftware Engineering

CSE 4/542A Lec; MWF 2:00-2:50, 4 Knox A1: F 11:00-11:50, 216 NSC A2: R 15:30-16:20, 322 Clemens Recitations meet irregularly, they are

team meeting times.

TA -- Joshua Kershner

Page 3: CS4/542- Software Engineering

Helene G. KershnerHelene G. Kershner

Assistant Chairman Office: 209 Bell Hall Office Hours To be determined By Appointment Login name:

[email protected]

Page 4: CS4/542- Software Engineering

Course EnvironmentCourse Environment

CSE4/542 is a Team-based course. “Real-world” simulation Real project for a Customer Writing course “Programming” course

Page 5: CS4/542- Software Engineering

RequirementsRequirements Programming Languages &

Experience designing Algorithms Senior/Graduate Course Consider yourself --

Computer Professionals Effective Communicator Consider yourself an experienced

Programmer

Page 6: CS4/542- Software Engineering
Page 7: CS4/542- Software Engineering

Software Design andSoftware Design andDevelopmentDevelopment

better known as:

Software Engineering

Page 8: CS4/542- Software Engineering

Software EngineeringSoftware Engineering

The body of theory and practical techniques involved in the process of developing large scale software

Page 9: CS4/542- Software Engineering

Why Software Engineering (SE)? Why Software Engineering (SE)? To Answer these:To Answer these:

Why does it take so long to get programs finished?

Why are costs so HIGH? Why can’t we find all the errors before we

release software to our customers? Why do we have such difficulty measuring

progress as software is being developed?

Page 10: CS4/542- Software Engineering

““Software is like EntropySoftware is like Entropy,,

It is difficult to grasp, weighs nothing and obeys the Second Law

of Thermodynamics;

i.e., It ALWAYS increases.”

Page 11: CS4/542- Software Engineering

Programming is:Programming is:

" a young person's skill. It requires intense concentration. To do a good job, you have to have your mind wrapped around the whole program. It's very easy to get distracted. You do things and forget about other things and end up with bugs. It's like running a marathon. You have to be constantly focused on the goal." NY Times

Page 12: CS4/542- Software Engineering

We do more than We do more than PROGRAM!PROGRAM!

We DESIGN and DEVELOP software to solve problems.

Page 13: CS4/542- Software Engineering

Writing Software (Design):Writing Software (Design):

" is figuring out the real problem people are trying to solve and the best way to solve the problem, which is not always the way they suggest."

Page 14: CS4/542- Software Engineering

Software DesignSoftware Design

Software Development is Technology in Crisis!

Writing Large-Scale Software is Problematic!

Page 15: CS4/542- Software Engineering

The Central DebateThe Central Debate

Is the creation of software an art, a science, or a discipline ???

Page 16: CS4/542- Software Engineering

What is Software Engineering? What is Software Engineering? In 1969 NATO Conference:In 1969 NATO Conference:

"the establishment and use of sound engineering principles in order to economically obtain software that is reliable and works efficiently on real machines."

Page 17: CS4/542- Software Engineering

What is Software Engineering?What is Software Engineering?

"fabrication that takes away the uniqueness and magic of programming."

Page 18: CS4/542- Software Engineering

Designing software is Designing software is difficult.difficult.

The larger the project, the more difficult the

solution.

Page 19: CS4/542- Software Engineering

What is Software Engineering?What is Software Engineering?

Software Engineering is "the systematic approach to the development, operation, maintenance, and retirement of software." IEEE Glossary

Software is " computer programs, procedures, rules and possibly associated documentation and data pertaining to the operation of a computer system."

Page 20: CS4/542- Software Engineering

What is Software Engineering?What is Software Engineering?

Software Engineering is " the technological and managerial discipline concerned with systematic production and maintenance of software products that are developed on time and within cost estimates."(Fairley)

Page 21: CS4/542- Software Engineering

There is a crisis in Technology!There is a crisis in Technology!

1) How does one design large-scale software?

2) We have an Aging Software Plant.

Page 22: CS4/542- Software Engineering

Aging SoftwareAging Software

Across the nation, and the world, software is AGING!

AND-- Little is done to rewrite and redesign the software!

Why?

Page 23: CS4/542- Software Engineering

Why?Why?

" The application STILL works?"

"It is not 'economical' to commit the resources to make them better!"

Page 24: CS4/542- Software Engineering

Software doesn't wear Software doesn't wear out! ????out! ????

Is this true???

Page 25: CS4/542- Software Engineering

What is the Software Crisis?What is the Software Crisis?

What does it "look like"?

Page 26: CS4/542- Software Engineering

Software Crisis?Software Crisis?

Hardware sophistication has outpaced our ability to build software that can tap hardware's potential.

Our ability to build new programs cannot keep pace with the demand for new programs.

Our ability to maintain existing programs is threatened by poor design and inadequate resources.

Page 27: CS4/542- Software Engineering

Software Crisis?Software Crisis?

Our inability to complete current work on time and within budget; -- means -- needed maintenance and new development efforts pile up.

Our techniques for managing software development projects are usually inadequate. Products are often late, inefficient, expensive, or unsatisfactory to users.

Page 28: CS4/542- Software Engineering

Software Crisis?Software Crisis?

Some believe:Programmers cannot even begin to

use the tools that are available Programmers cannot be trusted to

test their own programs adequately

Page 29: CS4/542- Software Engineering

Why Software Engineering?Why Software Engineering?

Why does it take so long to get programs finished?

Why are costs so high? Why can't we find all errors before we

give the software to our customers? Why do we have difficulty in measuring

progress as software is being developed?

Page 30: CS4/542- Software Engineering

The primary challenge of the The primary challenge of the new century will be to improve new century will be to improve the quality of computer-based the quality of computer-based

solutions, while simultaneously solutions, while simultaneously reducing the time required to reducing the time required to

“create”them.“create”them.

- these “solutions” are those implemented with software!