300 likes | 404 Views
CS4/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. Software Engineering. CSE 4/542A
E N D
CS4/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
Software 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
Helene G. Kershner • Assistant Chairman • Office: 209 Bell Hall • Office Hours • To be determined • By Appointment • Login name: kershner@cse.buffalo.edu
Course Environment • CSE4/542 is a Team-based course. • “Real-world” simulation • Real project for a Customer • Writing course • “Programming” course
Requirements • Programming Languages & Experience designing Algorithms • Senior/Graduate Course • Consider yourself -- Computer Professionals • Effective Communicator • Consider yourself an experienced Programmer
Software Design andDevelopment better known as: SoftwareEngineering
Software Engineering The body of theory and practical techniques involved in the process of developing large scale software
Why Software Engineering (SE)? 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?
“Software is like Entropy, It is difficult to grasp, weighs nothing and obeys the Second Law of Thermodynamics; i.e., It ALWAYS increases.”
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
We do more than PROGRAM! We DESIGN and DEVELOP software to solve problems.
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."
Software Design Software Development is Technology in Crisis! Writing Large-Scale Software is Problematic!
The Central Debate Is the creation of software • an art, • a science, or • a discipline ???
What 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."
What is Software Engineering? "fabrication that takes away the uniqueness and magic of programming."
Designing software is difficult. The larger the project, the more difficult the solution.
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."
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)
There is a crisis in Technology! 1) How does one design large-scale software? 2) We have an Aging Software Plant.
Aging Software • Across the nation, and the world, software is AGING! • AND-- Little is done to rewrite and redesign the software! Why?
Why? • " The application STILL works?" • "It is not 'economical' to commit the resources to make them better!"
Software doesn't wear out! ???? Is this true???
What is the Software Crisis? • What does it "look like"?
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.
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.
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
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?
The primary challenge of the new century will be to improve the quality of computer-based solutions, while simultaneously reducing the time required to “create”them. - these “solutions” are those implemented with software!