software engineering jon walker. what is software engineering? why do we call it software...

22
Software Engineering Jon Walker

Upload: osborn-fox

Post on 18-Jan-2016

224 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?

Software Engineering

Jon Walker

Page 2: Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?

What is Software Engineering?

Why do we call it Software Engineering? Why not just call it programming or software development?

What is Software Engineering? A Process, a set of methods, and an array of tools - Pressman Applying a disciplined practice to the construction of software?

Modeling Problem-solving Knowledge acquisition - domain specific knowledge Rationale-driven

NATO study group in 1967 Compared to traditional engineering disciplines e.g. bridge building (structural engineering)

Page 3: Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?

The Software Crisis

How is building software different from building a bridge? Complexity Fault tolerance Maintenance

How is software different from other things people build? Software is developed or engineered not manufactured Software doesn't wear out Most software is still custom built

The "Software Crisis" Software delivered late Software delivered over budget Software has critical defects

X-Ray - control bug War games - simulation Patriot missile - timing problem

The bottom line - Machines are getting more complex, software is getting more complex

Page 4: Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?

Software economics

Programming/Software Engineering as Chemistry/Chemical engineering Software engineering includes the economics of software

What is an example of an economic trade off you might have to make for a software project?

What information is important in making an economic decision about a software project? Time Effort Cost of equipment Cost of goods (third party)

Can all of these be exactly measured?

Page 5: Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?

Software Life-Cycle

Software life-cycle The series of steps that software goes through from concept to retirement A "model" for these steps

What do you mean "model"?

Waterfall model Used by most organizations through the 1980's 7 broad phases What are they?

Requirements phase Specification (analysis) phase Design phase Implementation phase Integration phase Maintenance phase Retirement phase

Why is it called waterfall? Outputs from one phase flow into the following phase

Page 6: Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?

Software Maintenance

Which phase takes the most effort? Maintenance phase

More people working on software maintenance than on new software - Pressman

2/3 of effort in Maintenance phase

Types of maintenance Corrective maintenance Perfective maintenance Adaptive maintenance

What is an example of each of these types of maintenance?

Page 7: Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?

Specification and Design

Software is developed by humans for humans What is the problem with this?

We make mistakes How do programming languages contribute to this problem?

Imperfect translation of human desires into computer actions

In which phase in the software lifecycle are mistakes the most costly? Each phase is more costly than the next Heuristic for cost - 10x

Divide lifecycle into four phases: requirements, design, implementation, maintenance A problem in each phase is 10X as costly to fix as in a previous phase

Where are most of the defects in software found? 60%-70% of defects found in specification and design phases

Page 8: Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?

Team Programming

Software developed is extremely complex Moore's law – What is it?

Performance-price factor of computing decreased by an order of magnitude every five years

Do you believe software is becoming more complex? Product complexity is such that it would take a single person years

to complete Product releases are 6 months or shorter Teams are needed

What are the problems with teams? Organization Communication

Page 9: Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?

Object Oriented Paradigm

What is object oriented software engineering? How does object oriented design/programming

help? Implementation hiding (helps maintenance) Design by contract (helps maintenance) Closer to real problem (helps specification)

Is the Object Oriented paradigm a silver bullet?

Page 10: Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?

Agile Software Engineering

What is Agile software engineering? Things change so you might as well design your processes to embrace change Individuals and interactions

● over processes and tools Working software

● over comprehensive documentation Customer collaboration

● over contract negotiation Responding to change

● over following a plan How does Agile software engineering help?

Move specification closer to the customer Is Agile the silver bullet?

Page 11: Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?

The Software Process

The phases of the software process are? Requirements Specification Design Implementation Integration Maintenance Retirement

Why is the software process divided into phases? They are the natural evolution of a software product

Page 12: Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?

Requirements

Requirements and specifications (next phase) tell what the product is to do

Client/Developer Client

Person/group/organization who has contracted to have the software constructed

Usually the end user, but not always When is software built for someone who is not the end user?

Developer Person/group/organization that has contracted to develop the

software

Page 13: Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?

Requirements (cont)

Three types of development Internal software development Contract software development Shrink-wrap software development What is different between each type of software?

What is the principle role of the software developers during requirements? Not what the client wants Determining what the client needs

Why does the client not know what they need? Software is complex The client does not understand what his/her own needs are The client cannot communicate what his/her own needs are

Page 14: Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?

Requirement Analysis

Rapid Prototyping Create a working model of the software

Only the functionality that the user must interact with Error checking, design are not done

Good for refining Human Computer Interface (HCI) other human factors Different types of prototyping

Evolutionary Throw-away Partially reusable What are the advantages/disadvantages of each?

JAD (Joint Application Development) Similar to rapid prototyping using team composed of members from both

client/developer organizations What are the problems with Rapid Prototyping?

Page 15: Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?

Testing Requirements

SQA (Software quality assurance) or QA (quality assurance) group Involved during the requirements phase Verify that what the customer needs is what is

communicated by the requirements Develop test plans that will verify those requirements

Verification Testing - done by QA Acceptance Testing - done by client

Page 16: Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?

Specification

Explicitly describe the needs (specifications) of the client Usually described in a specification document Often accompanied by a user interface specification

Story boarding Rapid prototyping

Specification acts as a contract Specification problems

Ambiguous specifications Incomplete specifications Contradictory specifications What is an example of each?

Specification Testing Done by SQA group Traceability must be attained

Page 17: Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?

Design Phase

Design phase determines how the product will do what was specified in previous two phases

Design often broken down into two phases Architectural (high-level) design

Break the project down into components Detailed design

Break the components down into modules

Design Phase Testing Traceability between design elements and specification Design reviews are one way to accomplish this

Page 18: Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?

Implementation

What most people think of as software development

Actual coding Testing

Code reviewUnit testsOther code checking

Page 19: Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?

Integration

Components/Modules are combined There are various approaches to combining modules

Incremental Top to bottom Bottom to top Big bang Which appeals most to you?

Integration testing "Smoke" testing

Performed by development

Product testing Performed by QA

Acceptance testing Performed by the client

Page 20: Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?

Maintenance Phase

Maintenance often considered the most challenging aspect of software development

More money/time spent on maintenance than on any other phase Maintenance needs to be considered in other phases

Give examples of how you can consider maintenance in other phases Good documentation Flexible design

Maintenance Testing Feature testing (bug fix testing) Regression testing

Page 21: Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?

Retirement

When software is no longer usuable or maintainable it is retiredThis is very rareThere is software that you use every day that

is 30 years old ATMs Credit cards

Page 22: Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?

Summary

This is an overview of software engineering

We will talk about many of these issues in more depth throughout the semester