Slides

281 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
281
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Slides

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

×