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? Time to use External support No risk of project failure Upgrades Network effects WHY BUILD? Customized, all requirements met
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
“THE HARDEST SINGLE PART OF BUILDING A SOFTWARE SYSTEM IS DECIDING PRECISELY WHAT TO BUILD.” -- BROOKS REQUIREMENTS
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