Sei sulla pagina 1di 32

CSE291 - Introduction To Software

Engineering
(Fall 2018)

Lecture 1

Introduction
9/5/2018 CSE291 - Introduction to Software Engineering 2

Course Objectives

• To help students to develop skills that will enable


them to construct software of high quality –
software that is reliable, and that is reasonably
easy to understand, modify and maintain.

• To foster an understanding of why these skills are


important.
9/5/2018 CSE291 - Introduction to Software Engineering 3

Course Outline
• Introduction to Software and Software Engineering
• Definitions
• Differences
• Importance

• Software Process and Process Models


• What is software process?
• Software Construction and Management
• Different Software Process Models

• Requirements Engineering
• Definitions
• Types of Requirements
• Steps of Requirement Engineering
9/5/2018 CSE291 - Introduction to Software Engineering 4

Course Outline
• System Modelling
• Context Modelling
• Context Diagram
• Activity Diagram
• Interaction Modelling
• Use Case Diagram
• Sequence Diagrams
• Behavioural Modelling
• State Transition
• Collaboration Diagram
• Data Flow Diagrams
• Structural Modeling
• Class Diagrams and their relationships
9/5/2018 CSE291 - Introduction to Software Engineering 5

Course Outline
• Software Architecture and Design

• Software Testing
• Verification vs Validation
• Types of Testing

• Software Configuration Management


9/5/2018 CSE291 - Introduction to Software Engineering 6

Text Books

• Software Engineering by Ian Sommerville (9th


Edition)

• Software Engineering: A Practitioner‟s Approach


by Roger S. Pressman (7th Edition)
9/5/2018 CSE291 - Introduction to Software Engineering 7

Reference Books

• The Unified Modeling Language User Guide by


Booch, Rumbaugh, and Jacobson

• Applying UML and Patterns by Craig Larman (2nd


Edition)
9/5/2018 CSE291 - Introduction to Software Engineering 8

Course Website

• Visit the following link:


https://sites.google.com/a/cuilahore.edu.pk/se_fall18/

• Course Handbook
• Deadlines & Important Information
• Course Material (Lecture Notes and Lab Tasks)
• Assignments
• Quiz Solutions
9/5/2018 CSE291 - Introduction to Software Engineering 9

Course Assessment/Grading

• Submit all assignments in hard copy A4 size paper.


• No credit for copied or late submissions.
• No relaxation for students found cheating in any quiz or
exam.
• At least 80% attendance is mandatory.
• To get good grade you must attend all lectures and perform
good in all course assessments.
9/5/2018 CSE291 - Introduction to Software Engineering 10

Rules
• Mobile phones – Silent or switch off
• Arrive on time in class
• If you do not understand a point, raise your hand
and ask me to explain or contact during office
hours
• No disturbance!!!! No Misconduct!!!!
• REMEMBER: Your first priority must be your
studies
9/5/2018 CSE291 - Introduction to Software Engineering 11

What is Software?

• Computer Programs
• Data
• Documentation
9/5/2018 CSE291 - Introduction to Software Engineering 12

What is Software?
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 as a part of the software.
• Documents that describe the use of the Programs.
9/5/2018 CSE291 - Introduction to Software Engineering 13

Role of Software
A person might be involved with software more than 100 times,
often without even realizing that.

We might use a computer


• To check email or weather
• Kitchen appliances
• Malfunction in ones family microwave?
• Software quality is also very important.
• Traffic signals are now computer controlled
• Mostly we use credit cards in a computerized gasoline pumps.
9/5/2018 CSE291 - Introduction to Software Engineering 14

Role of Software
• Our bank system is highly computerized
• Could operate with out high quality software?

• Use of telephones, fax, e-mail or internet, all of these requires


Software
• Hotel arrangements will be handled by computers and software
• Air plane & Air traffic control is highly computerized
• Medical Instruments and diagnostic procedures are now
computerized
• Errors or defects in medical…,safety devices, aircraft
instruments..?
9/5/2018 CSE291 - Introduction to Software Engineering 15

What is the difference between Software


and other systems?
9/5/2018 CSE291 - Introduction to Software Engineering 16

Attributes of Good Software


• Should deliver the required functionality and performance to
the user.
• It is reliable
• It has good user-interface
• Should be maintainable and reusable
9/5/2018 CSE291 - Introduction to Software Engineering 17

Categories of Computer Software

• System Software
• Application Software
• Engineering/Scientific Software
• Embedded Software
• Web Applications
• Computer Programming tools
• Artificial Intelligence Software
9/5/2018 CSE291 - Introduction to Software Engineering 18

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.
9/5/2018 CSE291 - Introduction to Software Engineering 19

Software Products
• The distinction in generic and customized software
products is becoming blurred.
• More and more systems are being built with a generic
product as a base, which is then adapted to suit the
requirements of a customer.

• Example: Enterprise Resource Planning (ERP) systems


such as SAP.
9/5/2018 CSE291 - Introduction to Software Engineering 20

Software Crises

• In the early 60s, software suffered from a problem, which we


call the Software Crisis

• The techniques that were used to develop small software were


not applicable for large software systems.

• In most of the cases the software that was built using the old
tools and techniques was not complete.
9/5/2018 CSE291 - Introduction to Software Engineering 21

Software Crises
• Most of the time it was delivered too late.
• Most of the projects were over-budgeted.
• And, in most of the cases, systems built using these techniques
were not reliable.
• A conference was held in 1960 in which the term
“software crisis” was introduced
Conclusion:
• Software engineering is the result of the software crisis when
people realized that it was not possible to construct complex
software using the techniques applicable in 1960s.
• An important result of this was that people realized that just
coding was not enough; we also need to apply engineering
principles.
9/5/2018 CSE291 - Introduction to Software Engineering 22

What is Engineering?

• The process of productive use of scientific knowledge is


called Engineering.

• The process of utilizing knowledge and principles to


design, build, and analyze objects.
9/5/2018 CSE291 - Introduction to Software Engineering 23

Software Engineering

The science concerned with putting computer science


knowledge to practical use.
9/5/2018 CSE291 - Introduction to Software Engineering 24

Software Engineering - IEEE

The application of a systematic, disciplined, quantifiable


approach to the development, operation, and
maintenance of software; that is, the application of
engineering to software.
9/5/2018 CSE291 - Introduction to Software Engineering 25

Software Engineering - Sommerville

„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.
9/5/2018 CSE291 - Introduction to Software Engineering 26

Computer Science vs. Software Engineering

Computer science focuses on theory and fundamentals;


software engineering is concerned with the practicalities of
developing and delivering useful software.

System engineering vs. Software 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.
9/5/2018 CSE291 - Introduction to Software Engineering 27

Software Costs

• Software costs often dominate computer system costs. The


costs of software on a PC are often greater than the hardware
cost.

• Software costs more to maintain than it does to develop. For


systems with a long life, maintenance costs may be several
times development costs.

• Software engineering is concerned with cost-effective software


development.
9/5/2018 CSE291 - Introduction to Software Engineering 28

What are the costs of software engineering?

• Roughly 60% of costs are development costs, 40% are testing


costs. For custom software, evolution costs often exceed
development costs.

• Costs vary depending on the type of system being developed


and the requirements of system attributes such as performance
and system reliability.

• Distribution of costs depends on the development model that is


used.
9/5/2018 CSE291 - Introduction to Software Engineering 29

Software Engineering Ethics


• “Software engineers are those who contribute by direct
participation or by teaching, to the analysis, specification,
design, development, certification, maintenance, and
testing of software systems.”

 Confidentiality
 Competence
 Intellectual property rights
 Computer misuse
9/5/2018 CSE291 - Introduction to Software Engineering 30

ACM/IEEE-CS Code of Ethics


1. PUBLIC - Software engineers shall act consistently with
the public interest.

2. CLIENT AND EMPLOYER - Software engineers shall


act in a manner that is in the best interests of their client
and employer, consistent with the public interest.

3. PRODUCT - Software engineers shall ensure that their


products and related modifications meet the highest
professional standards possible.

4. JUDGMENT - Software engineers shall maintain


integrity and independence in their professional judgment.
9/5/2018 CSE291 - Introduction to Software Engineering 31

ACM/IEEE-CS Code of Ethics


5. MANAGEMENT - Software engineering managers and
leaders shall subscribe to and promote an ethical approach to
the management of software development and maintenance.

6. PROFESSION - Software engineers shall advance the


integrity and reputation of the profession consistent with the
public interest.

7. COLLEAGUES - Software engineers shall be fair to and


supportive of their colleagues.

8. SELF - Software engineers shall participate in lifelong learning


regarding the practice of their profession and shall promote an
ethical approach to the practice of the profession.
9/5/2018 CSE291 - Introduction to Software Engineering

FAQ about Software Engineering


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 Computer science focuses on theory and fundamentals;
engineering and computer science? software engineering is concerned with the practicalities of
developing and delivering useful software.

What is the difference between software System engineering is concerned with all aspects of
engineering and system engineering? computer-based systems development including hardware,
software and process engineering. Software engineering is
part of this more general process.
32

Potrebbero piacerti anche