ITE 1122 - Program Design and Introduction To Symbolic Design
ITE 1122 - Program Design and Introduction To Symbolic Design
to Symbolic Design
Agenda
Types of Programming Methodologies
Top-down or Modular Approach
Bottom-up Approach
Understanding the Problem
Identifying the Solution
Flowcharting
Pseudocode
Types of Programming Methodologies
The approach to analyzing complex problems, planning for software development and controlling
the development process is called programming methodology
Procedural Programming - Problem is broken down into procedures, or blocks of code that
perform one task each. All procedures taken together form the whole program. It is suitable only
for small programs that have low level of complexity
Example − For a calculator program that does addition, subtraction, multiplication, division, square root and
comparison, each of these operations can be developed as separate procedures. In the main program each
procedure would be invoked on the basis of user’s choice.
Object-oriented Programming - Here the solution revolves around entities or objects that are part
of problem. The solution deals with how to store data related to the entities, how the entities
behave and how they interact with each other to give a cohesive solution.
Example − If we have to develop a payroll management system, we will have entities like employees, salary
structure, leave rules, etc. around which the solution must be built.
Types of Programming Methodologies
Functional Programming - Here the problem, or the desired solution, is broken down into functional
units. Each unit performs its own task and is self-sufficient. These units are then stitched together to
form the complete solution.
Example − A payroll processing can have functional units like employee data maintenance, basic salary
calculation, gross salary calculation, leave processing, loan repayment processing, etc.
Logical Programming- Here the problem is broken down into logical units rather than functional units.
Example: In a school management system, users have very defined roles like class teacher, subject teacher, lab
assistant, coordinator, academic in-charge, etc. So the software can be divided into units depending on user roles.
Each user can have different interface, permissions, etc.
Top-down or Modular Approach
Software developers may choose one or a combination of
more than one of these methodologies to develop a
software.
Note that in each of the methodologies discussed,
problem has to be broken down into smaller units. To do
this, developers use any of the following two approaches
Top-down approach
Bottom-up approach
Person responsible for gathering requirement, defining the problem and designing the system is called system analyst.
Requirement Gathering
Usually, clients or users are not able to clearly define their problems or requirements. They have a vague idea of what they want. So system
developers need to gather client requirements to understand the problem that needs to be resolved, or what needs to be delivered
Detailed understanding of the problem is possible only by first understanding the business area for which the solution is being developed
Due to the depth of information required, requirement gathering is also known as detailed investigation.
Problem Definition - After gathering requirements and analyzing them, problem statement must be stated
clearly. Problem definition should unambiguously state what problem or problems need to be solved.
Having a clear problem statement is necessary to
Define project scope
Keep the team focused
Keep the project on track
Validate that desired outcome was achieved at the end of project
Identifying the Solution
Coding is supposed to be the most essential part of any software development process. However, coding is
just a part of the process and may actually take the minimum amount of time if the system is designed
correctly. Before the system can be designed, a solution must be identified for the problem at hand.
The first thing to be noted about designing a system is that initially the system analyst may come up with
more than one solutions
But the final solution or the product can be only one. In-depth analysis of data gathered during the
requirement gathering phase can help in coming to a unique solution.
When faced with the problem of multiple solutions, analysts go for visual aids like flowcharts, data flow
diagrams, entity relationship diagrams, etc. to understand each solution in depth
Flowcharting - Flowcharting is the process of illustrating workflows and data flows in a system through symbols and
diagrams.
Data Flow Diagram - Data flow diagram or DFD is a graphical representation of data flow through a system or sub-
system.
Pseudocode - before the actual coding occurs, the basic operating principles, work flows and data flows of the program
are written using a notation similar to the programming language to be used. Such a notation is called pseudocode.
Applying Modular Techniques
A real-life problem is complex and big. If a monolithic solution is developed it poses these problems
Difficult to write, test and implement one big program
Modifications after the final product is delivered is close to impossible
Maintenance of program very difficult
One error can bring the whole system to a halt
To overcome these problems, the solution should be divided into smaller parts called modules
The technique of breaking down one big solution into smaller modules for ease of development,
implementation, modification and maintenance is called modular technique of programming or
software development.
Advantages of Modular Programming
Enables faster development as each module can be developed in parallel
Modules can be re-used
As each module is to be tested independently, testing is faster and more robust
Debugging and maintenance of the whole program easier
Modules are smaller and have lower level of complexity so they are easy to understand
Flowchart Elements