hndit23082 principals of software engineering

38
Week 1: Introduction to Software Engineering HNDIT23082– Principals of Software Engineering 1

Upload: elaine-goodman

Post on 18-Jan-2018

218 views

Category:

Documents


0 download

DESCRIPTION

Software Engineering Overall Objectives:  After successfully completing this module, students should be able to:  Explain the principles of software engineering and appreciate the need for engineered process in software development Understand and be fluent in the use of software engineering terminology and nomenclature Be capable of intelligently communicating with most members in a software development organization (management, analysts, architects, developers, ...)

TRANSCRIPT

Page 1: HNDIT23082 Principals of Software Engineering

Week 1: Introduction to Software Engineering

HNDIT23082– Principals of

Software Engineering

1

Page 2: HNDIT23082 Principals of Software Engineering

Software EngineeringOverall Objectives:• After successfully completing this module, students

should be able to: Explain the principles of software engineering and

appreciate the need for engineered process in software development

Understand and be fluent in the use of software engineering terminology and nomenclature

Be capable of intelligently communicating with most members in a software development organization (management, analysts, architects, developers, ...)

2

Page 3: HNDIT23082 Principals of Software Engineering

Be able to create and use planning, requirements analysis, domain analysis and design artifacts and carry them into code.Be capable of taking on the role of systems analyst in a software development organizationBe able to document all phases of the software development processes 

3

Page 4: HNDIT23082 Principals of Software Engineering

Outline SyllabusIntroduction to software engineeringSoftware development life cycle – from

requirements analysis to software design, Coding, testing, maintenance etc.

Software requirement specification – different models for identifying software requirements

4

Page 5: HNDIT23082 Principals of Software Engineering

Software design methodologiesCoding and documentationSoftware TestingSoftware Project ManagementSoftware Configuration Management

5

Page 6: HNDIT23082 Principals of Software Engineering

6

Page 7: HNDIT23082 Principals of Software Engineering

Main References Ian Sommerville, Software Engineering, 6th

Edition, Addison Wesley, 2000. R Pressman, Software Engineering - A

Practitioners Approach, 5th Edition, McGraw Hill.

7

Page 8: HNDIT23082 Principals of Software Engineering

Software Engineering Introduction

Learning Outcomes

Appreciate the problems associated with developing software

Understanding the need for a managed approach to software development

Be able to define the term ‘Software Engineering’

Identify software quality attributes and their classification

8

Page 9: HNDIT23082 Principals of Software Engineering

Student Center Activity with First Chapter

Goal 1 Activites AssessThe student will know the fundamentals of Software Engineering process

1. Define software and software Engineering.

1. Knowledge and Analysis2. Analysis

2. Differentiate SE and computer Science

Analysis

3. List various cost associated with SE Knowledge

4. List attributes of good SW Knowledge

5. Discuss key challenges in SE Analysis

6. Explain CASE with examples Application , Synthesis

9

Page 10: HNDIT23082 Principals of Software Engineering

Software

Instructions given to a computer (computer programs)

Systems software

Application software

10

Page 11: HNDIT23082 Principals of Software Engineering

Types of software System Software:

System software is a collection of programs written to service the other programs.

eg. Operating systems, drivers, compilerscommunication software.

11

Page 12: HNDIT23082 Principals of Software Engineering

Types of software…• Web-based software: • The network becomes a

massive computer providing an almost unlimited software resources that can be accessed by anyone with a modem. •Artificial intelligence

software: All software makes use of non numerical algorithms to solve the complex problems that are not amenable to computing or straightforward analysis. 12

Page 13: HNDIT23082 Principals of Software Engineering

Hardware vs Software

Time

cost software

hardware

1960 2002

13

Page 14: HNDIT23082 Principals of Software Engineering

Failure curve for hardware [Pressman]

Infant

mortality

Wear out

Failure rate

Time

14

Page 15: HNDIT23082 Principals of Software Engineering

Failure curves for software -PressmanFailure rate

Time

Idealized curve

changeActual curve

Increase failure rates due to side effects

15

Page 16: HNDIT23082 Principals of Software Engineering

Development Failures

Examples

IBM Survey, 2000

• 55% of systems cost more than expected

• 68% overran the schedules

• 88% had to be substantially redesigned

Bureau of Labour Statistics (2001)

• for every 6 new systems put into operation, 2 cancelled

• probability of cancellation is about 50% for large systems

• average project overshoots schedule by 50%

16

Page 17: HNDIT23082 Principals of Software Engineering

The Statistics

Project completion

53%31%

16%

Delivered andoperational but overbudget, over scheduleor with fewer featuresand functionsCancelled before theywere completed

On time,on budget,with all of the specifiedfeatures and functions

17

Page 18: HNDIT23082 Principals of Software Engineering

1. Requirements capture2. Requirement specification

14%3. Design4. Implementation5. Testing 6%6. Maintenance 60%

Distribution of software cost over life cycle

40%

18

Page 19: HNDIT23082 Principals of Software Engineering

Software Problems1. Time Schedules and cost estimates of many

software projects are grossly inaccurate.

2. Software is costly.

3. The quality of software is not satisfactory.

4. Software is difficult to maintain.

5. The productivity of software people is not

satisfactory to meet the demand.

19

Page 20: HNDIT23082 Principals of Software Engineering

What makes software special?The main difference in software engineering compared to

other engineering disciplines are listed below.

1. It is difficult for a customer to specify requirements completely.

2. It is difficult for the developer to understand fully the customer needs.

3. Software requirements change regularly.

4. Software is primarily intangible; much of the process of creating software is also intangible, involving experience, thought and imagination.

5. It is difficult to test software exhaustively.

20

Page 21: HNDIT23082 Principals of Software Engineering

A Solution – Software Engineering• Greater emphasis on systematic , scientific development.

• Computer assistance in software development (CASE)

• A concentration on finding out the user’s requirements

• Formal/Semi Formal specification of the requirements of a system.

• Demonstration of early version of a system (prototyping)

• Grater emphasis on development of error free easy to understand code.

21

Page 22: HNDIT23082 Principals of Software Engineering

22

Software engineering approachWhat is the software engineering?Software engineering is an engineering discipline which is concerned with all aspects of software production from the early stages of system specification through to maintaining the system after it has gone into use. In this definition there are two key phrases.

What is the difference between software engineering and computer science?Computer science is theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software.What is the difference between software engineering and system engineering?System engineering is concerned with all aspects of computer-based system development, including hardware, software and processor engineering. Software engineering is a part of this process

Page 23: HNDIT23082 Principals of Software Engineering

Evolution of software engineering1. Software development began as a single

person activity in 1940s and 1950s. 2. Software engineering was considered a

new scientific discipline in 1960s and 1970s.

3. In 1980s and 1990s engineering ideas dominated software development

23

Page 24: HNDIT23082 Principals of Software Engineering

Software EngineeringSimple definition :

• Designing, building and maintaining large software systems.

Others

• => ‘Software engineering is concerned with the theories, methods and tools for developing, managing and evolving software products’ - I Sommerville

24

Page 25: HNDIT23082 Principals of Software Engineering

=> ‘The practical application of scientific knowledge in the design and construction of computer programs and the associated documentation required to develop, operate and maintain them’

- B.W.Bohem

=> ‘ The establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines’

- F.L. Bauer

=> ‘The application of systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software’

- IEEE Standard 610.1225

Page 26: HNDIT23082 Principals of Software Engineering

Software Engineering – Definition

‘Use of systematic, engineering approach in all stages of software development and project management to develop high quality and economical software using appropriate software tools.’

26

Page 27: HNDIT23082 Principals of Software Engineering

27

Software engineering approachWhat is the software engineering?Software engineering is an engineering discipline which is concerned with all aspects of software production from the early stages of system specification through to maintaining the system after it has gone into use. In this definition there are two key phrases.

What is the difference between software engineering and computer science?Computer science is theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software.What is the difference between software engineering and system engineering?System engineering is concerned with all aspects of computer-based system development, including hardware, software and processor engineering. Software engineering is a part of this process

Page 28: HNDIT23082 Principals of Software Engineering

Software Quality Attributes

Bohem’s Classification• Current usefulness

- The qualities expected from a software system in user’s point of view.

• Potential Usefulness

- The qualities expected from a software system in developer’s point of view.

28

Page 29: HNDIT23082 Principals of Software Engineering

Current usefulness

• Efficiency

• Reliability

• Usability

• Correctness

• User friendliness

• Robustness

29

Page 30: HNDIT23082 Principals of Software Engineering

Potential usefulness

• Maintainability

• Modularity

• Reusability

• Portability

30

Page 31: HNDIT23082 Principals of Software Engineering

McCall’s Classification

• Product operation

• Product revision

• Product transition

31

Page 32: HNDIT23082 Principals of Software Engineering

Product Operation

• Efficiency

• Correctness

• User friendliness

• Usability

• Reliability

• Robustness

32

Page 33: HNDIT23082 Principals of Software Engineering

Product Revision• Maintainability

• Flexibility

• Testability

Product Transition• Interoperability

• Reusability

• Portability

33

Page 34: HNDIT23082 Principals of Software Engineering

Software Maintenance

Any software system needs to be changed. Maintenance is the costliest operation in the software development process (about 60%). Software need to be changed due to various reasons.

• Errors in the system.

• Changes in the user requirements

• Availability of new technology

• Changes in the enterprise or Govt. policy.

34

Page 35: HNDIT23082 Principals of Software Engineering

Review Questions

1. Look at the following list of goals of software

a) Meeting the user’s needs

b) Low cost of production

c) High Performance

d) Portability

e) Low cost of maintenance

f) High Reliability

e) Delivery on time

35

Page 36: HNDIT23082 Principals of Software Engineering

For each of the following systems choose the two most important

goals.

(i) A system to manage student fees – to track whether they have paid, calculate the correct amount, issue invoices, send out reminders etc.

(ii) A system to manage the temperature of a nuclear reactor core.

(iii) An experimental program to test the efficiency of an algorithm for some mathematical theory.

(iv) A program that allows viewing of cricket scores on mobile phones.

36

Page 37: HNDIT23082 Principals of Software Engineering

2. Which stage of software development is most expensive?

3. Where are the most errors introduced in software projects?

4. What do project managers say is the worst problem (consequence) in software projects?

5. ‘All Microsoft software is bug free ‘ – Bill Gates

Is he correct?

6. Define the term ‘Software Engineering’.

37

Page 38: HNDIT23082 Principals of Software Engineering

Multiple choice quiz

http://highered.mcgraw-hill.com/sites/0073375977/student_view0/chapter1/multiple_choice_quiz.html

38