INFORMATION TECHNOLOGY IN BUSINESS AND SOCIETY SESSION 20 – HOW SOFTWARE IS MADE SEAN J. TAYLOR ADMINISTRATIVIA • Assignment 4 solution is posted • Group Project 1 is posted • Site traffic and websites • Office hours moved: Tuesday 3:30 – 5:30 (KMC 8-191) • Office hours next week: Friday 3:30 – 5:30 (KMC 8-191) LEARNING OBJECTIVES • Explain why software engineering is difficult. • Understand the process by which software product are created. WHAT IS SOFTWARE? INTERNAL SYSTEMS • Accounting/billing • Trading systems • Human resources • Customer relationship management • Data mining • Product/inventory management • MANY MORE BUILD OR BUY? WHY BUY? WHY BUILD? • Time to use • Customized, all requirements met • External support • No risk of project failure • Upgrades • Network effects WHAT ARE THE COSTS? SAAS: SOFTWARE AS A SERVICE • software and associated data are centrally hosted on the cloud • typically accessed by users using a thin client via a web browser • $10B in sales in 2010 • accounting, customer relationship management (CRM) • enterprise resource planning (ERP), invoicing • human resource management (HRM), content management (CM) ESSENTIAL DIFFICULTIES 1. Complexity • Hard to manage large teams • Hard to understand system, side-effects 2. Conformity • Software is expected to meet all users’ needs 3. Changeability • Pressure/ability to change 4. Invisibility • No way to see it all at once, visually PAST BREAKTHROUGHS • High-level languages • Solve common problems and allow programmers to think less about how computer executes instructions • (time-sharing) • Unified programming environments • Standardize how programmers work, make key decisions in advance HOPES FOR SILVER • Even higher-level languages: more expressive • Object-oriented programming: re-usability of components • Artificial intelligence: teach computers to do what programmers do • Expert systems: use “rules” to improve development • “Automatic” programming: generate a program from a problem • Graphical programming: a visual metaphor for the program • Program verification: find bugs before users do • Environments and tools: reduce errors and streamline workflow METHODOLOGIES Structure imposed on how software is developed. 1. Waterfall Model 2. Agile Methodology 3. Many more: RAD, TDD, Spiral WATERFALL MODEL REQUIREMENTS “THE HARDEST SINGLE PART OF BUILDING A SOFTWARE SYSTEM IS DECIDING PRECISELY WHAT TO BUILD.” -- BROOKS SYSTEM DESIGN OUTPUT: SPECIFICATION IMPLEMENTATION VERSION CONTROL VERSION CONTROL SYSTEMS VERIFICATION MAINTENANCE 1. Add new features 2. Fix bugs as they come up 3. Improve performance 4. Scale to more users/data “AGILE” METHODOLOGY “THE MYTHICAL MAN-MONTH” NEXT CLASS: MOBILE AND LOCATION Work on G1