Software Engineering: Dr. Saba Khalil Toor

You might also like

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 34

Software Engineering

Dr. Saba Khalil Toor


Introduction: Facilitator/Teacher

Dr. Saba Khalil Toor


PhD. Computer Science From Warwick University, UK.

 Industrial Experience: CresSoft (Pvt) Ltd. And Vroom (Pvt) Ltd. 6 years.
 On-shore-off-shore Models
 Developed software for fortune 100 companies of USA.
 Using the techniques of Object Oriented analysis, design and development

 Academic Experience: Virtual University of Pakistan. More than 14 years.


 Contribution in the establishment of the University
 Designing and developing Computer Science Courses
 Administrative task as head of Computer Science department
About this Course

This course aims to provide understanding of basic concepts


of software engineering which includes; Software
development life cycle, requirement gathering and
management, system modeling and software process
including Agile methodologies. This course will also include
verification and validations of software as well as
management of software process.
Goal
 Introducing the field of Software Engineering to students.
 Help students to understand the basic principles of software engineering.
 To develop an understanding of software project planning and the ability to select
the suitable model to use in software development.
 Knowledge of all phases of software life cycle including the artifacts that are
produced.
 Ability to analyze, design and develop the system models using object oriented
methodology for software development.
 Learn to work in teams to identify requirements, analyze them and design solutions
for a real world problem.
 Developing the presentation skills among students.
 Developing the teamwork management skills in students
Pre-requisite

1.Introduction to Programming
2.Data Structures
Text and Reference Books
Text Book
Roger S. Pressman “Software Engineering- A practitioner’s
approach”, 8th edition.
Applying UML and Patterns, An Introduction to Object
Oriented Analysis and Design and UML. Craig Larmer. 3rd
Edition

Reference
 AlainAbran, James W. Moore, Pierre Bourque, Robert Dupuis, Leonard
L. Tripp “Guide to the Software Engineering Body of Knowledge” IEEE
Edition – SWEBOK Guide V3.0.
 Ian Sommerville “Software Engineering”, 10th edition.
 An integrated approach to software engineering by Pankaj Jalote
Assessment Scheme

Sr. No Assessment Number %


activity
1 Project 1 20%
2 Assignments 2 10%
3 Quiz 4 10%
4 Midterm 1 25%
Examination
5 Finale Examination 1 35%
Project

There are four deliverables for the project


1. Project proposal
2. Deliverable 1
3. Deliverable 2
4. Presentation
Course Policy
 This course has ZERO TOLERANCE POLICY on academic dishonesty
and plagiarism
 All assignments are due before 1:00 p.m. on the due date unless
otherwise stated. Late assignments will receive 10% penalty for first
day, 20% for second, and no credit afterwards.
 There will be no retake for the quiz. Although most of the quizzes
will be announced in advanced, you must be prepared for surprise
quizzes any time.
 Although students are advised to attend all lectures, 75% attendance
is mandatory. It is entirely the students' responsibility to recover any
information or announcements presented in lectures from which they
were absent.
 Be sure to keep backups of all your submitted work, as well as all the
graded work (assignments, quizzes etc.) returned by the instructor.
You will need to present those in case you have some issues
Course Policy …cont.
 All work that you submit in this course must be your own.
Unauthorized group efforts are considered academic dishonesty.
Specifically, you are guilty of academic dishonesty if:
 You examine another's solution to an assignment
 You allow another student to examine your solution to an assignment
 You fail to take reasonable care to prevent another student from examining
your solution and that student does examine your solution.
In case of unauthorized group efforts, academic dishonesty/fraud,
cheating and plagiarism following policy is applicable
 For Assignments, Quizzes, Research Readings, project, Mid Term and
Final Term exam, Cheating or violation of academic integrity will
cause direct F grade
Classroom Policy

 You are required to come to classroom on time, attendance


of late comers will be marked as absent
 No cross talk will be allowed unless advocated by the teacher
 Switch off your Mobile devices before entering the class
 Treat each other and everyone with respect and dignity.
 During collaborative activity give chance to everyone in your
group to express his/her thoughts and ideas related to the
topic
Course Contents
 Process Models
 Planning
 Task Breakdown etc.
 Requirement Engineering
 SRS
 Analysis
 FS
 Use Case Modeling
 Design
 Numerous Diagrams
 Testing
What is Software?
The product that software professionals build and
then support over the long term.
Software encompasses:
(1) instructions (computer programs) that when
executed provide desired features, function, and
performance;
(2) data structures that enable the programs to
adequately store and manipulate information
and
(3) documentation that describes the operation and
use of the programs. 13
What is Engineering

1. Theprocess of productive use of scientific


knowledge is called engineering

2. thedesign and manufacture of complex


products
What is Engineering
The American Engineers' Council for Professional
Development (ECPD, the predecessor of ABET)[2] has
defined "engineering" as:

The creative application of scientific principles to design


or develop structures, machines, apparatus, or
manufacturing processes, or works utilizing them singly
or in combination; or to construct or operate the same
with full cognizance of their design; or to forecast their
behavior under specific operating conditions; all as
respects an intended function, economics of operation and
safety to life and property
Software Engineering Definition

The IEEE definition:


Software Engineering:
(1)The application of a systematic,
disciplined, quantifiable approach to the
development, operation, and maintenance
of software; that is, the application of
engineering to software.
(2)) The study of approaches as in (1).
Dual Role of Software
 Botha product and a vehicle for delivering a
product
 Product
Deliverscomputing potential
Produces, manages, acquires, modifies, display, or
transmits information
 Vehicle
Supports or directly provides system functionality
Controls other programs (e.g., operating systems)
Effects communications (e.g., networking software)
Helps build other software (e.g., software tools) 17
Software products
 Generic products
 Stand-alonesystems that are marketed and sold to any
customer who wishes to buy them.
 Examples – PC software such as editing, graphics
programs, project management tools; CAD software;
software for specific markets such as appointments
systems for dentists.
 Customized products
 Software that is commissioned by a specific customer to
meet their own needs.
 Examples – embedded control systems, air traffic control
18

software, traffic monitoring systems.


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.
Differences between Software and Hardware

 Softwareis developed or engineered; it is not


manufactured in the classical sense
 Impacts the management of software projects
 Software doesn't wear out
 Hardware bathtub curve compared to the software
ascending spiked curve
 Although the industry is moving toward
component-based construction, most software
continues to be custom built (it is still
complex to build) 20
Hardware Failure Curve

21
Software Failure Curve

increased failure
rate due to side effects
Failure
rate

change
actual curve

idealized curve

Time
22
Types of Software
1. System software: such as operating system, compilers, file
management utilities
2. Application software: stand-alone programs for specific
needs.
3. Engineering/scientific software: Characterized by “number
crunching”algorithms. Such as molecular biology, orbital
dynamics etc
4. Embedded software resides within a product or system.
(key pad control of a microwave oven, digital function of
dashboard display in a car)
5. Product-line software focus to address mass 23consumer
market. (word processing, graphics, database management)
Types of Software

6. WebApps (Web applications) software that runs


in a browser.
7. AI software uses non-numerical algorithm to
solve complex problem. Robotics, expert system,
pattern recognition
8. Open world computing—distributed computing
due to wireless networking. How to allow mobile
devices, personal computer, enterprise system to
communicate across vast network.
9. Open source— “free” source code open to the
computing community
Problems in Large Software
Pervasive use of software
Growing reliance on software
Software systems
 Software with MLOC (Million Lines of Code)
 E.g. operating systems, DBMS, defense related software,
Command/Communication/Control (CCC) systems etc.
 Involve100’s or 1000’s of people
 Over months or years
Operate under diverse, unanticipated application
environments
Software is Complex

 Complex  complicated

 Complex = composed of many simple parts


related to one another

 Complicated = not well understood, or explained


Importance of Software Engineering

 More and more, individuals and society rely on advanced


software systems. We need to be able to produce
reliable and trustworthy systems economically and
quickly.

 It is usually cheaper, in the long run, to use software


engineering methods and techniques for software
systems rather than just write the programs as if it was a
personal programming project. For most types of
system, the majority of costs are the costs of changing
the software after it has gone into use. 28
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 Good software should deliver the required functionality and
software? 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 Computer science focuses on theory and fundamentals;
software engineering and software engineering is concerned with the practicalities of
computer science? developing and delivering useful software.
What is the difference between System engineering is concerned with all aspects of
software engineering and system computer-based systems development including hardware,
engineering? software and process engineering. Software engineering is
29
part of this more general process.
Essential attributes of good software
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 Software dependability includes a range of characteristics
security 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. 30
Questions About Software Haven't
Changed Over the Decades

 Why does it take so long to get software finished?


 Why are development costs so high?
 Why can't we find all errors before we give the
software to our customers?
 Why do we spend so much time and effort
maintaining existing programs?
 Why do we continue to have difficulty in measuring
progress as software is being developed and
maintained?
31
Software Myths - Management
 "We already have a book that is full of standards and
procedures for building software. Won't that provide my
people with everything they need to know?"
 Not used, not up to date, not complete, not focused on quality, time,
and money
 "If we get behind, we can add more programmers and catch up"
 Adding people to a late software project makes it later
 Training time, increased communication lines

 "If
I decide to outsource the software project to a third party, I
can just relax and let that firm build it"
 Ifyou cant do it, how can you make someone understand what do to.
 Software projects need to be controlled and managed.
32
Software Myths - Customer

 "Ageneral statement of objectives is sufficient


to begin writing programs – we can fill in the
details later"
 Ambiguous statement of objectives spells disaster
 "Project
requirements continually change, but
change can be easily accommodated because
software is flexible"
 Impact of change depends on where and when it
occurs in the software life cycle (requirements
analysis, design, code, test)
33
Software Myths - Practitioner
 "Once we write the program and get it to work, our job is done"
 60% to 80% of all effort expended on software occurs after it is
delivered
 "Until I get the program running, I have no way of assessing its quality
 Formal technical reviews of requirements analysis documents,
design documents, and source code (more effective than actual
testing)
 "The only deliverable work product for a successful project is the
working program"
 Software, documentation, test drivers, test results
 "Software engineering will make us create voluminous and
unnecessary documentation and will invariably slow us down"
34
 Creates quality, not documents; quality reduces rework and
provides software on time and within the budget 

You might also like