software engineering. acknowledgement charles moen sharon white bun yue

22
Software Engineering

Upload: catherine-lee

Post on 18-Jan-2016

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue

Software Engineering

Page 2: Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue

Acknowledgement

Charles Moen Sharon White Bun Yue

Page 3: Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue

Software Development

With the rapid increase in technology, the complexity and expectation of computer capabilities also increased.

Requirements have increased rapidly. However, while users expect and demand a many features, customers generally want to minimize the cost for the software and they want it developed very fast. This becomes a recipe for disaster!

Page 4: Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue

Software Disasters

Software has played a role in many high-profile disasters.

Mars probe - data calculated on the ground in Imperial units and reported that way to the navigation team who were expecting the data in metric units caused it to be destroyed.

Therac-25 - A radiation therapy machine responsible for six overdoses due to faulty software.

Airbus A320 - In the Airbus flight control systems, the computer has the final say on all decisions, meaning the safety of passengers depends upon the accuracy of the software specification, and the competence of the engineering teams producing the (multiple, independent) software stacks. The Strasbourg A320 crash of Jan 21, 1992 is partially related to software in that poor user interface design was a contributing factor.

Page 5: Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue

Cause of the Software ‘Crisis’

Causes of the software crisis were linked to the overall complexity of the process and the relative immaturity of software engineering as a profession. The crisis manifested itself in several ways:

– Projects running over-budget. (DIA – 2 billion over )– Projects running over-time. (DIA – 16 months behind)– Software was of low quality. – Software often did not meet requirements. – Projects were unmanageable and code difficult to maintain.

Page 6: Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue

Software Engineering

This discipline deals with identifying, defining, and realizing the required performance characteristics of the resulting software. These performance characteristics include: reliability, maintainability, availability, testability, ease-of-use, portability, etc. Software engineering addresses these performance characteristics by preparing design and technology specifications, that if implemented properly, will enable the resulting software to meet these requirements.

Page 7: Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue

Software Development Process

What is the best way to make more and better software? Software engineers advocate many different technologies and practices, and the debate on how to accomplish this has gone on for many years and may continue forever.

Page 8: Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue

Software Life Cycle Models

With large numbers of software projects not meeting their expectations in terms of functionality, cost, or delivery schedule, effective project management is proving difficult. This has resulted in people apply project management techniques to writing software.

Page 9: Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue

Waterfall Model

In Royce's original waterfall model, the following phases are followed perfectly in order:

– Requirements specification – Design – Construction (aka:

implementation or coding) – Integration – Testing and debugging (aka:

verification) – Installation – Maintenance

Page 10: Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue

Key Software Activities

5 Phases of Software Life Cycle:

Phase 1: Problem Analysis and Specification

Phase 2: Design

Phase 3: Implementation (Coding)

Phase 4: Testing, Execution and Debugging

Phase 5: Maintenance

Page 11: Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue

Phase 1: Problem Analysis and Specification

Computer Science programming assignment -

specific statement of problem

quantitative description

clearly defined requirements:

input, output, calculations, test data

Computer Science programming assignment -

specific statement of problem

quantitative description

clearly defined requirements:

input, output, calculations, test data

Easy in CS courses, not always in the real world.

CPSC SomeCourse Assignment 1 The sum-of-the-years digits method of calculating depreciation is illustrated below. $15,000 is to be depreciated over five years. First calculate the “sum-of-the-years digits,” 1 + 2 + 3 + 4 + 5 = 15. Then depreciate 5/15 of $15,000 ($5,000) over the first year, 4/15 of $15,000 ($4,000) over the second year, 3/15 ($3,000) the third year, and so on. Write a program that reads the amount to be depreciated and the number of years over which it is to be depreciated. Then for each year from 1 through the specified number of years, print the year number and the amount of depreciation for that year under appropriate headings. Execute the program with the following data: $15,000 for 3 years; $7,000 for 10 years; $500 for 20 years; $100 for 1year.

Page 12: Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue

“Real World” request -

general statement of problem

qualitative not quantitative

precision missing for input, output, processing

“Real World” request -

general statement of problem

qualitative not quantitative

precision missing for input, output, processing

To: Bob Byte, Director of Computer Center From: Chuck Cash, V.P. of Scholarships and Financial Aid Date: Wednesday, March 11

Because of new government regulations, we must keep more accurate records of all students currently receiving financial aid and submit regular reports to FFAO (Federal Financial Aid Office). Could we get the computer to do this for us?

Phase 1: Problem Analysis and Specification

Page 13: Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue

Phase 2: Design

CS courses – small systems – few hundred lines of code– simple, straightforward– self-contained

“Real” world– large systems – Tens of thousands of

lines of code– complex– many components

Page 14: Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue

OOD: Object-Oriented Design

1. Identify the objects in the problem's specification and their types.

2. Identify the operations of the objects (methods) needed to solve the problem.

3. Arrange the operations in a sequence of steps, called an algorithm, which, when applied to the objects, will solve the problem.

Page 15: Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue

OOD Goals

Robust– “Capable of handling unexpected inputs”

Adaptable– Able to evolve over time in response to changes

Reusable– Code should be reusable in other applications

– Components – e.g., code libraries like the Java libraries

Page 16: Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue

Phase 3: Implementation (Coding)

Select language of implementation Encode the design Verify integration Combining program units into a complete software

system. Insure quality

– programs must be correct, readable, and understandable, that is, well-structured, documented, and stylistic.

Page 17: Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue

Phase 4: Testing, Execution, and Debugging

Validation: "Are we building the right product?" – The software should do what the user really requires

check that documents, program modules, etc. match the customer's requirements.

Verification: "Are we building the product right?" – The software should conform to its specification

check that products are correct, complete, consistent with each other and with those of the preceding phases.

Page 18: Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue

Errors can occur anytime

– Specifications don't accurately reflect given information or the user's needs/requests

– Logic errors in algorithms – Incorrect coding or integration– Failure to handle boundary data or test values

Page 19: Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue

Different kinds of testing

– Unit tests: Each individual program unit works?

– Program components tested in isolation

– Integration tests : Units combined correctly?

– Component interface and information flow tested

– System tests: Overall system works correctly?

Page 20: Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue

Phase 5: Maintenance

Large % of computer center budgets– Large % of programmer's time– Largest % of software development cost

Why? – Includes modifications and enhancements– Due to poor structure, poor documentation, poor style

less likely to catch bugs before release make fixing of bugs difficult and time-consuming impede implementation of enhancements

Page 21: Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue

Iterative Processes

Iterative development prescribes the construction of initially small but ever larger portions of a software project to help all those involved to uncover important issues early before problems or faulty assumptions can lead to disaster. Iterative processes are preferred by commercial developers because it allows a potential of reaching the design goals of a customer who does not know how to define what he wants.

Page 22: Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue

Rational Unified Process

An example of an iterative process