Software Engineering & Information System Design
Course Code: CSE411
CSE, East West University
Course Instructor
 Tanni Mittra, Lecturer, EWU
• M.Sc in CSE – BUET
• B.Sc in CSE – Khulna University
 Previous Employment
• Associate Manager (2012- 2016)
Software Development and Customization
The City Bank Limited
Course Information
 Class web Page:
• https://sites.google.com/site/mittratanni/cse411
 Textbook:
• Software Engineering, Ian Sommerville
• Software Engineering, Roger S. Pressman
• Intelligent Software Systems Development, Paul Harmon
 Lecture: ST, 10:10 am – 11:40 am
MW, 8.30 am -10.00 am
 Mark Distribution
• Class Participation 5%
• Quiz 10%
• 1st Mid Term Exam 20%
• 2nd Mid Term Exam 20%
• Final Exam 25%
• Lab 20%
Objectives of course
 Understand Software Engineering:
• Build complex software systems in the context of frequent change
 Understand how to
• produce a high quality software system within time
• while dealing with complexity and change
 Acquire technical knowledge of Software Engineering
 Acquire managerial knowledge
 Understand the Software Lifecycle
• Process vs Product
• Learn about different software lifecycles
Chapter 1- Introduction
Topic Covered
 Software and Software Engineering
 Why Software Engineering is Important
 Types of Software Product
 Essential attributes of good software
 Software Engineering Diversity
 Fundamentals applied to software
 Software engineering and the Web
 Software Engineering Ethics
What is Software ?
 Software is a general term for the various kinds of programs used to
operate computers and related devices with all its associated documents
and configuration data
 A program is a specific set of ordered operations for a computer to
perform
 Software is a collection of instructions that enable the user to interact
with a computer, its hardware, or perform tasks
 For example,
• without your Internet browser, you could not surf the Internet or read this
page
• without an operating system, the browser could not run on your computer
 Two fundamental types of software product :
• Generic Product
These types of software are produced by the development
organization and sold on open market to any customer who is able to
buy them. Example: any software for PCs i.e. word processor, editing
tools, drawing package etc.
• Customized Product
These type of software are produced by software developer or
organization for a particular type of customer. Example : air traffic
control systems, Auction system, card payment software etc.
Types of Software
 We can’t run the modern world without software
• Business data analysis i.e Microsoft Excel, Scientific Investigation i.e. in
bio-informatics for DNA decoding, different types of game, Car
equipment, electronic devices e.t.c
 Growth of software has a great impact on economical activity of a
country
 World wide software has economical impact of trillion of dollar
 It involves number of people and money all over the world
Importance of Software
• Productive use of scientific knowledge by using different innovative ideas
and techniques
• Based on scientific rules and techniques. For example: Civil Engineering,
Mechanical Engineering, Electrical Engineering works based on physics
• Physics is not engineering but effectively used in building, motor, electrical
engine
• Like other engineering software engineering is based on computer science
• Different knowledge of Computer Science is effectively used for software
development i.e. data structure, algorithm
What is Engineering?
Difference between Software and other Systems
 Software is developed not manufacture.
• In manufacturing the creation of a product is heavily process driven and
develop a finish and companies achieve 99.99966% defect free products, But
in software we may have processes for source control, code review, check in
sheets, requirements gathering, the SDLC, etc. But executing those processes
does not in and of itself create a finished product.
 Software does not wear out
Difference between Software and other Systems
 Frequency of changes in software in a big component based
construction range i.e. fundamental change, enhancement of
feature, interface change
 Most software development is moving towards component based
construction
History of Software Engineering
 Earlier in 1950 when digital computer created and used then software
used only for some scientific applications or processing sensor data.
 In 1960 changes in hardware. New hardware i.e. computer available with
new technique. So software became more complex and big. Hard to write.
Tools that were used in previous software not applicable for this type of
software.
 The term software engineering used by Margaret Hamilton was used in
1968 as a title for the world's first conference called the ‘software crisis’
on software engineering, sponsored and facilitated by NATO (North
Atlantic Treaty Organization) .
 Throughout the 1970s and 1980s, a variety of new software engineering
techniques and methods were developed, such as structured
programming, information hiding and object-oriented development.
 In 1984, the Software Engineering Institute (SEI) was established as a
federally funded research and development center of software
engineering
 Software engineering is the application of engineering to the design,
development, implementation and maintenance of software in a
systematic method
 An engineering discipline that is concerned with all aspects of software
production
 The establishment and use of sound engineering principles in order to
economically obtain software that is reliable and works efficiently on real
machines
 The systematic application of scientific and technological knowledge,
methods, and experience to the design, implementation, testing, and
documentation of software
Software Engineering
• A well engineered Software will be reliable, user interface user friendly ,
good performance, better quality and cost effective. If there is unlimited
resource and time any organization can develop any software.
• Software Engineering has a relationship with economy. For any
engineering product economic feasibility is checked. Software Engineering
challenge is to make software within limited time and budget.
• Conflict arises when balancing all these requirement necessary for good
engineered software . They need to perform a Balancing act between
these requirement. For example: User friendliness and efficiency ,
performance and quality. Software Engineering challenge is to make a
proper balance between this requirement
Well Engineering Software
 Computer science is concerned with theories and methods that underlie
computers and software system whereas software engineering is
concerned with practical problem to produce software using knowledge of
Computer Science
 All software engineer should have minimum knowledge of computer
science
Software Engineering and computer science
 According to Software Engineering, Software process means the set of
activities that leads to produce a software product
 Four fundamental processes :
• Software specification, where customers and engineers define the
software that is to be produced and the constraints on its operation.
• Software development, where the software is designed and
programmed.
• Software validation, where the software is checked to ensure that it
is what the customer requires.
• Software evolution, where the software is modified to reflect
changing customer and market requirements.
Software Process
Essential Attributes of Good Software
• 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 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 utilization, 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.
Software Engineering Diversity
 According to software Engineering there are many different types of
application :
• Stand-alone applications These are application systems that run on a local
computer, such as a PC and do not need to be connected to a network.
Examples : office applications on a PC, CAD programs, photo manipulation
software, etc.
• Interactive transaction-based applications These are applications that
execute on a remote computer and that are accessed by users from their
own PCs or terminals. Obviously, these include web applications such as e-
commerce applications , mail and photo sharing
• Embedded control systems These are software control systems that
control and manage hardware devices. Examples of embedded systems
include the software in a mobile (cell) phone, software that controls anti-
lock braking in a car, and software in a microwave oven to control the
cooking process.
Software Engineering Diversity
• Batch processing systems These are business systems that are designed to
process data in large batches. Examples: billing systems, such as phone
billing systems, and salary payment systems
• Entertainment systems These are systems that are primarily for personal
use and which are intended to entertain the user
• Systems for modeling and simulation These are systems that are
developed by scientists and engineers to model physical processes or
situations. These are often computationally intensive and require high-
performance parallel systems for execution.
• Data collection systems These are systems that collect data from their
environment using a set of sensors and send that data to other systems for
processing.
Software Costing
 Cost may depends on economic condition, culture, labor costing of a
country
 Cost distribution depends on different activities in the software process
and the type of software product.
 Depending on the nature of software cost varies
 Two types of software :
• Off the shelf: Ready product and open for global market i.e.
Microsoft office, games etc.
• Be-spoke : Developed for a particular company for particular
requirement. i.e. Payroll management, inventory management
Key Challenges of Software Engineering
 Heterogeneity challenge
Developing techniques for building dependable software that is flexible
enough to cope different kind of support system. i.e. integrate new
software with old system written in different language
 Delivery Challenge
shortening delivery times of large and complex system without
compromising system quality
 Trust Challenge
Develop technique that demonstrate that software can be trusted by the
user
Software Engineering and Web
 The development of the World Wide Web has had a profound effect on all
of our lives
 Around 2000, the Web started to evolve and more and more functionality
was added to browsers
 Instead of writing software and deploying it on users’ PCs, the software
was deployed on a web server
 It is much cheaper to change and upgrade the software, as there was no
need to install the software on every PC
 The next stage in the development of web-based systems was the notion
of web services
 ‘computing clouds’ concept is introduced i.e. web-based mail
Software Engineering Ethics
• Like other engineering disciplines, software engineering is carried out
within a social and legal framework that limits the freedom of people
working in that area
• As a software engineer, You must also behave in an ethical and morally
responsible way
• According to IEEE-CS/ ACM join taskforce software engineer should follow
eight principles:
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.
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.
Thank You

Software Engineering

  • 1.
    Software Engineering &Information System Design Course Code: CSE411 CSE, East West University
  • 2.
    Course Instructor  TanniMittra, Lecturer, EWU • M.Sc in CSE – BUET • B.Sc in CSE – Khulna University  Previous Employment • Associate Manager (2012- 2016) Software Development and Customization The City Bank Limited
  • 3.
    Course Information  Classweb Page: • https://sites.google.com/site/mittratanni/cse411  Textbook: • Software Engineering, Ian Sommerville • Software Engineering, Roger S. Pressman • Intelligent Software Systems Development, Paul Harmon  Lecture: ST, 10:10 am – 11:40 am MW, 8.30 am -10.00 am  Mark Distribution • Class Participation 5% • Quiz 10% • 1st Mid Term Exam 20% • 2nd Mid Term Exam 20% • Final Exam 25% • Lab 20%
  • 4.
    Objectives of course Understand Software Engineering: • Build complex software systems in the context of frequent change  Understand how to • produce a high quality software system within time • while dealing with complexity and change  Acquire technical knowledge of Software Engineering  Acquire managerial knowledge  Understand the Software Lifecycle • Process vs Product • Learn about different software lifecycles
  • 5.
    Chapter 1- Introduction TopicCovered  Software and Software Engineering  Why Software Engineering is Important  Types of Software Product  Essential attributes of good software  Software Engineering Diversity  Fundamentals applied to software  Software engineering and the Web  Software Engineering Ethics
  • 6.
    What is Software?  Software is a general term for the various kinds of programs used to operate computers and related devices with all its associated documents and configuration data  A program is a specific set of ordered operations for a computer to perform  Software is a collection of instructions that enable the user to interact with a computer, its hardware, or perform tasks  For example, • without your Internet browser, you could not surf the Internet or read this page • without an operating system, the browser could not run on your computer
  • 7.
     Two fundamentaltypes of software product : • Generic Product These types of software are produced by the development organization and sold on open market to any customer who is able to buy them. Example: any software for PCs i.e. word processor, editing tools, drawing package etc. • Customized Product These type of software are produced by software developer or organization for a particular type of customer. Example : air traffic control systems, Auction system, card payment software etc. Types of Software
  • 8.
     We can’trun the modern world without software • Business data analysis i.e Microsoft Excel, Scientific Investigation i.e. in bio-informatics for DNA decoding, different types of game, Car equipment, electronic devices e.t.c  Growth of software has a great impact on economical activity of a country  World wide software has economical impact of trillion of dollar  It involves number of people and money all over the world Importance of Software
  • 9.
    • Productive useof scientific knowledge by using different innovative ideas and techniques • Based on scientific rules and techniques. For example: Civil Engineering, Mechanical Engineering, Electrical Engineering works based on physics • Physics is not engineering but effectively used in building, motor, electrical engine • Like other engineering software engineering is based on computer science • Different knowledge of Computer Science is effectively used for software development i.e. data structure, algorithm What is Engineering?
  • 10.
    Difference between Softwareand other Systems  Software is developed not manufacture. • In manufacturing the creation of a product is heavily process driven and develop a finish and companies achieve 99.99966% defect free products, But in software we may have processes for source control, code review, check in sheets, requirements gathering, the SDLC, etc. But executing those processes does not in and of itself create a finished product.  Software does not wear out
  • 11.
    Difference between Softwareand other Systems  Frequency of changes in software in a big component based construction range i.e. fundamental change, enhancement of feature, interface change  Most software development is moving towards component based construction
  • 12.
    History of SoftwareEngineering  Earlier in 1950 when digital computer created and used then software used only for some scientific applications or processing sensor data.  In 1960 changes in hardware. New hardware i.e. computer available with new technique. So software became more complex and big. Hard to write. Tools that were used in previous software not applicable for this type of software.  The term software engineering used by Margaret Hamilton was used in 1968 as a title for the world's first conference called the ‘software crisis’ on software engineering, sponsored and facilitated by NATO (North Atlantic Treaty Organization) .  Throughout the 1970s and 1980s, a variety of new software engineering techniques and methods were developed, such as structured programming, information hiding and object-oriented development.  In 1984, the Software Engineering Institute (SEI) was established as a federally funded research and development center of software engineering
  • 13.
     Software engineeringis the application of engineering to the design, development, implementation and maintenance of software in a systematic method  An engineering discipline that is concerned with all aspects of software production  The establishment and use of sound engineering principles in order to economically obtain software that is reliable and works efficiently on real machines  The systematic application of scientific and technological knowledge, methods, and experience to the design, implementation, testing, and documentation of software Software Engineering
  • 14.
    • A wellengineered Software will be reliable, user interface user friendly , good performance, better quality and cost effective. If there is unlimited resource and time any organization can develop any software. • Software Engineering has a relationship with economy. For any engineering product economic feasibility is checked. Software Engineering challenge is to make software within limited time and budget. • Conflict arises when balancing all these requirement necessary for good engineered software . They need to perform a Balancing act between these requirement. For example: User friendliness and efficiency , performance and quality. Software Engineering challenge is to make a proper balance between this requirement Well Engineering Software
  • 15.
     Computer scienceis concerned with theories and methods that underlie computers and software system whereas software engineering is concerned with practical problem to produce software using knowledge of Computer Science  All software engineer should have minimum knowledge of computer science Software Engineering and computer science
  • 16.
     According toSoftware Engineering, Software process means the set of activities that leads to produce a software product  Four fundamental processes : • Software specification, where customers and engineers define the software that is to be produced and the constraints on its operation. • Software development, where the software is designed and programmed. • Software validation, where the software is checked to ensure that it is what the customer requires. • Software evolution, where the software is modified to reflect changing customer and market requirements. Software Process
  • 17.
    Essential Attributes ofGood Software • 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 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 utilization, 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.
  • 18.
    Software Engineering Diversity According to software Engineering there are many different types of application : • Stand-alone applications These are application systems that run on a local computer, such as a PC and do not need to be connected to a network. Examples : office applications on a PC, CAD programs, photo manipulation software, etc. • Interactive transaction-based applications These are applications that execute on a remote computer and that are accessed by users from their own PCs or terminals. Obviously, these include web applications such as e- commerce applications , mail and photo sharing • Embedded control systems These are software control systems that control and manage hardware devices. Examples of embedded systems include the software in a mobile (cell) phone, software that controls anti- lock braking in a car, and software in a microwave oven to control the cooking process.
  • 19.
    Software Engineering Diversity •Batch processing systems These are business systems that are designed to process data in large batches. Examples: billing systems, such as phone billing systems, and salary payment systems • Entertainment systems These are systems that are primarily for personal use and which are intended to entertain the user • Systems for modeling and simulation These are systems that are developed by scientists and engineers to model physical processes or situations. These are often computationally intensive and require high- performance parallel systems for execution. • Data collection systems These are systems that collect data from their environment using a set of sensors and send that data to other systems for processing.
  • 20.
    Software Costing  Costmay depends on economic condition, culture, labor costing of a country  Cost distribution depends on different activities in the software process and the type of software product.  Depending on the nature of software cost varies  Two types of software : • Off the shelf: Ready product and open for global market i.e. Microsoft office, games etc. • Be-spoke : Developed for a particular company for particular requirement. i.e. Payroll management, inventory management
  • 21.
    Key Challenges ofSoftware Engineering  Heterogeneity challenge Developing techniques for building dependable software that is flexible enough to cope different kind of support system. i.e. integrate new software with old system written in different language  Delivery Challenge shortening delivery times of large and complex system without compromising system quality  Trust Challenge Develop technique that demonstrate that software can be trusted by the user
  • 22.
    Software Engineering andWeb  The development of the World Wide Web has had a profound effect on all of our lives  Around 2000, the Web started to evolve and more and more functionality was added to browsers  Instead of writing software and deploying it on users’ PCs, the software was deployed on a web server  It is much cheaper to change and upgrade the software, as there was no need to install the software on every PC  The next stage in the development of web-based systems was the notion of web services  ‘computing clouds’ concept is introduced i.e. web-based mail
  • 23.
    Software Engineering Ethics •Like other engineering disciplines, software engineering is carried out within a social and legal framework that limits the freedom of people working in that area • As a software engineer, You must also behave in an ethical and morally responsible way • According to IEEE-CS/ ACM join taskforce software engineer should follow eight principles: 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. 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.
  • 24.