Software Engineering: Solving a Loan Problem using FORTRAN - Prof. Rodman, Study notes of Computer Science

The process of software engineering through the development of a simple loan calculation program in fortran. The five-step process includes problem analysis and specification, data organization and algorithm design, program coding, execution and testing, and program maintenance. A detailed explanation of each step, including the use of pseudocode and actual fortran code.

Typology: Study notes

Pre 2010

Uploaded on 03/24/2009

kmcrippe
kmcrippe 🇺🇸

9 documents

1 / 13

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
SOFTWARE ENGINEERING
is
THE APPLICATION OF SCIENTIFICALLY
TESTED TECHNIQUES AND METHODOLOGIES
TO THE PROGRAMMING OF COMPUTERS.
DEVELOPING PROGRAMS IN FORTRAN
(WHAT YOU WILL BE DOING ALL
SEMESTER IN YOUR LAB) REQUIRES
FIVE BASIC STEPS:
TOP DOWN DESIGN
1. PROBLEM ANALYSIS AND
SPECIFICATION
2. DATA ORGANIZATION AND
ALGORITHM DESIGN
3. PROGRAM CODING
4. EXECUTION AND TESTING
5. PROGRAM MAINTENANCE
LETS LOOK AT A SIMPLE EXAMPLE.
REAL PROBLEMS WILL BE MORE
COMPLEX.
1
pf3
pf4
pf5
pf8
pf9
pfa
pfd

Partial preview of the text

Download Software Engineering: Solving a Loan Problem using FORTRAN - Prof. Rodman and more Study notes Computer Science in PDF only on Docsity!

SOFTWARE ENGINEERING is THE APPLICATION OF SCIENTIFICALLY TESTED TECHNIQUES AND METHODOLOGIES TO THE PROGRAMMING OF COMPUTERS. DEVELOPING PROGRAMS IN FORTRAN (WHAT YOU WILL BE DOING ALL SEMESTER IN YOUR LAB) REQUIRES FIVE BASIC STEPS: TOP DOWN DESIGN

  1. PROBLEM ANALYSIS AND SPECIFICATION
  2. DATA ORGANIZATION AND ALGORITHM DESIGN
  3. PROGRAM CODING
  4. EXECUTION AND TESTING
  5. PROGRAM MAINTENANCE LETS LOOK AT A SIMPLE EXAMPLE. REAL PROBLEMS WILL BE MORE COMPLEX.

TONY SOPRANO LOANS MONEY OUT

AT THE RATE OF ONE PERCENT PER

DAY COMPOUNDED. VITO WANTS TO

BORROW A FEW G'S AND HE NEEDS TO

KNOW HOW MUCH HE WILL OWE

TONY X-DAYS LATER.

VITO ASKS A PROGRAMMER NAMED

JIMMY-THE-GEEK TO SOLVE THE

PROBLEM ON A COMPUTER.

STEP 1: PROBLEM ANALYSIS AND

SPECIFICATION:

INPUT:

INITIAL AMOUNT OF LOAN

RATE OF INTEREST

DURATION OF LOAN

OUTPUT:

AMOUNT OWED

1.01[(1.01)

2 (1000)]=(1.01) 3 (1000) AND IT'S CLEAR THAT THE GENERAL FORMULA IS: amount_owed=initial_amount(1+rate) time NOW WE CAN EXPRESS THE ENTIRE PROGRAM IN MORE DETAIL AND MORE CONCISELY AS "PSEUDOCODE" AN INFORMAL FORTRAN-LIKE LANGUAGE: Input: The initial_amount of a loan; the rate of interest per day compounded daily; the time in days that the loan is outstanding Output: The amount_owed

  1. Enter or read in initial_amount, rate, time
  2. Calculate: _amount_owed=initial_amount((1+rate)time)_*
  3. Output on screen or printer amount_owed

PSEUDOCODE IS A "MISHMASH" AND

IS INTENDED TO GUIDE THE

PROGRAMMER, WHO MUST

EVENTUALLY WRITE

SYNTACTICALLY CORRECT

INSTRUCTIONS TO CARRY OUT THE

ALGORITHM.

SOMETIMES PSEUDOCODE MAY BE

EXPRESSED IN A FLOW DIAGRAM:

STEP 3: PROGRAM CODING

IF STEPS ONE AND TWO ARE DONE

PROPERLY, STEP 3 WILL GO

SMOOTHLY. IN THIS STEP WE

IMPLEMENT DATA OBJECTS AND

ALGORITHMS IN THE ACTUAL

PROGRAMMING LANGUAGE,

FORTRAN IN OUR PARTICULAR

CASE.

PROGRAM Interest_Rate !------------------------------------------------------------------------- ! This program calculates the amount owed to fully repay a loan where the ! initial loan amount, the daily interest rate compounded daily, and the ! duration of the loan in days is given. ! Variables used are: ! initial_amount : amount of original loan ! rate : the daily interest rate ! time : duration of loan in days ! amount_owed : amount to fully repay the loan ! ! Input: initial_amount, rate, time ! Output: amount_owed !------------------------------------------------------------------------- IMPLICIT NONE REAL :: initial_amount, rate, time, amount_owed ! Get values of initial_amount, rate, time, amount_owed WRITE (,) "Enter: initial amount of loan, the rate, and the time separated by spaces" READ (,) initial_amount, rate, time ! Calculate the amount owed at the given rate after the specified number of days amount_owed=initial_amount((1.0+rate)time) ! Display amount_owed WRITE(,500) amount_owed 500 FORMAT (10X,'The amount owed is', F10.2) END PROGRAM Interest_Rate CLEARLY, THIS IS TOO SMALL TO READ, SO WE'LL RUN IT FROM EOS.

(EACH STATEMENT IS EXPLAINED IN

LECTURE)

STEP 4: EXECUTION AND TESTING

IDEALLY, WE'D LIKE TO PROVE OUR

PROGRAM IS CORRECT, AND WE'LL

LOOK AT HOW TO DO THAT IN

SIMPLER CASES LATER ON IN THE

COURSE. FOR NOW WE WILL AT

LEAST SHOW THAT IT IS LIKELY

THAT OUR PROGRAM IS CORRECT

BY CHOOSING CASES FOR WHICH WE

KNOW THE ANSWER IN ADVANCE,

(THE TESTING DATASET), AND

CHECKING THE ANSWERS.

FOR EXAMPLE, AT A RATE OF .01 FOR

1 DAY AND A $1000 LOAN, WE

SHOULD GET A RESULT OF $1010.

(IT IS TRIED IN CLASS)

IT IS ALSO USEFUL TO TRY

EXTREMAL CASES, LIKE ZERO DAYS.

TWO PITFALLS AWAIT THE

PROGRAMMER. ONE IS A SYNTAX

ERROR, WHICH IS CAUGHT AT

COMPILE TIME. LET'S LEAVE OUT A

COMMA AND SEE WHAT HAPPENS.

(TRIED IN CLASS)

THIS IS A COMPILE-TIME ERROR.

THE SECOND PITFALL IS A RUN-TIME

ERROR, WHICH OCCURS WHEN YOU

ATTEMPT TO DO SOMETHING

UNPREDICTABLY IMPOSSIBLE. FOR

EXAMPLE, TAKE THE SQUARE ROOT

OF A NEGATIVE NUMBER.

IN OUR CASE, IF WE MIS-TYPED AN

INPUT AS 1000 -1.01 10.5, WE WOULD

BE ATTEMPTING TO RAISE A

NEGATIVE NUMBER TO A NEGATIVE

FRACTIONAL POWER, WHICH IS NOT

DEFINED IN MATHEMATICS.

ONE FINAL, IMPORTANT POINT.

TESTING CAN ONLY SHOW THE

PRESENCE OF ERRORS, NOT THEIR

ABSENCE! IT CANNOT PROVE THAT

THE PROGRAM IS CORRECT; IT CAN

ONLY SHOW THAT IT IS INCORRECT.

THUS IN SOME SENSE TESTING IS

NEVER COMPLETE. IT IS ONLY

STOPPED!

{Proofs on non-existence are difficult}

FORCE CHANGES IN A

CONSTRUCTION-COST PROGRAM.

IMPORTANT: A WELL STRUCTURED,

WELL DOCUMENTED PROGRAM IS

EASIER TO MODIFY THAN ONE THAT

IS POORLY DESIGNED.