slides

17
Introduction to Introduction to Software Engineering Software Engineering Chris Murphy Chris Murphy Programming Systems Lab Programming Systems Lab

Upload: softwarecentral

Post on 14-Nov-2014

216 views

Category:

Documents


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Slides

Introduction to Introduction to Software EngineeringSoftware Engineering

Chris MurphyChris Murphy

Programming Systems LabProgramming Systems Lab

Page 2: Slides

How many lines of code?How many lines of code?

• Average CS1004 assignment:Average CS1004 assignment:• 200 lines200 lines

• Average CS4115 project:Average CS4115 project:• 5000 lines5000 lines

• Corporate e-commerce project:Corporate e-commerce project:• 80,000 lines80,000 lines

• Microsoft Windows XP:Microsoft Windows XP:• 40,000,000 lines 40,000,000 lines

Page 3: Slides

What is Software What is Software Engineering?Engineering?

““The practice of The practice of creatingcreating and and maintainingmaintaining software applications by software applications by applying technologies and practices applying technologies and practices from engineering, computer science, from engineering, computer science, project management, application project management, application domains and other fields.”domains and other fields.”

-Wikipedia-Wikipedia

Page 4: Slides

Over 50% of software Over 50% of software projects failprojects fail

Fred Brooks : IBM’s OS/360 Fred Brooks : IBM’s OS/360 “was late, took more “was late, took more memory than was planned, memory than was planned, costs were several times the costs were several times the estimate, and it did not estimate, and it did not perform very well until perform very well until several releases after the several releases after the first”first”

Page 5: Slides

Why do software projects Why do software projects fail?fail?

Difficult to accurately estimate how long something will take

Page 6: Slides

Why do software projects Why do software projects fail?fail?

Developers typically overestimate/overstate their productivity

Page 7: Slides

Why do software projects Why do software projects fail?fail?

Requirements are not always clearly defined

Page 8: Slides

Why do software projects Why do software projects fail?fail?

Requirements are not always realistic

Page 9: Slides

Why do software projects Why do software projects fail?fail?

Requirements are always changing

Page 10: Slides

Software development = Software development = tradeoffstradeoffs

• Cost vs Scope vs Quality vs TimeCost vs Scope vs Quality vs Time• Security vs PerformanceSecurity vs Performance• Specialization vs GeneralizationSpecialization vs Generalization• Specificity vs FlexibilitySpecificity vs Flexibility

Page 11: Slides

Software EngineeringSoftware Engineering

• Processes:Processes:– Project management (resources, time, etc.)Project management (resources, time, etc.)– Requirements gathering & managementRequirements gathering & management– Software design & architectureSoftware design & architecture– Software developmentSoftware development– Testing and quality assuranceTesting and quality assurance

• Tools:Tools:– Software design, development, and testingSoftware design, development, and testing– CommunicationCommunication– Requirements and defect trackingRequirements and defect tracking– Version controlVersion control

Page 12: Slides

Software EngineeringSoftware Engineering

• Processes:Processes:– Project management (resources, time, etc.)Project management (resources, time, etc.)– Requirements gathering & managementRequirements gathering & management– Software design & architectureSoftware design & architecture– Software developmentSoftware development– Testing and quality assuranceTesting and quality assurance

• Tools:Tools:– Software design, development, and testingSoftware design, development, and testing– CommunicationCommunication– Requirements and defect trackingRequirements and defect tracking– Version controlVersion control

Page 13: Slides

Software testing is Software testing is undervaluedundervalued

““Software and Cathedrals are much Software and Cathedrals are much the same: First we build them, then the same: First we build them, then we pray!!!”we pray!!!”

-Sam Redwine, Jr.-Sam Redwine, Jr.

Page 14: Slides

Software testing is Software testing is importantimportant

17%

33%

50%DesignDevelopmentTesting

Half of the time in the software Half of the time in the software

development cycle is spent on testing development cycle is spent on testing

Page 15: Slides

Types of software testingTypes of software testing

• Unit testingUnit testing– Test the basic pieces, eg methods or functionsTest the basic pieces, eg methods or functions

• Integration testingIntegration testing– Combinations of unitsCombinations of units

• System testingSystem testing– ““Black-box” or acceptance testingBlack-box” or acceptance testing

• Regression testingRegression testing– Make sure changes don’t break anythingMake sure changes don’t break anything

• Non-functional testingNon-functional testing– Performance, security, etc.Performance, security, etc.

Page 16: Slides

Other types of testingOther types of testing

• Obsession testingObsession testing– ““I’ll fix this bug if it’s the last thing I do.”I’ll fix this bug if it’s the last thing I do.”

• Aggression testingAggression testing– ““If this doesn’t work, I’m gonna kill If this doesn’t work, I’m gonna kill

somebody.”somebody.”

• Depression testingDepression testing– ““If this doesn’t work, I’m gonna kill If this doesn’t work, I’m gonna kill

myself.”myself.”

Page 17: Slides

My researchMy research

• ““In vivo” testingIn vivo” testing– Executing tests in the field while the software is Executing tests in the field while the software is

runningrunning

• Testing machine learning applicationsTesting machine learning applications– Looking for ways to test when the correct outcome Looking for ways to test when the correct outcome

cannot be known in advancecannot be known in advance

• RetinaRetina– Learning about CS1 students’ programming habitsLearning about CS1 students’ programming habits

• genSpacegenSpace– Collaboration in computational biologyCollaboration in computational biology

[email protected]@cs.columbia.edu