cs48701-1 illinois institute of technology cs 487 software engineering david lash © illinois...
Post on 21-Dec-2015
223 views
TRANSCRIPT
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
CS48701-3
Course Material
Required Text
R. Pressman, Software Engineering,
4th edition.
5th edition is also available
CS48701-4
Course Web Site http://www.depaul.edu/~dlash/extra/cs487/
– syllabus – project description– lectures
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 " "
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
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
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
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.
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)
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.
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).
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
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
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.
CS48701-16
90-s to Present
Object Oriented Programming paradigm Networked computers Popularization of the Internet Explosive growth of microprocessors and
networking (wireless communications)
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
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
CS48701-19
Software Doesn’t Wear Out ...
(but it does deteriorate).
Bathtub curve
Software Curve
Realistic Software Curve with Changes
CS48701-20
3. Move => component based but ...
Pre-fab software? Not most developments?
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)
CS48701-22
Goals For Software Engineering
* to improve the quality of software systems.
»More predictability»reliability»less costly»flexibility»proper features »maintainability
CS48701-23
More On SE Goals
* to improve the quality of
software systems.
* to improve the productivity
of software development
*
.
.
.
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
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
CS48701-26
Cost For Fixing Problems
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
CS48701-28
Software Types
Real-Time Business scientific Personal Computer Web-based System Software
Makes discussion more general ...
CS48701-29
Software LifeCycle
CS48701-30
Software LifeCycle
CS48701-31
Software Process
Software development must be viewed as a process
Quality assurance must be throughout the process
IEEE Capability Maturity
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)
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)
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
CS48701-35
WaterFall/Linear Software Model
CS48701-36
Another View Of WaterFall
CS48701-37
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
CS48701-39
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
CS48701-41
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.
CS48701-43
Software Maintenancemaking changes to the software system
*fixing defects
*adding new functionality
*modifying the existing functionality
*improvements
*adapting to new environments
CS48701-44
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