Introduction
Overview
Course goals:
- Experience software development in a team.
- Work in a team
=>
Brainstorm, thoughtfully criticize, develop ideas, document, deal
with "team" issues
- Work on a large project with a variety of deliverables
=>
propose an idea, present to a hostile audience, be responsible for a demo
- Design and test:
=>
sketch screenshots, organize/plan software structure, create a
test plan, post test results.
- Back-end (webserver) development in Java
=>
Servlets, JSP.
- Learn from professionals:
- Software development in the real world.
- Issues in building and maintaining large websites.
- Web services.
- WID (writing) requirement:
- Draft/revision process.
- Editing, style conventions.
- Learn to write for different audiences.
- Constructive criticism (peer review).
- Ethics and social impact:
- What types of issues?
- Case studies.
- Privacy, intellectual property, copyright, security, accessibility.
Ethics
Therac-25 case:
- Software for radiation machine (cancer treatment).
- Software errors caused overdose
=>
three deaths, multiple injuries.
- A study identified several factors:
- Poor safety design
- Hardware safety features removed
=>
Assumption: software will take care of safety
- Insufficient feedback to operator
=>
Blank screen, in some cases.
- Bugs, e.g., 1-byte counter
=>
Overflow error
=>
Falsely concluded that tests were OK
- Organizational problems
- Over-confidence
=>
Operators disregarded patient discomfort.
- Slow response from government and company
Issues you might face:
- If you know a design is of poor quality.
- If you know sufficient testing hasn't been carried out.
- If you are aware of easy hacks into your software.
- If you know your software will be used to, for example:
- Attack another system.
- Compromise someone's privacy.
- Restrict freedom of speech.
- Monitor someone without consent.
- You are asked to illegally use someone else's code.
- You know your UI can't be used by people with certain disabilities.
You might be thinking ...
- "I'm just a techie. I code to specs, the boss does the rest."
- "I want to be good, but I have to follow orders or be fired."
- "Ethical issues are for management to decide, not techies."
- "If they care enough about it, they'll pass a law."
Why you should care:
- You can be held responsible (sued, tried, imprisoned) even if
you claim you only followed orders.
- You will soon be more than a techie
=>
A decision-maker.
- Even if you don't decide, you will be asked for advice.
- Being ethical is just easier.
- You want to do the right thing, but are not sure what to do
in difficult/complicated situations.
In this course:
- Some case studies
=>
Good to know, debate issues.
- Some guidelines
=>
e.g., ACM guidelines
- Some jargon, e.g.,
- Deontologist: Someone who believes in right/wrong absolutes.
- Utilitarian: There is no right or wrong, merely usefulness.
- Topics:
- Legal framework: copyright, patents, intellectual property.
- Privacy, rights, free-speech.