SlideShare a Scribd company logo
1 of 20
Overview of Software
Engineering Principles
SCPS311 Lectures Series
Software Process (Personal or
Organizational)
• Problem analysis Understanding the nature of the problem to be solved
• Requirements elicitation Determining exactly what the program must do
• Software specification Specifying what the program must do (the
functional requirements) and the constraints on the solution approach
(non-functional requirements, such as what language to use)
• High- and low-level design Recording how the program meets the
requirements, from the “big picture” overview to the detailed design
• Implementation of the design Coding a program in a computer language
• Testing and verification Detecting and fixing errors and demonstrating the
correctness of the program
• Delivery Turning over the tested program to the customer or user (or
instructor)
• Operation Actually using the program
• Maintenance Making changes to fix operational errors and to add or modify the
function of the program
Definition of Terms
• Software engineering The discipline devoted
to the design, production, and maintenance of
computer programs that are developed on
time and within cost estimates, using tools
that help to manage the size and complexity
of the resulting software products
• Software process A standard, integrated set of
software engineering tools and techniques
used on a project or by an organization
Programmer’s Toolbox
• Hardware
– One toolbox contains the hardware itself: the computers and their
peripheral devices (such as monitors, terminals, storage devices, and
printers), on which and for which we develop software.
• Software
– A second toolbox contains various software tools: operating systems,
editors, compilers, interpreters, debugging programs, test-data
generators, and so on. You’ve used some of these tools already.
• Ideaware
– A third toolbox is filled with the knowledge that software engineers
have collected over time. This box contains the algorithms that we use
to solve common programming problems, as well as data structures
for modelling the information processed by our programs.
Ideaware
• Ideaware contains programming methodologies,
such as object-oriented design, and software
concepts, including information hiding, data
encapsulation, and abstraction.
• It includes aids for creating designs such as CRC
(Classes, Responsibilities, and Collaborations)
cards and methods for describing designs such as
the UML (Unified Modelling Language).
• It also contains tools for measuring, evaluating,
and proving the correctness of our programs.
Goals of Quality Software
• Quality software is much more than a program
that accomplishes its task.
• A good program achieves the following goals:
– 1. It works.
– 2. It can be modified without excessive time and
effort.
– 3. It is reusable.
– 4. It is completed on time and within budget.
• It’s not easy to meet these goals, but they are all
important.
GOAL 1: Quality Software Works
• The software accomplishes its task, and it does it
correctly and completely.
• Requirements A statement of what is to be provided
by a computer system or software product
• Software specification A detailed description of the
function, inputs, processing, outputs, and special
requirements of a software product. It provides the
information needed to design and implement the
product.
• We develop programs that meet the requirements by
fulfilling software specifications.
How do you know when the program
is right?
• A program has to be
• complete: it should “do everything” specified
• correct: it should “do it right”
• usable: its user interface should be easy to work
with
• efficient: at least as efficient as “it needs to be”
Goal 2: Quality Software Can Be
Modified
• Software changes often and in all phases of its life
cycle. Knowing this, software engineers try to develop
programs that are easy to modify.
• What makes a program easy to modify? First, it should
be readable and understandable to humans. Before it
can be changed, it must be understood. A well-
designed, clearly written, well-documented program is
certainly easier for human readers to understand.
• Second, it should be able to withstand small changes
easily. The key idea is to partition your programs into
manageable pieces that work together to solve the
problem, yet are relatively independent.
Goal 3: Quality Software Is Reusable
• It takes time and effort to create quality software.
Therefore, it is important to receive as much value from the
software as possible.
• One way to save time and effort when building a software
solution is to reuse programs, classes, methods, and so on
from previous projects. By using previously designed and
tested code, you arrive at your solution sooner and with
less effort.
• Alternatively, when you create software to solve a problem,
it is sometimes possible to structure that software so it can
help solve future, related problems.
• By doing this, you are gaining more value from the software
created.
Creating reusable software does not
happen automatically
• It usually has a simple interface so that it can easily be
plugged into another system.
• When creating software to fulfil a narrow, specific function,
you can sometimes make the software more generally
useable with a minimal amount of extra effort.
• For example, if you are creating a routine that sorts a list of
integers into increasing order, you might generalize the
routine so that it can also sort other types of data.
• Furthermore, you could design the routine to accept the
desired sort order, increasing or decreasing, as a parameter.
• One of the main reasons for the rise in popularity of object-
oriented approaches is that they lend themselves to reuse.
• We’ll demonstrate this in this course (SCPS311).
Goal 4: Quality Software Is Completed
on Time and within Budget
• This is why Submitting an assignment late gets
penalized. In the business world, it is simply not
acceptable.
• The software for controlling a space launch must be
developed and tested before the launch can take place.
No control software, no launch.
• A patient database system for a new hospital must be
installed before the hospital can open.
• In such cases, the program doesn’t meet its
requirements if it isn’t ready when needed.
• “Time is money” may sound trite but failure to meet
deadlines is expensive. Somebody has to pay for it.
What can you do to meet your GOAL?
• Understand, design and Code using the
appropriate tools. Start with:
• Specification: Understanding the Problem
What is the First Step?
• No matter what programming design technique
you use, the first steps are the same.
• When the First Programming assignment of a
module is daunting, students will react in one of
the following ways to meet the deadline:
1. Panic and do nothing 39%
2. Panic and drop the course 30%
3. Sit down at the computer and begin typing 27%
4. Stop and think 4%
Understand the problem
• Read the assignment, and then read it again.
• Ask questions of your instructor to clarify the
assignment.
• Starting early affords you many opportunities
to ask questions;
• Starting the night before the program is due
leaves you no opportunity at all.
Problem with coding first and thinking
later
• It locks you into the first solution you think of,
which may not be the best approach.
• We have a natural tendency to believe that
once we’ve put something in writing, we have
invested too much in the idea to toss it out
and start over.
• As a programmer where do you begin?
• Start by writing detailed specification!!
The benefit of using what you have to
get what is expected
• Using the problem description, first write a complete definition of
the problem, including the details of the expected inputs and
outputs, the processing and error handling, and all the assumptions
about the problem.
• When you finish this task, you have a specification—a definition of
the problem that tells you what the program should do.
• In addition, the process of writing the specification brings to light
any holes in the requirements.
• For instance, are embedded blanks in the input significant or can
they be ignored? Do you need to check for errors in the input? On
what computer system(s) is your program to run? If you get the
answers to these questions at this stage, you can design and code
your program correctly from the start.
Operational Scenario
• Many software engineers make use of operational
scenarios to understand requirements.
• A scenario is a sequence of events for one execution of the
program. Here, for example, is a scenario that a designer
might consider when developing software for a bank’s
automated teller machine (ATM).
1. The customer inserts a bankcard.
2. The ATM reads the account number on the card.
3. The ATM requests a PIN (personal identification number) from
the customer.
4. The customer enters 5683.
5. The ATM successfully verifies the account number and PIN
combination.
ATM Scenario Continues
6. The ATM asks the customer to select a transaction
type (deposit, show balance,
withdrawal, or quit).
7. The customer selects show balance.
8. The ATM obtains the current account balance
($1,204.35) and displays it.
9. The ATM asks the customer to select a transaction
type (deposit, show balance, withdrawal, or quit).
10. The customer selects quit.
11. The ATM returns the customer’s bankcard.
Specification
• The specification clarifies the problem to be
solved.
• However, it also serves as an important piece of
program documentation. Sometimes it acts as a
contract between a customer and a programmer.
• Recommended program specification includes
the following sections:
• processing requirements
• sample inputs with expected outputs
• assumptions

More Related Content

Similar to Overview of Software Engineering Principles - SCPS311.pptx

unit 1.pptx regasts sthatbabs shshsbsvsbsh
unit 1.pptx regasts sthatbabs shshsbsvsbshunit 1.pptx regasts sthatbabs shshsbsvsbsh
unit 1.pptx regasts sthatbabs shshsbsvsbshsagarjsicg
 
5_6134023428304274682.pptx
5_6134023428304274682.pptx5_6134023428304274682.pptx
5_6134023428304274682.pptxgamingpro22
 
Software Development Life Cycle (SDLC )
Software Development Life Cycle (SDLC )Software Development Life Cycle (SDLC )
Software Development Life Cycle (SDLC )eshtiyak
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software EngineeringSADEED AMEEN
 
UNIT V - 1 SPM.pptx
UNIT V - 1 SPM.pptxUNIT V - 1 SPM.pptx
UNIT V - 1 SPM.pptxDevnath13
 
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).pptxAbcXyz302255
 
Software Development Methodologies.pptx
Software Development Methodologies.pptxSoftware Development Methodologies.pptx
Software Development Methodologies.pptxMohamedElshaikh10
 
Software Engineering _ Introduction
Software Engineering _ IntroductionSoftware Engineering _ Introduction
Software Engineering _ IntroductionThenmozhiK5
 
Software Project management
Software Project managementSoftware Project management
Software Project managementsameer farooq
 
C programming for Computing Techniques
C programming for Computing TechniquesC programming for Computing Techniques
C programming for Computing TechniquesAppili Vamsi Krishna
 
Lecture3.se.pptx
Lecture3.se.pptxLecture3.se.pptx
Lecture3.se.pptxAmna Ch
 
Agile Development | Agile Process Models
Agile Development | Agile Process ModelsAgile Development | Agile Process Models
Agile Development | Agile Process ModelsAhsan Rahim
 
COM1407: Structured Program Development
COM1407: Structured Program Development COM1407: Structured Program Development
COM1407: Structured Program Development Hemantha Kulathilake
 

Similar to Overview of Software Engineering Principles - SCPS311.pptx (20)

unit 1.pptx regasts sthatbabs shshsbsvsbsh
unit 1.pptx regasts sthatbabs shshsbsvsbshunit 1.pptx regasts sthatbabs shshsbsvsbsh
unit 1.pptx regasts sthatbabs shshsbsvsbsh
 
Software engineering
Software engineeringSoftware engineering
Software engineering
 
UNIT-I.pptx
UNIT-I.pptxUNIT-I.pptx
UNIT-I.pptx
 
Quality Software Development
Quality Software DevelopmentQuality Software Development
Quality Software Development
 
5_6134023428304274682.pptx
5_6134023428304274682.pptx5_6134023428304274682.pptx
5_6134023428304274682.pptx
 
Unit 1 OOSE
Unit 1 OOSEUnit 1 OOSE
Unit 1 OOSE
 
Cost estimation
Cost estimationCost estimation
Cost estimation
 
Software Development Life Cycle (SDLC )
Software Development Life Cycle (SDLC )Software Development Life Cycle (SDLC )
Software Development Life Cycle (SDLC )
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
 
UNIT V - 1 SPM.pptx
UNIT V - 1 SPM.pptxUNIT V - 1 SPM.pptx
UNIT V - 1 SPM.pptx
 
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 Development Methodologies.pptx
Software Development Methodologies.pptxSoftware Development Methodologies.pptx
Software Development Methodologies.pptx
 
Software Engineering _ Introduction
Software Engineering _ IntroductionSoftware Engineering _ Introduction
Software Engineering _ Introduction
 
Software Project management
Software Project managementSoftware Project management
Software Project management
 
C programming for Computing Techniques
C programming for Computing TechniquesC programming for Computing Techniques
C programming for Computing Techniques
 
Lecture3.se.pptx
Lecture3.se.pptxLecture3.se.pptx
Lecture3.se.pptx
 
3.pptx
3.pptx3.pptx
3.pptx
 
A Software Engineer
A Software EngineerA Software Engineer
A Software Engineer
 
Agile Development | Agile Process Models
Agile Development | Agile Process ModelsAgile Development | Agile Process Models
Agile Development | Agile Process Models
 
COM1407: Structured Program Development
COM1407: Structured Program Development COM1407: Structured Program Development
COM1407: Structured Program Development
 

Recently uploaded

Complet Documnetation for Smart Assistant Application for Disabled Person
Complet Documnetation   for Smart Assistant Application for Disabled PersonComplet Documnetation   for Smart Assistant Application for Disabled Person
Complet Documnetation for Smart Assistant Application for Disabled Personfurqan222004
 
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Sonam Pathan
 
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130  Available With RoomVIP Kolkata Call Girl Alambazar 👉 8250192130  Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Roomdivyansh0kumar0
 
Git and Github workshop GDSC MLRITM
Git and Github  workshop GDSC MLRITMGit and Github  workshop GDSC MLRITM
Git and Github workshop GDSC MLRITMgdsc13
 
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一z xss
 
Call Girls Service Adil Nagar 7001305949 Need escorts Service Pooja Vip
Call Girls Service Adil Nagar 7001305949 Need escorts Service Pooja VipCall Girls Service Adil Nagar 7001305949 Need escorts Service Pooja Vip
Call Girls Service Adil Nagar 7001305949 Need escorts Service Pooja VipCall Girls Lucknow
 
Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Paul Calvano
 
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书zdzoqco
 
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作ys8omjxb
 
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一Fs
 
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)Dana Luther
 
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)Christopher H Felton
 
Magic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptxMagic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptxMartaLoveguard
 
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With RoomVIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Roomishabajaj13
 
Contact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New DelhiContact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New Delhimiss dipika
 
PHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationPHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationLinaWolf1
 
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一Fs
 
Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170Sonam Pathan
 

Recently uploaded (20)

Complet Documnetation for Smart Assistant Application for Disabled Person
Complet Documnetation   for Smart Assistant Application for Disabled PersonComplet Documnetation   for Smart Assistant Application for Disabled Person
Complet Documnetation for Smart Assistant Application for Disabled Person
 
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
 
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130  Available With RoomVIP Kolkata Call Girl Alambazar 👉 8250192130  Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Room
 
Git and Github workshop GDSC MLRITM
Git and Github  workshop GDSC MLRITMGit and Github  workshop GDSC MLRITM
Git and Github workshop GDSC MLRITM
 
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
 
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
 
Call Girls Service Adil Nagar 7001305949 Need escorts Service Pooja Vip
Call Girls Service Adil Nagar 7001305949 Need escorts Service Pooja VipCall Girls Service Adil Nagar 7001305949 Need escorts Service Pooja Vip
Call Girls Service Adil Nagar 7001305949 Need escorts Service Pooja Vip
 
Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24
 
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
 
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
 
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
 
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
 
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
 
Magic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptxMagic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptx
 
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With RoomVIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Room
 
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Serviceyoung call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
 
Contact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New DelhiContact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New Delhi
 
PHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationPHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 Documentation
 
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
 
Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170
 

Overview of Software Engineering Principles - SCPS311.pptx

  • 1. Overview of Software Engineering Principles SCPS311 Lectures Series
  • 2. Software Process (Personal or Organizational) • Problem analysis Understanding the nature of the problem to be solved • Requirements elicitation Determining exactly what the program must do • Software specification Specifying what the program must do (the functional requirements) and the constraints on the solution approach (non-functional requirements, such as what language to use) • High- and low-level design Recording how the program meets the requirements, from the “big picture” overview to the detailed design • Implementation of the design Coding a program in a computer language • Testing and verification Detecting and fixing errors and demonstrating the correctness of the program • Delivery Turning over the tested program to the customer or user (or instructor) • Operation Actually using the program • Maintenance Making changes to fix operational errors and to add or modify the function of the program
  • 3. Definition of Terms • Software engineering The discipline devoted to the design, production, and maintenance of computer programs that are developed on time and within cost estimates, using tools that help to manage the size and complexity of the resulting software products • Software process A standard, integrated set of software engineering tools and techniques used on a project or by an organization
  • 4. Programmer’s Toolbox • Hardware – One toolbox contains the hardware itself: the computers and their peripheral devices (such as monitors, terminals, storage devices, and printers), on which and for which we develop software. • Software – A second toolbox contains various software tools: operating systems, editors, compilers, interpreters, debugging programs, test-data generators, and so on. You’ve used some of these tools already. • Ideaware – A third toolbox is filled with the knowledge that software engineers have collected over time. This box contains the algorithms that we use to solve common programming problems, as well as data structures for modelling the information processed by our programs.
  • 5. Ideaware • Ideaware contains programming methodologies, such as object-oriented design, and software concepts, including information hiding, data encapsulation, and abstraction. • It includes aids for creating designs such as CRC (Classes, Responsibilities, and Collaborations) cards and methods for describing designs such as the UML (Unified Modelling Language). • It also contains tools for measuring, evaluating, and proving the correctness of our programs.
  • 6. Goals of Quality Software • Quality software is much more than a program that accomplishes its task. • A good program achieves the following goals: – 1. It works. – 2. It can be modified without excessive time and effort. – 3. It is reusable. – 4. It is completed on time and within budget. • It’s not easy to meet these goals, but they are all important.
  • 7. GOAL 1: Quality Software Works • The software accomplishes its task, and it does it correctly and completely. • Requirements A statement of what is to be provided by a computer system or software product • Software specification A detailed description of the function, inputs, processing, outputs, and special requirements of a software product. It provides the information needed to design and implement the product. • We develop programs that meet the requirements by fulfilling software specifications.
  • 8. How do you know when the program is right? • A program has to be • complete: it should “do everything” specified • correct: it should “do it right” • usable: its user interface should be easy to work with • efficient: at least as efficient as “it needs to be”
  • 9. Goal 2: Quality Software Can Be Modified • Software changes often and in all phases of its life cycle. Knowing this, software engineers try to develop programs that are easy to modify. • What makes a program easy to modify? First, it should be readable and understandable to humans. Before it can be changed, it must be understood. A well- designed, clearly written, well-documented program is certainly easier for human readers to understand. • Second, it should be able to withstand small changes easily. The key idea is to partition your programs into manageable pieces that work together to solve the problem, yet are relatively independent.
  • 10. Goal 3: Quality Software Is Reusable • It takes time and effort to create quality software. Therefore, it is important to receive as much value from the software as possible. • One way to save time and effort when building a software solution is to reuse programs, classes, methods, and so on from previous projects. By using previously designed and tested code, you arrive at your solution sooner and with less effort. • Alternatively, when you create software to solve a problem, it is sometimes possible to structure that software so it can help solve future, related problems. • By doing this, you are gaining more value from the software created.
  • 11. Creating reusable software does not happen automatically • It usually has a simple interface so that it can easily be plugged into another system. • When creating software to fulfil a narrow, specific function, you can sometimes make the software more generally useable with a minimal amount of extra effort. • For example, if you are creating a routine that sorts a list of integers into increasing order, you might generalize the routine so that it can also sort other types of data. • Furthermore, you could design the routine to accept the desired sort order, increasing or decreasing, as a parameter. • One of the main reasons for the rise in popularity of object- oriented approaches is that they lend themselves to reuse. • We’ll demonstrate this in this course (SCPS311).
  • 12. Goal 4: Quality Software Is Completed on Time and within Budget • This is why Submitting an assignment late gets penalized. In the business world, it is simply not acceptable. • The software for controlling a space launch must be developed and tested before the launch can take place. No control software, no launch. • A patient database system for a new hospital must be installed before the hospital can open. • In such cases, the program doesn’t meet its requirements if it isn’t ready when needed. • “Time is money” may sound trite but failure to meet deadlines is expensive. Somebody has to pay for it.
  • 13. What can you do to meet your GOAL? • Understand, design and Code using the appropriate tools. Start with: • Specification: Understanding the Problem
  • 14. What is the First Step? • No matter what programming design technique you use, the first steps are the same. • When the First Programming assignment of a module is daunting, students will react in one of the following ways to meet the deadline: 1. Panic and do nothing 39% 2. Panic and drop the course 30% 3. Sit down at the computer and begin typing 27% 4. Stop and think 4%
  • 15. Understand the problem • Read the assignment, and then read it again. • Ask questions of your instructor to clarify the assignment. • Starting early affords you many opportunities to ask questions; • Starting the night before the program is due leaves you no opportunity at all.
  • 16. Problem with coding first and thinking later • It locks you into the first solution you think of, which may not be the best approach. • We have a natural tendency to believe that once we’ve put something in writing, we have invested too much in the idea to toss it out and start over. • As a programmer where do you begin? • Start by writing detailed specification!!
  • 17. The benefit of using what you have to get what is expected • Using the problem description, first write a complete definition of the problem, including the details of the expected inputs and outputs, the processing and error handling, and all the assumptions about the problem. • When you finish this task, you have a specification—a definition of the problem that tells you what the program should do. • In addition, the process of writing the specification brings to light any holes in the requirements. • For instance, are embedded blanks in the input significant or can they be ignored? Do you need to check for errors in the input? On what computer system(s) is your program to run? If you get the answers to these questions at this stage, you can design and code your program correctly from the start.
  • 18. Operational Scenario • Many software engineers make use of operational scenarios to understand requirements. • A scenario is a sequence of events for one execution of the program. Here, for example, is a scenario that a designer might consider when developing software for a bank’s automated teller machine (ATM). 1. The customer inserts a bankcard. 2. The ATM reads the account number on the card. 3. The ATM requests a PIN (personal identification number) from the customer. 4. The customer enters 5683. 5. The ATM successfully verifies the account number and PIN combination.
  • 19. ATM Scenario Continues 6. The ATM asks the customer to select a transaction type (deposit, show balance, withdrawal, or quit). 7. The customer selects show balance. 8. The ATM obtains the current account balance ($1,204.35) and displays it. 9. The ATM asks the customer to select a transaction type (deposit, show balance, withdrawal, or quit). 10. The customer selects quit. 11. The ATM returns the customer’s bankcard.
  • 20. Specification • The specification clarifies the problem to be solved. • However, it also serves as an important piece of program documentation. Sometimes it acts as a contract between a customer and a programmer. • Recommended program specification includes the following sections: • processing requirements • sample inputs with expected outputs • assumptions