SlideShare a Scribd company logo
1 of 41
Topics in Computing
Lecture 3
Introduction to Software Engineering
College of Computers and Information Systems
1. Objectives
2. Background
3. Main Concepts of Software Engineering
4. Importance of Software Engineering
5. History of Software Engineering
6. Software Process
7. Different Types of Process Models
8. Example of Software Engineering Tools
9. Ethical Aspects
10. Careers and Challenges
11. Activity
Outline
Objectives
The objectives of this week is :
1. Understand the main software engineering concepts, principles, and
essential processes of the SDLC
2. Understand the development of different types of software
3. Understand ethical and issues that are important for software engineers
4. Able to learn about a set of examples and challenges
Background
• Software engineering is essential for the functioning of government, society,
and national and international businesses and institutions
• We can’t run the modern world without software. National infrastructures and
utilities are controlled by computer-based systems
• There are many different types of a software system, ranging from simple
embedded systems to complex, worldwide information systems
Main Concepts
• Engineering: is the application of scientific and practical knowledge in order to invent,
design, build, maintain, and improve systems, process, etc.
• Engineering: is about getting results of the required quality within schedule and budget.
This often involves making compromises—engineers cannot be perfectionists.
• People writing programs for themselves, however, can spend as much time as they
wish on the program development.
• Software: is the collection of integrated programs.
• Software: consists of carefully organized instructions and code written by
programmers in any of various special computer languages.
Main Concepts
• Software Engineering: According to IEEE’s software engineering can be
defined as the application of systematic, disciplined, quantifiable approach to
the development , operation, and maintenance of software, and the study of
these approaches, that is the application of engineering to software.
• Software Development Method: is a method or technique used when
developing software. It is a broad concept that includes various software
development phases such as design, development and testing. This is also
known as the Systems Development Life Cycle (SDLC).
The difference between software engineering , computer science, and
?computer engineering
• Computer science focuses on theory and fundamentals;
• Software engineering is concerned with the practicalities of developing and delivering
useful software.
• Computer 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.
Importance of Software Engineering
Software engineering is intended to support professional software development rather
than individual programming. It includes techniques that support program specification,
design, and evolution, none of which are normally relevant for personal software
development.
Software engineering is essential for two reasons:
1.More and more, individuals and society rely on advanced software systems. We need
to produce reliable and trustworthy systems economically and quickly.
2.It is usually cheaper, in the long run, to use software engineering methods and
techniques for professional software systems rather than just writing programs as a
personal programming project.
3.Failure to use the software engineering method leads to higher costs for testing,
quality assurance, and long-term maintenance.
History of Software Engineering
• The notion of software engineering was first proposed in 1968 at a conference
held to discuss what was then called the software crisis (Naur and Randell
1969).
• 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.
• Tools and standard notations were developed which are the basis of today’s
software engineering.
Software Process Activities
1. Software specification, where customers and engineers define the software
that is to be produced and the constraints on its operation.
2. Software development, where the software is designed and programmed.
3. Software validation, where the software is checked to ensure that it is what
the customer requires.
4. Software evolution, where the software is modified to reflect changing
customer and market requirements.
Type of Software Models
• The waterfall model
• Plan-driven model. Separate and distinct phases of specification and development.
• Incremental development
• Specification, development and validation are interleaved. May be plan-driven or agile.
• Integration and configuration
• The system is assembled from existing configurable components. May be plan-driven or
agile.
• In practice, most large systems are developed using a process that
incorporates elements from all of these models.
The Waterfall Model
Waterfall model
• There are separate identified phases in the waterfall model:
• Requirements analysis and definition
• System and software design
• Implementation and unit testing
• Integration and system testing
• Operation and maintenance
• The main drawback of the waterfall model is the difficulty of accommodating
change after the process is underway. In principle, a phase has to be complete
before moving onto the next phase.
Waterfall model
• Inflexible partitioning of the project into distinct stages makes it difficult to
respond to changing customer requirements.
• Therefore, this model is only appropriate when the requirements are well-understood and
changes will be fairly limited during the design process.
• Few business systems have stable requirements.
• The waterfall model is mostly used for large systems engineering projects where
a system is developed at several sites.
• In those circumstances, the plan-driven nature of the waterfall model helps coordinate the
work.
Incremental (Agile) Model
• Rapid development and delivery is now often the most important requirement for
software systems
• Businesses operate in a fast-changing requirement, and it is practically impossible
to produce a set of stable software requirements
• Software has to evolve quickly to reflect changing business needs.
• Plan-driven development is essential for some types of system but does not meet
these business needs.
• Agile development methods emerged in the late 1990s whose aim was to radically
reduce the delivery time for working software systems
Incremental (Agile) Model
• Program specification, design and implementation are inter-leaved
• The system is developed as a series of versions or increments with
stakeholders involved in version specification and evaluation
• Frequent delivery of new versions for evaluation
• Extensive tool support (e.g. automated testing
development.
tools) used to support
• Minimal documentation – focus on working code
Plan-Driven vs Agile Development
Plan-Driven vs Agile Development
• Plan-driven development
• A plan-driven approach to software engineering is based around separate
development stages with the outputs to be produced at each of these
stages planned in advance.
• Not necessarily waterfall model – plan-driven, incremental development is
possible
• Iteration occurs within activities.
• Agile development
• Specification, design, implementation and testing are inter-leaved and the
outputs from the development process are decided through a process of
negotiation during the software development process.
Agile Development types
1. Scrum Cycle
Agile Development types (cont.)
Scrum Cycle :
• Sprints are fixed length, normally 2–4 weeks.
• The starting point for planning is the product backlog, which is the list of work
to be done on the project.
• The selection phase involves all of the project team who work with the
customer to select the features and functionality from the product backlog to
be developed during the sprint.
Agile Development types (cont.)
2. Extreme programming (XP)
• A very influential agile method, developed in the late 1990s, that introduced a range of
agile development techniques.
• Extreme Programming (XP) takes an ‘extreme’ approach to iterative development.
• New versions may be built several times per day;
• Increments are delivered to customers every 2 weeks;
• All tests must be run for every build and the build is only accepted if tests run successfully.
The extreme programming cycle
Application types
1. Stand-alone applications
• These are application systems that run on a local computer, such as a PC.
They include all necessary functionality and do not need to be connected to a
network.
2. Interactive transaction-based applications
• Applications that execute on a remote computer and are accessed by users
from their own PCs or terminals. These include web applications such as e-
commerce applications.
Application types
3. Embedded control systems
• These are software control systems that control and manage hardware
devices. Numerically, there are probably more embedded systems than any
other type of system.
Batch processing systems. 4
These are business systems that are designed to process data in large batches.
.They process large numbers of individual inputs to create corresponding outputs
Application types
Entertainment systems .5
These are systems that are primarily for personal use, and which are intended to
. entertain the user
Systems for modelling and simulation. 6
These are systems that are developed by scientists and engineers to model
.physical processes or situations, which include many, separate, interacting objects
Application types
7. 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.
8. Systems of systems
These are systems that are composed of a number of other software systems.
Software development tools
Software development tools are programs that are used to support software
engineering process activities. These tools include requirements management
tools, design editors, refactoring support tools, compilers, debuggers, bug
trackers, and system building tools.
Software tools provide process support by automating some process activities
and by providing information about the software that is being developed.
Software development tools
For example:
• The development of graphical system models as part of the requirements
specification or the software design.
• The generation of code from these graphical models.
• The generation of user interfaces from a graphical interface description that is
created interactively by the user.
• Program debugging through the provision of information about an executing
program.
Software development tools
• The automated translation of programs written using an old version of a
programming language to a more recent version.
✔ Tools may be combined within a framework called an Interactive Development
Environment or IDE. This provides a common set of facilities that tools can use
so that it is easier for tools to communicate and operate in an integrated way.
Careers
•Project Manager
•Systems Analyst
•System Designer
•Software Testing Engineer
•Software Developer Engineer
• Estimation Manager
• Process Control Specialist
Software Engineering Ethics
• As a software engineer, you must accept that your job involves wider
responsibilities than simply the application of technical skills. You must also
behave in an ethical and morally responsible way if you are to be respected as
a professional engineer.
• It goes without saying that you should uphold normal standards of honesty and
integrity. You should not use your skills and abilities to behave in a dishonest
way or in a way that will bring disrepute to the software engineering profession.
• However, there are areas where standards of acceptable behavior are not
bound by laws but by the more tenuous notion of professional responsibility.
Software Engineering Ethics
Some of ethical areas are:
1.Confidentiality You should normally respect the confidentiality of your
employers or clients regardless of whether or not a formal confidentiality
agreement has been signed.
2.Competence You should not misrepresent your level of competence. You
should not knowingly accept work that is outside your competence.
Software Engineering Ethics
3.Intellectual property rights You should be aware of local laws governing the
use of intellectual property such as patents and copyright. You should be careful
to ensure that the intellectual property of employers and clients is protected.
4.Computer misuse You should not use your technical skills to misuse other
people’s computers. Computer misuse ranges from relatively trivial (game
playing on an employer’s machine) to extremely serious (dissemination of viruses
or other malware).
Challenges
1. The rapid advancement of technology
2. Increasing customer demands in the development stage
3. Time limitation
4. Limited infrastructure/ resources
5. Understanding the large and complex system requirements is difficult
6. Undefined system boundaries
7. Customers are not clear about their needs
Challenges
8. Conflicting requirements
9. Partitioning the system suitably to reduce complexity
10. Validating and tracing requirements
11. Identifying critical requirements
12. Resolving the "to be determined" requirements
13. Proper documentation, proper meetings time, and budget constraints
•
Activity
Video:
https://www.youtube.com/watch?v=VcZpe7okvqg
https://www.youtube.com/watch?v=6I2-AgsQ7CE&t=13s
Discussion Group
From your opinion
After you understand the different types of software methods, what is the most
successful and appropriate method we should apply in our project?
Summary of the Chapter
• Software processes are the activities involved in producing a software system.
Software process models are abstract representations of these processes.
• General process models describe the organization of software processes.
• Examples of these general models include the ‘waterfall’ model, incremental
development, and reuse-oriented development.
Summary of the Chapter
• Software engineering is an engineering discipline that is concerned with all
aspects of software production.
• Agile methods are incremental development methods that focus on rapid
software development, frequent releases of the software, reducing process
overheads by minimizing documentation and producing high-quality code.
• Some points of the confidentiality for business owners that affect the level of
project efficiency
• Some challenges of software engineering.
Reference
• Software Engineering, 10th Edition, Ian Sommerville, 2018, ISBN-13:
978-9332582699.
• https://www.knowledgehut.com/blog/web-development/software-engineer-
challenges
!Thank You

More Related Content

Similar to Introduction to Software engineering ch03

ppt_se.bdfhrfykjyftiktgdukhydiyiuoyu8otrfu
ppt_se.bdfhrfykjyftiktgdukhydiyiuoyu8otrfuppt_se.bdfhrfykjyftiktgdukhydiyiuoyu8otrfu
ppt_se.bdfhrfykjyftiktgdukhydiyiuoyu8otrfu
tubashaikh26
 
Java learn from basic part chapter_01 short notes to understand the java quic...
Java learn from basic part chapter_01 short notes to understand the java quic...Java learn from basic part chapter_01 short notes to understand the java quic...
Java learn from basic part chapter_01 short notes to understand the java quic...
GaytriMate
 
process models- software engineering
process models- software engineeringprocess models- software engineering
process models- software engineering
Arun Nair
 
Introduction Software Engineering Basics-Module(01).pptx
Introduction Software Engineering Basics-Module(01).pptxIntroduction Software Engineering Basics-Module(01).pptx
Introduction Software Engineering Basics-Module(01).pptx
AbcXyz302255
 
Software Engineering Methodologies
Software Engineering MethodologiesSoftware Engineering Methodologies
Software Engineering Methodologies
Damian T. Gordon
 

Similar to Introduction to Software engineering ch03 (20)

Lecture 1.pptx
Lecture 1.pptxLecture 1.pptx
Lecture 1.pptx
 
ppt_se.bdfhrfykjyftiktgdukhydiyiuoyu8otrfu
ppt_se.bdfhrfykjyftiktgdukhydiyiuoyu8otrfuppt_se.bdfhrfykjyftiktgdukhydiyiuoyu8otrfu
ppt_se.bdfhrfykjyftiktgdukhydiyiuoyu8otrfu
 
SE
SESE
SE
 
Unit 1 importance ofsoftengg_b.tech iii year
Unit 1  importance ofsoftengg_b.tech iii yearUnit 1  importance ofsoftengg_b.tech iii year
Unit 1 importance ofsoftengg_b.tech iii year
 
Unit 1 introduction tosoftengg_mba tech ii year
Unit 1  introduction tosoftengg_mba tech ii yearUnit 1  introduction tosoftengg_mba tech ii year
Unit 1 introduction tosoftengg_mba tech ii year
 
Java learn from basic part chapter_01 short notes to understand the java quic...
Java learn from basic part chapter_01 short notes to understand the java quic...Java learn from basic part chapter_01 short notes to understand the java quic...
Java learn from basic part chapter_01 short notes to understand the java quic...
 
process models- software engineering
process models- software engineeringprocess models- software engineering
process models- software engineering
 
Unit_1(Software and Software Engineering).pptx
Unit_1(Software and Software Engineering).pptxUnit_1(Software and Software Engineering).pptx
Unit_1(Software and Software Engineering).pptx
 
Week_01-Intro to Software Engineering-1.ppt
Week_01-Intro to Software Engineering-1.pptWeek_01-Intro to Software Engineering-1.ppt
Week_01-Intro to Software Engineering-1.ppt
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
 
Software Development Life Cycle (SDLC )
Software Development Life Cycle (SDLC )Software Development Life Cycle (SDLC )
Software Development Life Cycle (SDLC )
 
ppt_se.pdf
ppt_se.pdfppt_se.pdf
ppt_se.pdf
 
MODULE 1 Software Product and Process_ SW ENGG 22CSE141.pdf
MODULE 1 Software Product and Process_ SW ENGG  22CSE141.pdfMODULE 1 Software Product and Process_ SW ENGG  22CSE141.pdf
MODULE 1 Software Product and Process_ SW ENGG 22CSE141.pdf
 
Introduction Software engineering
Introduction   Software engineeringIntroduction   Software engineering
Introduction Software engineering
 
Intoduction to software engineering part 2
Intoduction to software engineering part 2Intoduction to software engineering part 2
Intoduction to software engineering part 2
 
S.E Lec #1.pptx
S.E Lec #1.pptxS.E Lec #1.pptx
S.E Lec #1.pptx
 
Lecture1 (SE Introduction)
Lecture1 (SE Introduction)Lecture1 (SE Introduction)
Lecture1 (SE Introduction)
 
Introduction Software Engineering Basics-Module(01).pptx
Introduction Software Engineering Basics-Module(01).pptxIntroduction Software Engineering Basics-Module(01).pptx
Introduction Software Engineering Basics-Module(01).pptx
 
Software Engineering Methodologies
Software Engineering MethodologiesSoftware Engineering Methodologies
Software Engineering Methodologies
 
The Waterfall Model
The Waterfall ModelThe Waterfall Model
The Waterfall Model
 

Recently uploaded

obat aborsi Tarakan wa 081336238223 jual obat aborsi cytotec asli di Tarakan9...
obat aborsi Tarakan wa 081336238223 jual obat aborsi cytotec asli di Tarakan9...obat aborsi Tarakan wa 081336238223 jual obat aborsi cytotec asli di Tarakan9...
obat aborsi Tarakan wa 081336238223 jual obat aborsi cytotec asli di Tarakan9...
yulianti213969
 
Abortion pills in Riyadh Saudi Arabia (+966572737505 buy cytotec
Abortion pills in Riyadh Saudi Arabia (+966572737505 buy cytotecAbortion pills in Riyadh Saudi Arabia (+966572737505 buy cytotec
Abortion pills in Riyadh Saudi Arabia (+966572737505 buy cytotec
Abortion pills in Riyadh +966572737505 get cytotec
 
原件一样伦敦国王学院毕业证成绩单留信学历认证
原件一样伦敦国王学院毕业证成绩单留信学历认证原件一样伦敦国王学院毕业证成绩单留信学历认证
原件一样伦敦国王学院毕业证成绩单留信学历认证
pwgnohujw
 
如何办理(WashU毕业证书)圣路易斯华盛顿大学毕业证成绩单本科硕士学位证留信学历认证
如何办理(WashU毕业证书)圣路易斯华盛顿大学毕业证成绩单本科硕士学位证留信学历认证如何办理(WashU毕业证书)圣路易斯华盛顿大学毕业证成绩单本科硕士学位证留信学历认证
如何办理(WashU毕业证书)圣路易斯华盛顿大学毕业证成绩单本科硕士学位证留信学历认证
acoha1
 
如何办理(UCLA毕业证书)加州大学洛杉矶分校毕业证成绩单学位证留信学历认证原件一样
如何办理(UCLA毕业证书)加州大学洛杉矶分校毕业证成绩单学位证留信学历认证原件一样如何办理(UCLA毕业证书)加州大学洛杉矶分校毕业证成绩单学位证留信学历认证原件一样
如何办理(UCLA毕业证书)加州大学洛杉矶分校毕业证成绩单学位证留信学历认证原件一样
jk0tkvfv
 

Recently uploaded (20)

obat aborsi Tarakan wa 081336238223 jual obat aborsi cytotec asli di Tarakan9...
obat aborsi Tarakan wa 081336238223 jual obat aborsi cytotec asli di Tarakan9...obat aborsi Tarakan wa 081336238223 jual obat aborsi cytotec asli di Tarakan9...
obat aborsi Tarakan wa 081336238223 jual obat aborsi cytotec asli di Tarakan9...
 
Jual Obat Aborsi Bandung (Asli No.1) Wa 082134680322 Klinik Obat Penggugur Ka...
Jual Obat Aborsi Bandung (Asli No.1) Wa 082134680322 Klinik Obat Penggugur Ka...Jual Obat Aborsi Bandung (Asli No.1) Wa 082134680322 Klinik Obat Penggugur Ka...
Jual Obat Aborsi Bandung (Asli No.1) Wa 082134680322 Klinik Obat Penggugur Ka...
 
SCI8-Q4-MOD11.pdfwrwujrrjfaajerjrajrrarj
SCI8-Q4-MOD11.pdfwrwujrrjfaajerjrajrrarjSCI8-Q4-MOD11.pdfwrwujrrjfaajerjrajrrarj
SCI8-Q4-MOD11.pdfwrwujrrjfaajerjrajrrarj
 
Identify Rules that Predict Patient’s Heart Disease - An Application of Decis...
Identify Rules that Predict Patient’s Heart Disease - An Application of Decis...Identify Rules that Predict Patient’s Heart Disease - An Application of Decis...
Identify Rules that Predict Patient’s Heart Disease - An Application of Decis...
 
How to Transform Clinical Trial Management with Advanced Data Analytics
How to Transform Clinical Trial Management with Advanced Data AnalyticsHow to Transform Clinical Trial Management with Advanced Data Analytics
How to Transform Clinical Trial Management with Advanced Data Analytics
 
Credit Card Fraud Detection: Safeguarding Transactions in the Digital Age
Credit Card Fraud Detection: Safeguarding Transactions in the Digital AgeCredit Card Fraud Detection: Safeguarding Transactions in the Digital Age
Credit Card Fraud Detection: Safeguarding Transactions in the Digital Age
 
Abortion pills in Riyadh Saudi Arabia (+966572737505 buy cytotec
Abortion pills in Riyadh Saudi Arabia (+966572737505 buy cytotecAbortion pills in Riyadh Saudi Arabia (+966572737505 buy cytotec
Abortion pills in Riyadh Saudi Arabia (+966572737505 buy cytotec
 
原件一样伦敦国王学院毕业证成绩单留信学历认证
原件一样伦敦国王学院毕业证成绩单留信学历认证原件一样伦敦国王学院毕业证成绩单留信学历认证
原件一样伦敦国王学院毕业证成绩单留信学历认证
 
Sensing the Future: Anomaly Detection and Event Prediction in Sensor Networks
Sensing the Future: Anomaly Detection and Event Prediction in Sensor NetworksSensing the Future: Anomaly Detection and Event Prediction in Sensor Networks
Sensing the Future: Anomaly Detection and Event Prediction in Sensor Networks
 
MATERI MANAJEMEN OF PENYAKIT TETANUS.ppt
MATERI  MANAJEMEN OF PENYAKIT TETANUS.pptMATERI  MANAJEMEN OF PENYAKIT TETANUS.ppt
MATERI MANAJEMEN OF PENYAKIT TETANUS.ppt
 
Aggregations - The Elasticsearch "GROUP BY"
Aggregations - The Elasticsearch "GROUP BY"Aggregations - The Elasticsearch "GROUP BY"
Aggregations - The Elasticsearch "GROUP BY"
 
社内勉強会資料_Object Recognition as Next Token Prediction
社内勉強会資料_Object Recognition as Next Token Prediction社内勉強会資料_Object Recognition as Next Token Prediction
社内勉強会資料_Object Recognition as Next Token Prediction
 
如何办理(WashU毕业证书)圣路易斯华盛顿大学毕业证成绩单本科硕士学位证留信学历认证
如何办理(WashU毕业证书)圣路易斯华盛顿大学毕业证成绩单本科硕士学位证留信学历认证如何办理(WashU毕业证书)圣路易斯华盛顿大学毕业证成绩单本科硕士学位证留信学历认证
如何办理(WashU毕业证书)圣路易斯华盛顿大学毕业证成绩单本科硕士学位证留信学历认证
 
如何办理(UCLA毕业证书)加州大学洛杉矶分校毕业证成绩单学位证留信学历认证原件一样
如何办理(UCLA毕业证书)加州大学洛杉矶分校毕业证成绩单学位证留信学历认证原件一样如何办理(UCLA毕业证书)加州大学洛杉矶分校毕业证成绩单学位证留信学历认证原件一样
如何办理(UCLA毕业证书)加州大学洛杉矶分校毕业证成绩单学位证留信学历认证原件一样
 
Digital Marketing Demystified: Expert Tips from Samantha Rae Coolbeth
Digital Marketing Demystified: Expert Tips from Samantha Rae CoolbethDigital Marketing Demystified: Expert Tips from Samantha Rae Coolbeth
Digital Marketing Demystified: Expert Tips from Samantha Rae Coolbeth
 
Predictive Precipitation: Advanced Rain Forecasting Techniques
Predictive Precipitation: Advanced Rain Forecasting TechniquesPredictive Precipitation: Advanced Rain Forecasting Techniques
Predictive Precipitation: Advanced Rain Forecasting Techniques
 
Data Analysis Project Presentation : NYC Shooting Cluster Analysis
Data Analysis Project Presentation : NYC Shooting Cluster AnalysisData Analysis Project Presentation : NYC Shooting Cluster Analysis
Data Analysis Project Presentation : NYC Shooting Cluster Analysis
 
Bios of leading Astrologers & Researchers
Bios of leading Astrologers & ResearchersBios of leading Astrologers & Researchers
Bios of leading Astrologers & Researchers
 
Seven tools of quality control.slideshare
Seven tools of quality control.slideshareSeven tools of quality control.slideshare
Seven tools of quality control.slideshare
 
Identify Customer Segments to Create Customer Offers for Each Segment - Appli...
Identify Customer Segments to Create Customer Offers for Each Segment - Appli...Identify Customer Segments to Create Customer Offers for Each Segment - Appli...
Identify Customer Segments to Create Customer Offers for Each Segment - Appli...
 

Introduction to Software engineering ch03

  • 1. Topics in Computing Lecture 3 Introduction to Software Engineering College of Computers and Information Systems
  • 2. 1. Objectives 2. Background 3. Main Concepts of Software Engineering 4. Importance of Software Engineering 5. History of Software Engineering 6. Software Process 7. Different Types of Process Models 8. Example of Software Engineering Tools 9. Ethical Aspects 10. Careers and Challenges 11. Activity Outline
  • 3. Objectives The objectives of this week is : 1. Understand the main software engineering concepts, principles, and essential processes of the SDLC 2. Understand the development of different types of software 3. Understand ethical and issues that are important for software engineers 4. Able to learn about a set of examples and challenges
  • 4. Background • Software engineering is essential for the functioning of government, society, and national and international businesses and institutions • We can’t run the modern world without software. National infrastructures and utilities are controlled by computer-based systems • There are many different types of a software system, ranging from simple embedded systems to complex, worldwide information systems
  • 5. Main Concepts • Engineering: is the application of scientific and practical knowledge in order to invent, design, build, maintain, and improve systems, process, etc. • Engineering: is about getting results of the required quality within schedule and budget. This often involves making compromises—engineers cannot be perfectionists. • People writing programs for themselves, however, can spend as much time as they wish on the program development. • Software: is the collection of integrated programs. • Software: consists of carefully organized instructions and code written by programmers in any of various special computer languages.
  • 6. Main Concepts • Software Engineering: According to IEEE’s software engineering can be defined as the application of systematic, disciplined, quantifiable approach to the development , operation, and maintenance of software, and the study of these approaches, that is the application of engineering to software. • Software Development Method: is a method or technique used when developing software. It is a broad concept that includes various software development phases such as design, development and testing. This is also known as the Systems Development Life Cycle (SDLC).
  • 7. The difference between software engineering , computer science, and ?computer engineering • Computer science focuses on theory and fundamentals; • Software engineering is concerned with the practicalities of developing and delivering useful software. • Computer 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.
  • 8. Importance of Software Engineering Software engineering is intended to support professional software development rather than individual programming. It includes techniques that support program specification, design, and evolution, none of which are normally relevant for personal software development. Software engineering is essential for two reasons: 1.More and more, individuals and society rely on advanced software systems. We need to produce reliable and trustworthy systems economically and quickly. 2.It is usually cheaper, in the long run, to use software engineering methods and techniques for professional software systems rather than just writing programs as a personal programming project. 3.Failure to use the software engineering method leads to higher costs for testing, quality assurance, and long-term maintenance.
  • 9. History of Software Engineering • The notion of software engineering was first proposed in 1968 at a conference held to discuss what was then called the software crisis (Naur and Randell 1969). • 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. • Tools and standard notations were developed which are the basis of today’s software engineering.
  • 10. Software Process Activities 1. Software specification, where customers and engineers define the software that is to be produced and the constraints on its operation. 2. Software development, where the software is designed and programmed. 3. Software validation, where the software is checked to ensure that it is what the customer requires. 4. Software evolution, where the software is modified to reflect changing customer and market requirements.
  • 11. Type of Software Models • The waterfall model • Plan-driven model. Separate and distinct phases of specification and development. • Incremental development • Specification, development and validation are interleaved. May be plan-driven or agile. • Integration and configuration • The system is assembled from existing configurable components. May be plan-driven or agile. • In practice, most large systems are developed using a process that incorporates elements from all of these models.
  • 13. Waterfall model • There are separate identified phases in the waterfall model: • Requirements analysis and definition • System and software design • Implementation and unit testing • Integration and system testing • Operation and maintenance • The main drawback of the waterfall model is the difficulty of accommodating change after the process is underway. In principle, a phase has to be complete before moving onto the next phase.
  • 14. Waterfall model • Inflexible partitioning of the project into distinct stages makes it difficult to respond to changing customer requirements. • Therefore, this model is only appropriate when the requirements are well-understood and changes will be fairly limited during the design process. • Few business systems have stable requirements. • The waterfall model is mostly used for large systems engineering projects where a system is developed at several sites. • In those circumstances, the plan-driven nature of the waterfall model helps coordinate the work.
  • 15. Incremental (Agile) Model • Rapid development and delivery is now often the most important requirement for software systems • Businesses operate in a fast-changing requirement, and it is practically impossible to produce a set of stable software requirements • Software has to evolve quickly to reflect changing business needs. • Plan-driven development is essential for some types of system but does not meet these business needs. • Agile development methods emerged in the late 1990s whose aim was to radically reduce the delivery time for working software systems
  • 16. Incremental (Agile) Model • Program specification, design and implementation are inter-leaved • The system is developed as a series of versions or increments with stakeholders involved in version specification and evaluation • Frequent delivery of new versions for evaluation • Extensive tool support (e.g. automated testing development. tools) used to support • Minimal documentation – focus on working code
  • 17. Plan-Driven vs Agile Development
  • 18. Plan-Driven vs Agile Development • Plan-driven development • A plan-driven approach to software engineering is based around separate development stages with the outputs to be produced at each of these stages planned in advance. • Not necessarily waterfall model – plan-driven, incremental development is possible • Iteration occurs within activities. • Agile development • Specification, design, implementation and testing are inter-leaved and the outputs from the development process are decided through a process of negotiation during the software development process.
  • 20. Agile Development types (cont.) Scrum Cycle : • Sprints are fixed length, normally 2–4 weeks. • The starting point for planning is the product backlog, which is the list of work to be done on the project. • The selection phase involves all of the project team who work with the customer to select the features and functionality from the product backlog to be developed during the sprint.
  • 21. Agile Development types (cont.) 2. Extreme programming (XP) • A very influential agile method, developed in the late 1990s, that introduced a range of agile development techniques. • Extreme Programming (XP) takes an ‘extreme’ approach to iterative development. • New versions may be built several times per day; • Increments are delivered to customers every 2 weeks; • All tests must be run for every build and the build is only accepted if tests run successfully.
  • 23. Application types 1. Stand-alone applications • These are application systems that run on a local computer, such as a PC. They include all necessary functionality and do not need to be connected to a network. 2. Interactive transaction-based applications • Applications that execute on a remote computer and are accessed by users from their own PCs or terminals. These include web applications such as e- commerce applications.
  • 24. Application types 3. Embedded control systems • These are software control systems that control and manage hardware devices. Numerically, there are probably more embedded systems than any other type of system. Batch processing systems. 4 These are business systems that are designed to process data in large batches. .They process large numbers of individual inputs to create corresponding outputs
  • 25. Application types Entertainment systems .5 These are systems that are primarily for personal use, and which are intended to . entertain the user Systems for modelling and simulation. 6 These are systems that are developed by scientists and engineers to model .physical processes or situations, which include many, separate, interacting objects
  • 26. Application types 7. 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. 8. Systems of systems These are systems that are composed of a number of other software systems.
  • 27. Software development tools Software development tools are programs that are used to support software engineering process activities. These tools include requirements management tools, design editors, refactoring support tools, compilers, debuggers, bug trackers, and system building tools. Software tools provide process support by automating some process activities and by providing information about the software that is being developed.
  • 28. Software development tools For example: • The development of graphical system models as part of the requirements specification or the software design. • The generation of code from these graphical models. • The generation of user interfaces from a graphical interface description that is created interactively by the user. • Program debugging through the provision of information about an executing program.
  • 29. Software development tools • The automated translation of programs written using an old version of a programming language to a more recent version. ✔ Tools may be combined within a framework called an Interactive Development Environment or IDE. This provides a common set of facilities that tools can use so that it is easier for tools to communicate and operate in an integrated way.
  • 30. Careers •Project Manager •Systems Analyst •System Designer •Software Testing Engineer •Software Developer Engineer • Estimation Manager • Process Control Specialist
  • 31. Software Engineering Ethics • As a software engineer, you must accept that your job involves wider responsibilities than simply the application of technical skills. You must also behave in an ethical and morally responsible way if you are to be respected as a professional engineer. • It goes without saying that you should uphold normal standards of honesty and integrity. You should not use your skills and abilities to behave in a dishonest way or in a way that will bring disrepute to the software engineering profession. • However, there are areas where standards of acceptable behavior are not bound by laws but by the more tenuous notion of professional responsibility.
  • 32. Software Engineering Ethics Some of ethical areas are: 1.Confidentiality You should normally respect the confidentiality of your employers or clients regardless of whether or not a formal confidentiality agreement has been signed. 2.Competence You should not misrepresent your level of competence. You should not knowingly accept work that is outside your competence.
  • 33. Software Engineering Ethics 3.Intellectual property rights You should be aware of local laws governing the use of intellectual property such as patents and copyright. You should be careful to ensure that the intellectual property of employers and clients is protected. 4.Computer misuse You should not use your technical skills to misuse other people’s computers. Computer misuse ranges from relatively trivial (game playing on an employer’s machine) to extremely serious (dissemination of viruses or other malware).
  • 34. Challenges 1. The rapid advancement of technology 2. Increasing customer demands in the development stage 3. Time limitation 4. Limited infrastructure/ resources 5. Understanding the large and complex system requirements is difficult 6. Undefined system boundaries 7. Customers are not clear about their needs
  • 35. Challenges 8. Conflicting requirements 9. Partitioning the system suitably to reduce complexity 10. Validating and tracing requirements 11. Identifying critical requirements 12. Resolving the "to be determined" requirements 13. Proper documentation, proper meetings time, and budget constraints •
  • 37. Discussion Group From your opinion After you understand the different types of software methods, what is the most successful and appropriate method we should apply in our project?
  • 38. Summary of the Chapter • Software processes are the activities involved in producing a software system. Software process models are abstract representations of these processes. • General process models describe the organization of software processes. • Examples of these general models include the ‘waterfall’ model, incremental development, and reuse-oriented development.
  • 39. Summary of the Chapter • Software engineering is an engineering discipline that is concerned with all aspects of software production. • Agile methods are incremental development methods that focus on rapid software development, frequent releases of the software, reducing process overheads by minimizing documentation and producing high-quality code. • Some points of the confidentiality for business owners that affect the level of project efficiency • Some challenges of software engineering.
  • 40. Reference • Software Engineering, 10th Edition, Ian Sommerville, 2018, ISBN-13: 978-9332582699. • https://www.knowledgehut.com/blog/web-development/software-engineer- challenges