software engineering csc 180 lecture 10 dr. adam anthony

20
SOFTWARE ENGINEERING CSC 180 Lecture 10 Dr. Adam Anthony

Upload: roger-harper

Post on 25-Dec-2015

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SOFTWARE ENGINEERING CSC 180 Lecture 10 Dr. Adam Anthony

SOFTWARE ENGINEERINGCSC 180 Lecture 10

Dr. Adam Anthony

Page 2: SOFTWARE ENGINEERING CSC 180 Lecture 10 Dr. Adam Anthony

A VERY Brief Overview

Where big software comes from (today’s lecture)

Operating Systems Web Applications Networking Selected Topics The softer side of

computing

How computers work

Bits and Bytes Math Algorithms Hardcore

Computer Science

CSC 180 Part I CSC 180 Part II

Page 3: SOFTWARE ENGINEERING CSC 180 Lecture 10 Dr. Adam Anthony

Overview

Software Engineering Discipline Software Life Cycle Development Methodologies Structuring Projects Basic design diagrams Testing Documentation Ethical Concerns Jobs/Majors that support the software life

cycle

Page 4: SOFTWARE ENGINEERING CSC 180 Lecture 10 Dr. Adam Anthony

What is Software Engineering? First, what is traditional engineering?

Skilled, specialized development and management of a large physical project (automobile, skyscraper, power plant)

Software engineering is the same thing, but for programming projects instead of physical systems

Except: Fewer standardized components Hard to define measures (metrics) of success

Costs are intangible Quality is hard to assess

Page 5: SOFTWARE ENGINEERING CSC 180 Lecture 10 Dr. Adam Anthony

The Software Life Cycle

Development: software created here Use: software distributed to users, bugs revealed Maintenance:

Fix bugs Add improvements

Compared to physical systems: maintenance typically involves repairs, not improvements Maintenance of software takes longer, costs more

Page 6: SOFTWARE ENGINEERING CSC 180 Lecture 10 Dr. Adam Anthony

The Development Phase

Page 7: SOFTWARE ENGINEERING CSC 180 Lecture 10 Dr. Adam Anthony

Development: Requirements Specification

Specify what services the system will provide Identify any special conditions (security,

speed, availability) on those services Define how the outside world will interact

with the system Always keep the customer in mind

They are the ones who buy/use it! Companies frequently hire systems

analysts for this type of work Need to be a ‘people person’ who also has

strong technical knowledge

Page 8: SOFTWARE ENGINEERING CSC 180 Lecture 10 Dr. Adam Anthony

Use-Case Diagrams

Inside box: Interactions:

features of the software that the user will see/use

Outside box: Stick figures that

represent actors: People Other

comptuers Special Devices

Page 9: SOFTWARE ENGINEERING CSC 180 Lecture 10 Dr. Adam Anthony

Your Turn!

Teams of 3-4: Brainstorm a use-case diagram for a smart

phone application May be an application that already exists,

or something made up Factors to consider:

Make sure every action is considered (e.g. ‘start game’)

Can other devices be involved (printer, computer, TV, other phones…)?

It’s not graded, so relax and have fun!

Page 10: SOFTWARE ENGINEERING CSC 180 Lecture 10 Dr. Adam Anthony

Next step in Development: Design Requirements specification:

More of a contract about what a program will do Design is an analysis and specification of how

the system will do each task It’s a plan

Companies hire Project Managers for this task Need strong organization and Leadership skills

Need to build strong relationships in a team based environment

Lots of diagrams and flow charts Less hands-on with the actual software, but the job is

critical to success

Page 11: SOFTWARE ENGINEERING CSC 180 Lecture 10 Dr. Adam Anthony

Development: Implementation Finally, the software is going to be made! This is where programmers live Need knowledge of design charts, terminology Need strong programming skills Problem Solving is key More creative than you think!

Though you must follow directions, a programmer essentially starts with nothing and finishes with a complete product

Much like contractors who follow a blueprint and erect a building from a vacant lot

Page 12: SOFTWARE ENGINEERING CSC 180 Lecture 10 Dr. Adam Anthony

Development: Testing

Does the software work correctly? Requires efforts from several levels:

Analysts check to make sure the specification is satisfied

Program managers check to make sure the design is fulfilled

Programmers check to make sure the code is accurate

Best practices in testing don’t wait until the end: Each phase should be tested and re-tested

frequently over the entire life of the product

Page 13: SOFTWARE ENGINEERING CSC 180 Lecture 10 Dr. Adam Anthony

Software Engineering Methodology

Classic approach to Software Engineering: The waterfall method One task after the other

Need to get specification right on the first try, or the whole thing is a bust!

Page 14: SOFTWARE ENGINEERING CSC 180 Lecture 10 Dr. Adam Anthony

Modern Methodologies

Prototyping Methods Open-source method Extreme Programming

Page 15: SOFTWARE ENGINEERING CSC 180 Lecture 10 Dr. Adam Anthony

Prototyping

Prototype: initial invention/proof of concept that is meant to lead to a more refined product

Incremental Model: Develop simplified version, perfect it, then

Add more complex features via program updates Iterative Model

Develop simplified version, perfect it, then ‘Throw it out’ and start over with a version 2.0

Sometimes you get both: Incremental versions 1.1,1.2, 1.3 Iterative versions 1.X, 2.X

Example products for each model?

Page 16: SOFTWARE ENGINEERING CSC 180 Lecture 10 Dr. Adam Anthony

Open-Source Methodology

Write some code for ‘version 1’ Publish it online, give it away for free Community-based development:

People who appreciate the software will contribute so that it won’t ‘go out of business’ Money Time/effort/knowledge

Most people will take the software without paying for it How do companies make money this way?

Page 17: SOFTWARE ENGINEERING CSC 180 Lecture 10 Dr. Adam Anthony

Extreme Programming

Referred to as an agile method Form small teams ( < 12 ) Program in pairs Hold daily ‘mini-waterfalls’ to reevaluate

progress and make changes quickly before they become big problems

Less formal, more flexible Problems with this?

Page 18: SOFTWARE ENGINEERING CSC 180 Lecture 10 Dr. Adam Anthony

Testing

We’ll learn later that guaranteeing that a program always does what it is supposed to is impossible in complex projects

Glass-box testing Creating tests with full knowledge of the source code and

how it is supposed to work Black-box testing

Creating tests with no knowledge of how the code works, but only knowing what the program is supposed to do

Good testing efforts use both types Beta Testing: release the software to a small group

initially, with no guarantees of quality Just wait for the program to screw up!

Page 19: SOFTWARE ENGINEERING CSC 180 Lecture 10 Dr. Adam Anthony

Documentation

Nobody likes doing it, but it’s important Large disconnect between the designer/ implementer

and the standard computer user Users WILL try things you never thought of! Not their fault!

User documentation: your standard ‘how to use it’ manual

Technical documentation: installation guide System documentation: description of system

implementation; used by developers for maintenance

RTFM!!!!!

Page 20: SOFTWARE ENGINEERING CSC 180 Lecture 10 Dr. Adam Anthony

Your Niche in the Development Cycle

Computer Information Systems Analyst: Systems analyst Project Manager

Networking Systems Analyst: Multi-level support to help all levels work together

efficiently Computer Science:

Programming Research/Development

Digital Media & Design Requirements Specification and Design (esp.

interfaces)