www hndit com HNDIT 23082 Principals of Software

  • Slides: 38
Download presentation
www. hndit. com HNDIT 23082– Principals of Software Engineering Week 1: Introduction to Software

www. hndit. com HNDIT 23082– Principals of Software Engineering Week 1: Introduction to Software Engineering 1

www. hndit. com Software Engineering Overall Objectives: • After successfully completing this module, students

www. hndit. com 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 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

www. hndit. com § Be able to create and use planning, requirements analysis, domain

www. hndit. com § 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 organization §Be able to document all phases of the software development processes 3

www. hndit. com Outline Syllabus Ø Introduction to software engineering Ø Software development life

www. hndit. com Outline Syllabus Ø Introduction to software engineering Ø Software development life cycle – from requirements analysis to software design, Coding, testing, maintenance etc. Ø Software requirement specification – different models for identifying software requirements 4

www. hndit. com Ø Software design methodologies Ø Coding and documentation Ø Software Testing

www. hndit. com Ø Software design methodologies Ø Coding and documentation Ø Software Testing Ø Software Project Management Ø Software Configuration Management 5

www. hndit. com 6

www. hndit. com 6

www. hndit. com Main References § Ian Sommerville, Software Engineering, 6 th Edition, Addison

www. hndit. com Main References § Ian Sommerville, Software Engineering, 6 th Edition, Addison Wesley, 2000. § R Pressman, Software Engineering - A Practitioners Approach, 5 th Edition, Mc. Graw Hill. 7

Software Engineering www. hndit. com Introduction Learning Outcomes § Appreciate the problems associated with

Software Engineering www. hndit. com 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

www. hndit. com Student Center Activity with First Chapter Goal 1 Activites Assess The

www. hndit. com Student Center Activity with First Chapter Goal 1 Activites Assess The student will know the fundamentals of Software Engineering process 1. Define software and software Engineering. 1. Knowledge and 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

Software www. hndit. com Instructions given to a computer (computer programs) Systems software Application

Software www. hndit. com Instructions given to a computer (computer programs) Systems software Application software 10

www. hndit. com Types of software Ø System Software: System software is a collection

www. hndit. com Types of software Ø System Software: System software is a collection of programs written to service the other programs. eg. Operating systems, drivers, communication software. compilers 11

Types of software… www. hndit. com • Web-based software: • The network becomes a

Types of software… www. hndit. com • 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

 www. hndit. com Hardware vs Software cost software hardware Time 1960 2002 13

www. hndit. com Hardware vs Software cost software hardware Time 1960 2002 13

Failure curve for hardware [Pressman] www. hndit. com Failure rate Infant Wear out mortality

Failure curve for hardware [Pressman] www. hndit. com Failure rate Infant Wear out mortality Time 14

Failure rate Failure curves for software -Pressman www. hndit. com Increase failure rates due

Failure rate Failure curves for software -Pressman www. hndit. com Increase failure rates due to side effects change Actual curve Idealized curve Time 15

Development Failures www. hndit. com Examples IBM Survey, 2000 • 55% of systems cost

Development Failures www. hndit. com 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

www. hndit. com The Statistics 17

www. hndit. com The Statistics 17

www. hndit. com Distribution of software cost over life cycle 1. Requirements capture 2.

www. hndit. com Distribution of software cost over life cycle 1. Requirements capture 2. Requirement specification 14% 3. Design 4. Implementation 5. Testing 6% 6. Maintenance 60% 40% 18

Software Problems www. hndit. com 1. Time Schedules and cost estimates of many software

Software Problems www. hndit. com 1. 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

What makes software special? www. hndit. com The main difference in software engineering compared

What makes software special? www. hndit. com 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

A Solution – Software Engineering www. hndit. com • Greater emphasis on systematic ,

A Solution – Software Engineering www. hndit. com • 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

Software engineering approach www. hndit. com ØWhat is the software engineering? Software engineering is

Software engineering approach www. hndit. com ØWhat 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 22

www. hndit. com Evolution of software engineering 1. Software development began as a single

www. hndit. com Evolution of software engineering 1. Software development began as a single person activity in 1940 s and 1950 s. 2. Software engineering was considered a new scientific discipline in 1960 s and 1970 s. 3. In 1980 s and 1990 s engineering ideas dominated software development 23

Software Engineering www. hndit. com Simple definition : • Designing, building and maintaining large

Software Engineering www. hndit. com Simple definition : • Designing, building and maintaining large software systems. Others • => ‘Software engineering is concerned with theories, methods and tools for developing, managing and evolving software products’ - I Sommerville 24

www. hndit. com => ‘The practical application of scientific knowledge in the design and

www. hndit. com => ‘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. 12 25

www. hndit. com Software Engineering – Definition ‘Use of systematic, engineering approach in all

www. hndit. com 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

Software engineering approach www. hndit. com ØWhat is the software engineering? Software engineering is

Software engineering approach www. hndit. com ØWhat 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 27

Software Quality Attributes www. hndit. com Bohem’s Classification • Current usefulness - The qualities

Software Quality Attributes www. hndit. com 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

Current usefulness www. hndit. com • Efficiency • Reliability • Usability • Correctness •

Current usefulness www. hndit. com • Efficiency • Reliability • Usability • Correctness • User friendliness • Robustness 29

Potential usefulness www. hndit. com • Maintainability • Modularity • Reusability • Portability 30

Potential usefulness www. hndit. com • Maintainability • Modularity • Reusability • Portability 30

www. hndit. com Mc. Call’s Classification • Product operation • Product revision • Product

www. hndit. com Mc. Call’s Classification • Product operation • Product revision • Product transition 31

Product Operation www. hndit. com • Efficiency • Correctness • User friendliness • Usability

Product Operation www. hndit. com • Efficiency • Correctness • User friendliness • Usability • Reliability • Robustness 32

www. hndit. com Product Revision • Maintainability • Flexibility • Testability Product Transition •

www. hndit. com Product Revision • Maintainability • Flexibility • Testability Product Transition • Interoperability • Reusability • Portability 33

 Software Maintenance www. hndit. com Any software system needs to be changed. Maintenance

Software Maintenance www. hndit. com 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

Review Questions www. hndit. com 1. Look at the following list of goals of

Review Questions www. hndit. com 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

www. hndit. com For each of the following systems choose the two most important

www. hndit. com 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

www. hndit. com 2. Which stage of software development is most expensive? 3. Where

www. hndit. com 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 Microsoftware is bug free ‘ – Bill Gates Is he correct? 6. Define the term ‘Software Engineering’. 37

www. hndit. com Multiple choice quiz http: //highered. mcgrawhill. com/sites/0073375977/student_view 0/ch apter 1/multiple_choice_quiz. html

www. hndit. com Multiple choice quiz http: //highered. mcgrawhill. com/sites/0073375977/student_view 0/ch apter 1/multiple_choice_quiz. html 38