Professional Documents
Culture Documents
LABORATORY MANUAL(R20)
for
SOFTWARE ENGINEERING
(SUBJECT CODE: 20A05403P)
(for Academic Year: 2021 – 2022)
Prepared By
J RAVI KISHORE
(ASSISTANT PROFESSOR)
EXP 1: Draw the work break down structure for the system to be automated
Breaking work into smaller tasks is a common productivity technique used to make the work
more manageable and approachable. For projects, the Work Breakdown Structure (WBS) is
the tool that utilizes this technique and is one of the most important project management
documents. It singlehandedly integrates scope, cost and schedule baselines ensuring that project
plans are in alignment.
The Project Management Institute (PMI) Project Management Book of Knowledge (PMBOK)
defines the Work Breakdown Structure as a “deliverable oriented hierarchical decomposition of
the work to be executed by the project team.” There are two types of WBS: 1) Deliverable-
Based and 2) Phase-Based. The most common and preferred approach is the Deliverable-Based
approach. The main difference between the two approaches are the Elements identified in the
first Level of the WBS.
Deliverable-Based Work Breakdown Structure
A Deliverable-Based Work Breakdown Structure clearly demonstrates the relationship between
the project deliverables (i.e., products, services or results) and the scope (i.e., work to be
executed). Figure 1 is an example of a Deliverable-Based WBS for building a house. Figure 2 is
an example of a Phase-Based WBS for the same project.
Calculating the critical path is key during the planning phase because the critical path identifies
important deadlines and the activities which must be completed on time. Once a critical path is
determined, you’ll have a clear picture of the project’s actual schedule.
To find this, project managers use the critical path method (CPM) algorithm to define the least
amount of time necessary to complete each task with the least amount of slack.
Once done by hand, nowadays the critical path is calculated automatically by project
scheduling software. That makes the whole method much easier.
The critical path method (CPM) is used in project management to create project schedules and
helps project managers create a timeline for the project. The critical path method includes:
1. Identifying every task necessary to complete the project and the dependencies between
them
2. Estimating the duration of the project tasks
3. Calculating the critical path based on the tasks’ duration and dependencies to identify
After making these considerations, you gain insight into which activities must be prioritized. Then,
you can allocate the necessary resources to get these important tasks done. Tasks you discover that
aren’t on the critical path are of a lesser priority in your project plan, and can be delayed if they’re
causing the project team to become overallocated.
When you’re analyzing the critical path, you’re looking closely at the time it will take to complete
each task, taking into account the task dependencies and how they’ll impact your schedule. It’s a
technique to find the most realistic project deadline. It can also help during the project as a metric
to track your progress.
Therefore, when you’re doing critical path analysis, you’re finding the sequence of tasks that are
both important and dependent on a previous task. Less important tasks aren’t ignored and are part
of the analysis; however, they’re the ones you know can be jettisoned if time and money won’t
permit.
Critical Path – Definition of Terms
To properly understand the concept of critical path, you first need to understand the various terms
used in this method.
Earliest start time (ES): This is simply the earliest time that a task can be started in your project.
You cannot determine this without first knowing if there are any preceding tasks, or figuring out
other constraints that might impact the start of this task.
Latest start time (LS): This is the very last minute in which you can start a task before it threatens
to upset your project schedule. And you need to calculate what the latest finish time is for the same
reason. By having a clear picture of this timeframe, you can better schedule the project to meet its
deadline.
Earliest finish time (EF): The earliest an activity can be completed, based on its duration and its
earliest start time.
Latest finish time (LF): The latest an activity can be completed, based on its duration and its latest
start time.
Float. Also known as slack, float is a term that describes how long you can delay a task before it
impacts the planned schedule and threatens the project’s deadline. The tasks on the critical path
have zero float. You can either calculate the float using the steps above, or by using project
management software. If an activity has a float greater than zero, it means it can be delayed without
affecting the project completion time.
Crash duration. This describes the shortest amount of time that a task can be scheduled. You can
get there by moving around resources, adding more towards the end of the task, to decrease the
time needed to complete the task. This often means a reduction in quality, but is based on a
relationship between cost and time.
Critical path drag. If time is added to the project because of a constraint, that is called a critical
path drag, which is how much longer a project will take because of constraints on tasks in the
critical path.
Collect Activities: Use a work breakdown structure to collect all the project activities that lead
to the final deliverable.
Identify Dependencies: Figure out which tasks are dependent on other tasks before they can
begin.
Create a Network Diagram: A critical path analysis chart, or network diagram, depicts the
order of activities.
Estimate Timeline: Determine the duration of each activity.
Use the Critical Path Algorithm: The algorithm has two parts; a forward pass and a
backwards pass.
Forward Pass: Use the network diagram and the duration of each activity to determine their
earliest start (ES) and earliest finish (EF). The ES of an activity is equal to the EF of its
predecessor, and its EF is determined by the formula EF = ES + t (t is the activity duration).
The EF of the last activity identifies the expected time required to complete the entire project.
Backward Pass: Begins by assigning the last activity’s earliest finish as its latest finish. Then
the formula to find the LS is LS = LF – t (t is the activity duration). For the previous activities,
the LF is the smallest of the start times for the activity that immediately follows.
Identify the Float of Each Activity: The float is the length of time an activity can be delayed
without increasing the total project completion time. Since the critical path has no float, the
float formula reveals the critical path: Float = LS – ES
Identify the Critical Path: The activities with 0 float make up the critical path.
Revise During Execution: Continue to update the critical path network diagram as you go
through the execution phase.
These steps determine what tasks are critical and which can float, meaning they can be delayed
without negatively impacting the project by making it longer. Now you have the information you
need to plan the schedule more accurately and have more of a guarantee you’ll meet your project
deadline.
You also need to consider other constraints that might change the project schedule. The more you
can account for these issues, the more accurate your critical path method will be. If time is added to
the project because of these constraints, that is called a critical path drag, which is how much
longer a project will take because of the task and constraint.
What Is the Critical Path?
In project management, the critical path is the longest sequence of tasks that must be
completed to successfully conclude a project, from start to finish. The tasks on the critical path
are known as critical activities because if they’re delayed, the whole project will be delayed. By
identifying the critical path, you can determine the total duration of a project.
Calculating the critical path is key during the planning phase because the critical path identifies
important deadlines and the activities which must be completed on time. Once a critical path is
determined, you’ll have a clear picture of the project’s actual schedule.
To find this, project managers use the critical path method (CPM) algorithm to define the least
amount of time necessary to complete each task with the least amount of slack.
Once done by hand, nowadays the critical path is calculated automatically by project scheduling
software. That makes the whole method much easier.
The critical path method (CPM) is used in project management to create project schedules and
helps project managers create a timeline for the project. The critical path method includes:
Identifying every task necessary to complete the project and the dependencies between them
Estimating the duration of the project tasks
Calculating the critical path based on the tasks’ duration and dependencies to identify the
critical activities
Focusing on planning, scheduling and controlling critical activities
Setting project milestones and deliverables
Setting stakeholder expectations related to deadlines
After making these considerations, you gain insight into which activities must be prioritized. Then,
you can allocate the necessary resources to get these important tasks done. Tasks you discover that
aren’t on the critical path are of a lesser priority in your project plan, and can be delayed if they’re
causing the project team to become overallocated.
When you’re analyzing the critical path, you’re looking closely at the time it will take to complete
each task, taking into account the task dependencies and how they’ll impact your schedule. It’s a
technique to find the most realistic project deadline. It can also help during the project as a metric
to track your progress.
Therefore, when you’re doing critical path analysis, you’re finding the sequence of tasks that are
both important and dependent on a previous task. Less important tasks aren’t ignored and are part
of the analysis; however, they’re the ones you know can be jettisoned if time and money won’t
permit.
Critical Path – Definition of Terms
To properly understand the concept of critical path, you first need to understand the various terms
used in this method.
Earliest start time (ES): This is simply the earliest time that a task can be started in your project.
You cannot determine this without first knowing if there are any preceding tasks, or figuring out
other constraints that might impact the start of this task.
Latest start time (LS): This is the very last minute in which you can start a task before it threatens
to upset your project schedule. And you need to calculate what the latest finish time is for the same
reason. By having a clear picture of this timeframe, you can better schedule the project to meet its
deadline.
Earliest finish time (EF): The earliest an activity can be completed, based on its duration and its
earliest start time.
Latest finish time (LF): The latest an activity can be completed, based on its duration and its latest
start time.
Float. Also known as slack, float is a term that describes how long you can delay a task before it
impacts the planned schedule and threatens the project’s deadline. The tasks on the critical path
have zero float. You can either calculate the float using the steps above, or by using project
management software. If an activity has a float greater than zero, it means it can be delayed without
affecting the project completion time.
Crash duration. This describes the shortest amount of time that a task can be scheduled. You can
get there by moving around resources, adding more towards the end of the task, to decrease the
time needed to complete the task. This often means a reduction in quality, but is based on a
relationship between cost and time.
Critical path drag. If time is added to the project because of a constraint, that is called a critical
path drag, which is how much longer a project will take because of constraints on tasks in the
critical path.
Collect Activities: Use a work breakdown structure to collect all the project activities that lead
to the final deliverable.
Identify Dependencies: Figure out which tasks are dependent on other tasks before they can
begin.
Create a Network Diagram: A critical path analysis chart, or network diagram, depicts the
order of activities.
Estimate Timeline: Determine the duration of each activity.
Use the Critical Path Algorithm: The algorithm has two parts; a forward pass and a
backwards pass.
Forward Pass: Use the network diagram and the duration of each activity to determine their
earliest start (ES) and earliest finish (EF). The ES of an activity is equal to the EF of its
predecessor, and its EF is determined by the formula EF = ES + t (t is the activity duration).
The EF of the last activity identifies the expected time required to complete the entire project.
Backward Pass: Begins by assigning the last activity’s earliest finish as its latest finish. Then
the formula to find the LS is LS = LF – t (t is the activity duration). For the previous activities,
the LF is the smallest of the start times for the activity that immediately follows.
Identify the Float of Each Activity: The float is the length of time an activity can be delayed
without increasing the total project completion time. Since the critical path has no float, the
float formula reveals the critical path: Float = LS – ES
Identify the Critical Path: The activities with 0 float make up the critical path.
Revise During Execution: Continue to update the critical path network diagram as you go
through the execution phase.
These steps determine what tasks are critical and which can float, meaning they can be delayed
without negatively impacting the project by making it longer. Now you have the information you
need to plan the schedule more accurately and have more of a guarantee you’ll meet your project
deadline.
You also need to consider other constraints that might change the project schedule. The more you
can account for these issues, the more accurate your critical path method will be. If time is added to
the project because of these constraints, that is called a critical path drag, which is how much
longer a project will take because of the task and constraint.
Time is one of the triple constraints of a project, so it’s understandable why critical path software
has become popular in project management. Any opportunity to gain efficiencies steers the project
closer to meeting its goals and objectives.
Since critical path is a very specific technique, critical path software is usually associated with a
larger project planning tool that organizes tasks, prioritizes the sequence of activities and other
features that go into creating the schedule. One of the most commonly used project management
software to identify the critical path is Microsoft Project. However, it has major drawbacks that
make ProjectManager.com a better choice.
PERT
Program evaluation and review technique (PERT) is a technique adopted by organizations to analyze and
represent the activity in a project, and to illustrate the flow of events in a project. PERT is a method to evaluate
and estimate the time required to complete a task within deadlines.
PERT serves as an management tool to analyze, define and integrate events. PERT also illustrates the activities
and interdependencies in a project. The main goal of PERT is to reduce the cost and time needed to complete a
project.
PERT was developed in 1950 by the U.S. Navy during the Cold War and is intended for large projects, which
are:
● Complex
● Require a series of sequential tasks
● Performed in parallel with other projects
1. Identifying Tasks and Milestones: Every project involves a series of required tasks. These tasks are
listed in a table allowing additional information on sequence and timing to be added later.
2. Placing the Tasks in a Proper Sequence: The tasks are analyzed and placed in a sequence to get the
desired results.
3. Network Diagramming: A network diagram is drawn using the activity sequence data showing the
sequence of serial and parallel activities.
4. Time Estimating: This is the time required to carry out each activity, in three parts:
1. Optimistic timing: The shortest time to complete an activity
2. Most likely timing: The completion time having the highest probability
3. Pessimistic timing: The longest time to complete an activity
5. Critical Path Estimating: This determines the total time required to complete a project.
PERT not only determines the time to complete a specific software development activity, but also determines
the cost.
EXP:3 Define usecases and represent them in use case document for all
stakeholders of the system to be automated.
A use case describes how a user uses a system to accomplish a particular goal. A use case
diagram consists of the system, the related use cases and actors and relates these to each other to
visualize: what is being described? (system), who is using the system? (actors) and what do the
actors want to achieve? (use cases), thus, use cases help ensure that the correct system is
developed by capturing the requirements from the user’s point of view.
A use case diagram is usually simple. It does not show the detail of the use cases:
It only summarizes some of the relationships between use cases, actors, and systems.
It does not show the order in which steps are performed to achieve the goals of each use
case.
As said, a use case diagram should be simple and contains only a few shapes. If yours contain
more than 20 use cases, you are probably mis-using usecase diagram.
The figure below shows the UML diagram hierarchy and the positioning of UML Use Case
Diagram. As you can see, use case diagrams belong to the family of behavioral diagrams.
Use Case Diagram at a Glance
A standard form of use case diagram is defined in the Unified Modeling Language as shown in
the Use Case Diagram example below:
Use Case
System function (process — automated or manual)
Named by verb + Noun (or Noun Phrase).
i.e. Do something
Each Actor must be linked to a use case, while some use cases may not be linked to actors.
Communication Link
The participation of an actor in a use case is shown by connecting a actor to a use case by
a solid link.
Actors may be connected to use cases by associations, indicating that the actor and the use
case communicate with one another using messages.
Boundary of system
The system boundary is potentially the entire system as defined in the requirements
document.
For large and complex systems, each modules may be the system boundary.
For example, for an ERP system for an organization, each of the modules such as personal,
payroll, accounting, etc.
can form a system boundary for use cases specific to each of these business functions.
The entire system can span all of these modules depicting the overall system boundary
This cause analysis tool is considered one of the seven basic quality tools. The fishbone
diagram identifies many possible causes for an effect or problem. It can be used to structure a
brainstorming session. It immediately sorts ideas into useful categories.
When to use a fishbone diagram
Fishbone diagram procedure
Fishbone diagram example
Create a fishbone diagram
Fishbone diagram resources
WHEN TO USE A FISHBONE DIAGRAM
When identifying possible causes for a problem
When a team’s thinking tends to fall into ruts
FISHBONE DIAGRAM PROCEDURE
Customer orders for custom mountain bikes are delivered 4 weeks later than regular mountain
bikes.
Step 2:
Once the problem statement has been defined, production, warehouse and supply chain data
relating to the product in question may be collected in theis case to better identify possible
causes. This will make the process of checking the possible causes and theories a lot easier.
Step 3:
The next step is to draw the fish bone diagram including the possible cause and the four
standard problem sources. The four possible sources are:
Step 4:
For each problem source, the user must brainstorm and think of possible causes and hypothesis
related to that source. The production and supply chian data collected in step 2 can be very
helpful in this step. This can be seen below:
Step 5:
For each of the causes identified in the step above the same thought process is repeated as in
step 4 to try and identify the root cause of each cause. This process is similar to the 5 whys
approach of problem solving.
Step 6:
Each possible root cause or hypothesis is checked for validity with support from production,
warehouse, and other data collected along the supply chain to verify its valididty or rule the
possible cause asa credible one. Once this process has been completed a handful of possible
causes will be proved valid. These should provide a focuss area to address in order to eliminate
the problem, issue, or seize the opportunity named in the problem statement.
EXP 6: Define complete project plan for the system to be automated using
Microsoft project tool.
Notes:
This Quick Start is specific to Microsoft Project 2019, 2016, and the Microsoft 365
subscription Project Online Desktop Client. Project Online has some additional features that
support online interaction.
For more detailed information about creating a new project, see Create a new project.
Create a project from a template
1. Open Project.
Or select File > New if you're already working in a project plan.
2. Select a template or type in the Search for online templates box and then press Enter.
Or, choose Blank Project to create a project from scratch.
3. When you select a template, select the options you want, and select Create.
Change the resources, tasks, and durations in the template so they are right for your project.
Note: To create a new project from an existing project, change the project start and finish dates,
and then save the project file with a new name or in a different location.
Requirements are essential signs on the road that leads to a successful project. They establish a
formal agreement between a client and a provider that they are both working to reach the same
goal. High-quality, detailed requirements also help mitigate financial risks and keep the project
on a schedule. According to the Business Analysis Body of Knowledge definition,
requirements are a usable representation of a need.
Creating requirements is a complex task as it includes a set of processes such as elicitation,
analysis, specification, validation, and management. In this article, we’ll discuss the main types
of requirements for software products and provide a number of recommendations for their use.
Classification of requirements
Prior to discussing how requirements are created, let’s differentiate their types.
Use Cases:
We then derive one or more use cases from each feature. A use case defines how a user
achieves a goal using our product.
Use cases are a way to document a specific type of requirement – called “Functional
Requirements”. There are many benefits to using use cases to document functional
requirements.
Requirements:
After defining use cases, we define other types of requirements – such as non-functional
requirements, UI requirements, etc.
Typical Workflow
In a typical project – we start by understanding user needs. Then we translate needs
into features. We then create functional requirements – i.e. use cases – to describe how users
will achieve a need using our product. Then we define other types of requirements: non-
functional requirements, UI requirements, etc.
Why we use it? Because it can be used to easily estimate the size of the software product
directly from the problem specification. The conceptual Idea behind the FPM is that size of
the software product is directly dependent on the number of different functions or features it
supports.
• When function is invoked, read some input data and transform it to corresponding output
data.
Example the issue book feature of a library automation software takes the name of the book
as input and displays its location and the number of copies available.
• Beside using the number of the input and output data values function point metric computes
the size of a software product(in unit of function points or FPs.)
2) Individual data items input by the user are not considered in the calculation of the number
of input, but a group of related inputs are considered as single input.
Example:
3) Number of outputs: it refers to- reports printed, screen outputs, error messages produced
While outputting the number of output individual data items with in a reports are not
considered, but a set of related data items is counted as one input.
4) number of inquiries: Distinct interactive queries which can be made by the users. This
inquiries are the user commands which require specified action by the system.
5) Number of files: Each logical file is counted.
Once the unadjusted function point is computed, the technical complexity factor(TCF)
is computed next.
TCF refines the UFP measured by considering 14 other factors such as high transaction rate,
throughput, and response time requirement etc.
Each of these 14 factor is assigned from 0(not present or no influence) to 6 (strong influence).
The resulting number are summed, yielding the total degree of influence (DI).
=(0.65+0.1*DI)
so FP=UFP*TCF
• Less Researched Data: Less research data is available on function point as compared to
LOC.
• Long learning curve: As the learning curve is quite long it's not easy to gain proficiency.
• Time consuming: It is a time consuming method as less research data is available which
generate low accuracy and less effective results.
3. Usecase point metric
Simple 1 to 3 transactions 5
Average 4 to 7 transactions 10
UUCW = (Total No. of Simple Use Cases x 5) + (Total No. Average Use Cases x 10) +
(Total No. Complex Use Cases x 15)
Unadjusted Actor Weight (UAW)[edit]
The UAW is another factor that contributes to the size of the software being developed. It is
calculated based on the number and complexity of the actors for the system. Similar to finding
the UUCW, each of the actors must be identified and classified as Simple, Average or Complex
based on the type of actor. Each classification also has a predefined weight assigned. The UAW
is the total of the weights for each of the actors. The following chart shows the different
classifications of actors and the weight value assigned.
Actor
Type of Actor Weight
Classification
External system that must interact with the system using a well-
Simple 1
defined API
External system that must interact with the system using standard
Average 2
communication protocols (e.g. TCP/IP, FTP, HTTP, database)
UAW = (Total No. of Simple actors x 1) + (Total No. Average actors x 2) + (Total No.
Complex actors x 3)
Technical Complexity Factor (TCF)[edit]
The TCF is one of the factors applied to the estimated size of the software in order to account
for technical considerations of the system. It is determined by assigning a score between 0
(factor is irrelevant) and 5 (factor is essential) to each of the 13 technical factors listed in the
table below. This score is then multiplied by the defined weighted value for each factor. The
total of all calculated values is the technical factor (TF). The TF is then used to compute the
TCF with the following formula:
TCF = 0.6 + (TF/100)
Factor Description Weight
Example[edit]
To illustrate the process of calculating the UCP, an Online Shopping System will be used. The
diagram below depicts the Use Case Diagram for the system to be developed.
UUCW = (Total No. of Simple Use Cases x 5) + (Total No. Average Use Cases x 10) +
(Total No. Complex Use Cases x 15)
For the Online Shopping System, the UUCW = (2 x 5) + (3 x 10) + (4 x 15) = 100
UUCW = 100
Unadjusted Actor Weight (UAW)[edit]
To calculate the UAW, the actors must be identified. The Online Shopping System use case
diagram is depicting five actors; One simple for the Payment Processing System and four
complex for each of the human users actors (i.e. Online Customer, Marketing Administrator,
Warehouse Clerk, Warehouse Manager.) The calculation for UAW is as follows:
UAW = (Total No. of Simple Actors x 1) + (Total No. Average Actors x 2) + (Total No.
Complex Actors x 3)
For the Online Shopping System, UAW = (1 x 1) + (0 x 2) + (4 x 3) = 13
UAW = 13
Technical Complexity Factor (TCF)[edit]
To calculate the TCF, each of the technical factors is assigned a value based on how essential
the technical aspect is to the system being developed. The diagram below shows the assigned
values for the Online Shopping System. The values are multiplied by the weighted values and
the total TF is determined.
Assigned Weight x Assigned
Factor Description Weight
Value Value
Response time/performance
T2 1.0 5 5
objectives
Total (TF): 42
What is Junit?
JUnit is an open source Unit Testing Framework for JAVA. It is useful for Java Developers to write
and run repeatable tests. Erich Gamma and Kent Beck initially develop it. It is an instance of xUnit
architecture. As the name implies, it is used for Unit Testing of a small chunk of code.
Developers who are following test-driven methodology must write and execute unit test first
before any code.
Once you are done with code, you should execute all tests, and it should pass. Every time any
code is added, you need to re-execute all test cases and makes sure nothing is broken.
Before discussing Junit testing in detail, it is imperative to understand what is Unit Testing?
Unit Testing is used to verify a small chunk of code by creating a path, function or a method. The
term "unit" exist earlier than the object-oriented era. It is basically a natural abstraction of an
object oriented system i.e. a Java class or object (its instantiated form).
It finds bugs early in the code, which makes our code more reliable.
JUnit is useful for developers, who work in a test-driven environment.
Unit testing forces a developer to read code more than writing.
You develop more readable, reliable and bug-free code which builds confidence during
development.
JUnit has added many new features in JUnit4. You can understand it easily by comparing JUnit 3.x
and JUnit 4.x.
Example :
package testing;
public class JunitTesting {
return x*x;
int count = 0;
count++;
return count;
Step5 : create a JUnit test case with name squareTest and write the below code in squareTest.java
file
package testing;
import org.junit.jupiter.api.Test;
class squareTest {
@Test
void test() {
JunitTesting test = new JunitTesting();
assertEquals(25,output);
Step 7 : create another testing file with named countATest and write the below code in the
countATest.java
package testing;
import org.junit.jupiter.api.Test;
class countATest {
@Test
void test() {
assertEquals(2,result);
Call Graphs
CScout / clang++ & llvm can create call graphs that list how functions call each other. Keep in mind that the graphs only
indicate the calls detected by statically analyzing the program source. Calls via function pointers will not appear in the
call graph.
Two global options specify the format of the call graph and the content on each graph's node.
Through these options you can obtain graphs in
10. plain text form: suitable for processing with other tools,
11. HTML: suitable for browsing via CScout,
12. dot: suitable for generating high-quality graphics files,
13. SVG: suitable for graphical browsing, if your browser supports this format, and
14. GIF: suitable for viewing on SVG-challenged browsers.
All diagrams follow the notation
Two links on the main page (function and macro call graph, and non-static function call graph)
can give you the call graphs of the complete program. For any program larger than a few
thousand lines, these graphs are only useful in their textual form. In their graphical form, even
with node information disabled, they can only serve to give you a rough idea of how the program
is structured. The following image depicts how the three different programs we analyzed in the
bin example relate to each other.
More useful are the call graphs that can be generated for individual functions or files. These can
allow you to see what paths can possibly lead to a given function (call graph of all callers), which
functions can be reached starting from a given function, the function in context, and how
functions in a given file relate to each other.
As an example, the following diagram depicts all paths leading to the setfile function.
Correspondingly, the functions that can be reached starting from the copy_file function appears
in the following diagram.
while the following shows the function setsymtab in context, depicting all the paths leading to it
(callers) and leaving from it (called functions).
Finally, the following is an example of how the functions in a single file (parse.c) relate to each
other.
Example :
#include <vector>
struct A {
A(int);
int main() {
std::vector<A> v;
v.push_back(42);
v[0].f();
$ cat callgraph.dot |
c++filt |