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 • Case Studies • Software Business Model • Software Research 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 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 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 Support of Software Engineering Software Engineering Work Flow Software Engineering Computer Engineering Computer Science Electrical Engineering Number of Software Professionals Computer SE & Programmers 2008 2018 1, 335,600 1, 619,200 % 21 Computer Programmers 426, 000 414, 400 -3 Computer Software Engineers (Applications and System Software) 909,600 1,204,800 32 Knowledge Areas of Software Engineering • 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. Computing Foundations • Problem Solving Techniques • Abstraction • Programming Fundamentals • Programming Languages Basis Debugging Tools & Tech. • Data Structures • Algorithms & Complexity • Basic Concept of a System • 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 Type of Requirements • Functional • Performance, peak and average • Reliability • Usability • Security • Practices Specifications can be text, tables, equations, graphics, math symbols Characteristics of Requirements • • • • • Explicit Implicit/implied Derived Design Statistical Good Requirements 1 Understandable by end users 8 Modifiable 2 Non-prescriptive 9 Testable (Verifiable) 3 Correct 10 Feasible 4 Complete 11 Clear 5 Concise (Succinct) 12 Unambiguous 6 Precise 13 Consistent 7 Traceable A requirement should be What not How 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? 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. Software Types • • • • • Developed Reused Commercial of the shelf (COTS) Open Source Non Development (NDI) 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. COTS (Commercial of the Shelf Software) Three major characteristics of COTS: • 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 COTS (Commercial of the Shelf Software) Three major characteristics of COTS: • 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 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 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 Hardware and Software System Sensor Processing display Hardware/Software Integration Computation Computer sensor sampler consider algorithm accuracy update rate cpu utilization memory utilization interrupt processing fixed point arithmetic display Buffer built in the display Algorithms (1,2,3) Error Profile 1 Time & memory 2 Round off Error Truncation 3 Quantization Sample rate Impact of OS overhead vs. sample rate? Impact of interrupt latency? 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 Examples • • • • • • • Real – time systems Embedded systems Fire Control System Enterprise systems Social networks Manufacturing Complexity Impact Applications • • • • • • • • • • • • • Communication Education Entertainment Hospitality Archaeology Transportation Recreation Medicine Art Biology Finance Manufacturing Environment • • • • • • • • • • • • • • Government Fashion Law Sports Home Management Automotive Agriculture Patent Law Energy News Publishing Security Aviation Retail Software Development Processes • • • • Waterfall (Classical) Agile (More flexible) Various other approaches Nonlinear Software Engineering (Complexity Theory) Software Development Process (Waterfall) systems feedback and iteration software incremental development 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 hardware people Extreme Programming Process (Agile) user stories values acceptance test criteria iteration plan Release software increment project velocity computed simple design CRC cards spike solutions prototypes planning design refactoring coding test unit test acceptance testing pair programming continuous integration Software Engineering Diagrams and Tools • IBM Rational Architecture Tool Set Requirements Class Diagrams Sequence Diagram Code A change in a diagram or in the code, will automatically update diagrams and code Class Diagram Sequence Diagram Code 5 Elements for Quality Software Development • • • • • Integrated Development Environment Source Control Automated Testing Automated Build Defect Management Ariane 5 Spacecraft Launch and Destruction 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. 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 Social networks • The Web and the new frontier • Frameworks and flexible development • A great deal of hands on flexibility 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. 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 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. 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 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. Challenges • Hard economic issues • New companies must prove their worth • Shortage of skilled and educated personnel Future Trends • Cloud Computing • Crowdsourcing • Mobile high level of integrated communications • Software is everywhere • How to handle Software Complexity? Software Research - Microsoft • • • • • • • Browser/JavaScript New Ways to Program Modeling and Design Contracts and Types Verification Symbolic Methods Testing • Runtime Reliability • Performance • Concurrency & Parallelism • Measurement & Prediction • User Studies • Critical Technologies The Final Issue • Software is everywhere • How to handle complexity ? Employment Situation BEST Jobs 2011 – Wall Street Journal Online 1) Software Engineer 2) Math 3) Actuary 4) Computer System Analyst Future IT growth anticipated 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 The Fastest Growing Jobs 2011 – 2014 CNN Money 1) Network System & Data Communication Analyst 3) Computer Software Engineer – Applications 4) Computer Software Engineer – Systems Software 5) Network and Computer Systems Administrator 6) Data Base Administrator