Upload
hadley-kittredge
View
215
Download
0
Tags:
Embed Size (px)
Citation preview
INFORMATION TECHNOLOGY IN BUSINESS AND SOCIETYSESSION 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’ needs3. Changeability
• Pressure/ability to change4. 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