Unhappy with today? Design tomorrow. CS361 Software Engineering I

advertisement
Unhappy with today?
Design tomorrow.
CS361
Software Engineering I
http://www.flickr.com/photos/bespoke/2692422909/
OUTLINE
•
•
•
•
•
Nature of software systems.
Challenges in developing software.
Successful software systems.
Reasons for failure
How to improve /design better
Nature of software systems
• Ubiquitous:
• All domains: business, science, engineering :
touching all aspects of life
• Simple/complex
• Internal use within organization (payroll)
/public use (railway reservation)
• Single /distributed/real-time/or just an
information providing system..
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
Repression
http://www.flickr.com/photos/arasmus/3629119935/
Fomenting revolution
http://www.time.com/time/world/article/0,8599,1905125,00.html
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.
What is software engineering?
• Software engineering is a profession
dedicated to designing, implementing, and
modifying software so that it is of higher
quality, more affordable, maintainable, and
faster to build.
Challenges in developing software
• Effort intensive: planning , designing,
maintaining
• High cost
• Long development time
• Changing requirements of users
• Risk of failure : user not accepting solution,
performance, maintainability.
Note: Its not like writing a program its no throw
away: long duration – complex.
Successful software systems
• Software development projects are not always
successful due to various reasons discussed
further
• When is it successful
• Development completed
• Useful, Usable, Used
• Cost effective and maintainable (long life)
Reasons for failure
•
•
•
•
•
Schedule slippage
Cost overruns
Doesn’t solve users problems
Poor quality
Not maintainable…
Reasons for failure
• Ad-hoc approach to software development :
doesn’t work that way for large projects.
• No planning : no deadlines
• Deliverables to users not identified
• Poor understanding of user requirements
Reasons for failure
• No control or review: committing resources ,
cost and time – need to review and control.
• Technical incompetence: need to be in par of
technology
• Poor understanding of cost and effort involved
in software projects
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
Engineering approach
• Engineering a solution: we must go through a
cycle of defining what we need to build.
• Design-develop cycle must be followed
keeping the following in mind:
Specifications
Cost effective
Good quality
maintainable
Software engineering
Requirements
Design
Implementation
Testing
System Delivery
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
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
documents: representations of requirements, designs, and systems
notations: the rules for what those documents should look like
design: a description of something that could be created
validate: making sure that something is what it should be
cost and schedule: the amount of money and time expended on creating a system
team: people striving toward a common goal
Basic Course Information
Shalini Shamasunder
Lectures: Mon – Fri 4pm-4:50pm
Office hours:
Book: Software Engineering, 4th Edition by Pfleeger & Atlee
Exams will be based on lectures and on readings that will be
assigned.
Homework: usually due electronically through TEACH.
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.
You each update your vision.
You gather all the requirements and come up with a system.
Each team does a final presentation on their system.
Each person does a final exam.
Assignment 1:
vision statement
a) Your Vision Statement is a document describing a software system
that you believe would improve our world.
b) You will not be graded on your Vision Statement. However, all the
students will get to vote on which Vision Statements would be
most interesting to use for class projects this term, and the
authors of the most popular Vision Statements will receive extra
credit
c) You will never have to actually implement your proposed system.
So dream big! But on the other hand, you need to imagine a
system that probably could be built, if you had infinite time and
money. So don't propose a system that works based on "magic."
You need to have at least some idea of how the system might be
constructed. Remember that if you propose a system that can't
possibly be designed, then nobody is going to vote for your idea.
•
•
•
•
•
•
For your first Vision Statement, answer the
following questions:
What world problem are you concerned about?
Why is this problem important?
What aspect of this problem seems particularly
important to you?
How could a new software system help to solve
this aspect of the problem?
Why do you think that this idea will make a big
impact on the world?
Make sure to site the sources if you used any.
Where do you go from here?
Use TEACH to submit your vision statement by
Thursday
Each one of you will read your vision statements
out in class and explain your idea.
You’ll vote on visions this Friday and the choices will
be made on what is good.
I will then put you in teams over the weekend.
Download