Title: Introduction to Software Engineering
1Introduction to Software Engineering
- Chris Murphy
- Programming Systems Lab
2How many lines of code?
- Average CS1004 assignment
- 200 lines
- Average CS4115 project
- 5000 lines
- Corporate e-commerce project
- 80,000 lines
- Microsoft Windows XP
- 40,000,000 lines
3What is Software Engineering?
- The practice of creating and maintaining
software applications by applying technologies
and practices from engineering, computer science,
project management, application domains and other
fields. - -Wikipedia
4Over 50 of software projects fail
- Fred Brooks IBMs OS/360 was late, took more
memory than was planned, costs were several times
the estimate, and it did not perform very well
until several releases after the first
5Why do software projects fail?
Difficult to accurately estimate how long
something will take
6Why do software projects fail?
Developers typically overestimate/overstate their
productivity
7Why do software projects fail?
Requirements are not always clearly defined
8Why do software projects fail?
Requirements are not always realistic
9Why do software projects fail?
Requirements are always changing
10Software development tradeoffs
- Cost vs Scope vs Quality vs Time
- Security vs Performance
- Specialization vs Generalization
- Specificity vs Flexibility
11Software Engineering
- Processes
- Project management (resources, time, etc.)
- Requirements gathering management
- Software design architecture
- Software development
- Testing and quality assurance
- Tools
- Software design, development, and testing
- Communication
- Requirements and defect tracking
- Version control
12Software Engineering
- Processes
- Project management (resources, time, etc.)
- Requirements gathering management
- Software design architecture
- Software development
- Testing and quality assurance
- Tools
- Software design, development, and testing
- Communication
- Requirements and defect tracking
- Version control
13Software testing is undervalued
- Software and Cathedrals are much the same
First we build them, then we pray!!! - -Sam Redwine, Jr.
14Software testing is important
Half of the time in the software development
cycle is spent on testing
15Types of software testing
- Unit testing
- Test the basic pieces, eg methods or functions
- Integration testing
- Combinations of units
- System testing
- Black-box or acceptance testing
- Regression testing
- Make sure changes dont break anything
- Non-functional testing
- Performance, security, etc.
16Other types of testing
- Obsession testing
- Ill fix this bug if its the last thing I do.
- Aggression testing
- If this doesnt work, Im gonna kill somebody.
- Depression testing
- If this doesnt work, Im gonna kill myself.
-
17My research
- In vivo testing
- Executing tests in the field while the software
is running - Testing machine learning applications
- Looking for ways to test when the correct outcome
cannot be known in advance - Retina
- Learning about CS1 students programming habits
- genSpace
- Collaboration in computational biology
- cmurphy_at_cs.columbia.edu