Slides

advertisement
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
Download