Title: VAST 20002 Computers and Society
1VAST 200-02 Computers and Society
- Lecture 5 - Building Software
- Spring 2004
Prof. John NestorECE DepartmentLafayette
CollegeEaston, Pennsylvania 18042nestorj_at_lafayet
te.edu
2Roadmap for the Term Major Topics
- Course Introduction
- Computer Systems Overview
- Computer History
- Technology Trends
- The Art of Building Hardware and Software \
- Current Issues
- Looking to the Future
3References - HW and SW Design
- 1. M. Reilly, "Designing an Alpha
Microprocessor", IEEE Computer, July 1999.
- 2. C. Hoare, "The Emperor's Old Clothes (Turing
Award Lecture)", Communications of the
ACM,    February 1981.
- 3. D. Parnas, "Software Aspects of Strategic
Defense Systems", Communications of the ACM,
December 1985.
- 4. M. Baer, The New X-Men, Wired, Issue 11.09,
September 2003(available at http//www.wired.com/
wired/archive/11.09/xmen.html)
4Todays Lecture
- Software Design
- What is software design?
- Is Software harder than hardware?
- Estimating Software Complexity
- Software design methods
- Software Engineering as an emerging field
5General Steps in Software Design
- 1. Requirements Analysis deterimine what problem
the software will solve.
- 2. Design the program and select the tools to
solve the problem.
- 3. Code the program in the language of choice
- 4. Compile into executable code
- 5. Test the program to make sure it works if
not, return to step 3.
- 6. Maintenance - correct bugs after the program
is in use (and try to avoid creating new ones!)
6What Makes Software Hard?
- Software is
- Abstract in nature - invisible and
unvisualizable1
- Arbitrarily complex - often too large for one
person to comprehend
- Arbitrarily changeable
- Arbitrarily fragile
- Specifications change before, during and after
development
- Communications issues between designers and
programmers
1F. W. Brooks, No Silver Bullet, The Mythical
Man Month Anniversary Edition, Addison Wesley,
1995
7Measuring SW Complexity
- Source Lines of Code (SLOC)
- Measures how many lines (statements) in a
program
- Useful as a measure of software complexity
- SOME SLOC Estimates
Sources D. Wheeler, More Than A Gigabuck
Estimating GNU/Linuxs Size, http//www.dewheeler
.com/sloc/ Wikipedia ( wikipedia.org).
8Estimating Software Cost
- Barry Boehms Constructive Cost Model (COCOMO)1
- T cost in person-years
- k - empirical constant
- x - empirical constant (0.1 - 0.25)
1Barry Boehm, Software Engineering Economics
Prentice-Hall, 1981
9Software Cost
- Programmer time is not fungible
- Brooks Law Adding programmers to a late
project makes it later
- Brooks key challenge Conceptual Integrity
1Frederic Brooks, The Mythical Man-Month,
Addison-Wesley, 1975
10Software Design Methods
- Define the steps of creating a large software
system
- Common Models
- Code and change
- Waterfall
- Spiral
- Extreme Programming - a recent proposal
11SW Development - Waterfall Model
Integration
Product Verif.
Product design
System feasibility
Verification
System Test
Detailed Design
Operations Maint.
Verification
Revalidation
Source A Spiral Model of Software Development
and Enhancement, IEEE Computer, May 1988.
12SW Development - Spiral Model
Source A Spiral Model of Software Development
and Enhancement, IEEE Computer, May 1988.
13Extreme Programming
- A recent design method developed by Beck,
Cunningham, and Jeffries
- Key ideas
- Incremental and iterative development
- Continuous testing
- Pair programming
- Onsite customer - encourage interaction between
user developers
- Simplicity
- Feedback
14Software Engineering
- Software development as an engineering
discipline
- Still a young discipline - consider Civil
Engineering
- Fundamentals remain to be discovered
- Engineering failures are still commonplace
- Late release of products
- Bugs in released products
- Software-related disasters
15Roadmap for the Term Major Topics
- Course Introduction
- Computer Systems Overview
- Computer History
- Technology Trends
- The Art of Building Hardware and Software
- Current Issues \
- Looking to the Future
16Outline - Course Overview
- Administrative Details \
- Course Overview and Introduction
- Computer Systems Overview
- General Concepts
- History and Trends
- The Creative Process
- Hardware Design
- Software Design
- Current Issues Computers and Society
- Faults and Failures
- Privacy and Encryption
17The Illusion of Privacy
- 1993 - On the Internet, nobody knows youre a
dog -- New Yorker cartoon, 1993
- 1998 On the Internet, nobody knows youre a
police officer posing as a 14-year old
- 2002 On the Internet, nobody knows youre a
Carnivore
- 2003 On the Internet, nobody knows youre the
RIAA
18The Internet - A Network of Networks
- Common addressing scheme
- Routers connect networks,
- TCP/IP
- IP Addresses - what identifies computers on the
internet
- Static addresses - permanently assigned
- Dynamic addresses