0% found this document useful (0 votes)
8 views37 pages

Unit II SoftwareDevelopment (Ecse)

The document provides an overview of software development, detailing the Software Development Life Cycle (SDLC) which includes phases such as Requirements Gathering, Analysis, Design, Coding, Testing, Deployment, and Maintenance. It discusses various software development methodologies including the Waterfall Model, Iterative and Incremental Model, and Agile Model, along with the advantages and disadvantages of each. Additionally, it covers programming languages, data structures, and their classifications, emphasizing the importance of understanding these concepts in the field of software development.

Uploaded by

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

Unit II SoftwareDevelopment (Ecse)

The document provides an overview of software development, detailing the Software Development Life Cycle (SDLC) which includes phases such as Requirements Gathering, Analysis, Design, Coding, Testing, Deployment, and Maintenance. It discusses various software development methodologies including the Waterfall Model, Iterative and Incremental Model, and Agile Model, along with the advantages and disadvantages of each. Additionally, it covers programming languages, data structures, and their classifications, emphasizing the importance of understanding these concepts in the field of software development.

Uploaded by

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

Software development

• A set of computer science activities that are dedicated to the process of creating, designing,
deploying, and supporting software.
• Software itself is the set of instructions or programs that tell a computer what to do.
• It is independent of hardware and makes computers programmable.
• There are four basic types of software:
1. System software
2. Application software
3. Programming Software
4. Embedded Software
SDLC Cycle:
SDLC Cycle represents the process of developing software. It defines the steps involved in creating the s\w.
SDLC framework includes the following steps:
Requirements Gathering

Analysis

Design

Coding

Testing

Delivery & Maintenance


Description of SDLC steps:
Requirements Gathering:
• Initially, 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.
• They gather raw information from client through several meetings like stakeholder meetings,
reviews, etc.
• It will be shared with the Technical Project Manager, Development Team and with the senior
members in team.
Output: BRD(Business Requirement Document)
Analysis:
• Once BA shared the requirements with the team, then project manager and senior people from
the team will study the requirements to confirm these requirements feasible to implement or
not.
• Then if these senior team thought that this is feasible then project manager prepares the project
plan, and the functional expert prepares the system requirement specification.
O/P – Project Plan, System Requirement Specification
Design:
• Once the Analysis is done the design of software architecture will done in this phase.
• Here in this phase Chief Technical Architect prepares the High-Level Design of the system. Here
the application will be divided into modules, he explains to technical leads in form of a diagrams.
• Technical Leads will prepare a Low-Level design of the system. They divide the modules in to sub
modules and will explain to dev team technically.
Output: High Level and Low Level Software Development Documents.
Coding:
• Once technical design documents are shared by Architects then development team will start their
activities.
• Dev Team will follow coding standards and will develop the application based on the
requirements shared by BA.
• Every developer coded functionality will be reviewed by their leads.
Output: Source code document and other technical documents.
Testing:
• Once the application is developed it will be given to QA team for testing.
• QA team will check the BRD and they will write the test scenarios and test cases for all the
modules and will execute the test scenarios and cases.
• If we identify any bugs we will report to dev team. This process continues until the application
get into stable position.
Output: Testing documents (Test Plan, Test Scenarios, Test Cases)
Deployment:
• Here the system will be deployed into client’s environment.
• After delivering the software while using if at all any problem occurs then that problem
becomes a task, based on that problem corresponding roles will be appointed, the roles will
define the process and solve that problem
Output: Support Documents
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.
Waterfall Model:
The Waterfall Model is the oldest and most traditional software development methodology.
It divides the software development process into distinct sequential ways.
Each phase must be completed before moving to the next one.
Description:
1. Requirement Analysis
• Understand and identify the exact requirements your end users are expecting.
• Note down all the techniques, functions, features, and characteristics of this software
• Brainstorm, study, and analyze the demanded requirements instructed by a client
• Generate a software requirement specification (SRS), a detailed document of the software’s
purpose and task.
2. Design
• Give a structured design to the whole software based on the detailed requirements collected in
the first phase.
• This structured design also specify the software, hardware, architecture, user interface.
3. Implementation
• This phase is also called the coding phase
• Implement coding based on software design specification
• This phase will run unit testing to ensure each component works perfectly.

4.Integration and Testing


• After all the units are tested separately, they integrate into one system.
• The developer will run both functional and non-functional testing to ensure whether or not the
system meets the requirements.
• Run a comprehensive system testing to determine the quality of the product.
Functional and non-functional testing are two key categories of software testing, each serving
different purposes:
Functional Testing
• Functional testing focuses on verifying that the software behaves according to specified
requirements. It ensures that the application performs its intended functions correctly. Key
aspects include:
• Test Cases: Designed based on functional requirements.
• Types:
• Unit Testing: Testing individual components or functions.
• Integration Testing: Testing interactions between integrated components.
• System Testing: Testing the complete and integrated application.
• User Acceptance Testing (UAT): Validating the software from an end-user perspective.
• Objective: To confirm that the software performs its functions correctly and meets user
requirements.
Non-Functional Testing
• Non-functional testing evaluates aspects of the software that do not pertain to specific functions
but rather its performance, usability, reliability, and other qualities. Key aspects include:
• Test Cases: Designed based on non-functional requirements (e.g., performance benchmarks).
• Types:
• Performance Testing: Assessing how the system performs under load (e.g., load testing,
stress testing).
• Usability Testing: Evaluating how user-friendly and intuitive the software is.
• Security Testing: Identifying vulnerabilities and ensuring data protection.
• Compatibility Testing: Ensuring the software works across different devices, browsers, and
platforms.
• Objective: To ensure that the software meets quality attributes and performs well under various
conditions.
• Both types of testing are essential for delivering a robust, reliable, and user-friendly software
product.
5. Deployment
• Deploy the final product in the customer environment
• Do a sanity check of the customer environment to see it’s functioning properly
6. Maintenance
• Main task is to ensure software performance in the customer environment
• Provide maintenance, operational and installation support of the software
• Note and fix issues identify by the customer
• Keep in constant update with latest update
When to Use Waterfall Model?
• The waterfall model in software engineering can be deployed for software development in the
following scenarios:
• The clients have a crystal clear understanding of what they want.
• The requirements are significantly less likely to change during the execution of the project.
• The software product being developed is not complicated.
• The tools and technologies to be used for developing the software will not change dynamically.
Advantages of the Waterfall Model
• The model is very easy to understand and simple to implement.
• Phases are processed and completed one at a time.
• Once a phase is completed, we can see its output immediately.
• The duration for the each phase is fixed(start date and end date).
• We will be having fixed document, results are also well documented.
• The final cost and release date of the project can be determined in the beginning.
Disadvantages of the Waterfall Model
• This model is not where requirements are changing on regular basis.
• We cannot take/add any changes in the middle of the project.
• We cannot go back once we start any phase.
• It is not suitable for bigger projects.
• As testing will be done after development, it is difficult to identify the challenges and risks In application.
Iterative and Incremental Model:
• In an Iterative Incremental model, initially
a partial implementation of a total system
is constructed so that it will be in a deliverable state.
• Increased functionality is added.
Defects, if any, from the prior delivery are fixed
and the working product is delivered
• It is used below scenarios
• When requirements are defined clearly
and easy to understand
• When the software application is large.
• When there is a requirement of changes in future.
• Eg. WhatsApp application, Mobile Phone
Agile Model:
• Agile is derived from the Iterative and Incremental models.
• In Agile model project is divided in to several sprints/iterations.
• In every sprint, cross functional teams will be working simultaneously on all the phases of SDLC.
• Each sprint contains the client highest priority requirements.
• In agile process Product Owner(PO) will give requirements for us.
• They will come up with the set of requirements that are to be implemented in our product and
they will call for a meeting with team and will explain the same.
• BA & Team will note down all the requirements, but BA will take some set of requirements from
the given list and will prioritize the requirements.
• Then our PM will get the approval from PO on the same. Then our Project Manager set up a
Sprint planning meeting with team.
• Sprint contains 2-4 weeks.
• BA will explain the collected requirements to team.
• Whenever the sprint starts ,developers start designing the design documents and they starts
their development activities. In parallel, testers start designing the test scenarios.
• As part of the sprint, there will be daily stand-up calls where the following things were discussed.
 What we have done yesterday
 What we are going to do today
 What are the impediments (Problems)
• Before closing the sprint, Sprint review meeting will be conducted to the Product Owner (PO).
In this meeting either of the team member (Dev or BA or QA) will give demo to the product owner.
• If he suggest any new thing, the BA will make a note of it & he will prepare a user story for that and
that will incorporate that story in the next sprint.
• If they are unable to deliver anything due to the technical challenges or anything, then a Backlog
refining meeting is held to all the team members and will discuss about the things which are moving
to backlog.
• After closing the sprint, there will be call for a Sprint retrospective meeting to all the members.
 In this meeting, all the inputs from each team member is collected.
 What went well in this sprint
 What need to be improved
Advantages:
• Customer Satisfaction - can see the output of the application in early stages of the project.
• Communication between all the teams is high.
• Every resource involvement will there in project implementation.
• We can invite new changes in requirement.
• More productive and more flexible.
• We can see the feedback from customer on regular basis which helps team to provide the more
quality product.
Disadvantages:
• It is not suitable for small sized projects.
• We will be having limited documentation.
• Sometimes resource requirement and effort are difficult to estimate.
• In agile, team needs expert to take some important decisions.
Computer Languages:
The languages that are used to write programs or set of instructions are called Programming
Languages.
Classification:
1. Machine Language:
It’s in binary o’s and 1’s.
Difficult for humans to understand.
2. Assembly Language:
It consists of set of instructions in form of commands.
Requires assembler to convert into machine language.
3. High Level Language:
Instructions in this language are called codes or scripts.
Requires compiler or interpreter to convert into machine language.
• Programming is a skill that is becoming increasingly sought after in the job market.
• With a background in programming, you can get a job coding, designing software, data architecture, or
creating intuitive user interfaces.
Types of programming languages:
1. Procedural programming languages
• A procedural language follows a sequence of statements or commands in order to achieve a desired
output.
• Each series of steps is called a procedure, and a program written in one of these languages will have one
or more procedures within it.
• Common examples of procedural languages include: C, Pascal, BASIC
2. Object-oriented programming languages (OOP)
• This type of language treats a program as a group of objects composed of data and program elements, known as
attributes and methods.
• Objects can be reused within a program or in other programs.
• This makes it a popular language type for complex programs, as code is easier to reuse and scale.
• Some common object-oriented languages include: Java, Python, PHP, C++, Ruby

3. Scripting languages:
• Programmers use scripting languages to automate repetitive tasks, manage dynamic web content, or support
processes in larger applications.
• Some common scripting languages include: PHP, Ruby, Python, bash, Perl, Node.js
4. Functional programming languages
• Functional languages focus on the output of mathematical functions and evaluations.
• Each function–a reusable module of code–performs a specific task and returns a result.
• The result will vary depending on what data you input into the function.
• Some popular functional programming languages include: Scala, Erlang, Haskell, Elixir, F#

5. Logic programming languages


• Instead of telling a computer what to do, a logic programming language expresses a series of facts and rules to
instruct the computer on how to make decisions.
• Some examples of logic languages include: Prolog, Absys, Datalog, Alma-0
Other ways to classify programming languages
Front-end languages:
• Primarily concerned with the ‘user’ aspect of the software.
• The front end deals with all of the text, colors, buttons, images, and navigation that the user will face when
navigating your website or application.
• Anyone with a background in graphic design or art may be more inspired to begin learning one of the front-end
languages.
• Some examples of front-end programming languages include: HTML , CSS , JavaScript , React
Back-end languages :
• Deal with storage and manipulation of the server side of software.
• This is the part of the software that the user does not directly come into contact with but supports their experience
behind the scenes.
• This includes data architecture, scripting, and communication between applications and underlying databases.
• Anyone with experience in mathematics or engineering may find more interest in back-end development.
• Some examples of back-end programming languages include: JavaScript, PHP, Java, Python, Ruby, C#
Program Development Life Cycle:

• It is similar to SDLC, but is applied


at a higher level.
• It deals about managing multiple
software projects.
• Its an iterative process. Feedback
is taken at the end of each
iteration to improve the product.
Flowchart and algorithm:
Note: (Refer given material for this topic)
Data structures:
A Data Structure is the method of storing and organizing data in the computer memory.
It is also used for retrieving data easily.
The following are illustrations from our day-to-day life to understand the concept of data structures:
• Our name is a data structure. It comprises First name, Middle Name, and Last name.
• The date is a data structure. It includes three types of data viz date (numeric value), month (character or
numeric value), and year (numeric value).
• The 11-character IFSC code of banks is a data structure. The first four alphabetic characters in the code
indicate the bank name, the fifth character is zero by default, and the last six characters (numeric or
alphabetic) represent the branch.
• PAN number, the first three characters forms a sequence of alphabetical letters from AAA to
ZZZ, the fourth character identifies the type of holder of the card, the fifth character of the
PAN is the first character of either of the first name, surname or last name of the person ,the
last (tenth) character used as a check-sum to verify the validity of that current code.
Classification of Data Structures:
Data Structures are mainly classified into two categories:
1. Primitive Data Structures:
• They store the data of only one type i.e. built-in data types.
• Data types like integer, float, character, and booleans come in this category.
2. Non-Primitive Data Structures:
• They can store the data of more than one type i.e. derived data types.
• Data types like arrays, linked lists, trees, etc. come in this category.
• Non-Primitive Data Structures are data structures derived from Primitive Data Structures.

Based on the structure and arrangement of data, these data structures are further divided into two categories:
Linear Data Structures: The data in this data structure is arranged in a sequence, one after the other i.e. each
element appears to be connected linearly.
Based on the memory allocation, the Linear Data Structures are again classified into two types:
Static Data Structures: They have a fixed size. The memory is allocated at the compile time, and its size cannot be
changed by the user after being compiled; however, the data can be modified. e.g. array
Dynamic Data Structures: They don’t have fixed size. Memory is allocated at runtime.
Example: linked lists ,stack, queue.
Non-linear Data Structure:
• The data in this data structure are not arranged in a sequence.
• They form a hierarchy i.e. the data elements have multiple ways to connect to other elements.
• e.g. tree and graph
Types of linear data structures:
1.Array
An array is a linear data structure that collects elements of the same data type
Stores them in contiguous and adjacent memory locations.
Work on an index system starting from 0 to (n-1), where n is the size of the array.
Linked list:
A linked list is a linear data structure where elements are not stored at contiguous location.
Instead the elements are linked using pointers.
In a linked list data is stored in nodes and each node is linked to the next and, optionally, to the
previous.
Stack:
A stack is a linear Data Structure in which a data item is inserted and deleted at one end.
A stack is called LIFO (Last In First Out) structure because the data item that is inserted last into the
stack is the first data item to be deleted from the stack.
Queue:
Simple Queue is a linear data structure that follows the First-In-First-Out (FIFO) principle, where
elements are added to the rear (back) and removed from the front (head).
Types of Non-linear Data Structure:
1.Graphs
Graph is a non-linear data structure consisting of vertices and edges.
The vertices are sometimes also referred to as nodes and the edges are lines or arcs that connect
any two nodes in the graph.
Therefore, Graph is composed of a set of vertices( V ) and a set of edges( E ). The graph is denoted
by G(V, E).
2. Trees
• The tree is a non-linear data structure that is comprised of various nodes. The nodes in the tree
data structure are arranged in hierarchical order.
• It consists of a root node corresponding to its various child nodes, present at the next level. The
tree grows on a level basis, and root nodes have limited child nodes depending on the order of
the tree.

You might also like