KEMBAR78
Cpe307 Notes | PDF | Software Development Process | Algorithms
0% found this document useful (0 votes)
13 views20 pages

Cpe307 Notes

The document outlines the Software Development Life Cycle (SDLC), which is a systematic process for building software that ensures quality and correctness, consisting of seven phases: Requirement collection and analysis, Feasibility study, Design, Coding, Testing, Installation/Deployment, and Maintenance. It emphasizes the importance of SDLC for project planning, tracking, and enhancing client relations, while also detailing various SDLC models such as Waterfall, Agile, and Spiral. Additionally, it discusses project management frameworks, their key elements, and best practices for effective project execution.

Uploaded by

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

Cpe307 Notes

The document outlines the Software Development Life Cycle (SDLC), which is a systematic process for building software that ensures quality and correctness, consisting of seven phases: Requirement collection and analysis, Feasibility study, Design, Coding, Testing, Installation/Deployment, and Maintenance. It emphasizes the importance of SDLC for project planning, tracking, and enhancing client relations, while also detailing various SDLC models such as Waterfall, Agile, and Spiral. Additionally, it discusses project management frameworks, their key elements, and best practices for effective project execution.

Uploaded by

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

SOFTWARE DEVELOPMENT

TECHNIQUES
[Document subtitle]

JANUARY 12, 2023


CPE 307
[Company address]
What is SDLC?

SDLC is a systematic process for building software that ensures the quality and correctness of the
software built. SDLC process aims to produce high-quality software that meets customer
expectations. The system development should be complete in the pre-defined time frame and cost.
SDLC consists of a detailed plan which explains how to plan, build, and maintain specific software.
Every phase of the SDLC life Cycle has its own process and deliverables that feed into the next
phase. SDLC stands for Software Development Life Cycle and is also referred to as the
Application Development life-cycle.
In this Software Development Life Cycle tutorial, you will learn

• What is SDLC (Software Development Life Cycle)?


• Why SDLC?
• SDLC Phases
• Phase 1: Requirement collection and analysis
• Phase 2: Feasibility study
• Phase 3: Design
• Phase 4: Coding
• Phase 5: Testing
• Phase 6: Installation/Deployment
• Phase 7: Maintenance
• Popular SDLC Models

Why SDLC?

Here, are prime reasons why SDLC is important for developing a software system.

• It offers a basis for project planning, scheduling, and estimating


• Provides a framework for a standard set of activities and deliverables
• It is a mechanism for project tracking and control
• Increases visibility of project planning to all involved stakeholders of the development
process
• Increased and enhance development speed

P a g e 1 | 19
• Improved client relations
• Helps you to decrease project risk and project management plan overhead

SDLC Phases
The entire SDLC process divided into the following SDLC steps:

SDLC Phases

• Phase 1: Requirement collection and analysis


• Phase 2: Feasibility study
• Phase 3: Design
• Phase 4: Coding
• Phase 5: Testing
• Phase 6: Installation/Deployment
• Phase 7: Maintenance

In this tutorial, I have explained all these Software Development Life Cycle Phases

Phase 1: Requirement collection and analysis


The requirement is the first stage in the SDLC process. It is conducted by the senior
team members with inputs from all the stakeholders and domain experts in the
industry. Planning for the quality assurance requirements and recognization of the
risks involved is also done at this stage.

This stage gives a clearer picture of the scope of the entire project and the
anticipated issues, opportunities, and directives which triggered the project.

Requirements Gathering stage need teams to get detailed and precise


requirements. This helps companies to finalize the necessary timeline to finish the
work of that system.

Phase 2: Feasibility study


Once the requirement analysis phase is completed the next sdlc step is to define
and document software needs. This process conducted with the help of ‘Software
P a g e 2 | 19
Requirement Specification’ document also known as ‘SRS’ document. It includes
everything which should be designed and developed during the project life cycle.

There are mainly five types of feasibilities checks:

• Economic: Can we complete the project within the budget or not?


• Legal: Can we handle this project as cyber law and other regulatory
framework/compliances.
• Operation feasibility: Can we create operations which is expected by the
client?
• Technical: Need to check whether the current computer system can support
the software
• Schedule: Decide that the project can be completed within the given
schedule or not.

Phase 3: Design
In this third phase, the system and software design documents are prepared as per
the requirement specification document. This helps define overall system
architecture.

This design phase serves as input for the next phase of the model.

There are two kinds of design documents developed in this phase:

High-Level Design (HLD)

• Brief description and name of each module


• An outline about the functionality of every module
• Interface relationship and dependencies between modules
• Database tables identified along with their key elements
• Complete architecture diagrams along with technology details

Low-Level Design (LLD)

• Functional logic of the modules


• Database tables, which include type and size
• Complete detail of the interface
• Addresses all types of dependency issues
• Listing of error messages
P a g e 3 | 19
• Complete input and outputs for every module

Phase 4: Coding
Once the system design phase is over, the next phase is coding. In this phase,
developers start build the entire system by writing code using the chosen
programming language. In the coding phase, tasks are divided into units or
modules and assigned to the various developers. It is the longest phase of the
Software Development Life Cycle process.

In this phase, Developer needs to follow certain predefined coding guidelines. They
also need to use programming tools like compiler, interpreters, debugger to
generate and implement the code.

Phase 5: Testing
Once the software is complete, and it is deployed in the testing environment. The
testing team starts testing the functionality of the entire system. This is done to
verify that the entire application works according to the customer requirement.

During this phase, QA and testing team may find some bugs/defects which they
communicate to developers. The development team fixes the bug and send back to
QA for a re-test. This process continues until the software is bug-free, stable, and
working according to the business needs of that system.

Phase 6: Installation/Deployment
Once the software testing phase is over and no bugs or errors left in the system
then the final deployment process starts. Based on the feedback given by the
project manager, the final software is released and checked for deployment issues
if any.

Phase 7: Maintenance
Once the system is deployed, and customers start using the developed system,
following 3 activities occur

• Bug fixing – bugs are reported because of some scenarios which are not
tested at all
• Upgrade – Upgrading the application to the newer versions of the Software
• Enhancement – Adding some new features into the existing software
P a g e 4 | 19
The main focus of this SDLC phase is to ensure that needs continue to be met and
that the system continues to perform as per the specification mentioned in the first
phase.

Popular SDLC Models


Here, are some of the most important models of Software Development Life Cycle
(SDLC):

Waterfall model in SDLC


The waterfall is a widely accepted SDLC model. In this approach, the whole process
of the software development is divided into various phases of SDLC. In this SDLC
model, the outcome of one phase acts as the input for the next phase.

This SDLC model is documentation-intensive, with earlier phases documenting


what need be performed in the subsequent phases.

Incremental Model in SDLC


The incremental model is not a separate model. It is essentially 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 SDLC life cycle
process is repeated, with each release adding more functionality until all
requirements are met. In this method, every 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.

V-Model in SDLC
In this type of SDLC model testing and the development, the phase is planned in
parallel. So, there are verification phases of SDLC on the side and the validation
phase on the other side. V-Model joins by Coding phase.

Agile Model in SDLC


Agile methodology is a practice which promotes continue 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.
P a g e 5 | 19
Spiral Model
The spiral model is a risk-driven process model. This SDLC testing model helps the
team to adopt elements of one or more process models like a waterfall,
incremental, waterfall, etc.

This model adopts the best features of the prototyping model and the waterfall
model. The spiral methodology is a combination of rapid prototyping and
concurrency in design and development activities.

Big bang model


Big bang model is focusing on all types of resources in software development and
coding, with no or very little planning. The requirements are understood and
implemented when they come.

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 is either unknown or final release
date is not given.

Summary
• The Software Development Life Cycle (SDLC) is a systematic process for
building software that ensures the quality and correctness of the software
built
• The full form SDLC is Software Development Life Cycle or Systems
Development Life Cycle.
• SDLC in software engineering provides a framework for a standard set of
activities and deliverables
• Seven different SDLC stages are 1) Requirement collection and analysis 2)
Feasibility study: 3) Design 4) Coding 5) Testing: 6) Installation/Deployment
and 7) Maintenance
• The senior team members conduct the requirement analysis phase
• Feasibility Study stage includes everything which should be designed and
developed during the project life cycle
• In the Design phase, the system and software design documents are
prepared as per the requirement specification document

P a g e 6 | 19
• In the coding phase, developers start build the entire system by writing code
using the chosen programming language
• Testing is the next phase which is conducted to verify that the entire
application works according to the customer requirement.
• Installation and deployment face begins when the software testing phase is
over, and no bugs or errors left in the system
• Bug fixing, upgrade, and engagement actions covered in the maintenance
face
• Waterfall, Incremental, Agile, V model, Spiral, Big Bang are some of the
popular SDLC models in software engineering
• SDLC in software testing consists of a detailed plan which explains how to
plan, build, and maintain specific software

P a g e 7 | 19
Project Management Framework Types, Key Elements & Best
Practices

A project never exists in a vacuum. Rather, a project is executed by a team within an


organization that has some sort of a project management framework established to enable
the process. This framework, whether deliberately designed or not, acts as a loose guide
for how the project should function for teams across multiple channels.

This framework should be designed to suit the needs of your projects, goals and team. Read
on to learn how to make a trustworthy project management framework that can help guide
your projects to successful conclusions.

What Is a Project Management Framework?


A project management framework maps out the methods, processes, tasks, resources
and tools needed to take the project from beginning to end. It’s typically broken into three
parts: project lifecycle, project control cycle and tools & templates.

One of the tools that help map the project life cycle and, in turn, helps control project
execution is a Gantt chart. ProjectManager, an online work and project management
software, offers Gantt charts that do more than organize tasks, link dependencies and set
milestones. You can also filter for the critical path without having to configure complex
calculations. Once you have a schedule, set the baseline and begin tracking the planned
effort against your actual effort to stay on schedule. Get started with ProjectManager for
free.

Project Management Framework Types

There are many common types of frameworks designed for different projects, team sizes,
industries and budgets. Here are some project management framework examples.

P a g e 8 | 19
• Scrum: An agile project management framework that was initially
created for software development.

• Kanban: A visual project management framework focuses on task


management and process improvement.

• Scrumban: As its name suggests, this is a mix of Scrum and


Kanban. Scrumban is a great example of how you can build a project
management framework by using elements from other frameworks
or methodologies.

• Lean: This framework focuses on continuous process improvement,


resource management and work management.

• Waterfall: A traditional project management framework that


consists of sequential project planning and execution.

Key Elements of a Project Management Framework

We’ve already briefly touched on these three elements: the project lifecycle, project control
cycle and tools and templates. These three elements are not carried out in any one specific
order, but when combined, they help the project function at optimal levels. Let’s take a
deeper dive into these three elements.

Tools & Templates

As previously mentioned, there’s no need to reinvent the wheel considering all of the
templates already available online. Popular templates include PRINCE2, CCPM (critical
chain project management), scrum (primarily used in development environments) and the
waterfall methodology. Many Gantt charts employ the waterfall methodology in their
makeup, so it’s an easy transition to make should you migrate from software to software.

P a g e 9 | 19
The actions in a framework can either be sequential—ideal for a waterfall methodology—
or simultaneous, which a kanban board can support.

Project Life Cycle

The project life cycle outlines how you’ll set up your overall project management
framework. You’ll start mapping out your project management framework by referencing
your project lifecycle.

There are typically five phases that make up the project lifecycle: initiation, planning,
execution, management and review.

• Initiation: Initiation consists of research, planning, coordinating


with both stakeholders, brainstorming ideas and interviewing
customers/stakeholders/partners/manufacturers for input.

• Planning: Now that you’ve identified the key components to


successfully create the project, you can start putting the pieces of the
puzzle together. Where does each milestone go? How many teams
will be involved? What are the risks for each team, and who will
manage them? All these questions and more will be answered and
signed off on by the stakeholder team during this phase.

• Execution: The project kicks off! Now that all relevant team
members have the creative brief, the project will move into the
production phase for designers, developers, writers and other
members to produce deliverables.

• Management: The management phase is where you’ll monitor,


review and report all updates—particularly at each milestone—to
key stakeholders. Additionally, you’ll want to make a note of

P a g e 10 | 19
everything just in case, anomaly or not, and keep all notes in a
repository to refer back to at a later date.

• Review: The project is complete and the deliverable has been


successfully delivered. At this stage, you’ll review all notes, key
successes and points that could improve with stakeholders, team
members, customers and manufacturers.

This is why, arguably, the lifecycle stage is the biggest and most important component of
your project management framework. The lifecycle often acts as a tool to show key
stakeholders each stage against each milestone and what goals will be accomplished at
each point. Each new phase and milestone reached is another measurable metric to report
once the project is complete.

Project Control Cycle

This is the monitoring and management portion of your project. At this phase, you’ll use
software to combine communication across channels into one area. Different project
management metrics help record the progress of all team members, monitor for possible
risks that you’ve already identified and manage the expectations of key stakeholders.

Depending on how large your team is and how many countries and time zones in which it
operates, this can be as long of a process as the project lifecycle portion of the project.
That’s because when you’re dealing with people, you’re dealing with variables. In every
variable, there’s a risk.

Unfortunately, as many as 57% of leadership teams surveyed said the risk was one facet
they felt least prepared to deal with, and only 36% of companies have a plan in place to
address risk appropriately. The project would likely fail without a project manager

P a g e 11 | 19
appropriately managing and monitoring the risks, optimizing the program throughout the
process and creating channels for open communication.

Project Management Framework Best Practices

1. Keep a controlled method of communication. Without a method


where communication is open across multiple channels and teams,
the framework could easily collapse.

2. Create templates to use across similar project types. Because a


framework is so flexible, you can use a framework for multiple
project types without reinventing the wheel, so to speak. This can
help improve efficiency across all teams involved.

3. Create a repository for all notes, documents, comments on the


project and milestones reached. This can be useful for the review
phase as well as when you create a new project framework. You can
use the lessons learned from the previous project to modify the new
framework for more efficiency.

Since a framework is so flexible and intuitive, it’s fairly difficult for it to fail. But by using
these best practices, you can ensure that it succeeds every time.

P a g e 12 | 19
Design and Analysis Introduction

An algorithm is a set of steps of operations to solve a problem performing calculation,


data processing, and automated reasoning tasks. An algorithm is an efficient method
that can be expressed within finite amount of time and space.
An algorithm is the best way to represent the solution of a particular problem in a very
simple and efficient way. If we have an algorithm for a specific problem, then we can
implement it in any programming language, meaning that the algorithm is independent
from any programming languages.

Algorithm Design
The important aspects of algorithm design include creating an efficient algorithm to
solve a problem in an efficient way using minimum time and space.
To solve a problem, different approaches can be followed. Some of them can be efficient
with respect to time consumption, whereas other approaches may be memory efficient.
However, one has to keep in mind that both time consumption and memory usage
cannot be optimized simultaneously. If we require an algorithm to run in lesser time, we
have to invest in more memory and if we require an algorithm to run with lesser memory,
we need to have more time.

Problem Development Steps


The following steps are involved in solving computational problems.

• Problem definition
• Development of a model
• Specification of an Algorithm
• Designing an Algorithm
• Checking the correctness of an Algorithm
• Analysis of an Algorithm
• Implementation of an Algorithm
• Program testing
• Documentation

P a g e 13 | 19
Characteristics of Algorithms
The main characteristics of algorithms are as follows −
• Algorithms must have a unique name
• Algorithms should have explicitly defined set of inputs and outputs
• Algorithms are well-ordered with unambiguous operations
• Algorithms halt in a finite amount of time. Algorithms should not run for
infinity, i.e., an algorithm must end at some point

Pseudocode
Pseudocode gives a high-level description of an algorithm without the ambiguity
associated with plain text but also without the need to know the syntax of a particular
programming language.
The running time can be estimated in a more general manner by using Pseudocode to
represent the algorithm as a set of fundamental operations which can then be counted.

Difference between Algorithm and Pseudocode


An algorithm is a formal definition with some specific characteristics that describes a
process, which could be executed by a Turing-complete computer machine to perform a
specific task. Generally, the word "algorithm" can be used to describe any high level task
in computer science.
On the other hand, pseudocode is an informal and (often rudimentary) human readable
description of an algorithm leaving many granular details of it. Writing a pseudocode
has no restriction of styles and its only objective is to describe the high level steps of
algorithm in a much realistic manner in natural language.
For example, following is an algorithm for Insertion Sort.
Algorithm: Insertion-Sort
Input: A list L of integers of length n
Output: A sorted list L1 containing those integers present in L
Step 1: Keep a sorted list L1 which starts off empty
Step 2: Perform Step 3 for each element in the original list L
Step 3: Insert it into the correct position in the sorted list L1.
Step 4: Return the sorted list
Step 5: Stop

P a g e 14 | 19
Here is a pseudocode which describes how the high level abstract process mentioned
above in the algorithm Insertion-Sort could be described in a more realistic way.
for i <- 1 to length(A)
x <- A[i]
j <- i
while j > 0 and A[j-1] > x
A[j] <- A[j-1]
j <- j - 1
A[j] <- x

FLOWCHART
What is a Flowchart?
Flowchart is a graphical representation of an algorithm. Programmers often use it as a program-
planning tool to solve a problem. It makes use of symbols which are connected among them to
indicate the flow of information and processing.
The process of drawing a flowchart for an algorithm is known as “flowcharting”.
Basic Symbols used in Flowchart Designs
1. Terminal: The oval symbol indicates Start, Stop
and Halt in a program’s logic flow. A pause/halt is
generally used in a program logic under some error
conditions. Terminal is the first and last symbols in
the flowchart.

• Input/Output: A parallelogram denotes any


function of input/output type. Program instructions that
take input from input devices and display output on
output devices are indicated with parallelogram in a
flowchart.

P a g e 15 | 19
• Processing: A box represents arithmetic
instructions. All arithmetic processes such as adding,
subtracting, multiplication and division are indicated
by action or process symbol.

• Decision Diamond symbol represents a decision point.


Decision based operations such as yes/no question or
true/false are indicated by diamond in flowchart.

➢ Connectors: Whenever flowchart becomes complex or it


spreads over more than one page, it is useful to use connectors to
avoid any confusions. It is represented by a circle.
Flow lines: Flow lines indicate the exact sequence in which instructions are
executed. Arrows represent the direction of flow of control and relationship among
different symbols of flowchart.
Rules For Creating Flowchart :
A flowchart is a graphical representation of an algorithm.it should follow some rules
while creating a flowchart
Rule 1: Flowchart opening statement must be ‘start’ keyword.
Rule 2: Flowchart ending statement must be ‘end’ keyword.
Rule 3: All symbols in the flowchart must be connected with an arrow line.
Rule 4: The decision symbol in the flowchart cannot be associated with the arrow
line.
Advantages of Flowchart:
• Flowcharts are a better way of communicating the logic of the system.
• Flowcharts act as a guide for blueprint during program designed.
• Flowcharts help in debugging process.
• With the help of flowcharts programs can be easily analyzed.
• It provides better documentation.
• Flowcharts serve as a good proper documentation.
• Easy to trace errors in the software.
• Easy to understand.
• The flowchart can be reused for inconvenience in the future.
P a g e 16 | 19
• It helps to provide correct logic.

Disadvantages of Flowchart:
• It is difficult to draw flowcharts for large and complex programs.
• There is no standard to determine the amount of detail.
• Difficult to reproduce the flowcharts.
• It is very difficult to modify the Flowchart.
• Making a flowchart is costly.
• Some developer thinks that it is waste of time.
• It makes software processes low.
• If changes are done in software, then the flowchart must be redrawn

Example : Draw a flowchart to input two numbers from the user and display
the largest of two numbers

P a g e 17 | 19
P a g e 18 | 19
// C program to find largest of two numbers

#include <stdio.h>

int main()

int num1, num2, largest;

/*Input two numbers*/

printf("Enter two numbers:\n");

scanf("%d%d", &num1, &num2);

/*check if a is greater than b*/

if (num1 > num2)

largest = num1;

else

largest = num2;

/*Print the largest number*/

printf("%d", largest);

return 0;

Output
Enter two numbers:
10 30
30

P a g e 19 | 19

You might also like