Title: CS4/542- Software Engineering
1CS4/542- Software Engineering
- 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
Edition by Martin Fowler
2Software Engineering
- CSE 4/542A
- Lec MWF 200-250, 4 Knox
- A1 F 1100-1150, 216 NSC
- A2 R 1530-1620, 322 Clemens
- Recitations meet irregularly, they are team
meeting times. - TA -- Joshua Kershner
3Helene G. Kershner
- Assistant Chairman
- Office 209 Bell Hall
- Office Hours
- To be determined
- By Appointment
- Login name kershner_at_cse.buffalo.edu
4Course Environment
- CSE4/542 is a Team-based course.
- Real-world simulation
- Real project for a Customer
- Writing course
- Programming course
5Requirements
- Programming Languages Experience designing
Algorithms - Senior/Graduate Course
- Consider yourself -- Computer Professionals
- Effective Communicator
- Consider yourself an experienced Programmer
6(No Transcript)
7Software Design andDevelopment
- better known as
- Software Engineering
8Software Engineering
- The body of theory and practical techniques
involved in the process of developing large scale
software
9Why Software Engineering (SE)? To Answer these
- Why does it take so long to get programs
finished? - Why are costs so HIGH?
- Why cant 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?
10Software is like Entropy,
- It is difficult to grasp, weighs nothing and
obeys the Second Law of Thermodynamics - i.e., It ALWAYS increases.
11Programming 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
12We do more than PROGRAM!
- We DESIGN and DEVELOP software to solve problems.
13Writing 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."
14Software Design
- Software Development is Technology in Crisis!
- Writing Large-Scale Software is Problematic!
15The Central Debate
- Is the creation of software
- an art,
- a science, or
- a discipline ???
16What is Software Engineering? 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."
17What is Software Engineering?
- "fabrication that takes away the uniqueness and
magic of programming."
18Designing software is difficult.
- The larger the project, the more difficult the
solution.
19 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."
20What 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)
21There is a crisis in Technology!
- 1) How does one design large-scale
software? - 2) We have an Aging Software Plant.
22Aging Software
- Across the nation, and the world, software is
AGING! - AND-- Little is done to rewrite and redesign the
software! - Why?
23Why?
- " The application STILL works?"
- "It is not 'economical' to commit the resources
to make them better!"
24Software doesn't wear out! ????
25What is the Software Crisis?
- What does it "look like"?
26Software 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.
27Software 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.
28Software Crisis?
- Some believe
- Programmers cannot even begin to use the tools
that are available - Programmers cannot be trusted to test their own
programs adequately
29Why 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?
30The primary challenge of the new century will be
to improve the quality of computer-based
solutions, while simultaneously reducing the time
required to createthem.
- - these solutions are those implemented with
software!