21
CS361 Software Engineering I ://www.flickr.com/photos/bespoke/2692422909/

CS361 Software Engineering I

Embed Size (px)

Citation preview

Page 1: CS361 Software Engineering I

CS361Software Engineering I

http://www.flickr.com/photos/bespoke/2692422909/

Page 2: CS361 Software Engineering I

Software is not just about computers.

CS361Software Engineering I

Page 3: CS361 Software Engineering I

http://www.flickr.com/photos/uncultured/1816486020/

Poverty

Page 4: CS361 Software Engineering I

Reducing poverty with software

http://www.kiva.org

Page 5: CS361 Software Engineering I

http://www.flickr.com/photos/tidewatermuse/38963406/in/set-866494/

Natural Disaster

Page 6: CS361 Software Engineering I

Locating disaster victims with software

http://www.publicpeoplelocator.com/

Page 7: CS361 Software Engineering I

Pollution

http://www.flickr.com/photos/virgomerry/86976318/

Page 8: CS361 Software Engineering I

Reducing energy consumption with software

http://www.fielddiagnostics.com/serviceassistant.cfm

Page 9: CS361 Software Engineering I

http://www.flickr.com/photos/arasmus/3629119935/

Repression

Page 10: CS361 Software Engineering I

Fomenting revolution with software

http://www.time.com/time/world/article/0,8599,1905125,00.html

Page 11: CS361 Software Engineering I

Disease

Page 12: CS361 Software Engineering I

Medical imaging with software

Page 13: CS361 Software Engineering I

Engineering is…

Solving real-world problems …… without making the world worse …… and without incurring excessive costs.

Software engineering is doing all thatby creating software.

Page 14: CS361 Software Engineering I

Software is not enough—you also need people and context

DatabaseWeb application

Databaseserver (Mysql?)

PHP runtimeenvironment (Zend?)

Web server(Apache?)

Operating system(Linux?)

Hurricane survivors

Friends and familySystem Boundary

hardware(Linux?)

Page 15: CS361 Software Engineering I

Where’s the system boundary?

http://votereport.pbworks.com/FrontPage

Some diagrams are more helpful than others!You’ll learn some good notations in this class.

Page 16: CS361 Software Engineering I

What is the difference between good software and great software?

The quality attributes of great software:• Reliability• Efficiency• Integrity• Usability• Maintainability

• Testability• Flexibility• Portability• Reusability• Interoperability

Page 17: CS361 Software Engineering I

Great software contains the right features for the right data.

• Use cases = the activities a system supportse.g.: tweet a vote report, view delays on map

• Entities = the kinds of objects that are involved in use casese.g.: tweets, user accounts, polling locations, maps

• Attributes = the properties of the entitiese.g.: tweets have: timestamp, text, sender

You can’t build a great system until you understand what it should do.

Page 18: CS361 Software Engineering I

Software engineering is a team effort.

Requirements

Design

Implementation

Testing

System Delivery

Analyst

Designer

Programmer

Tester

Trainer

Page 19: CS361 Software Engineering I

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.

Page 20: CS361 Software Engineering I

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

Page 21: CS361 Software Engineering I

Course ObjectivesTo 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