Top Banner
CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology
45

CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

Dec 21, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-1

Illinois Institute of Technology

CS 487

Software Engineering

David Lash

© Illinois Institute of Technology 1997

Page 2: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-2

Contact Information

Phone: 630-979-5940 (W)

email: [email protected]

office hours: Monday 830-10:30 pm (AOL

Instant Messenger id=dlash01

Other by appointment.

Prerequisite: Data structures course

Page 3: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-3

Course Material

Required Text

R. Pressman, Software Engineering,

4th edition.

5th edition is also available

Page 4: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-4

Course Web Site http://www.depaul.edu/~dlash/extra/cs487/

– syllabus – project description– lectures

Page 5: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-5

Assignments1. Homework 20 points

2. Project 35 points

3. Midterm 20 points

4. Final exam 25 points

Grading:

A 90 - 100 points

B 70 - 89 " "

C 50 - 89 " "

D 40 - 49 " "

Page 6: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-6

Project

Goal: to specify, design, implement, and test a software system an university registration system by a team of students.

2 - 4 students

A team - a software company

Page 7: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-7

Deadlines:

Formation of the Team: June 14

Homework Assignment #1: June 28

System Specification: July 5

Midterm Exam: July 10

Design Document July 17

Homework Assignment #2: July 19

Demo and Final Report: July 27

Final Exam: July 27

Page 8: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-8

Project Details

GOAL: The purpose of the project is to

specify, design, implement, and test a university registration system

(2 - 4 students)

A team - a software company

Page 9: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-9

Project Details

Brief Description Support course requests, add/drop

requests, student class scheduling, student registration status, class lists for instructors, enrollment summary reports, etc.

Assume that the system is intended for use by students and university administrative staff with no computing background. The system should be secure, reliable, and user-friendly.

Page 10: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-10

Course Plan

1. Introduction to Software Engineering. (Chapter 1)

2. Software Life-Cycle Models: (Chapter 2)

3. Introduction to Requirements Analysis. (Chapter 10, 11, 14.11)

4. Specification methods: Transition diagrams, Data-Flow Diagrams. (Chapter 12)

Page 11: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-11

Course Plan - II

5. Introduction to Software Design. (Chapter 13)

6. Modular design. Module coupling and cohesion. Information Hiding. (Chapter 13)

7. Data-Flow oriented design. (Chapter 14, 12.8.2)

8. Object-oriented software design. (Chapter 19, 20, 21)

9. Implementation. Structured programming. Coding styles.

Page 12: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-12

Course Plan - III

10. Introduction to software testing. Inspection and Review. Black-box testing methods. (Chapter 16)

11. White-box testing methods. Integration testing. (Chapter 16, 17)

12. Introduction to Sftw project mngment. (Chapter 3, 5, 7)

13. Introduction to Software Maintenance. (Version and configuration management. (Chapter 9, 27)

14. CASE - Computer Aided Software Engineering. (Chapter 29).

Page 13: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-13

Some Software History

1950-mid 60s

first programs 0100110011010101101... Special custom hardware more of the concern

Software development more of an “afterthought”.

The “art” of programmingProgramming by trial and error

Page 14: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-14

1960's - Late 1970s

– High level programming languages: Basic, Cobol, Fortran, PL/I

–Multi-user systems developed (TSS, MVS)– Software maintenance presents itself as a large problem.

» Fix faults»requirements change »new hardware introduced.

–Birth of software “houses” and the software industry

.

The Second Era - Software and

Maintenance

Page 15: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-15

Mid 70s - Early 80s - Distributed

Systems

– Distributed systems forcing a paradigm shift– Explosive Growth of networking (LAN/WAN)

– Low cost hardware that has consumer impact

–microelectronics - new industrial revolution.

Page 16: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-16

90-s to Present

Object Oriented Programming paradigm Networked computers Popularization of the Internet Explosive growth of microprocessors and

networking (wireless communications)

Page 17: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-17

Software Development Still

Problematic

The industry is still plagued by late releases, bugs in code and complexity problems:

–Windows 95–Y2K–Tape backup software–ATM Network On Campus–Your favorite example here

Page 18: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-18

Software Is Engineered

Software costs are dominated by development, manufacturing the develop code is simple and not error prone

Hardware has development costs but also extensive manufacturing complexities, material costs and inventory costs

Page 19: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-19

Software Doesn’t Wear Out ...

(but it does deteriorate).

Bathtub curve

Software Curve

Realistic Software Curve with Changes

Page 20: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-20

3. Move => component based but ...

Pre-fab software? Not most developments?

Page 21: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-21

So what is Software Engineering?

Bauer 69: SE is the establishment and use of sound engineering principles to obtain economically software that is reliable and works efficiently on real machines.

IEEE 93: (1) The application of a systematic, disciplined, quantifiable approach to the development, operation , and maintenance of software; that is, the application of engineering to software.

(2) the study of approaches as in (1)

Page 22: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-22

Goals For Software Engineering

* to improve the quality of software systems.

»More predictability»reliability»less costly»flexibility»proper features »maintainability

Page 23: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-23

More On SE Goals

* to improve the quality of

software systems.

* to improve the productivity

of software development

*

.

.

.

Page 24: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-24

Quality of a software product1. reliability

2. efficiency

* speed

* resource consumption

3. user-friendly

* a user

* a software eng.

4. easy to maintain

5. portability

6. scalability

7. reusability

Page 25: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-25

Developer Myths

–The sooner cut code the better–Cut the code then move on to the next feature–Quality cannot be predicted until program is running

Page 26: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-26

Cost For Fixing Problems

Page 27: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-27

Software Comes In Many Sizes And Complexities

Project size

# of people duration LOC

small 1-2 1-6 months 1000-2000

medium 2-5 1-2 years 10k-50k

large 5-20 2-3 years 50k-200k

very large 100-1000 4-7 years n x 10^6

Windows 9515 x 10^6

Page 28: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-28

Software Types

Real-Time Business scientific Personal Computer Web-based System Software

Makes discussion more general ...

Page 29: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-29

Software LifeCycle

Page 30: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-30

Software LifeCycle

Page 31: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-31

Software Process

Software development must be viewed as a process

Quality assurance must be throughout the process

IEEE Capability Maturity

Page 32: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-32

IEEE Capability Maturity Model Level 1 - Initial - ad hoc occasionally chaotic

process. Few processes defined. Individual effort => success.

Level 2 - Repeatable - Level 1 + Basic project management processes to track cost, schedule and functionality. (e.g, proj tracking, rqmnts mngmt, Testing)

Level 3 - Defined - Level 2 + Documented and used software projects for all development and maintenance. (e.g, peer reviews, training, process focus)

Page 33: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-33

IEEE Capability Maturity Model Level 4 - Managed - Level 3 + Detailed measures

for the software process. Software process and products managed by metrics. (Quality mngmt, quantitative measurement)

Level 5 - Optimizing - Level 4 + Continuous improvement enabled via feedback and via testing ideas and technologies. (e.g., Process/tecgly change mngmt)

Page 34: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-34

software life cycle = all activities required to define, design, implement, test and maintain a software product.

1) waterfall model (phased life cycle model)

2) the prototype model

3) incremental model

4) evolutionary model

5) spiral model

Software Life Cycle

Page 35: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-35

WaterFall/Linear Software Model

Page 36: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-36

Another View Of WaterFall

Page 37: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-37

Page 38: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-38

Requirements Analysis

identification of major functions of the software system

what the software system is to do?

Specification document

1. software system function description

2. Constraints:

*processing environment

*cost, deadlines

*reliability

*efficiency

Page 39: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-39

Page 40: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-40

DesignHow the system will do it?

1. High-level design

a system structure

||

\ /

a set of components +relationships between components

a module + a call relationship

classes, object + inheritance

aggregation

association

2. low-level design

*major algorithms

*major data structures

Page 41: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-41

Page 42: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-42

Test Purpose To assure confidence in

system To find bugs and exercise as

many paths, in as many different and unexpected circumstances as possible.

Page 43: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-43

Software Maintenancemaking changes to the software system

*fixing defects

*adding new functionality

*modifying the existing functionality

*improvements

*adapting to new environments

Page 44: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-44

Page 45: CS48701-1 Illinois Institute of Technology CS 487 Software Engineering David Lash © Illinois Institute of Technology 1997.

CS48701-45

Advantages And Disadvantages

- We should use the waterfall model when developers have previous experience with similar systems.

- Difficult to use when customers cannot define well what they want.

- Can greatly delay the release of product to end-customer to tail end of cycle