Software Engineering
Software Engineering
software.
Page 1 of 67
Software Engineering is an engineering branch related to the evolution of
software product using well-defined scientific principles, techniques, and
procedures. The result of software engineering is an effective and reliable
software product.
Page 2 of 67
o Huge Programming: It is simpler to manufacture a wall than to a
house or building, similarly, as the measure of programming become
extensive engineering has to step to give it a scientific process.
o Adaptability: If the software procedure were not based on scientific
and engineering ideas, it would be simpler to re-create new software
than to scale an existing one.
o Cost: As the hardware industry has demonstrated its skills and huge
manufacturing has let down the cost of computer and electronic
hardware. But the cost of programming remains high if the proper
process is not adapted.
o Dynamic Nature: The continually growing and adapting nature of
programming hugely depends upon the environment in which the
client works. If the quality of the software is continually changing, new
upgrades need to be done in the existing one.
o Quality Management: Better procedure of software development
provides a better and quality software product.
High motivation.
Intelligence.
Page 3 of 67
Importance of Software Engineering
Page 4 of 67
this can take a lot of time. So if you are making your software
according to the software engineering method, then it will decrease a
lot of time.
4. Handling big projects: Big projects are not done in a couple of days,
and they need lots of patience, planning, and management. And to
invest six and seven months of any company, it requires heaps of
planning, direction, testing, and maintenance. No one can say that he
has given four months of a company to the task, and the project is still
in its first stage. Because the company has provided many resources
to the plan and it should be completed. So to handle a big project
without any problem, the company has to go for a software
engineering method.
5. Reliable software: Software should be secure, means if you have
delivered the software, then it should work for at least its given time or
subscription. And if any bugs come in the software, the company is
responsible for solving all these bugs. Because in software
engineering, testing and maintenance are given, so there is no worry
of its reliability.
6. Effectiveness: Effectiveness comes if anything has made according to
the standards. Software standards are the big target of companies to
make it more effective. So Software becomes more effective in the act
with the help of software engineering.
Software Processes
The term software specifies to the set of computer programs, procedures
and associated documents (Flowcharts, manuals, etc.) that describe the
program and how they are to be used.
Page 5 of 67
1. Software specifications: The functionality of the software and
constraints on its operation must be defined.
2. Software development: The software to meet the requirement must
be produced.
3. Software validation: The software must be validated to ensure that
it does what the customer wants.
4. Software evolution: The software must evolve to meet changing
client needs.
Page 6 of 67
specification, software design, implementation, testing, and so on.
After each stage is defined, it is "signed off" and development goes
onto the following stage.
2. Evolutionary development: This method interleaves the activities of
specification, development, and validation. An initial system is rapidly
developed from a very abstract specification.
3. Formal transformation: This method is based on producing a formal
mathematical system specification and transforming this specification,
using mathematical methods to a program. These transformations are
'correctness preserving.' This means that you can be sure that the
developed programs meet its specification.
4. System assembly from reusable components: This method
assumes the parts of the system already exist. The system
development process target on integrating these parts rather than
developing them from scratch.
Software Crisis
1. Size: Software is becoming more expensive and more complex with
the growing complexity and expectation out of software. For example,
the code in the consumer product is doubling every couple of years.
2. Quality: Many software products have poor quality, i.e., the software
products defects after putting into use due to ineffective testing
technique. For example, Software testing typically finds 25 errors per
1000 lines of code.
3. Cost: Software development is costly i.e. in terms of time taken to
develop and the money involved. For example, Development of the
FAA's Advanced Automation System cost over $700 per lines of code.
4. Delayed Delivery: Serious schedule overruns are common. Very
often the software takes longer than the estimated time to develop,
which in turn leads to cost shooting up. For example, one in four large-
scale development projects is never completed.
Page 8 of 67
3. Operating Procedures: Operating Procedures consist of instructions to
set up and use the software system and instructions on how react to the
system failure. Example of operating system procedures manuals is:
installation guide, Beginner's guide, reference guide, system administration
guide, etc.
Page 9 of 67
Software Development Life Cycle (SDLC)
A software life cycle model (also termed process model) is a pictorial and
diagrammatic representation of the software life cycle. A life cycle model
represents all the methods required to make a software product transit
through its life cycle stages. It also captures the structure in which these
methods are to be undertaken.
In other words, a life cycle model maps the various activities performed on a
software product from its inception to retirement. Different life cycle models
may plan the necessary development activities to phases in different ways.
Thus, no element which life cycle model is followed, the essential activities
are contained in all life cycle models though the action may be carried out in
distinct orders in different life cycle models. During any life cycle stage, more
than one activity may also be carried out.
Need of SDLC
The development team must determine a suitable life cycle model for a
particular plan and then observe to it.
Page 10 of 67
Without using an exact life cycle model, the development of a software
product would not be in a systematic and disciplined manner. When a team
is developing a software product, there must be a clear understanding
among team representative about when and what to do. Otherwise, it would
point to chaos and project failure. This problem can be defined by using an
example. Suppose a software development issue is divided into various parts
and the parts are assigned to the team members. From then on, suppose the
team representative is allowed the freedom to develop the roles assigned to
them in whatever way they like. It is possible that one representative might
start writing the code for his part, another might choose to prepare the test
documents first, and some other engineer might begin with the design phase
of the roles assigned to him. This would be one of the perfect methods for
project failure.
A software life cycle model describes entry and exit criteria for each phase. A
phase can begin only if its stage-entry criteria have been fulfilled. So without
a software life cycle model, the entry and exit criteria for a stage cannot be
recognized. Without software life cycle models, it becomes tough for
software project managers to monitor the progress of the project.
SDLC Cycle
SDLC Cycle represents the process of developing software. SDLC framework
includes the following steps:
Page 11 of 67
The stages of SDLC are as follows:
Stage1: Planning and requirement analysis
The senior members of the team perform it with inputs from all the
stakeholders and domain experts or SMEs in the industry.
Business analyst and Project organizer set up a meeting with the client to
gather all the data like what the customer wants to build, who will be the end
user, what is the objective of the product. Before creating a product, a core
understanding or knowledge of the product is very necessary.
Page 12 of 67
For Example, A client wants to have an application which concerns money
transactions. In this method, the requirement has to be precise like what
kind of operations will be done, how it will be done, in which currency it will
be done, etc.
Once the required function is done, an analysis is complete with auditing the
feasibility of the growth of a product. In case of any ambiguity, a signal is set
up for further discussion.
The next phase is about to bring down all the knowledge of requirements,
analysis, and design of the software project. This phase is the product of the
last two, like inputs from the customer and requirement gathering.
In this phase of SDLC, the actual development begins, and the programming
is built. The implementation of design begins concerning writing code.
Developers have to follow the coding guidelines described by their
management and programming tools like compilers, interpreters, debuggers,
etc. are used to develop and implement the code.
Stage5: Testing
Page 13 of 67
Stage6: Deployment
Once the software is certified, and no bugs or errors are stated, then it is
deployed.
Stage7: Maintenance
Once when the client starts using the developed systems, then the real
issues come up and requirements to be solved from time to time.
This procedure where the care is taken for the developed product is known
as maintenance.
SDLC Models
Software Development life cycle (SDLC) is a spiritual model used in project
management that defines the stages include in an information system
development project, from an initial feasibility study to the maintenance of
the completed application.
There are different software development life cycle models specify and
design, which are followed during the software development phase. These
models are also called "Software Development Process Models." Each
process model follows a series of phase unique to its type to ensure success
in the step of software development.
Page 14 of 67
Waterfall Model
The waterfall is a universally accepted SDLC model. In this method, the
whole process of software development is divided into various phases.
RAD Model
Page 15 of 67
RAD or Rapid Application Development process is an adoption of the
waterfall model; it targets developing software in a short period. The RAD
model is based on the concept that a better system can be developed in
lesser time by using focus groups to gather system requirements.
o Business Modeling
o Data Modeling
o Process Modeling
o Application Generation
o Testing and Turnover
Spiral Model
The spiral model is a risk-driven process model. This SDLC model helps
the group to adopt elements of one or more process models like a waterfall,
incremental, waterfall, etc. The spiral technique is a combination of rapid
prototyping and concurrency in design and development activities.
Each cycle in the spiral begins with the identification of objectives for that
cycle, the different alternatives that are possible for achieving the goals, and
the constraints that exist. This is the first quadrant of the cycle (upper-left
quadrant).
The next step in the cycle is to evaluate these different alternatives based on
the objectives and constraints. The focus of evaluation in this step is based
on the risk perception for the project.
The next step is to develop strategies that solve uncertainties and risks. This
step may involve activities such as benchmarking, simulation, and
prototyping.
V-Model
In this type of SDLC model testing and the development, the step is planned
in parallel. So, there are verification phases on the side and the validation
phase on the other side. V-Model joins by Coding phase.
Incremental Model
The incremental model is not a separate model. It is necessarily a series of
waterfall cycles. The requirements are divided into groups at the start of the
project. For each group, the SDLC model is followed to develop software. The
Page 16 of 67
SDLC process is repeated, with each release adding more functionality until
all requirements are met. In this method, each cycle act as the maintenance
phase for the previous software release. Modification to the incremental
model allows development cycles to overlap. After that subsequent cycle
may begin before the previous cycle is complete.
Agile Model
Agile methodology is a practice which promotes continues interaction of
development and testing during the SDLC process of any project. In the Agile
method, the entire project is divided into small incremental builds. All of
these builds are provided in iterations, and each iteration lasts from one to
three weeks.
Iterative Model
It is a particular implementation of a software development life cycle that
focuses on an initial, simplified implementation, which then progressively
gains more complexity and a broader feature set until the final system is
complete. In short, iterative development is a way of breaking down the
software development of a large application into smaller pieces.
Page 17 of 67
This model works best for small projects with smaller size development team which
are working together. It is also useful for academic software development projects.
It is an ideal model where requirements are either unknown or final release date is
not given.
Prototype Model
The prototyping model starts with the requirements gathering. The
developer and the user meet and define the purpose of the software, identify
the needs, etc.
Looping takes place in this step, and better versions of the prototype are created.
These are continuously shown to the user so that any new changes can be updated
in the prototype. This process continue until the customer is satisfied with the
system. Once a user is satisfied, the prototype is converted to the actual system
with all considerations for quality and security.
Requirement Engineering
Requirements engineering (RE) refers to the process of defining,
documenting, and maintaining requirements in the engineering design
process. Requirement engineering provides the appropriate mechanism to
understand what the customer desires, analyzing the need, and assessing
feasibility, negotiating a reasonable solution, specifying the solution clearly,
validating the specifications and managing the requirements as they are
transformed into a working system. Thus, requirement engineering is the
disciplined application of proven principles, methods, tools, and notation to
describe a proposed system's intended behavior and its associated
constraints.
1. Feasibility Study
2. Requirement Elicitation and Analysis
3. Software Requirement Specification
Page 18 of 67
4. Software Requirement Validation
5. Software Requirement Management
1. Feasibility Study:
The objective behind the feasibility study is to create the reasons for
developing the software that is acceptable to users, flexible to change and
conformable to established standards.
Types of Feasibility:
Page 20 of 67
3. Software Requirement Specification:
Software requirement specification is a kind of document which is created by
a software analyst after the requirements collected from the various sources
- the requirement received by the customer written in ordinary language. It
is the job of the analyst to write the requirement in technical language so
that they can be understood and beneficial by the development team.
The models used at this stage include ER diagrams, data flow diagrams
(DFDs), function decomposition diagrams (FDDs), data dictionaries, etc.
o Data Flow Diagrams: Data Flow Diagrams (DFDs) are used widely for
modeling the requirements. DFD shows the flow of data through a
system. The system may be a company, an organization, a set of
procedures, a computer hardware system, a software system, or any
Page 21 of 67
combination of the preceding. The DFD is also known as a data flow
graph or bubble chart.
o Data Dictionaries: Data Dictionaries are simply repositories to store
information about all data items defined in DFDs. At the requirements
stage, the data dictionary should at least define customer data items,
to ensure that the customer and developers use the same definition
and terminologies.
o Entity-Relationship Diagrams: Another tool for requirement
specification is the entity-relationship diagram, often called an "E-R
diagram." It is a detailed logical representation of the data for the
organization and uses three main constructs i.e. data entities,
relationships, and their associated attributes.
Page 22 of 67
o Automated consistency analysis: checking for the consistency of
structured requirements descriptions.
The business and technical environment of the system changes during the
development.
o Clear
o Correct
o Consistent
o Coherent
o Comprehensible
o Modifiable
o Verifiable
o Prioritized
o Unambiguous
o Traceable
o Credible source
Page 23 of 67
Software Requirements: Largely software requirements must be
categorized into two categories:
Waterfall model
Winston Royce introduced the Waterfall Model in [Link] model has five
phases: Requirements analysis and specification, design, implementation,
and unit testing, integration and system testing, and operation and
maintenance. The steps always follow in this order and do not overlap. The
developer must complete every phase before the next phase begins. This
model is named "Waterfall Model", because its diagrammatic
representation resembles a cascade of waterfalls.
Page 24 of 67
2. Design Phase: This phase aims to transform the requirements gathered
in the SRS into a suitable form which permits further coding in a
programming language. It defines the overall software architecture together
with high level and detailed design. All this work is documented as a
Software Design Document (SDD).
Page 25 of 67
4. Integration and System Testing: This phase is highly crucial as the
quality of the end product is determined by the effectiveness of the testing
carried out. The better output will lead to satisfied customers, lower
maintenance costs, and accurate results. Unit testing determines the
efficiency of individual modules. However, in this phase, the modules are
tested for their interactions with each other and with the system.
Page 26 of 67
o In this model, the risk factor is higher, so this model is not suitable for
more significant and complex projects.
o This model cannot accept the changes in requirements during
development.
o It becomes tough to go back to the phase. For example, if the
application has now shifted to the coding phase, and there is a change
in requirement, It becomes tough to go back and change it.
o Since the testing done at a later stage, it does not allow identifying the
challenges and risks in the earlier phase, so the risk reduction strategy
is difficult to prepare.
Page 27 of 67
The various phases of RAD are as follows:
[Link] Modelling: The information flow among business functions is
defined by answering questions like what data drives the business process,
what data is generated, who generates it, where does the information go,
who process it and so on.
Page 28 of 67
testing time. But the new part must be tested, and all interfaces must be
fully exercised.
Spiral Model
Page 29 of 67
The spiral model, initially proposed by Boehm, is an evolutionary software
process model that couples the iterative feature of prototyping with the
controlled and systematic aspects of the linear sequential model. It
implements the potential for rapid development of new versions of the
software. Using the spiral model, the software is developed in a series of
incremental releases. During the early iterations, the additional release may
be a paper model or prototype. During later iterations, more and more
complete versions of the engineered system are produced.
Objective setting: Each cycle in the spiral starts with the identification of
purpose for that cycle, the various alternatives that are possible for
achieving the targets, and the constraints that exists.
Page 30 of 67
Development and validation: The next phase is to develop strategies that
resolve uncertainties and risks. This process may include activities such as
benchmarking, simulation, and prototyping.
Planning: Finally, the next step is planned. The project is reviewed, and a
choice made whether to continue with a further period of the spiral. If it is
determined to keep, plans are drawn up for the next step of the project.
Advantages
Disadvantages
Page 31 of 67
V-Model
V-Model also referred to as the Verification and Validation Model. In this,
each phase of SDLC must complete before the next phase starts. It follows a
sequential design process same as the waterfall model. Testing of the device
is planned in parallel with a corresponding stage of development.
Page 32 of 67
1. Business requirement analysis: This is the first step where product
requirements understood from the customer's side. This phase
contains detailed communication to understand customer's
expectations and exact requirements.
2. System Design: In this stage system engineers analyze and interpret
the business of the proposed system by studying the user
requirements document.
3. Architecture Design: The baseline in selecting the architecture is
that it should understand all which typically consists of the list of
modules, brief functionality of each module, their interface
relationships, dependencies, database tables, architecture diagrams,
technology detail, etc. The integration testing model is carried out in a
particular phase.
4. Module Design: In the module design phase, the system breaks down
into small modules. The detailed design of the modules is specified,
which is known as Low-Level Design
5. Coding Phase: After designing, the coding phase is started. Based on
the requirements, a suitable programming language is decided. There
are some guidelines and standards for coding. Before checking in the
repository, the final build is optimized for better performance, and the
code goes through many code reviews to check the performance.
1. Unit Testing: In the V-Model, Unit Test Plans (UTPs) are developed
during the module design phase. These UTPs are executed to eliminate
errors at code level or unit level. A unit is the smallest entity which can
independently exist, e.g., a program module. Unit testing verifies that
the smallest entity can function correctly when isolated from the rest
of the codes/ units.
2. Integration Testing: Integration Test Plans are developed during the
Architectural Design Phase. These tests verify that groups created and
tested independently can coexist and communicate among
themselves.
Page 33 of 67
3. System Testing: System Tests Plans are developed during System
Design Phase. Unlike Unit and Integration Test Plans, System Tests
Plans are composed by the client?s business team. System Test
ensures that expectations from an application developer are met.
4. Acceptance Testing: Acceptance testing is related to the business
requirement analysis part. It includes testing the software product in
user atmosphere. Acceptance tests reveal the compatibility problems
with the different systems, which is available within the user
atmosphere. It conjointly discovers the non-functional problems like
load and performance defects within the real user atmosphere.
1. Easy to Understand.
2. Testing Methods like planning, test designing happens well before
coding.
3. This saves a lot of time. Hence a higher chance of success over the
waterfall model.
4. Avoids the downward flow of the defects.
5. Works well for small plans where requirements are easily understood.
Page 34 of 67
3. Software is developed during the implementation stage, so no early
prototypes of the software are produced.
4. If any changes happen in the midway, then the test documents along
with the required documents, has to be updated.
Incremental Model
Incremental Model is a process of software development where requirements
divided into multiple standalone modules of the software development cycle.
In this model, each module goes through the requirements, design,
implementation and testing phases. Every subsequent release of the module
adds function to the previous release. The process continues until the
complete system achieved.
Page 35 of 67
2. Design & Development: In this phase of the Incremental model of
SDLC, the design of the system functionality and the development method
are finished with success. When software develops new practicality, the
incremental model uses style and development phase.
Page 36 of 67
Agile Model
The meaning of Agile is swift or versatile."Agile process model" refers to a
software development approach based on iterative development. Agile
methods break tasks into smaller iterations, or parts do not directly involve
long term planning. The project scope and requirements are laid down at the
beginning of the development process. Plans regarding the number of
iterations, the duration and the scope of each iteration are clearly defined in
advance.
Page 37 of 67
1. Requirements gathering
2. Design the requirements
3. Construction/ iteration
4. Testing/ Quality assurance
5. Deployment
6. Feedback
2. Design the requirements: When you have identified the project, work
with stakeholders to define requirements. You can use the user flow diagram
or the high-level UML diagram to show the work of new features and show
how it will apply to your existing system.
5. Deployment: In this phase, the team issues a product for the user's work
environment.
6. Feedback: After releasing the product, the last step is feedback. In this,
the team receives feedback about the product and works through the
feedback.
Page 38 of 67
o eXtreme Programming(XP)
Scrum
SCRUM is an agile development process focused primarily on ways to
manage tasks in team-based development conditions.
o Scrum Master: The scrum can set up the master team, arrange the
meeting and remove obstacles for the process
o Product owner: The product owner makes the product backlog,
prioritizes the delay and is responsible for the distribution of
functionality on each repetition.
o Scrum Team: The team manages its work and organizes the work to
complete the sprint or cycle.
eXtreme Programming(XP)
This type of methodology is used when customers are constantly changing
demands or requirements, or when they are not sure about the system's
performance.
Crystal:
There are three concepts of this method-
Page 39 of 67
Dynamic Software Development Method(DSDM):
DSDM is a rapid application development strategy for software development
and gives an agile project distribution structure. The essential features of
DSDM are that users must be actively connected, and teams have been
given the right to make decisions. The techniques used in DSDM are:
1. Time Boxing
2. MoSCoW Rules
3. Prototyping
1. Pre-project
2. Feasibility Study
3. Business Study
4. Functional Model Iteration
5. Design and build Iteration
6. Implementation
7. Post-project
1. Eliminating Waste
2. Amplifying learning
3. Defer commitment (deciding as late as possible)
4. Early delivery
Page 40 of 67
5. Empowering the team
6. Building Integrity
7. Optimize the whole
Iterative Model
In this Model, you can start with some of the software specifications and
develop the first version of the software. After the first version if there is a
need to change the software, then a new version of the software is created
Page 41 of 67
with a new iteration. Every release of the Iterative Model finishes in an exact
and fixed period that is called iteration.
The Iterative Model allows the accessing earlier phases, in which the
variations made respectively. The final output of the project renewed at the
end of the Software Development Life Cycle (SDLC) process.
2. Design: In the design phase, team design the software by the different
diagrams like Data Flow diagram, activity diagram, class diagram, state
transition diagram, etc.
Page 42 of 67
4. Testing: After completing the coding phase, software testing starts using
different test methods. There are many test methods, but the most common
are white box, black box, and grey box test methods.
Page 43 of 67
5. Project completion date not confirmed because of changing
requirements.
This model is ideal for small projects like academic projects or practical
projects. One or two developers can work together on this model.
Page 44 of 67
2. Simple Model.
3. Few resources required.
4. Easy to manage.
5. Flexible for developers.
Prototype Model
The prototype model requires that before carrying out the development of
actual software, a working prototype of the system should be built. A
prototype is a toy implementation of the system. A prototype usually turns
out to be a very crude version of the actual system, possible exhibiting
limited functional capabilities, low reliability, and inefficient performance as
compared to actual software. In many instances, the client only has a
general view of what is expected from the software product. In such a
scenario where there is an absence of detailed information regarding the
input to the system, the processing needs, and the output requirement, the
prototyping model may be employed.
Page 45 of 67
Steps of Prototype Model
Page 46 of 67
Advantage of Prototype Model
Page 47 of 67
For example, in a simple database application, one cycle might implement
the graphical user Interface (GUI), another file manipulation, another queries
and another updates. All four cycles must complete before there is a working
product available. GUI allows the users to interact with the system, file
manipulation allow the data to be saved and retrieved, queries allow user to
get out of the system, and updates allows users to put data into the system.
What is Project?
A project is a group of tasks that need to complete to reach a clear result. A
project also defines as a set of inputs and outputs which are required to
achieve a goal. Projects can vary from simple to difficult and can be operated
by one person or a hundred.
Page 48 of 67
development, some teams split the project into specific tasks so they can
manage responsibility and utilize team strengths.
In software Project Management, the client and the developers need to know
the length, period and cost of the project.
1. Time
2. Cost
3. Quality
Project Manager
A project manager is a character who has the overall responsibility for the
planning, design, execution, monitoring, controlling and closure of a project.
A project manager represents an essential role in the achievement of the
projects.
A project manager must lead his team and should provide them direction to
make them understand what is expected from all of them.
2. Medium:
The Project manager is a medium between his clients and his team. He must
coordinate and transfer all the appropriate information from the clients to his
team and report to the senior management.
3. Mentor:
He should be there to guide his team at each step and make sure that the
team has an attachment. He provides a recommendation to his team and
points them in the right direction.
Activities
Software Project Management consists of many activities, that includes
planning of the project, deciding the scope of product, estimation of cost in
different terms, scheduling of tasks, etc.
Page 50 of 67
5. Project Risk Management
6. Scheduling Management
7. Project Communication Management
8. Configuration Management
If we talk about the size, then Line of code depends upon user or software
requirement.
If we talk about effort, we should know about the size of the software,
because based on the size we can quickly estimate how big team required to
produce the software.
If we talk about time, when size and efforts are estimated, the time required
to develop the software can easily determine.
And if we talk about cost, it includes all the elements such as:
o Size of software
o Quality
o Hardware
o Communication
o Training
o Additional Software and tools
o Skilled manpower
Page 51 of 67
4. Scheduling Management: Scheduling Management in software refers to
all the activities to complete in the specified order and within time slotted to
each activity. Project managers define multiple tasks and arrange them
keeping various factors in mind.
o The Experienced team leaves the project, and the new team joins it.
o Changes in requirement.
o Change in technologies and the environment.
o Market competition.
Page 52 of 67
From the planning to closure, communication plays a vital role. In all the
phases, communication must be clear and understood. Miscommunication
can create a big blunder in the project.
o Identification
o Baseline
o Change Control
o Configuration Status Accounting
o Configuration Audits and Reviews
Page 53 of 67
Project Management Tools
To manage the Project management system adequately and efficiently, we
use Project management tools.
Gantt chart
Gantt Chart first developed by Henry Gantt in 1917. Gantt chart usually
utilized in project management, and it is one of the most popular and helpful
ways of showing activities displayed against time. Each activity represented
by a bar.
Gantt chart is a useful tool when you want to see the entire landscape of
either one or multiple projects. It helps you to view which tasks are
dependent on one another and which event is coming up.
Page 54 of 67
PERT chart
The direction of the lines indicates the sequence of the task. In the above
example, tasks between "Task 1 to Task 9" must complete, and these are
Page 55 of 67
known as a dependent or serial task. Between Task 4 and 5, and Task 4 and
6, nodes are not depended and can undertake simultaneously. These are
known as Parallel or concurrent tasks. Without resource or completion time,
the task must complete in the sequence which is considered as event
dependency, and these are known as Dummy activity and represented by
dotted lines.
Logic Network
The Logic Network shows the order of activities over time. It shows the
sequence in which activities are to do. Distinguishing events and pinning
down the project are the two primary uses. Moreover, it will help with
understanding task dependencies, a timescale, and overall project workflow.
Page 56 of 67
It is an important project deliverable that classifies the team's work into
flexible segments. "Project Management Body of Knowledge (PMBOK)" is a
group of terminology that describes the work breakdown structure as a
"deliverable-oriented hierarchical breakdown of the work which is performed
by the project team."
There are two ways to generate a Work Breakdown Structure ? The top-down
and
Resource Histogram
The resource histogram is precisely a bar chart that used for displaying the
amounts of time that a resource is scheduled to be worked on over a
prearranged and specific period. Resource histograms can also contain the
related feature of resource availability, used for comparison on purposes of
contrast.
Software Metrics
A software metric is a measure of software characteristics which are
measurable or countable. Software metrics are valuable for many reasons,
including measuring software performance, planning work items, measuring
productivity, and many other uses.
Within the software development process, many metrics are that are all
connected. Software metrics are similar to the four functions of
management: Planning, Organization, Control, or Improvement.
Page 57 of 67
Classification of Software Metrics
Software metrics can be classified into two types as follows:
Page 58 of 67
Types of Metrics
Internal metrics: Internal metrics are the metrics used for measuring
properties that are viewed to be of greater importance to a software
developer. For example, Lines of Code (LOC) measure.
External metrics: External metrics are the metrics used for measuring
properties that are viewed to be of greater importance to the user, e.g.,
portability, reliability, functionality, usability, etc.
Hybrid metrics: Hybrid metrics are the metrics that combine product,
process, and resource metrics. For example, cost per FP where FP stands for
Function Point Metric.
Project metrics: Project metrics are the metrics used by the project
manager to check the project's progress. Data from the past projects are
used to collect various metrics, like time and cost; these estimates are used
as a base of new software. Note that as the project proceeds, the project
manager will check its progress from time-to-time and will compare the
effort, cost, and time with the original effort, cost and time. Also understand
that these metrics are used to decrease the development costs, time efforts
and risks. The project quality can also be improved. As quality improves, the
number of errors and time, as well as cost required, is also reduced.
In making inference about the effort to be put in the design and development
of the software systems.
Page 59 of 67
In taking decisions regarding further division of a complex module is to be
done or not.
These are useful for managing software products but not for evaluating the
performance of the technical staff.
Page 60 of 67
1. In size-oriented metrics, LOC is considered to be the normalization
value.
2. It is an older method that was developed when FORTRAN and COBOL
programming were very popular.
3. Productivity is defined as KLOC / EFFORT, where effort is measured in
person-months.
4. Size-oriented metrics depend on the programming language used.
5. As productivity depends on KLOC, so assembly language code will have
more productivity.
6. LOC measure requires a level of detail which may not be practically
achievable.
7. The more expressive is the programming language, the lower is the
productivity.
8. LOC method of measurement does not apply to projects that deal with
visual (GUI-based) programming. As already explained, Graphical User
Interfaces (GUIs) use forms basically. LOC metric is not applicable
here.
9. It requires that all organizations must use the same method for
counting LOC. This is so because some organizations use only
executable statements, some useful comments, and some do not.
Thus, the standard needs to be established.
10. These metrics are not universally accepted.
a. Errors/KLOC.
b. $/ KLOC.
c. Defects/KLOC.
d. Pages of documentation/KLOC.
e. Errors/PM.
f. Productivity = KLOC/PM (effort is measured in person-months).
g. $/ Page of documentation.
Page 61 of 67
Advantages of LOC
1. Simple to measure
Disadvantage of LOC
1. It is defined on the code. For example, it cannot measure the size of
the specification.
2. It characterizes only one specific view of size, namely length, it takes
no account of functionality or complexity
3. Bad software design may cause an excessive line of code
4. It is language dependent
5. Users cannot easily understand it
Token Count
In these metrics, a computer program is considered to be a collection of
tokens, which may be classified as either operators or operands. All software
science metrics can be defined in terms of these basic symbols. These
symbols are called as a token.
…………………………………..
…………………………………..
Page 62 of 67
……………………………
Software Project planning starts before technical work start. The various
steps of planning activities are:
Page 63 of 67
The size is the crucial parameter for the estimation of other activities.
Resources requirement are required based on cost and development time.
Project schedule may prove to be very useful for controlling and monitoring
the progress of the project. This is dependent on resources & development
time.
Page 64 of 67
Uses of Cost Estimation
1. During the planning stage, one needs to choose how many engineers
are required for the project and to develop a schedule.
2. In monitoring the project's progress, one needs to access whether the
project is progressing according to the procedure and takes corrective
action, if necessary.
C=aLb
Where C = Costs
L= size
a and b are constants
Page 65 of 67
E=1.4L0.93
DOC=30.4L0.90
D=4.6L0.26
WALSTON and FELIX develop the models at IBM provide the following
equation gives a relationship between lines of source code and effort:
E=5.2L0.91
D=4.1L0.36
Where Wi is the weight factor for the ithvariable and Xi={-1,0,+1} the
estimator gives Xione of the values -1, 0 or +1 depending on the variable
decreases, has no effect or increases the productivity.
Page 66 of 67
Solution:
Page 67 of 67