17
1 Software Engineering Textbook: “Software Engineering -- A Practitioner’s Approach,” 5th Edition by Roger S. Pressman URL: http://dslab.kunsan.ac.kr/softeng.htm http://bobby-gerardo.tripod.com/softeng

1 Software Engineering Textbook:“Software Engineering -- A Practitioner’s Approach,” 5th Edition by Roger S. Pressman URL: //dslab.kunsan.ac.kr/softeng.htm

Embed Size (px)

Citation preview

Page 1: 1 Software Engineering Textbook:“Software Engineering -- A Practitioner’s Approach,” 5th Edition by Roger S. Pressman URL: //dslab.kunsan.ac.kr/softeng.htm

1

Software EngineeringTextbook: “Software Engineering -- A Practitioner’s Approach,” 5th Edition by Roger S. Pressman

URL: http://dslab.kunsan.ac.kr/softeng.htmhttp://bobby-gerardo.tripod.com/softeng

Page 2: 1 Software Engineering Textbook:“Software Engineering -- A Practitioner’s Approach,” 5th Edition by Roger S. Pressman URL: //dslab.kunsan.ac.kr/softeng.htm

2

Software Engineering

Course OutlinePart 1 -- The Product and the Process

Chapters 1 & 2

Part 2 -- Software Management Management Concepts -- Chapter 3 Software Process and Project Metrics -- Chapter 4 Project Planning -- Chapter 5 Risk Management -- Chapter 6 Scheduling and Tracking -- Chapter 7 Quality Assurance -- Chapter 8 Configuration Management -- Chapter 9

Page 3: 1 Software Engineering Textbook:“Software Engineering -- A Practitioner’s Approach,” 5th Edition by Roger S. Pressman URL: //dslab.kunsan.ac.kr/softeng.htm

3

Software Engineering

Course OutlinePart 3 -- Conventional Methods

System Engineering - Chapter 10 Analysis Concepts and Principles - Chapter 11 Analysis Modeling - Chapter 12 Design Concepts and Principles - Chapter 13 Design Methods - Chapter 14 Real-Time Design - Chapter 15 Testing Methods and Strategies - Chapter 16 & 17 Metrics for Software - Chapter 18

Page 4: 1 Software Engineering Textbook:“Software Engineering -- A Practitioner’s Approach,” 5th Edition by Roger S. Pressman URL: //dslab.kunsan.ac.kr/softeng.htm

4

Software Engineering

Course OutlinePart 4 -- Object-Oriented SE

Object-Oriented Concepts - Chapter 19 Object-Oriented Analysis - Chapter 20 Object-Oriented Design - Chapter 21 Object-Oriented Testing - Chapter 22 Metrics for Object-Oriented Systems - Chapter 23

Page 5: 1 Software Engineering Textbook:“Software Engineering -- A Practitioner’s Approach,” 5th Edition by Roger S. Pressman URL: //dslab.kunsan.ac.kr/softeng.htm

5

Software Engineering

Course Outline

Re-ordered topics -- Testing Testing Methods and Strategies - Chapter 16 & 17 Object-Oriented Testing - Chapter 22

Page 6: 1 Software Engineering Textbook:“Software Engineering -- A Practitioner’s Approach,” 5th Edition by Roger S. Pressman URL: //dslab.kunsan.ac.kr/softeng.htm

6

Software Engineering

Course OutlinePart 5 -- Advanced Topics

Formal Methods -- Chapter 24 Cleanroom SE -- Chapter 25 Software Reuse -- Chapter 26 Re-engineering -- Chapter 27 Client/Server -- Chapter 28 Computer-Aided Software Engineering -- Ch. 29 The Future -- Chapter 30

Page 7: 1 Software Engineering Textbook:“Software Engineering -- A Practitioner’s Approach,” 5th Edition by Roger S. Pressman URL: //dslab.kunsan.ac.kr/softeng.htm

8

Software Engineering — Introduction

What is Software Engineering (SE)? The process of building a software product.

Some questions to put SE in perspective: What are the sizes of some typical software products?

Maple.exe = 1.3 Mbytes.-- System over 3.8 MbytesNetscape.exe = 1.26 megabytes.Microsoft Office XP > 300 megabytes.

How many people would it take to build these in 1 year? 2? What would you do if a bug could cost lives and $2 billion? What would you do if a delay could cost $100’s of millions?

Page 8: 1 Software Engineering Textbook:“Software Engineering -- A Practitioner’s Approach,” 5th Edition by Roger S. Pressman URL: //dslab.kunsan.ac.kr/softeng.htm

9

Software Engineering — Introduction Some questions to put SE in perspective (con’t):

What is the impact of distributing buggy software? Why do we have so many software upgrades? What is the impact of software upgrades?

Why is it so difficult to measure software development progress?

What are some of the ethical issues in software development?

Why does it take so long to develop software? Why does software cost so much?

Why do people continue to use buggy and/or obsolete software?

Page 9: 1 Software Engineering Textbook:“Software Engineering -- A Practitioner’s Approach,” 5th Edition by Roger S. Pressman URL: //dslab.kunsan.ac.kr/softeng.htm

10

Some Software Characteristics

Software is engineered or developed, not manufactured in the traditional sense.

Software does not wear out in the same sense as hardware.

Page 10: 1 Software Engineering Textbook:“Software Engineering -- A Practitioner’s Approach,” 5th Edition by Roger S. Pressman URL: //dslab.kunsan.ac.kr/softeng.htm

11

Some Software Characteristics

In theory, software does not wear out at all.

BUT, Hardware upgrades. Software upgrades.

Page 11: 1 Software Engineering Textbook:“Software Engineering -- A Practitioner’s Approach,” 5th Edition by Roger S. Pressman URL: //dslab.kunsan.ac.kr/softeng.htm

12

Some Software Characteristics

Thus, reality is more like this.

Most serious corporations control and constrain changes Most software is custom built, and customer never really knows what she/he wants.

Page 12: 1 Software Engineering Textbook:“Software Engineering -- A Practitioner’s Approach,” 5th Edition by Roger S. Pressman URL: //dslab.kunsan.ac.kr/softeng.htm

13

Some General Approaches

Develop and use good engineering practices for building software.

Make heavy use of reusable software components. Use modern languages that support good software development

practices, e.g., C, C++, Java. Use 4th generation languages. But, almost everything is a two-edged sword.

Consider long term tool maintenance.Right now, this is a major problem for NASA.

Page 13: 1 Software Engineering Textbook:“Software Engineering -- A Practitioner’s Approach,” 5th Edition by Roger S. Pressman URL: //dslab.kunsan.ac.kr/softeng.htm

14

Types of Software Applications

Systems Software Real-Time Software Business Software Engineering Software Embedded Software Artificial Intelligence Software Personal Computer Software

Page 14: 1 Software Engineering Textbook:“Software Engineering -- A Practitioner’s Approach,” 5th Edition by Roger S. Pressman URL: //dslab.kunsan.ac.kr/softeng.htm

15

                         

                  

                                                                                            

                                                                                            

                                          

Page 15: 1 Software Engineering Textbook:“Software Engineering -- A Practitioner’s Approach,” 5th Edition by Roger S. Pressman URL: //dslab.kunsan.ac.kr/softeng.htm

16

Software Myths

Myth: It’s in the software. So, we can easily change it. Reality: Requirements changes are a major cause of

software degradation. Myth: We can solve schedule problems by adding more programmers.

Reality: Maybe. It increases coordination efforts and may slow things down.

Myth: While we don’t have all requirements in writing yet, we know what we want and can start writing code.

Reality: Incomplete up-front definition is the major cause of software project failures.

Page 16: 1 Software Engineering Textbook:“Software Engineering -- A Practitioner’s Approach,” 5th Edition by Roger S. Pressman URL: //dslab.kunsan.ac.kr/softeng.htm

17

Software Myths

Myth: Writing code is the major part of creating a software product. Reality: Coding may be as little as 10% of the effort, and

50 - 70% may occur after delivery.

Page 17: 1 Software Engineering Textbook:“Software Engineering -- A Practitioner’s Approach,” 5th Edition by Roger S. Pressman URL: //dslab.kunsan.ac.kr/softeng.htm

18

Software Myths

Myth: I can’t tell you how well we are doing until I get parts of it running.

Reality: Formal reviews of various types both can give good information and are critical to success in large projects.

Myth: The only deliverable that matters is working code.

Reality: Documentation, test history, and program configuration are critical parts of the delivery. Myth: I am a (super) programmer. Let me program it, and I will get it done.

Reality: A sign of immaturity. A formula for failure. Software projects are done by teams, not individuals, and success requires much more than just coding.