0% found this document useful (0 votes)
641 views24 pages

B.Tech-3 Sem (CSE) Subject:: Principles of Programming Languages

This document outlines the syllabus for the Principles of Programming Languages course taught in the 3rd semester of a B.Tech in Computer Science Engineering. It covers key topics like program design, fundamental design concepts, modules and modularization criteria, design notation including pseudocode and flowcharts. It provides details on program design processes like identifying needs, selecting evidence-based designs, developing and piloting programs, and monitoring and evaluation. The document aims to introduce common terminology and best practices used in program design and development.

Uploaded by

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

B.Tech-3 Sem (CSE) Subject:: Principles of Programming Languages

This document outlines the syllabus for the Principles of Programming Languages course taught in the 3rd semester of a B.Tech in Computer Science Engineering. It covers key topics like program design, fundamental design concepts, modules and modularization criteria, design notation including pseudocode and flowcharts. It provides details on program design processes like identifying needs, selecting evidence-based designs, developing and piloting programs, and monitoring and evaluation. The document aims to introduce common terminology and best practices used in program design and development.

Uploaded by

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

B.

Tech-3 Sem (CSE)


rd

Subject: Principles of
Programming Languages

By:
Kajal Tiwari
Assistant Professor (CSE)
Syllabus
Unit- 1
Program Design
 Introduction  Design Techniques
 Fundamental design concepts  Step wise refinement
 Modules  Levels of abstraction
 Modularization Criteria  Top Down
 Design Notation:  Test Plans- Design guidelines
 Procedure Template
 Pseudo code
 Structured flow chart decision
 Tables-
Introduction to Program Design
 Having a common understanding of the terms that we use in program design and development can
contribute to successful processes and outcomes.
 Terms such as organization, program, system, or intervention are often used inter-changeably.
 Program design is the process that an organization uses to develop a program.
 It is most often an iterative process involving research, consultation, initial design, testing and redesign.
 A program design is the plan of action that results from that process.
 Five reasons to do program design and development:
1. There is really a need for the program
2. The design you are considering actually meets the needs of the intended participants
3. The program you are considering has been shown to be effective
4. The program has been appropriately adapted to fit your context
5. The program is actually working for the participants.
Fundamental design concepts
 Program design includes

1. Need for the program : assesses what a population needs, what is available in community and the gap
between what is needed and what is available
2. Program objectives and outcomes : what the program is intended to accomplish for the particular target
population.
3. Program principles : the fundamental norms, rules and values that guide the program (e.g. being
inclusive, client-focused).
4. Program components : a specific set of inter-connected activities
5. Budget/cost : what it will cost to implement the program.
6. Funding strategy : how the program will be funded. Can it be done within the current organizational
budget? The funding strategy needs to include start-up and long-term funding.
7. Governance : some programs are set within an existing organization or some programs may be a
collaboration among two or more organizations. The design needs to include the process for decision-
making
Steps for designing and developing a program
Cntd…
1. Identify a potential need – often organizations see that people using their programs have
additional needs that are not being addressed. This may create an opportunity for new
programming which will usually require additional resources.
2. Conduct a needs assessment – in order to determine the needs of a specific target population,
gather and analyze data taken from different sources in a systematic way, looking at the needs of
the population and the existing programs in order to determine whether there are gaps.
3. Research potential programs for filling need – deciding on how best to address an identified
need requires searching for and reviewing existing programs.
4. Select an evidenced-based design –This means the design has been previously implemented
and evaluated and has demonstrated some ability to produce a desired outcome for the target
group. If such a program does not exist or is not suitable for the context, components of a
program may be selected and adapted or a new program may be designed.
5. Develop the program design – using a logic model as a tool, create a detailed plan that specifies
program activities, resource allocations and expected outcomes. Program design consolidates all
of the information gathered during the development process and sets out the program’s
outcomes, outputs, activities and resources.
Cntd…

6. Pilot the program – before implementing a full-scale program, it is important to test


whether it works in your particular context, if possible. Piloting includes developing
the program on a small scale so you can gauge the level of readiness to deliver the
program, determine whether it is making a difference for program users, and assess
what, if any, changes are needed. A good pilot sets the stage for ongoing monitoring.
7. Roll out the program – if the pilot indicates the program works, you need to select a
site, hire and train program staff, establish administrative processes, start service
delivery, and carry out ongoing monitoring and quality control.
8. Monitor and evaluate – while testing or implementing the program, it is important to
learn what’s working well and what isn’t. It is also helpful to review the program’s
original goals. By using a systematic process that gathers and analyzes data from a
variety of sources, steps can be taken to modify and improve the program before
rolling it out or as it gets implemented. This also supports accountability to funders.
Modules and Modularization Criteria
 Modules:
 Modular design, or "modularity
in design", is a design approach
that subdivides a system into
smaller parts called modules,
that can be independently
created and then used in
different systems.
 A modular system can be
characterized by functional
partitioning into discrete
scalable, reusable modules; hard
to use of well-defined modular
interfaces; and making use of
industry standards for interfaces.
Cntd…
 Modularization Criteria:
 Modularization is a technique to divide a software system into multiple discrete and independent
modules, which are expected to be capable of carrying out task(s) independently.
 These modules may work as basic constructs for the entire software. Designers tend to design
modules such that they can be executed and/or compiled separately and independently.
 Modular design unintentionally follows the rules of ‘divide and conquer’ problem-solving strategy
this is because there are many other benefits attached with the modular design of a software.

 Advantage of modularization:
1. Smaller components are easier to maintain
2. Program can be divided based on functional aspects
3. Desired level of abstraction can be brought in the program
4. Components with high cohesion can be re-used again
5. Concurrent execution can be made possible
6. Desired from security aspect
Design Notation

 Design notations are used when planning and should be able to communicate the
purpose of a program without the need for formal code. Commonly used design
notations are:

1. Pseudocode
2. Flow charts
3. Structure chart
1) Pseudocode:
Cntd…  When designing a program, it is useful to lay out how the program might work, before writing it in
a programming language,.
 Pseudocode is a design notation that is closely related to the logic of how a program will work.
 It lets you detail what your program will do without having to worry about the particular syntax of
your chosen programming language.
 There is no specific standard for pseudocode and programmers often have their own version.
Pseudocode can look a lot like code but it does not need to be implemented as strictly.
 Programming languages like python, reference language (used by the SQA) and visual basic will
have specific rules around syntax and structure, whereas pseudocode gives more freedom.
 Pseudocode can be used to plan out programs. It is similar to actual code.
 A programmer who uses pseudocode as part of their planning is able to take time to think about
how their program will work, what variables they might need and what inputs and outputs there
are.
 There is no strict set of rules for pseudocode, but some of the most widely recognized are:
 INPUT – indicates a user will be inputting something
 OUTPUT – indicates that an output will appear on the screen
 WHILE – a loop (iteration that has a condition at the beginning)
 FOR – a counting loop (iteration)
 REPEAT – UNTIL – a loop (iteration) that has a condition at the end
 IF – THEN – ELSE – a decision (selection) in which a choice is made
Cntd…
2) Flow charts :
 Flow charts show what is going on in a program
and how data flows around it.
 Flow charts can represent everyday processes,
show decisions taken and the result of these
decisions.
 The diamond shape explains when there is a
choice to make.
 The flow chart shows what happens depending
on the decision made at this point.
 Flow charts visualize the results of decisions,
showing what will happen in a program, and also
when, for example an if statement, is required to
make a decision.
3) Structure diagrams :
 Another way of representing a program design is to use a structure
diagram. Structure diagrams break down a problem into smaller
sections.
 These smaller sections can then be worked on one at a time.
 This can be good for big projects where a large problem can be
split into smaller tasks for separate groups, or individuals, to work
on.
 Here is an example of how a structure diagram might be used to
break a large problem down.
 This shows how you can take a complex problem and start
breaking it down into more manageable chunks.
 In reality, a complex project like building a house would have
many more stages, but this example shows that structure diagrams
can help to break down problems when designing a program.
 You would most likely use a structure diagram if you were
designing a game and wanted to break down the overall design
problem into individual elements.
Tables
 Decision table is a good way to deal with combinations of things (e.g. Inputs).
 This technique is sometimes also referred to as a ‘ cause-effect’ table.
 The reason for this is that there is an associated logic diagramming technique called ‘ cause-
effect graphing’ which was sometimes used to help derive the decision table.
 A decision table is basically an outstanding technique used in both testing and requirements
management. It is a structured exercise to prepare requirements when dealing with complex
business rules. Also, used in model complicated logic.
Design Techniques
 Software testing is a process carried out to check and confirm the delivery potential of the
software.
 In this procedure, a set of pre-decided inputs are fed into the software and the output produced
is measured against the expected results.
 This process helps to ensure that the software is working as desired and can be released into the
market.
 Software released without sufficient testing can damage the company’s standing in two ways.
 It will generate poor customer reviews
 It will lead to more serious problems such as the leakage of the customer’s private data.
 This can severely impair the organization’s business prospects.
 Software test design refers to the process of designing different tests that validate the eligibility
of a software before its release in the market.
 The process of test designing assumes high priority, as a poorly designed test will lead to
improper testing of an application.
 This, in turn, leads to failure in identifying defects and consequently, an application containing
errors may be released.
Cntd…
 While a developer has to ensure that the software meets the specifications, a business owner
has to ensure that it meets the business’ operational needs.
 To satisfy these individual goals and the main aim of the software development process, that
is a high-quality output, one will have to plan, design, and conduct tests in different
environments.
 To ensure that the testing strategy checked out is an effective one, following the below-
mentioned steps is essential:
1. Gathering and understanding the requirements of the users
2. Deriving all important business scenarios
3. Designing test scenarios for all the important business scenarios
4. Assigning all the designed test scenarios to different test cases
5. Once done with all the above-mentioned steps, one will have to choose a test design
technique as per the requirements of their business. Some of the most common design
techniques are listed below.
Cntd…
2 Types of Software Test Design Techniques

 There are various types of designing techniques, each of which is suitable for
identifying a particular type of error.
 Hence, the challenge lies in selecting the right set of relevant test design techniques
for the particular application.
 Software test design techniques can be broadly classified into two major categories:

1. Static techniques
2. Dynamic techniques
1. Static Test Design Techniques:
Cntd…  Static testing refers to the testing of software manually or with the help of tools.
 Static testing is usually carried out during the early phase of software development life cycle.
 Static testing is useful for testing multiple aspects of a software, including source code, functional
and requirement specifications, and design documents and models.
 Static testing can be further divided into two categories based upon whether it is performed
manually or with the help of tools.
 Classes of Static Test Design Techniques:

Manual With Help of Tools


Analysis of coding standard using
Walk through
compiler
Informal review Analysis of code metrics
Technical review Analysis of code structure
Audit  
Inspection  
Management review  
2. Dynamic Test Design Techniques:
Cntd…Dynamic testing involves execution of the test object (application) on a computer. The input data is
fed into the test object (application) and the program is executed. In dynamic testing, various variable
quantities such as memory usage, response time, CPU usage and overall performance of the software
are analyzed against the expected output. Dynamic testing is carried out during the validation process.
Dynamic test design techniques can be further classified into:
3. Specification-based (black-box, also known as behavioral techniques)
4. Structure-based (white-box or structural techniques
5. Experience- based
Dynamic Testing Techniques: Specification-based Structure-based Experience-based
Boundary Value Statement Coverage or
Exploratory Testing
Analysis (BVA) Line Coverage
Equivalence Condition Coverage or
Fault Attack
Partitioning (EP) Predicate Coverage
Decision Coverage or
Decision Table Testing  
Branch Coverage
State Transition Multiple Condition
 
Diagrams Coverage

Use Case Testing    


Cntd…
1. Levels of Abstraction: Levels of abstraction was originally described by Dijkstra as a bottom-
up design technique. In Dijkstra’s system each level of abstraction is composed of a group of
related functions, some of which are externally visible and some of which are internal to the
level. Internal functions are hidden from other levels; they can only be invoked by functions on
the same level. The internal functions are used to perform tasks common to the work being
performed on that level of abstraction. Each level of abstraction performs a set of services for
the functions on the next higher level of abstraction.

2. Top Down-Test: Now that you know what you need to accomplish with your program, you
now need to knowhow you can accomplish it. The approach used to do that is called top-down
design and this simply means putting all the important main parts of the program in to a list.
Test Plans- Design guidelines
Test Plan :
 A test plan is a detailed document that outlines the test strategy, Testing objectives, resources
(manpower, software, hardware) required for testing, test schedule, test estimation and test
deliverables.
 The test plan serves as a blueprint to conduct software testing activities as a defined process which
is minutely monitored and controlled by the test manager.

Importance of Test Plan:

 Test Plan helps us determine the effort needed to validate the quality of the application under test
 Help people outside the test team such as developers, business managers, customers understand the
details of testing.
 Test Plan guides our thinking. It is like a rule book, which needs to be followed.
 Important aspects like test estimation, test scope, test strategy are documented in Test Plan, so it
can be reviewed by Management Team and re-used for other projects.
Cntd…
How to write a Test Plan :

1. Analyze the product


2. Design the Test Strategy
3. Define Test Criteria
4. Define the Test Objectives
5. Resource Planning
6. Plan Test Environment
7. Schedule & Estimation
8. Determine Test Deliverables
Thank
You…

You might also like