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