Overview

advertisement
Unhappy with today?
Design tomorrow.
CS361
Software Engineering I
http://i.telegraph.co.uk/multimedia/archive/03056/hong-kong-phones_3056116b.jpg
Poverty
http://www.flickr.com/photos/uncultured/1816486020/
Reducing poverty
http://www.kiva.org
with software
Addiction
http://www.flickr.com/photos/fixe/2846866094/
Supporting counseling
http://cf.polarishealth.com/demo/start_demo.html
with software
Natural Disaster
http://www.flickr.com/photos/tidewatermuse/38963406/in/set-866494/
Locating disaster victims
http://www.publicpeoplelocator.com/
with software
Pollution
http://www.flickr.com/photos/virgomerry/86976318/
Reducing energy consumption
http://www.fielddiagnostics.com/serviceassistant.cfm
with software
War injuries
http://www.flickr.com/photos/syriafreedom/7076845391/sizes/z/in/photostream//
Controlling bionic limbs
with software
http://www.nbcnews.com/health/first-mind-controlled-bionic-leg-groundbreaking-advance-8C11257732
Repression
http://www.slate.com/content/dam/slate/articles/news_and_politics/photography/2014/08/ferguson/140814_POL_Ferguson_01.jpg.CROP.original-original.jpg
Fomenting revolution
with software
Engineering is…
Solving real-world problems …
… without making the world worse …
… and without incurring excessive costs.
Software engineering is doing all that
by creating software.
Software is not enough—
you also need people and context
Hurricane survivors
Web application
Database
Friends and family
PHP runtime
environment (Zend?)
Web server
(Apache?)
System Boundary
Database
server (Mysql?)
Operating system
(Linux?)
hardware
(Linux?)
Where’s the system boundary?
Some diagrams are more helpful than others!
You’ll learn some good notations in this class.
http://votereport.pbworks.com/FrontPage
What is the difference between
good software and great software?
The quality attributes of great software:
• Reliability
• Testability
• Efficiency
• Flexibility
• Integrity
• Portability
• Usability
• Reusability
• Maintainability
• Interoperability
Great software contains the
right features for the right data.
• Use cases = the activities a system supports
e.g.: tweet a vote report, view delays on map
• Entities = the kinds of objects that are
involved in use cases
e.g.: tweets, user accounts, polling locations, maps
• Attributes = the properties of the entities
e.g.: tweets have: timestamp, text, sender
You can’t build a great system
until you understand what it should do.
Software engineering is a team effort.
Requirements
Design
Implementation
Testing
System Delivery
Analyst
Designer
Programmer
Tester
Trainer
How do you create great software?
• Professionalism
– Character
– Teamwork
– Planning
– Risk management
• Technical skills
– Design
– Implementation
– Quality control
All of these are necessary.
Not a single one is optional.
All will be practiced in this course.
Course Objectives
At the completion of the course, students will be able to...
•
•
•
•
•
•
•
•
•
•
•
Select the most appropriate software process model to use in a particular situation
Synthesize requirements for a realistic software system and write a requirements specification document
Produce professional-quality software-related documents
Model system requirements using one or more semi-formal notations such as UML, dataflow diagrams,
entity-relationship diagrams, or state diagrams
Design software systems at an architectural level and at lower levels, using one or more techniques, such as
object-oriented design or agile methods, and express these designs in design specification documents
Validate designs and adjust the specification or design as necessary
Describe several methods of estimating the cost and developing a schedule for a programming project
Participate effectively in a team environment
Develop and articulate content knowledge and critical thinking in the discipline through frequent practice of
informal and formal writing.
Demonstrate knowledge/understanding of audience expectations, genres, and conventions appropriate to
communicating in the discipline.
Demonstrate the ability to compose a document of at least 2000 words through multiple aspects of writing,
including brainstorming, drafting, using sources appropriately, and revising comprehensively after receiving
feedback on a draft.
Course Objectives
To train you in...
• process: a sequence of activities intended to design and produce software
• requirements: a description of what software should do and should be
• design: a description of something that could be created
• validation: making sure that you are headed the right direction
• notations: the rules for describing requirements, designs, and systems
• writing: expressing yourself in printed sentences
• cost and schedule: the amount of money and time expended on creating a system
• teamwork: people striving toward a common goal
Basic Course Information
http://web.engr.oregonstate.edu/~cscaffid/courses/CS361_F14/
Instructor: Prof. Chris Scaffidi
Lectures: TR 1600-1720 9/29/14-12/5/14 in Covell COVL 216
Office hours: 5-6pm Wednesdays KEC3047
Teaching assistants:
Keeley Abbott
Laxmi Ganesan
Botong Qu
abbottk@eecs.oregonstate.edu
ganesanl@onid.oregonstate.edu
qub@onid.orst.edu
Optional book: Software Engineering, 4th ed. by Pfleeger & Atlee
Course Outline
1. You each draft a vision… a system that you would like to see.
2. We get you organized into teams, 1 vision per team.
3. Each team does homeworks to design the envisioned system.
4. Each person does a midterm exam.
5.
6.
7.
8.
9.
You each update your vision.
We get organized into new teams, 1 vision per team.
Each team does homeworks to create the envisioned system.
Each team does a final presentation on their system.
Each person does a final exam.
Teamwork
Project homeworks will be done in teams. Usually, all students in
a team will receive the same grade on each homework.
I will assign you to teams based on which of your classmates’
vision statements are most interesting to you.
Any team can ask me to fire a teammate on or before the day
that the team’s first homework is due. You need to have a
good reason for firing teammates. I must approve all firings.
Fired students may band together into a new team.
See regulations on the course web site.
Grading
Grades will be weighted among Vision Statement (25%),
Homework (25%), Midterm (25%), and Final Exam (25%).
= slide has a good chance of being on the midterm or final exams.
See course website for additional information on grading,
academic integrity, and other policies.
Vision statement
• A description of a system that you think could
change the world for the better
• Schedule
– Upload your first draft BY 10/3
– Upload your next draft BY 10/13
– Upload your next draft BY 10/27
– Upload your final draft BY 12/1
– 10 extra credit points if your vision statement
is chosen by popular vote for use by a team
during the first or second half of this term
Problems waiting to be solved
(Not entirely tongue in cheek!)
Copyright University of Alabama
http://www.policymic.com/articles/64665/what-is-the-most-screwed-up-thing-about-your-state-check-this-chart
Where do you go from here?
• Read the syllabus on the course web site
web.engr.oregonstate.edu/~cscaffid/courses/CS361_F14
• Upload your Vision Statement first draft
You’ll vote on visions this weekend so that I can
put you in teams.
Download