21
Administrative Topics -TEACH/mailing list - Brainstorm - Pick a project manager for each HW assignment (responsible for communication, scheduling and execution) - Vision statement (you are writing this for another group to implement) - Class outline and project selection - Notice score sheet on syllabus = slide has a good chance of being on the midterm or final exams. ://www.flickr.com/photos/bespoke/2692422909/

Administrative Topics -TEACH/mailing list - Brainstorm - Pick a project manager for each HW assignment (responsible for communication, scheduling and execution

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

Administrative Topics

-TEACH/mailing list- Brainstorm - Pick a project manager for each HW assignment (responsible for communication, scheduling and

execution)- Vision statement (you are writing this for another group

to implement)- Class outline and project selection- Notice score sheet on syllabus

= slide has a good chance of being on the midterm or final exams.http://www.flickr.com/photos/bespoke/2692422909/

Unhappy with today?

Design tomorrow.

CS361Software Engineering I

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

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

Poverty

Reducing poverty with software

http://www.kiva.org

Addiction

http://www.flickr.com/photos/fixe/2846866094/

Supporting counseling with software

http://cf.polarishealth.com/demo/start_demo.html

http://www.flickr.com/photos/dvids/4884699931/

Natural Disaster

Raising money for relief with software

http://www.flickr.com/photos/gauravonomics/4275794655/sizes/m/

Pollution

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

Reducing energy consumption with software

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

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

Repression

Fomenting revolution with software

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

Webster says Engineering is…

• the branch of science and technology concerned with the design, building, and use of engines, machines, and structures.

• the action of working artfully to bring something about

• a skillful contriver or originator of something

Software is not enough—you also need people and context

DatabaseWeb application

Databaseserver (Mysql?)

PHP runtimeenvironment (Zend?)

Web server(Apache?)

Operating system(Linux?)

Kiva borrowers

Kiva donatorsSystem Boundary

hardware(Linux?)

Where’s the system boundary?

Some diagrams are more helpful than others!You’ll learn some good notations in this class.http://www.flickr.com/photos/cambodia4kidsorg/3450172436/sizes/l/

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

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.

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