1 / 50

Software Engineering

Software Engineering. Professor Stuart Steele, Associate Head Department of Computer Science and Engineering, NYU Poly. April 12, 2012. Agenda. What is Software Engineering? Relationship to Computer Science, Computer Engineering and Electrical Engineering Types of software

venedict
Download Presentation

Software Engineering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Software Engineering Professor Stuart Steele, Associate Head Department of Computer Science and Engineering, NYU Poly April 12, 2012

  2. Agenda • What is Software Engineering? • Relationship to Computer Science, Computer Engineering and Electrical Engineering • Types of software • Case Studies • Software Business Model • Software Research

  3. What is Software Engineering • The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software and a study of those approaches that allow “application of engineering to software” • The ability to design and develop a software intensive system, on time, within costs to an acceptable level of performance

  4. History • October 1968 – International Conference in Garmisch Germany coined the name Software Engineering • Challenge – how to define the process to build high quality software items • Development models were created

  5. Related Course Programs • Computer Science first program – 1962 Purdue University • Software Engineering first named – 1968 • Software Engineering (Masters) – Wang Institute – 1982 -1988 • Software Engineering first program – 1996 Rochester Institute of Technology • Computer Engineering first program – 1971 Case Western Reserve University

  6. Support of Software Engineering Software Engineering Work Flow Software Engineering Computer Engineering Computer Science Electrical Engineering

  7. Number of Software Professionals 2008 2018 % Computer SE 1, 335,600 1, 619,200 21 & Programmers Computer 426, 000 414, 400 -3 Programmers Computer Software 909,600 1,204,800 32 Engineers (Applications and System Software)

  8. Computing Foundations Mathematical & Engineering Fundamentals Software Modeling & Analysis Software Requirements Software Design Software Construction Software Verification & Validation Software Evolution Software Process Software Quality Software Management Software Testing Software Maintenance Configuration Mgt. Software Engineering Mgt. Knowledge Areas of Software Engineering

  9. Computing Foundations Basic Concept of a System Computer Organization Compiler Basics Operating Systems Data Base and Mgt. Network Communication Parallel & Distributed Computing Basic User Human Interface Secure Design & Code • Problem Solving Techniques • Abstraction • Programming Fundamentals • Programming Languages Basis Debugging Tools & Tech. • Data Structures • Algorithms & Complexity • Basic Concept of a System

  10. Type of Requirements • Functional • Performance, peak and average • Reliability • Usability • Security • Practices Specifications can be text, tables, equations, graphics, math symbols

  11. Characteristics of Requirements • Explicit • Implicit/implied • Derived • Design • Statistical

  12. Good Requirements • 1 Understandable by end users • 2 Non-prescriptive • 3 Correct • 4 Complete • 5 Concise (Succinct) • 6 Precise • 7 Traceable 8 Modifiable 9 Testable (Verifiable) 10 Feasible 11 Clear 12 Unambiguous 13 Consistent A requirement should be What not How

  13. Precise From a data stream of 15 elements, reposition the lowest element value to become the first element in the data stream for later processing. Multiple low values? What if all values are the same?

  14. Consistent The system shall track detected airborne objects traveling at speeds from 200 to 400 miles per hour inclusive. Later in specification: The system shall flag all detected airborne objects traveling at speeds from 300 to 500 miles per hour. This does require the system to flag some objects that it is not required to track. Problems? Could be ok but? These requirements are probably inconsistent.

  15. Software Types • Developed • Reused • Commercial of the shelf (COTS) • Open Source • Non Development (NDI)

  16. Commercial of the Shelf (COTS) • Can apply to both hardware and software • A major ingredient in modern software intensive systems • Requires business, legal and technical skills • Series of major issues.

  17. COTS (Commercial of the Shelf Software) • Source code not available to the application developer • The evolution is not under the control of the application developer • Sold, leased, licensed at advertised prices Three major characteristics of COTS:

  18. COTS (Commercial of the Shelf Software) • Source code not available to the application developer • The evolution is not under the control of the application developer • Sold, leased, licensed at advertised prices Three major characteristics of COTS:

  19. What is OSS/FS? Defined 1997 Open Source Software/Free Software programs have licenses giving users the freedom to: - run the program for any purpose - study and modify the program - freely redistribute copies of either the original or modified program Often supported via commercial companies

  20. Job Titles • Software engineer • Software analyst • Computer software engineer • Programmer – High Order Languages • Programmer – assembly • Computer engineer • Systems engineer • Support personal– QA, Configuration Mgt. • Project managers

  21. Hardware and Software System Sensor display Processing

  22. Hardware/Software Integration Computation display Computer sensor buffer algorithm accuracy update rate cpu utilization memory utilization interrupt processing fixed point arithmetic sampler Buffer built in the display consider

  23. Error Profile Algorithms (1,2,3) 1 Time & memory 2 Round off Error Truncation 3 Quantization Sample rate Impact of OS overhead vs. sample rate? Impact of interrupt latency?

  24. Hardware Software Co - Design • Define the functionality of the subsystem • Design the Hardware First • Design the Software Second • Design the Hardware Second • Design the Software First • Best result when the hardware and the software are designed together • The results show appropriate trade-offs

  25. Examples • Real – time systems • Embedded systems • Fire Control System • Enterprise systems • Social networks • Manufacturing • Complexity Impact

  26. Applications Government Fashion Law Sports Home Management Automotive Agriculture Patent Law Energy News Publishing Security Aviation Retail • Communication • Education • Entertainment • Hospitality • Archaeology • Transportation • Recreation • Medicine • Art • Biology • Finance • Manufacturing • Environment

  27. Software Development Processes • Waterfall (Classical) • Agile (More flexible) • Various other approaches • Nonlinear Software Engineering (Complexity Theory)

  28. Software Development Process (Waterfall) systems feedback and iteration incremental development software hardware people requirements software design detailed design algorithms code, unit test architectures component test formal methods design techniques component component integration test implementation methods hardware/software trade-offs system test testing methods maintenance

  29. Extreme Programming Process (Agile) user stories values acceptance test criteria iteration plan simple design CRC cards spike solutions prototypes planning design Release software increment project velocity computed refactoring coding test unit test pair programming acceptance testing continuous integration

  30. Software Engineering Diagrams and Tools • IBM Rational Architecture Tool Set Requirements Code Class Diagrams Sequence Diagram A change in a diagram or in the code, will automatically update diagrams and code

  31. Class Diagram

  32. Sequence Diagram

  33. Code

  34. 5 Elements for Quality Software Development • Integrated Development Environment • Source Control • Automated Testing • Automated Build • Defect Management

  35. Ariane 5 Spacecraft Launch and Destruction

  36. Ariane 5 situation, Famous Software Issue • An input to a specific module made the module overflow, an exception occurred shutting down the system and its backup • The system was used before but this mission was similar but had a different trajectory • What kind of problem was it? Software, Systems, Hardware, Project Planning, etc.

  37. What Makes Software So Hard • Software projects are design projects, not production • The ”doing” disciplines of software are difficult to perform, monitor, and measure. Productivity differences between individuals are huge. • Software lacks laws and first principles • Software lacks a measurable unit of work • “Supporting disciplines – planning, estimation, prediction and observation, are quite difficult • No “permanent” platform to build on

  38. Social networks • The Web and the new frontier • Frameworks and flexible development • A great deal of hands on flexibility

  39. Software and the Business Model • Recently, Hewlett-Packard announced that it may stop its struggling PC business • This allows more investing in software where it sees more potential for growth • Why – “Software is Eating the World” Marc Andreessen (Creator of Netscape browser) • Prominent new internet companies are building real high growth, high margin, highly defensible businesses.

  40. What is Going On! • More and more major businesses and industries are being run on software and delivered as online services. Movies, agriculture, etc. • After six decades into the computer revolution, four decades since the invention of the microprocessor, two decades into the rise of the modern internet, much of the technology to transform industries through software can be widely delivered at global scale

  41. What is Going On (cont.) • Over two billion people now use the internet. • At least five billon people to own smart phones in the next 10 years • In 2000, the cost of a customer running a basic internet application was $150,000 per month. In today’s Amazon’s cloud the cost is $1,500.

  42. Highlights • Largest video service by number of subscribers is a software company, Netflix • Today’s dominant music companies are software companies too: Apples iTunes, Spotify and Pandora. • Today’s fastest growing entertainment companies are videogame makers – again software

  43. Highlights (Cont.) • Today’s fastest growing telecom company is Skype, a software company that was just bought by Microsoft for $8.5 Billion. • Linkedin is today’s fastest growing recruiting company. • Software controls the car. • Wal-Mart, leading real-world retailer uses software for logistics and distribution capabilities.

  44. Challenges • Hard economic issues • New companies must prove their worth • Shortage of skilled and educated personnel

  45. Future Trends • Cloud Computing • Crowdsourcing • Mobile high level of integrated communications • Software is everywhere • How to handle Software Complexity?

  46. Software Research - Microsoft Runtime Reliability Performance Concurrency & Parallelism Measurement & Prediction User Studies Critical Technologies • Browser/JavaScript • New Ways to Program • Modeling and Design • Contracts and Types • Verification • Symbolic Methods • Testing

  47. The Final Issue • Software is everywhere • How to handle complexity ?

  48. Employment Situation • BEST Jobs 2011 – Wall Street Journal Online • Software Engineer • Math • 3) Actuary • 4) Computer System Analyst • Future IT growth anticipated

  49. Other Job Assessment Sources • Career Cast –Top Ten • CNN Money –Top Ten • Software Engineer # 1 • Computer System Analyst, #5 and # 7 • Mobile Applications Design/Development #7

  50. The Fastest Growing Jobs2011 – 2014 CNN Money • Network System & Data Communication Analyst • Computer Software Engineer – Applications • Computer Software Engineer – Systems Software • Network and Computer Systems Administrator • Data Base Administrator

More Related