Vous êtes sur la page 1sur 27

Defense University

Maj. Gen. Mulugeta Buli Polytechnic


College

Ethiopian TVET-System

Database Administration
Level III

Learning Guide # 1
Unit of Competence: Design Program Logic
Module Title : Design Program Logic
LG Code : ICT DBA3 05 0710

LO1: Select the program logic design approach

Date: Dec- 2019/2020


Compiled by: Abadit A. Page 1 of27
Introduction
Computers:
Computer is electronic machine that performs tasks, such as calculations, electronic
communication, under the control of an internally stored set of instructions called program.
Programs usually reside within the computer primary memory and are retrieved and processed by
the computer electronically.
UNDERSTANDING COMPUTER COMPONENTS AND OPERATIONS
Hardware and software are the two major components of any computer system.
 Hardware is the equipment, or the devices, associated with a computer. For a computer to be
useful, however, it needs more than equipment; a computer needs to be given instructions.
 The instructions that tell the computer what to do are called software, or programs, and are
written by programmers. This book focuses on the process of writing these instructions.
 Software can be classified as application software or system software.
Application software comprises all the programs you apply to a task—word-
processing programs, spreadsheets, payroll and inventory programs, and even games.
System software comprises the programs that you use to manage your computer—
operating systems, such as Windows, Linux, or UNIX. This book focuses on the logic
used to write application software programs, although many of the concepts apply to
both types of software.
Together, computer hardware and software accomplish four major operations:
1. Input
2. Processing
3. Output
4. Storage
Hardware devices that perform input include keyboards and mice. Through these devices, data, or
facts, enter the computer system. Processing data items may involve organizing them, checking
them for accuracy, or performing mathematical operations on them. The piece of hardware that
performs these sorts of tasks is the central processing unit, or CPU. After data items have been
processed, the resulting information is sent to a printer, monitor, or some other output device so
people can view, interpret, and use the results. Often, you also want to store the output information

Date: Dec- 2019/2020


Compiled by: Abadit A. Page 2 of27
on storage hardware, such as magnetic disks, tapes, compact discs, or flash media. Computer
software consists of all the instructions that control how and when the data items are input, how
they are processed, and the form in which they are output or stored.
Data includes all the text, numbers, and other information that are processed by a computer.
However, many computer professionals reserve the term “information” for data that has been
processed. For example, your name, Social Security number, and hourly pay rate are data items, but
your paycheck holds information.
Computer hardware by itself is useless without a programmer’s instructions, or software, just as
your stereo equipment doesn’t do much until you provide music on a CD or tape. You can buy
prewritten software that is stored on a disk or that you download from the Internet or you can write
your own software instructions. You can enter instructions into a computer system through any of
the hardware devices you use for data; most often, you type your instructions using a keyboard and
store them on a device such as a disk or CD.
You write computer instructions in a computer programming language, such as Visual Basic, C#,
C, C++, Java, etc.
Programming Language
A language is a systematic set of rules for communicating ideas. With a natural language, like English, the
communication is between people and the language is used in both spoken and written.
A programming language is a language for communication between a person and computer. The content
of communication is known as a program.
Programs are set of instructions, which enable a computer to perform a required operation.
Several hundred programming languages are in use today, each varying in their specific syntax(rule), but
showing similarities in purpose. Input/output instructions, arithmetic instructions, logic instructions, control
instructions, data movement instructions and specification instructions are such common purpose
instructions. Together with the improvement of hardware and processing speed and memory size increase
computer languages changed to languages that were easier for humans to understand. So generations of
programming languages developed to correspond with the generations of computer hardware.
These programming languages can also be categorized into two broad categories: -low and high-level
languages.
Low-level languages are machine-dependent; that is, they are designed to be run on a particular computer
/hardware specific.

 Writing a program in such kind of language is difficult, time consuming and requires detail
knowledge about the computer hardware organization. However, the solution is very fast and requires
less memory space.
 Example of low level programming language are like machine language & Assembly language.

Date: Dec- 2019/2020


Compiled by: Abadit A. Page 3 of27
Machine languages are the only language the computer understands (b/c the only language written
using 0’s and 1’s of binary code).
 Once the machine language is written, the computer can directly execute it very quickly,
hence it is the fastest type of computer program (b/c no need to translator). And it uses
memory very efficiently, as no conversion from source code is necessary.
 Machine languages allow the programmer to interact directly with the hardware, and it
can be executed by the computer without the need for a translator.
 Writing the programs here is difficult, tedious, time consuming and hard to debug
(sort out error). A high level of understanding of hardware specifics is required.
 Machine Dependent or is specific to computer being used or A machine
language program written for one type of computer may not be executed
on another type of computers.

Assembly language is a symbolic representation of machine language, in that each machine
language instruction is represented by a symbol or abbreviation in assembly language. This
simplifies the task of program writing because programmers can easily remember symbols,
and abbreviations than sequences of 0’s and 1’s.
Assembly Programs are easier to create and to debug than machine language, but are still prone to errors,
difficult to understand, tedious and execute faster than high-level languages.
A systems program called an assembler translates it into machine language. Different computer
architectures have their own machine and assembly languages, which means that programs written in these
languages are not portable to other, incompatible systems.
Instead of using 0’s and 1’s programmers substituted language like acronyms and words such as add,
sub(subtract) in programming statements.

 Assembly languages also suffer similar problems with that of machine languages in that, it was still
easier to make mistakes, Costly in terms of programmer time, Difficult to read and debug, and
Difficult to learn.
 Even if there was some improvements in simplifying the program writing task, it was still difficult to
remember all symbols and abbreviations of assembly languages.
 They are machine dependent/ not portable.
 system program called an Assembler translates a program written in assembly language to machine
language
 Highly used in system software development
High-level languages: is a language that simplifies details of the computer organizational architecture and it
creates a smooth environment for programmer to develop software (program).

 Easy to write and understand than low level but needs translator program because they are not
understood by the computer directly.
 are machine independent and can run/work on variety of computers (not specific).
Example of high level programming language are C, C++, Java, VISUAL BASIC etc.

Just as some people speak English and others speak Japanese, programmers also write programs in
different languages. Some programmers work exclusively in one language, whereas others know
several and use the one that seems most appropriate for the task at hand.

Date: Dec- 2019/2020


Compiled by: Abadit A. Page 4 of27
No matter which programming language a computer programmer uses, the language has rules
governing its word usage and punctuation. These rules are called the language’s syntax. If you ask,
“How the get to store do I?” in English, most people can figure out what you probably mean, even
though you have not used proper English syntax. However, computers are not nearly as smart as
most people; with a computer, you might as well have asked,
For example “Xpu mxv ot dodnm Cadf B?” Unless the syntax is perfect, the computer cannot
interpret the programming language instruction at all.
Every computer operates on circuitry that consists of millions of on/off switches. Each
programming language uses a piece of software to translate the specific programming language into
the computer’s on/off circuitry language, or machine language. The language translation software is
called a compiler or interpreter, and it tells you if you have used a programming language
incorrectly. Therefore, syntax errors are relatively easy to locate and correct—the compiler or
interpreter you use highlights every syntax error. If you write a computer program using a language
such as C++ but spell one of its words incorrectly or reverse the proper order of two words, the
translator lets you know that it found a mistake by displaying an error message as soon as you try to
translate the program.
Although there are differences in how compilers and interpreters work, their basic function is the
same—to translate your programming statements into code the computer can use.
When you use a compiler, an entire program is translated before it can execute; when you use an
interpreter, each instruction is translated just prior to execution. Usually, you do not choose which
type of translation to use—it depends on the programming language.
However, there are some languages for which both compilers and interpreters are available.

A program without syntax errors can be executed on a computer, but it might not produce correct
results. For a program to work properly, you must give the instructions to the computer in a specific
sequence, you must not leave any instructions out, and you must not add extraneous instructions.
By doing this, you are developing the logic of the computer program.
Suppose you instruct someone to make a cake as follows:
Stir
Add two eggs
Add a gallon of gasoline
Bake at 350 degrees for 45 minutes

Date: Dec- 2019/2020


Compiled by: Abadit A. Page 5 of27
Add three cups of flour
Even though you have used the English language syntax correctly, the instructions are out of
sequence, some instructions are missing, and some instructions belong to procedures other than
baking a cake. If you follow these instructions, you are not going to end up with an edible cake, and
you may end up with a disaster. Logical errors are much more difficult to locate than syntax errors;
it is easier for you to determine whether “eggs” is spelled incorrectly in a recipe than it is for you to
tell if there are too many eggs or if they are added too soon.
Programmers often call logical errors semantic errors. For example, if you misspell a programming
language word, you commit a syntax error, but if you use an otherwise correct word that does not
make any sense in the current context, you commit a semantic error.
Just as baking directions can be given correctly in French, German, or Spanish, the same logic of a
program can be expressed in any number of programming languages. This note is almost
exclusively concerned with the logic development process. Because it is not concerned with any
specific language, the programming examples could have been written in Japanese, C++, or Java.
The logic is the same in any language. For convenience, we use English!
Once instructions have been input to the computer and translated into machine language, a program
can be run, or executed. You can write a program that takes a number (an input step), doubles it
(processing), and tells you the answer (output) in a programming language such as Java or C++, but
if you were to write it using English-like statements, it would look like this:
 Get input Number.
 Compute calculated Answer as input Number times 2.
 Print calculated Answer.

You will learn about the odd elimination of the space between words like “input” and
“Number” and “calculated” and “Answer” in the next few pages.

The instruction to get input Number is an example of an input operation. When the computer
interprets this instruction, it knows to look to an input device to obtain a number. Computers often
have several input devices, perhaps a keyboard, a mouse, a CD drive, and two or more disk drives.
When you learn a specific programming language, you learn how to tell the computer which of
those input devices to access for input. Logically, however, it doesn’t really matter which hardware
device is used, as long as the computer knows to look for a number. The logic of the input operation

Date: Dec- 2019/2020


Compiled by: Abadit A. Page 6 of27
that the computer must obtain a number for input, and that the computer must obtain it before
multiplying it by two—remains the same regardless of any specific input hardware device. The
same is true in your daily life. If you follow the instruction “Get eggs from store,” it does not really
matter if you are following a handwritten instruction from a list or a voice-mail instruction left on
your cell phone—the process of getting the eggs, and the result of doing so, are the same.

Processing is the step that occurs when the arithmetic is performed to double the input Number; the
statement Compute calculated Answer as input Number times 2 represents processing.
Mathematical operations are not the only kind of processing, but they are very typical. After you
write a program, the program can be used on computers of different brand names, sizes, and speeds.
Whether you use an IBM, Macintosh, Linux, or UNIX operating system, and whether you use a
personal computer that sits on your desk or a mainframe that costs hundreds of thousands of dollars
and resides in a special building in a university, multiplying by 2 is the same process. The hardware
is not important; the processing will be the same.
In the number-doubling program, the Print calculated Answer statement represents output. Within a
particular program, this statement could cause the output to appear on the monitor (which might be
a flat panel screen or a cathode-ray tube), or the output could go to a printer (which could be laser
or ink-jet), or the output could be written to a disk or CD. The logic of the process called “Print” is
the same no matter what hardware device you use.
Besides input, processing, and output, the fourth operation in any computer system is storage. When
computers produce output, it is for human consumption. For example, output might be displayed on
a monitor or sent to a printer.
Storage, on the other hand, is meant for future computer use (for example, when data items are
saved on a disk).
Computer storage comes in two broad categories.
 All computers have internal storage, often referred to as memory, main memory, primary
memory, or random access memory (RAM). This storage is located inside the system unit
of the machine. (For example, if you own a microcomputer, the system unit is the large case
that holds your CD or other disk drives. On a laptop computer, the system unit is located
beneath the keyboard.) Internal storage is the type of storage most often discussed before.

Date: Dec- 2019/2020


Compiled by: Abadit A. Page 7 of27
 Computers also use external storage, which is persistent (relatively permanent) storage on
a device such as a floppy disk, hard disk, flash media, or magnetic tape. In other words,
external storage is outside the main memory, not necessarily outside the computer. Both
programs and data sometimes are stored on each of these kinds of media.
To use computer programs, you must first load them into memory. You might type a program into
memory from the keyboard, or you might use a program that has already been written and stored on
a disk. Either way, a copy of the instructions must be placed in memory before the program can be
run.
A computer system needs both internal memory and external storage. Internal memory is needed to
run the programs, but internal memory is volatile—that is, its contents are lost every time the
computer loses power. Therefore, if you are going to use a program more than once, you must store
it, or save it, on some nonvolatile medium. Otherwise, the program in main memory is lost forever
when the computer is turned off. External storage (usually disks or tape) provides a nonvolatile (or
persistent) medium.
Once you have a copy of a program in main memory, you want to execute, or run, the program. To
do so, you must also place any data that the program requires into memory. For example, after you
place the following program into memory and start to run it, you need to provide an actual input
Number—for example, 8 that you also place in main memory.
 Get input Number.
 Compute calculated Answer as input Number times 2.
 Print calculated Answer.
 The input Number is placed in memory at a specific memory location that the program will
call input Number.
Then, and only then, can the calculated Answer, in this case 16, be calculated and printed.

Date: Dec- 2019/2020


Compiled by: Abadit A. Page 8 of27
L O1: Select the program logic design approach
Definition of logical model

What is a logic model?

A logic model is a tool used to design and build the evaluation of programs. It uses a simple visual
to represent the relationship between the challenge or problem, the resources available, the activities
and the goals of the program. Logic models demonstrate the causal relationship between what you
put into a relationship and what you hope to get out of it.

A logic model presents a picture of how your effort or initiative is supposed to work. It explains
why your strategy is a good solution to the problem at hand. Effective logic models make an
explicit, often visual, statement of the activities that will bring about change and the results you
expect to see for the community and its people. A logic model keeps participants in the effort
moving in the same direction by providing a common language and point of reference.

We recommend using a logic model to help build all of your programs and services. Logic models
can help you identify your expectations and assumptions of your program by having you outline
your inputs, your activities, your outputs and your outcomes in one succinct form. Logic models
can help you guide your work throughout the implementation process and help you build your
evaluation framework to ensure you can demonstrate your impact.

More than an observer's tool, logic models become part of the work itself. They energize and rally
support for an initiative by declaring precisely what you're trying to accomplish and how.

In this section, the term logic model is used as a generic label for the many ways of displaying how
change explains.

Date: Dec- 2019/2020


Compiled by: Abadit A. Page 9 of27
Some other names include:

 road map, conceptual map, or pathways map


 mental model
 blueprint for change
 framework for action or program framework
 program theory or program hypothesis
 theoretical underpinning or rationale
 causal chain or chain of causation
 theory of change or model of change

Each mapping or modeling technique uses a slightly different approach, but they all rest on a
foundation of logic - specifically, the logic of how change happens. By whatever name you call it, a
logic model supports the work of health promotion and community development by charting the
course of community transformation as it evolves.

Program logic

Program logic also goes under several other names: program theory, logic modelling, program logic
models, theory of action, and theory-based evaluation. If you're searching for information about it
on the Web, you'll need to look under all those names. The "programs" here are programs of
planned action in general - usually not computer programs, radio programs, or TV programs.
Program logic models, on which this page is focusing, are produced in a wide variety of different
forms, with this common basis:

 A program is defined as a sequence of objectives.


 Usually the designers begin with an wanted social impact in mind, and work back from that
goal to determine what must be done to accomplish it.
 To achieve that impact, some intermediate goals (outcomes) must first be reached.
 To attain those outcomes, the program must produce some outputs.
 To produce the outputs, activities are required.
 And in order to do the activities, inputs or resources are needed.

Date: Dec- 2019/2020


Compiled by: Abadit A. Page 10 of27
A simplified form of the sequence can be shown thus:

The diagram is very abstract, so let's create an example to show how the model can work: a radio
program designed to educate people about how to prevent malaria. (This is a very simple example,
with only a single chain. Real examples are a lot more complex.)

 The inputs are the money, labor, and facilities needed to produce the program.
 The activity is producing and broadcasting the program.
 The output is that some people hear the program.
 The outcome is that some of those listener’s act on the program's advice.
 The impact is that malaria in that area is reduced.

The power of logic modelling is that each step in the chain can be evaluated in a way that's most
appropriate at that point.

 Did the inputs (money etc.) really produce the activities (the broadcast)? That question can
be answered by auditing.
 And did the activities produce the output (an informed audience)? An audience survey could
answer that question.
 Did the output produce the outcome (how many listeners acted on the advice)? The audience
survey could answer that, too.
 To measure the impacts, public health statistics could be used, perhaps comparing the area
where the program was broadcast with a matching area where it was not.

As you move to the right along the causal chain, it gets more difficult to provide clear answers - e.g.
if malaria really was reduced, was it because of that radio program, or for various other reasons?

But the principle is that you specify what you hope will happen, in the form of a chain, and then test
each link in the chain to work out what really did happen. That's program logic modelling in a
nutshell. At first it seems like a ridiculously cumbersome way of stating the obvious, but its value in

Date: Dec- 2019/2020


Compiled by: Abadit A. Page 11 of27
practice lies in that step-by-step testing. If the program didn't work as intended, you can detect the
weak links in the logic chain.

The above diagram is represented as a chain, implying that no stage can occur until all previous
stages are complete. In that sense, it resembles a chain scenario (or sequence of possible future
events): the main difference is that program logic embodies one overriding intention, while a
scenario does not. The problem with this type of thinking is that (though its truth seems obvious)
the world doesn't always work like that.

Program Design Logic

Program Design Logic (or PDL, for short) is a method for designing and documenting methods
and procedures in software. It is related to pseudocode, but unlike pseudocode, it is written in plain
language without any terms that could suggest the use of any programming language or library.

Pseudocode is an informal way of programming description that does not require any strict
programming language syntax or underlying technology considerations.

 It is used for creating an outline or a rough draft of a program.

 Pseudocode summarizes a program’s flow, but excludes underlying details.

 System designers write pseudocode to ensure that programmers understand a software


project's requirements and align code accordingly.
Pseudocode is not an actual programming language. So it cannot be compiled into an
executable program.

 It uses short terms or simple English language syntaxes to write code for programs before it
is actually converted into a specific programming language.

 This is done to identify top level flow errors, and understand the programming data flows
that the final program is going to use.

 This definitely helps save time during actual programming as conceptual errors have been
already corrected.

Date: Dec- 2019/2020


Compiled by: Abadit A. Page 12 of27
 Firstly, program description and functionality is gathered and then pseudocode is used to
create statements to achieve the required results for a program.

 Detailed pseudocode is inspected and verified by the designer’s team or programmers to


match design specifications.

 Catching errors or wrong program flow at the pseudocode stage is beneficial for
development as it is less costly than catching them later.

 Once the pseudocode is accepted by the team, it is rewritten using the vocabulary and syntax
of a programming language.

 The purpose of using pseudocode is an efficient key principle of an algorithm.

 It is used in planning an algorithm with sketching out the structure of the program before the
actual coding takes place.
Advantages of pseudocode –
• Pseudocode is understood by the programmers of all types.
• it enables the programmer to concentrate only on the algorithm part of the code
development.
• It cannot be compiled into an executable program.

Example, Java code : if (i < 10) { i++; } pseudocode :if i is less than 10, increment i by 1.

PDL was originally developed by the company Caine, Farber & Gordon and has been modified
substantially since they published their initial paper on it in 1975. It has been described in some
detail by Steve McConnell in his book Code Complete.

Software design

Software development is the process of conceiving, specifying, designing, programming,


documenting, testing, and bug fixing involved in creating and maintaining applications,
frameworks, or other software components. Software development is a process of writing and
maintaining the source code, but in a broader sense, it includes all that is involved between the
conception of the desired software through to the final manifestation of the software, sometimes in
a planned and structured process. Therefore, software development may include research, new

Date: Dec- 2019/2020


Compiled by: Abadit A. Page 13 of27
development, prototyping, modification, reuse, re-engineering, maintenance, or any other activities
that result in software products.

Software can be developed for a variety of purposes, the three most common being to meet specific
needs of a specific client/business (the case with custom software), to meet a perceived need of
some set of potential users (the case with commercial and open source software), or for personal use
(e.g. a scientist may write software to automate a mundane task).

Embedded software development, that is, the development of embedded software, such as used
for controlling consumer products, requires the development process to be integrated with the
development of the controlled physical product. System software underlies applications and the
programming process itself, and is often developed separately.

The need for better quality control of the software development process has given rise to the
discipline of software engineering, which aims to apply the systematic approach exemplified in the
engineering paradigm to the process of software development.

Programming Life cycle

The method (approach) that software Engineers use in solving problems in computer science is called the
software development method. Another name that is commonly used for the software development
method is software life cycle. Formally you can use the following Software Development Steps to write
good computer programs.

1. Planning (Preliminary Investigation)


2. Analysis
3. Design
4. Implementation
5. Testing
6. Maintenance
Planning (Preliminary Investigation stage)

 Defining the problem (examine documents, work papers, and procedures; observe system
operations; interview key users of the system). Suggesting a solution (often improving an
existing one or building a new information system)
 Feasibility study (determine whether the solution is feasible)

Date: Dec- 2019/2020


Compiled by: Abadit A. Page 14 of27
o Technical feasibility: whether implementation is possible with the available or

affordable hardware, software and other technical resources.

o Economic feasibility: whether the benefits of the proposed solution outweigh

the costs

o Operational feasibility: whether the proposed solution is desirable within the

existing managerial and organizational framework

Analysis (Requirement gathering)

 Focuses thorough understanding of the problem at hand and analysis of the data and procedures
needed to achieve the desired result. Or try to understand the business in general (activities
done, how it is done, etc)
 This step focuses on what must be done rather how to do it. That is what input are needed, what outputs
are expected and what must be done to produce the output.

 Define the specific information requirements: who needs what information, where, when, and
how. Present a detail description of the functions the new system must perform
 In this phase we identify:
Inputs to the problem

Outputs expected from the solution and their form (Intermediate results or Final results –such
as Completed tax information)

Constraints (What are the limits on the data? Income cannot be a negative number)

Design stage

Based on the requirements specified in the analysis phase algorithms are developed at this stage.
Develop a series of steps with a logical order which, when applied to the input would produce the
specified output.

 Consider alternative technology configurations to develop the system (hardware,


software, security capability of the system, network alternatives etc.)
 Management and control of the technical realization of the system: detailed
program specification, Detail system specifications for the functions identified in the
analysis: managerial, organizational and technological components of the system solution

Date: Dec- 2019/2020


Compiled by: Abadit A. Page 15 of27
(input, output, user interface, database design, processing, manual procedures, controls:
input, processes, output and procedural controls; security, documentation, training,
organizational change)

Implementation stage

During implementation, we translate (code) each step of the algorithm in the design specifications
into a statement in the particular language selected, and end up with a computer program. We write
programs based on the algorithm we created during design phase.

Testing

It is very rare that a program can be written correctly the first time. Most programmers get used to
the idea that there are errors in their newly written programs, these errors are detected during testing
the program, and appropriate revision must be made and the tests return.

 Here we need to answer will the system produce the desired results?
Maintenance

Changes in hardware, software, documentation, or procedures to correct errors, meet new requirements, or
improve processing efficiency.

The activities in maintenance includes:

 Fix bugs found by the customer


 Make modifications
 Add new features

NB: Documentation in software development/problem solving is very essential, it is Written descriptions


of, specifications, development, and actual code of program. Documentation is valuable because:

1. It is probable that you may come back to this program sometime in the future in order to use it again, or
you may want to use part of it in developing the solution for another similar problem.
2. If you have developed this program for a client's use, he or she will need some information so that in your
absence the program can be used.

3. If you are working for a company and have developed this program as an addition to the company's
software library, some other programmer may be assigned to maintain it or to make additions to it.

Date: Dec- 2019/2020


Compiled by: Abadit A. Page 16 of27
4. It is possible that sometime after you have developed the program, you may discover some errors in it and
you may be required to correct them.

The significance of proper program documentation in the software life cycle cannot be overemphasized.
Program documentation consists of

1. A concise problem specification;

2. Descriptions of inputs, expected outputs, constraints, and applicable formulas;

3. A pseudo code or flowchart for its algorithm;

4. A source program listing;

5. A self-documenting code: a program containing meaningful identifiers as well as clarifying


comments;

6. A hard copy of a sample of data and output of test run of the program; and

7. A user's guide explaining to nonprogrammer users how the program should be used.

Design Concepts

The design concepts provide the software designer with a foundation from which more
sophisticated methods can be applied. A set of fundamental design concepts has evolved. They are
as follows:

Abstraction - Abstraction is the process or result of generalization by reducing the information


content of a concept or an observable phenomenon, typically in order to retain only information
which is relevant for a particular purpose. It is an act of representing essential features without
including the background details or explanations.

Refinement - It is the process of elaboration. A hierarchy is developed by decomposing a


macroscopic statement of function in a step-wise fashion until programming language statements
are reached. In each step, one or several instructions of a given program are decomposed into more
detailed instructions. Abstraction and Refinement are complementary concepts.

Date: Dec- 2019/2020


Compiled by: Abadit A. Page 17 of27
Modularity - Software architecture is divided into components called modules.

Software Architecture - It refers to the overall structure of the software and the ways in
which that structure provides conceptual integrity for a system. Good software architecture
will yield a good return on investment with respect to the desired outcome of the project,
e.g. in terms of performance, quality, schedule and cost.
Control Hierarchy - A program structure that represents the organization of a program
component and implies a hierarchy of control.

Structural Partitioning - The program structure can be divided both horizontally and vertically

– Horizontal partitions define separate branches of modular hierarchy for each major
program function.
– Vertical partitioning suggests that control and work should be distributed top down in the
program structure.

Data Structure - It is a representation of the logical relationship among individual elements of


data.

Software Procedure - It focuses on the processing of each module individually.

Information Hiding - Modules should be specified and designed so that information contained
within a module is inaccessible to other modules that have no need for such information.

In his object model, Grady Booch mentions Abstraction, Encapsulation, Modularization, and
Hierarchy as fundamental software design principles. The acronym PHAME (Principles of
Hierarchy, Abstraction, Modularization, and Encapsulation) is sometimes used to refer to these four
fundamental principles.

Design considerations

There are many aspects to consider in the design of a piece of software. The importance of each
consideration should reflect the goals and expectations that the software is being created to meet.
Some of these aspects are:

Date: Dec- 2019/2020


Compiled by: Abadit A. Page 18 of27
Compatibility - The software is able to operate with other products that are designed for
interoperability with another product. For example, a piece of software may be backward-
compatible with an older version of itself.

Extensibility - New capabilities can be added to the software without major changes to the
underlying architecture.

Modularity - the resulting software comprises well defined and independent components which
lead to better maintainability. The components could be then implemented and tested in isolation
before being integrated to form a desired software system. This allows division of work in a
software development project.

Fault-tolerance - The software is resistant to and able to recover from component failure.

Maintainability - A measure of how easily bug fixes or functional modifications can be


accomplished. High maintainability can be the product of modularity and extensibility.

Reliability (Software durability) - The software is able to perform a required function under stated
conditions for a specified period of time.

Reusability - The ability to use some or all of the aspects of the preexisting software in other
projects with little to no modification.

Robustness - The software is able to operate under stress or tolerate unpredictable or invalid input.
For example, it can be designed with resilience to low memory conditions.

Security - The software is able to withstand and resist hostile acts and influences.

Usability - The software user interface must be usable for its target user/audience. Default values
for the parameters must be chosen so that they are a good choice for the majority of the users.

Performance - The software performs its tasks within a time-frame that is acceptable for the user,
and does not require too much memory.

Portability - The software should be usable across a number of different conditions and
environments.

Scalability - The software adapts well to increasing data or number of users.

Date: Dec- 2019/2020


Compiled by: Abadit A. Page 19 of27
Software Design Approaches

Here are two generic approaches for software designing: Top-down and bottom-up design

Top-down and bottom-up are both strategies of information processing and knowledge ordering,
used in a variety of fields including software, humanistic and scientific theories and management
and organization. In practice, they can be seen as a style of thinking, teaching, or leadership.

A top-down approach (also known as stepwise design and in some cases used as a synonym of
decomposition) is essentially the breaking down of a system to gain insight into its compositional
sub-systems in a reverse engineering fashion. In a top-down approach an overview of the system is
formulated, specifying, but not detailing, any first-level subsystems. Each subsystem is then refined
in yet greater detail, sometimes in many additional subsystem levels, until the entire specification is
reduced to base elements. A top-down model is often specified with the assistance of "black boxes",
which makes it easier to manipulate. However, black boxes may fail to clarify elementary
mechanisms or be detailed enough to realistically validate the model. Top down approach starts
with the big picture. It breaks down from there into smaller segments.

A bottom-up approach is the piecing together of systems to give rise to more complex systems,
thus making the original systems sub-systems of the emergent system. Bottom-up processing is a
type of information processing based on incoming data from the environment to form a perception.
From a cognitive psychology perspective, information enters the eyes in one direction (sensory
input, or the "bottom"), and is then turned into an image by the brain that can be interpreted and
recognized as a perception (output that is "built up" from processing to final cognition). In a
bottom-up approach the individual base elements of the system are first specified in great detail.
These elements are then linked together to form larger subsystems, which then in turn are linked,
sometimes in many levels, until a complete top-level system is formed. This strategy often
resembles a "seed" model, by which the beginnings are small but eventually grow in complexity
and completeness. However, "organic strategies" may result in a tangle of elements and subsystems,
developed in isolation and subject to local optimization as opposed to meeting a global purpose.

What is a Prototype? - Definition

Date: Dec- 2019/2020


Compiled by: Abadit A. Page 20 of27
In the product development process, one of the key steps is creating a sample of the product before
it is manufactured. This lesson will explain what a prototype is and the benefits of using one in your
business.

What Is a Prototype?

You have a great idea for a new product. You can imagine in your mind how it will work and how
cool it will be when it's done. You can see in your mind how each of the pieces work together and
how much easier it makes your life. But putting that into words is a little challenging. You go to
work to make something physical that resembles the picture in your mind. You create a rough
mock-up of what the final product will look like.

You have just created a prototype. A prototype is an initial creation of a product that shows the
basics of what a product will look like, what the product will do, and how the product operates. A
prototype is not meant to be the final version; it's the rough draft form of the product. It will often
have elements that demonstrate how the product will work, even though the prototype may not have
the functionality that the final product will have after it is professionally manufactured. The
prototype helps you to get a solid idea of what the product will be and make alterations while the
item is still in concept mode.

Benefit of a Prototype

A prototype is a valuable tool in the product development process. It gives the inventor or the
creator a chance to see their idea come to life. By creating an initial example of your idea, you have
a chance to make changes to the design, work out problems in design, and make alterations to make
the product look nice. The prototype is essentially a rough draft of the product. Once the prototype
is created, steps can be taken to refine the product, both in design and function.

Prototypes may be used to demonstrate a potential product and can also be used as a tool to gain
financing or investments. When a potential investor can see what the item is you want to create,
they can get a better vision of what you want to produce and may be more interested in putting their
money towards the project.

Date: Dec- 2019/2020


Compiled by: Abadit A. Page 21 of27
What is RAD model- advantages, disadvantages and when to use it?

RAD model is Rapid Application Development model. It is a type of incremental model. In RAD
model the components or functions are developed in parallel as if they were mini projects. The
developments are time boxed, delivered and then assembled into a working prototype. This can
quickly give the customer something to see and use and to provide feedback regarding the delivery
and their requirements.

Diagram of RAD-Model:

Date: Dec- 2019/2020


Compiled by: Abadit A. Page 22 of27
The phases in the rapid application development (RAD) model are:

1. Business Modelling:

The core business models are decided and their priority of achievement is determined. The type and
flow of information are decided between different business models. What information will be
needed to decide the type of data structures and how will communication bridges between different
business services be established is determined during this process.

2. Data Modelling:

The next phase involves review and analysis of data objects in relation to the business model. The
attributes of these data sets are defined and their relevance to the business is clearly mapped out.

3. Process Modelling:

Date: Dec- 2019/2020


Compiled by: Abadit A. Page 23 of27
The data sets and business models are aligned to create a flow of information for different models.
The process for development and change both are specified. In this stage, the process structure for
adding, deleting, modifying or retrieving a data set are set in place.

4. Testing & Turnover:

The very reason for the popularity of RAD is because it focuses more on testing and turnover. Each
prototype is tested by the user and feedback is collected. This feedback is used to modify the
existing project structure and implement changes in accordance with the user interaction with the
prototype. The test process is iterated for each prototype leading to fewer bugs in the final
application.

phases of RAD model and their activity

Phases of RAD Activities performed in RAD Model


model

Business On basis of the flow of information and distribution between various business
Modeling channels, the product is designed

Data Modeling The information collected from business modeling is refined into a set of data
objects that are significant for the business

Date: Dec- 2019/2020


Compiled by: Abadit A. Page 24 of27
Process Modeling The data object that is declared in the data modeling phase is transformed to
achieve the information flow necessary to implement a business function

Application Automated tools are used for the construction of the software, to convert
Generation process and data models into prototypes

Testing and As prototypes are individually tested during every iteration, the overall testing
Turnover time is reduced in RAD.

Advantages and Disadvantages of SDLC RAD Model

Advantages Disadvantages

 Flexible and adaptable to changes  It can't be used for smaller projects

 It is useful when you have to reduce  Not all application is compatible with RAD
the overall project risk
 It is adaptable and flexible to  When technical risk is high, it is not suitable
changes
 It is easier to transfer deliverables as  If developers are not committed to delivering
scripts, high-level abstractions and software on time, RAD projects can fail
intermediate codes are used
 Due to code generators and code  Reduced features due to time boxing, where
reuse, there is a reduction of manual features are pushed to a later version to finish a
coding release in short period

Date: Dec- 2019/2020


Compiled by: Abadit A. Page 25 of27
 Due to prototyping in nature, there is  Reduced scalability occurs because a RAD
a possibility of lesser defects developed application begins as a prototype and
evolves into a finished application

 Each phase in RAD delivers highest  Progress and problems accustomed are hard to
priority functionality to client track as such there is no documentation to
demonstrate what has been done

 With less people, productivity can  Requires highly skilled designers or developers
be increased in short time

When to use RAD Methodology?

 When a system needs to be produced in a short span of time (2-3 months)


 When the requirements are known
 When the user will be involved all through the life cycle
 When technical risk is less
 When there is a necessity to create a system that can be modularized in 2-3 months of time
 When a budget is high enough to afford designers for modeling along with the cost of
automated tools for code generation

Few RAD Steps

Getting started with rapid application development generally follows a cyclical process that
includes four basic steps:

1. Planning Requirements: During this initial stage designers, developers, and users come to a
rough agreement on project scope and application requirements, so that future stages with
prototyping can begin.
2. User Design: User feedback is gathered with heavy emphasis on determining the system
architecture. This allows initial modeling and prototypes to be created. This step is repeated
as often as necessary as the project evolves.

Date: Dec- 2019/2020


Compiled by: Abadit A. Page 26 of27
3. Rapid Construction: Once basic user and system design has begun, the construction phase is
where most of the actual application coding, testing, and integration takes place. Along
with User Design, the Rapid Construction phase is repeated as often as necessary, as new
components are required or alterations are made to meet the needs of the project.
4. Cutover: The final Cutover (or Transition) stage allows the development team time to move
components to a live production environment, where any necessary full-scale testing or
team training can take place.

Date: Dec- 2019/2020


Compiled by: Abadit A. Page 27 of27

Vous aimerez peut-être aussi