lecture1 (se introduction)

26
Introduction to Software Engineering (CSC291) Instructor Humaira Afzal Lecturer [email protected] u.pk

Upload: education-front

Post on 29-Nov-2014

92 views

Category:

Engineering


6 download

DESCRIPTION

Introduction To Software Engineering.

TRANSCRIPT

Page 1: Lecture1 (SE Introduction)

Introduction to Software Engineering(CSC291)

InstructorHumaira Afzal

[email protected]

Page 2: Lecture1 (SE Introduction)

Course Information

This is an introductory course in Software Engineering Domain.

Learning ObjectivesStudents should have • knowledge of software development processes.• Understanding about systems modelling• Learned development methodology, Principles and techniques

for the engineering of large software projects.• Learned the Fundamental principles of formal specifications.• Clear understanding about software testing approaches.

Page 3: Lecture1 (SE Introduction)

Course Outline• Introduction to Software Engineering, Software Process, Process

models, Software Crisis, Software Engineering Phases• Waterfall, Prototype, RAD, Incremental, Spiral• Extreme Programming, RUP• Requirements Engineering, Definitions, Levels of Requirements• Functional and non-functional requirements, Importance of the

software requirement process, Importance of requirements, Role of requirements,

• Risks from inadequate requirements process, Requirement statement characteristics, Requirements specification characteristics

• Analysis Models: Data modelling, ERD, Use Case Model, State Transition Model, Data Flow Model

Page 4: Lecture1 (SE Introduction)

Course Outline• Software design attributes, Object-Oriented Analysis and

Design, Static and Dynamic Models, Class diagram, System sequence diagram

• Interaction diagram, Activity diagram, Deployment diagram, component diagram

• Software Architecture• Programming techniques for industrial strength software,

Industrial strength software Do’s and don’ts in programming, Style guides

• Software Verification and Validation• Phases of testing, Equivalence partitioning, Black box

testing, Structural or white box testing• Software Inspection• Software Configuration Management• Project Evaluation

Page 5: Lecture1 (SE Introduction)

Grading

•First Sessional Test 10%•Second Sessional Test 15%•Quizzes/Assignments 25%•Terminal Examination 50%

Page 6: Lecture1 (SE Introduction)

Rules

• No mobile phones • Arrive on time!• If you do not understand a point, raise your hand and ask me

to explain or contact during office hours• No disruption!!!! No Misconduct!!!!• 80% Attendance• REMEMBER: Your first priority must be your studies

Slide 6

Page 7: Lecture1 (SE Introduction)

Introduction

Page 8: Lecture1 (SE Introduction)

FAQs about software engineering

•What is software?•What is software engineering?•What is the difference between software engineering

and computer science?•What is the difference between software engineering

and system engineering?•What is a software process?•What is a software process model?

Page 9: Lecture1 (SE Introduction)

What is software?

•Computer Programs•Data•Documentation

Page 10: Lecture1 (SE Introduction)

What is software?(contd.)We can define it as:

▫ Instructions (Computer Programs) that when executed provide

• desired features• functions and • performance. The data on which the program operates is also considered a

part of the software.▫Documents that describe the use of the Programs.

Computer programs and associated documentation such as requirements, design models and user manuals.

Page 11: Lecture1 (SE Introduction)

Categories of Computer Software

•System Software•Real-Time Software•Engineering/scientific software•Business Software•Web -based software•etc

Page 12: Lecture1 (SE Introduction)

Software products

•Generic products▫Stand-alone systems that are marketed and sold to any

customer who wishes to buy them.▫Examples – PC software such as editing, graphics

programs, project management tools, databases and drawing packages.

•Customized products▫Software that is commissioned by a specific customer

to meet their own needs. ▫Examples –systems written to support a particular

business process and air traffic control software.

12

Page 13: Lecture1 (SE Introduction)

Why Software is Important?

•The economies of ALL developed nations are dependent on software.

•More and more systems are software controlled ( transportation, medical, telecommunications, military, industrial, entertainment,)

•Software engineering is concerned with theories, methods and tools for professional software development.

Page 14: Lecture1 (SE Introduction)

Software Crisis

“Problems associated with software development “•Resulted in software projects which were:

▫Late – sometimes by many years▫Over budget▫Unreliable▫Difficult to maintain▫Poor in performance

•Required new techniques and methods to control the complexity inherent in “LARGE” software systems.

Page 15: Lecture1 (SE Introduction)

Essential attributes of good software

15

Product characteristic Description

Maintainability Software should be written in such a way so that it can evolve to meet the changing needs of customers.

Dependability and security

Software dependability includes a range of characteristics including reliability, security and safety.

Efficiency Software should not make wasteful use of system resources such as memory and processor cycles. Efficiency therefore includes responsiveness, processing time, memory utilisation, etc.

Acceptability Software must be acceptable to the type of users for which it is designed. This means that it must be understandable, usable and compatible with other systems that they use.

Page 16: Lecture1 (SE Introduction)

Engineering

The science concerned with putting scientific knowledge to practical use.

Webster’s Dictionary

Page 17: Lecture1 (SE Introduction)

Software Engineering

•The science concerned with putting computer science knowledge to practical use.

Page 18: Lecture1 (SE Introduction)

Software Engineering - IEEE

Software Engineering: The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software.

Page 19: Lecture1 (SE Introduction)

‘all aspects of software production’ Software engineering is not just concerned with the technical processes of software development but also with activities such as software project management and with the development of tools, methods and theories to support software production.

-Sommerville-

Software Engineering

Page 20: Lecture1 (SE Introduction)

Well-Engineered Software

Provides the required functionality Maintainable Reliable Efficient User-friendly Cost-effective

Page 21: Lecture1 (SE Introduction)

FAQ about software engineering

21

Question Answer

What is software? Computer programs, data structures and associated documentation. Software products may be developed for a particular customer or may be developed for a general market.

What are the attributes of good software? Good software should deliver the required functionality and performance to the user and should be maintainable, dependable and usable.

What is software engineering? Software engineering is an engineering discipline that is concerned with all aspects of software production.

What is the difference between software engineering and computer science?

Computer science focuses on 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 systems development including hardware, software and process engineering. Software engineering is part of this more general process.

Page 22: Lecture1 (SE Introduction)

Essential attributes of good software

22

Product characteristic Description

Maintainability Software should be written in such a way so that it can evolve to meet the changing needs of customers. This is a critical attribute because software change is an inevitable requirement of a changing business environment.

Dependability and security

Software dependability includes a range of characteristics including reliability, security and safety. Dependable software should not cause physical or economic damage in the event of system failure. Malicious users should not be able to access or damage the system.

Efficiency Software should not make wasteful use of system resources such as memory and processor cycles. Efficiency therefore includes responsiveness, processing time, memory utilisation, etc.

Acceptability Software must be acceptable to the type of users for which it is designed. This means that it must be understandable, usable and compatible with other systems that they use.

Page 23: Lecture1 (SE Introduction)

What is a software process?• A set of activities whose goal is the development or evolution

of software.• Generic activities in all software processes are:

▫Specification - what the system should do and its development constraints

▫Development - production of the software system▫Validation - checking that the software is what the customer

wants▫Evolution - changing the software in response to changing

demands.

Page 24: Lecture1 (SE Introduction)

What is a software process model?

• A simplified representation of a software process, presented from a specific perspective.

• Examples of process perspectives are▫ Workflow perspective - sequence of activities;▫ Data-flow perspective - information flow;▫ Role/action perspective - who does what.

• Generic process models▫ Waterfall;▫ Iterative development;▫ Component-based software engineering.

Page 25: Lecture1 (SE Introduction)

Key points

• Software engineering is an engineering discipline that is concerned with all aspects of software production.

• Essential software product attributes are maintainability, dependability and security, efficiency and acceptability.

• The high-level activities of specification, development, validation and evolution are part of all software processes.

• The fundamental notions of software engineering are universally applicable to all types of system development.

Chapter 1 Introduction

25

Page 26: Lecture1 (SE Introduction)

Key points

• There are many different types of system and each requires appropriate software engineering tools and techniques for their development.

• The fundamental ideas of software engineering are applicable to all types of software system.

Chapter 1 Introduction

26