0% found this document useful (0 votes)
3 views16 pages

Bab 1. Software Engineering

The document outlines the principles of software engineering, focusing on the software design process, goals of quality software, and the importance of specifications and program design. It emphasizes the need for understanding the problem, writing detailed specifications, and employing various testing and verification techniques to ensure software quality. Key concepts such as abstraction, information hiding, and both functional and object-oriented design methodologies are also discussed.

Uploaded by

vinzzah24
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views16 pages

Bab 1. Software Engineering

The document outlines the principles of software engineering, focusing on the software design process, goals of quality software, and the importance of specifications and program design. It emphasizes the need for understanding the problem, writing detailed specifications, and employing various testing and verification techniques to ensure software quality. Key concepts such as abstraction, information hiding, and both functional and object-oriented design methodologies are also discussed.

Uploaded by

vinzzah24
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 16

Data Structure

BY
Riya Widayanti, S.Kom,
MMSI

1
BAB 1.
Software Engineering
Principles
„ Software design Process
- Goals of Quality Software
- Specification: Understanding
the Problem
- Writing detailed specifications
- Program Design

2
Goals
„ To be able to describe the general
activities in software life cycle
„ To be able to describe the goals for
“quality” software
„ To be able to explain the following
term: software requirements, software
specifications, algorithm, information
hiding, abstraction
„ To be able to understand several
source of program errors
„ To be able describe strategies to
prevent various categories of software
errors
„ To be able to specify the preconditions
and postconditions of program a
program segment or function

3
Goals
„ To be able to show how desk
checking, code walk-throughs, and
design and code inspections can
improve software quality and reduce
software effort
„ To be able to state several testing
goals and to indicate when each would
be appropriate
„ To be able to describe several
integration-testing strategies and to
indicate when each would be
appropriate
„ To be able to explain how program
verifications techniques can be applied
throughout the software development
process

4
Software Design
Process
„ The activities in the software “life
cycle”:
Problem analysis: understanding the nature
of the problem to be solved
Requirement definition: Specifying exactly
what the program must do
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
functions of the program

5
„ Software Engineering
A disciplined approach 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.

„ A Programmer has several toolboxes,


each containing tools that help to build
and shape a software product

Hardware:the computer and their peripheral


devices(such as monitor, terminals, storage
devices, and printers).
Software: operating system to control the
computer’s resources, text editors to help us
enter programs, compilers to translate high
level languages like c++ into something the
computer can execute, interactive debugging
programs, test data generators, and so on.
Ideaware: A third toolbox is filled with the
shared body of knowledge that programmers
have collected over time.

6
Goals of Quality Software
„ It works
„ It can be read and understood
„ It can be modified without excruciating time
and effort
„ It is completed on time and within budget

• Quality software Works


The program must do the task it was designer
to perform, and it must do it correctly and
completely.
Requirement: A statement of what is t be
provided by a computer system or software
product.
Software Specifications: A detailed descriptions
of the function, inputs, processing outputs,
and special requirements of software product.
It provides the information needed to design
and implement the program.

7
„ Quality Software can Be Read and
Understood

The first goal says that the computer must


execute the program as expected;this second
goal is more concerned with our ability to read
the program.

„ Quality software Can Be Modified


When does software need to modified?
- In the design phase
- In the coding phase
- In the testing phase
- In the maintenance phase

„ Quality Software is completed on time


within Budget

8
Specification:
Understanding the Problem
On the third day of class you are given a 12
description of Programming Assignment 1,
which must be running perfectly and turned in
by noon, a week from yesterday.
The responses listed here are typical of those given
by class of computer science student in such
a situation:
1. Panic (39 %)
2. Sit down at the computer and begin typing (
30 %)
3. Drop the course(27 %)
4. Stop and thing (4 %)

Resist the temptation though; the first step is to


think. Before you can up with a program
solution, you must understand the problem.
Read the assignment, read it again.

On the other hand, don’t agonize about all the


possibilities until the day before deadline.

9
Writing Detailed Specifications
A Formal definition of the problem your program
must solve, which tell you exactly what the
program should do.
In addition, the process writing the
specifications brings to light any holes in the
requirement.
For Example, is a scenario that a designer might
consider when developing the software for a
bank’s automated teller machine(ATM)

1. The customer inset bank card


2. The ATM reads the account number on the card
3. The ATM request PIN from the customer
4. The customers enter PIN
5. The ATM successfully verifies the account number
PIN combination
6. The ATM ask the customer to select a transaction
type( deposit, show balance, withdrawal, or quit)
7. The Customers select transaction.
8. …..
9. Idem 6
10. The customers select quit
11. The ATM return the customer’s bank card

10
Program Design
The detailed specification of the program tells
what the program do, but not how it does it.
„ Abstraction: A model of complex system that
includes only the details essential to
perspective of the viewer of the system.

• Information Hiding: The Practice of hiding the


details of function or data structure with the
goal of the controlling access to the details of
module or structure.
• Functional Decomposition
First the problem is broken into several large
task. Each of these task is in turn divided into
section, then the section are subdivided and
soon.
11
„ Let’s start the functional design for making a
cake
- Get ingredients
- Mix cake ingredients
- Bake
- Cool
- Apply icing

„ Object-Oriented Design
This methodology originated with development
of programs to simulate physical objects and
processes in the real world.
„ Object Class(class): The description of a group
of objects with similar properties and behaviors;
pattern for creating individual objects.
Illustrates some of the object classes that
participate in baking a cake.
Class Attributes Responsibilities
(Operations)
Oven Energy Source Turn On/Off
Size Set Desired
Temperature temperature
Number Racks

12
Bowl Capacity Add to
Current Amount
Egg Size Crack
Separate (white from
yolk)

„ Top-down design methods focus on the process


of transforming the input into output, resulting in
hierarchy of task.
„ Object oriented design focuses on the data
objects that are to be transformed, resulting in
hierarchy of objects.
„ The nouns became object, the verbs become
operations. In a functional design, the verbs are
the primary focus;in an object oriented design,
the nouns are primary focus.

13
Verification of
software Correctness
„ How do you know when your program meets
that goals? The simple answer is, test it.
„ Testing: The process if executing a program
with data sets designed to discover errors
„ Debugging: The process of removing known
errors
„ Program Verification: The Process of
determining the degree to which a software
product fulfills its specifications
„ Program Validation: The process of
determining the degree to which software
fulfills its intended purpose
„ Acceptance Test: The process of testing the
system in its real environment with real data.
„ Regression Testing: RE-execution of program
test after modifications have been made in
order to ensure that the program still works
correctly.

14
„ Robustness: The ability of a program to
recover following an error; the ability of a
program t continue to operate within its
environment.
„ Assertion: A logical proposition that can be
true or false
„ Preconditions: Assertions that must be true
entry into an operation or function for the post
conditions to be guaranteed
„ Post conditions: Assertions that state what
results are to be expected at the exit of an
operation or function, assuming that the
preconditions are true
„ Deskchecking: Tracing an execution of a
design or program on paper.
„ Walk-through: A verification method in which a
team performs a manual simulation of the
program or design.
„ Inspection: A verification method in which one
member of team reads the program or design
line and the other point out errors.

15
„ Unit testing: Testing a module or function by
itself.
„ Functional Domain; The set of valid input data
for a program or function
„ Black Box Testing: Testing a program or
function based on the possible input values,
treating the code as a “black box”.
„ Clear (white) box Testing: Testing a program
or function based on covering all of the
branches or paths of the code.
„ Branch: A code segment that is not always
executed; for example, a switch statement has
as many branches as there case labels
„ Path: A combination of branches that might be
traversed when a program or function is
executed.
„ Path Testing: A testing technique whereby the
tester tries to execute all possible paths in a
program or function.
„ Test plan: A document showing the test cases
planned for a program or module, their
purpose, inputs, expected outputs, and criteria
for success.

16

You might also like