0% found this document useful (0 votes)
33 views49 pages

Unit I

Uploaded by

qifylyvy
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)
33 views49 pages

Unit I

Uploaded by

qifylyvy
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/ 49

Introduction to

Software
Development
Software Development
• Software development refers to the design, documentation,
programming, testing, and ongoing maintenance of a software
deliverable. The combination of these steps are used to create a
workflow pipeline, a sequence of steps that when followed produce
high-quality software deliverables.
• Software development refers to a set of computer science activities
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 three basic types:
• System software to provide core functions such as operating systems, disk
management, utilities, hardware management and other operational
necessities.
• Programming software to give programmers tools such as text editors,
compilers, linkers, debuggers and other tools to create code.
• Application software (applications or apps) to help users perform tasks. Office
productivity suites, data management software, media players and security
programs are examples. Applications also refers to web and mobile
applications like those used to shop on Amazon.com, socialize with Facebook
or post pictures to Instagram.
• A possible fourth type is embedded software. Embedded systems software is
used to control machines and devices not typically considered computers —
telecommunications networks, cars, industrial robots and more. These
devices, and their software, can be connected as part of the Internet of Things
• Programmers, or coders, write source code to program computers for
specific tasks like merging databases, processing online orders, routing
communications, conducting searches or displaying text and graphics.
Programmers typically interpret instructions from software developers and
engineers and use programming languages like C++ or Java to carry them out.
• Software engineers apply engineering principles to build software and
systems to solve problems. They use modeling language and other tools to
devise solutions that can often be applied to problems in a general way, as
opposed to merely solving for a specific instance or client.
• Software developers have a less formal role than engineers and can be
closely involved with specific project areas — including writing code. At the
same time, they drive the overall software development lifecycle — including
working across functional teams to transform requirements into features,
managing development teams and processes, and conducting software
testing and maintenance.
Evolution of Software Development
• The process of developing a software product using software
engineering principles and methods is referred to as software
evolution. This includes the initial development of software and its
maintenance and updates, till desired software product is developed,
which satisfies the expected requirements.
• The process of developing a software product using software
engineering principles and methods is referred to as software
evolution. This includes the initial development of software and its
maintenance and updates, till desired software product is developed,
which satisfies the expected requirements.
• Evolution starts from the requirement gathering process. After which
developers create a prototype of the intended software and show it to the
users to get their feedback at the early stage of software product
development. The users suggest changes, on which several consecutive
updates and maintenance keep on changing too. This process changes to the
original software, till the desired software is accomplished.
• Even after the user has desired software in hand, the advancing technology
and the changing requirements force the software product to change
accordingly. Re-creating software from scratch and to go one-on-one with
requirement is not feasible. The only feasible and economical solution is to
update the existing software so that it matches the latest requirements.
• Software Evolution Laws
• Lehman has given laws for software evolution. He divided the software into
three different categories:
• S-type (static-type) - This is a software, which works strictly according to
defined specifications and solutions. The solution and the method to achieve it,
both are immediately understood before coding. The s-type software is least
subjected to changes hence this is the simplest of all. For example, calculator
program for mathematical computation.
• P-type (practical-type) - This is a software with a collection of procedures. This
is defined by exactly what procedures can do. In this software, the specifications
can be described but the solution is not obvious instantly. For example, gaming
software.
• E-type (embedded-type) - This software works closely as the requirement of
real-world environment. This software has a high degree of evolution as there
are various changes in laws, taxes etc. in the real world situations. For example,
Online trading software.
E-Type software evolution

• Lehman has given eight laws for E-Type software evolution -


• Continuing change - An E-type software system must continue to adapt
to the real world changes, else it becomes progressively less useful.
• Increasing complexity - As an E-type software system evolves, its
complexity tends to increase unless work is done to maintain or reduce
it.
• Conservation of familiarity - The familiarity with the software or the
knowledge about how it was developed, why was it developed in that
particular manner etc. must be retained at any cost, to implement the
changes in the system.
• Continuing growth- In order for an E-type system intended to resolve some
business problem, its size of implementing the changes grows according to the
lifestyle changes of the business.
• Reducing quality - An E-type software system declines in quality unless
rigorously maintained and adapted to a changing operational environment.
• Feedback systems- The E-type software systems constitute multi-loop, multi-
level feedback systems and must be treated as such to be successfully modified
or improved.
• Self-regulation - E-type system evolution processes are self-regulating with the
distribution of product and process measures close to normal.
• Organizational stability - The average effective global activity rate in an
evolving E-type system is invariant over the lifetime of the product.
Software Development Projects
• 1. Android task monitoring
• This project is exclusively designed to simplify the tracking and
monitoring of day-to-day activities of the busy modern life. We are so
busy in our daily lives right now that it becomes impossible to keep
track of our daily events, meetings, and appointments. To address this
issue, this project focuses on developing a Weekly Task Alerting
System for Android devices that can alert users of the
tasks/appointments that are scheduled for each day in a week.
• 2. Sentiment analysis for product rating
• This project aims to develop a sentiment analysis system for product rating. It
is an e-commerce web application. The main goal of this sentiment analysis
system is to understand the hidden sentiments of customers in feedback and
comments and analyze their product rating patterns.
• 3. Fingerprint-based ATM system
• This project is a desktop application that uses the fingerprint of users for
authentication. Since each individual has a unique fingerprint, this method of
using fingerprint as a means of authentication to access your ATM is safer
and more secure than using an ATM card. Users need not carry their ATM
cards with them at all times – they can use their fingerprint to access ATM
services.
• 4. Advanced employee management system
• Usually, large companies and organizations have a vast army of human
resources working under them. In such scenarios where there’s a significant
number of human employees to manage, it becomes challenging to supervise
and manage the activities of the human resources efficiently. Such
companies/organizations need an advanced employee management system
that can handle everything related to the company’s human resources.
• 5. Fingerprint voting system
• In this project, you will develop a fingerprint-based voting application that can
recognize users based on their fingerprint patterns. Since fingerprint
authentication is unique for each person, the system can quickly identify the
voters using their fingerprints. Naturally, a voter can vote for a candidate only
once.
Emergence of Software Engineering
• Software is more than just a program code. A program is an executable
code, which serves some computational purpose. Software is
considered to be collection of executable programming code,
associated libraries and documentations. Software, when made for a
specific requirement is called software product.
• Engineering on the other hand, is all about developing products, using
well-defined, scientific principles and methods.
• oftware engineering is an engineering branch associated with
development of software product using well-defined scientific
principles, methods and procedures. The outcome of software
engineering is an efficient and reliable software product.
Need of Software Engineering
• Large software - It is easier to build a wall than to a house or building, likewise, as the
size of software become large engineering has to step to give it a scientific process.
• Scalability- If the software process were not based on scientific and engineering
concepts, it would be easier to re-create new software than to scale an existing one.
• Cost- As hardware industry has shown its skills and huge manufacturing has lower
down he price of computer and electronic hardware. But the cost of software remains
high if proper process is not adapted.
• Dynamic Nature- The always growing and adapting nature of software hugely
depends upon the environment in which user works. If the nature of software is
always changing, new enhancements need to be done in the existing one. This is
where software engineering plays a good role.
• Quality Management- Better process of software development provides better and
quality software product.
Software Life cycle models
• 1) Waterfall
• 2) RAD
• 3) Spiral
• 4) Agile
WaterFall Model
• Winston Royce introduced the Waterfall Model in 1970.This 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.
• 1. Requirements analysis and specification phase: The aim of this phase is to
understand the exact requirements of the customer and to document them
properly. Both the customer and the software developer work together so as
to document all the functions, performance, and interfacing requirement of
the software. It describes the "what" of the system to be produced and not
"how."In this phase, a large document called Software Requirement
Specification (SRS) document is created which contained a detailed
description of what the system will do in the common language.
• 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).
• 3. Implementation and unit testing: During this phase, design is
implemented. If the SDD is complete, the implementation or coding phase
proceeds smoothly, because all the information needed by software
developers is contained in the SDD. During testing, the code is thoroughly
examined and modified. Small modules are tested in isolation initially. After
that these modules are tested by writing some overhead code to check the
interaction between these modules and the flow of intermediate output.
• 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.
• 5. Operation and maintenance phase: Maintenance is the task performed by
every user once the software has been delivered to the customer, installed,
and operational.
When to use SDLC Waterfall Model?

• Some Circumstances where the use of the Waterfall model is most


suited are:
• When the requirements are constant and not changed regularly.
• A project is short
• The situation is calm
• Where the tools and technology used is consistent and is not
changing
• When resources are well prepared and are available to use.
Advantages of Waterfall model

• This model is simple to implement also the number of resources that


are required for it is minimal.
• The requirements are simple and explicitly declared; they remain
unchanged during the entire project development.
• The start and end points for each phase is fixed, which makes it easy
to cover progress.
• The release date for the complete product, as well as its final cost, can
be determined before development.
• It gives easy to control and clarity for the customer due to a strict
reporting system.
Disadvantages of Waterfall model

• In this model, the risk factor is higher, so this model is not suitable for
more significant and complex projects.
• This model cannot accept the changes in requirements during
development.
• 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.
• 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.
RAD (Rapid Application
Development) Model
• RAD is a linear sequential software development process model that emphasizes a
concise development cycle using an element based construction approach. If the
requirements are well understood and described, and the project scope is a constraint,
the RAD process enables a development team to create a fully functional system within
a concise time period.
• RAD (Rapid Application Development) is a concept that products can be developed
faster and of higher quality through:
• Gathering requirements using workshops or focus groups
• Prototyping and early, reiterative user testing of designs
• The re-use of software components
• A rigidly paced schedule that refers design improvements to the next product version
• Less formality in reviews and other team communication
• The various phases of RAD are as follows:
• 1.Business 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.
• 2. Data Modelling: The data collected from business modeling is refined into a set of
data objects (entities) that are needed to support the business. The attributes
(character of each entity) are identified, and the relation between these data objects
(entities) is defined.
• 3. Process Modelling: The information object defined in the data modeling phase are
transformed to achieve the data flow necessary to implement a business function.
Processing descriptions are created for adding, modifying, deleting, or retrieving a data
object.
• 4. Application Generation: Automated tools are used to facilitate construction of the
software; even they use the 4th GL techniques.
• 5. Testing & Turnover: Many of the programming components have already been
tested since RAD emphasis reuse. This reduces the overall testing time. But the new
part must be tested, and all interfaces must be fully exercised.
When to use RAD Model?

• When the system should need to create the project that modularizes
in a short span time (2-3 months).
• When the requirements are well-known.
• When the technical risk is limited.
• When there's a necessity to make a system, which modularized in 2-3
months of period.
• It should be used only if the budget allows the use of automatic code
generating tools.
Advantage of RAD Model

• This model is flexible for change.


• In this model, changes are adoptable.
• Each phase in RAD brings highest priority functionality to the
customer.
• It reduced development time.
• It increases the reusability of features.
Disadvantage of RAD Model

• It required highly skilled designers.


• All application is not compatible with RAD.
• For smaller projects, we cannot use the RAD model.
• On the high technical risk, it's not suitable.
• Required user involvement.
Spiral Model

• 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.
• Each cycle in the spiral is divided into four parts:
• 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.
• Risk Assessment and reduction: The next phase in the cycle is to calculate these various alternatives
based on the goals and constraints. The focus of evaluation in this stage is located on the risk
perception for the project.
• 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.
• The development phase depends on the remaining risks. For example, if performance or user-
interface risks are treated more essential than the program development risks, the next phase may
be an evolutionary development that includes developing a more detailed prototype for solving the
risks.
• The risk-driven feature of the spiral model allows it to accommodate any mixture of a specification-
oriented, prototype-oriented, simulation-oriented, or another type of approach. An essential
element of the model is that each period of the spiral is completed by a review that includes all the
products developed during that cycle, including plans for the next cycle. The spiral model works for
development as well as enhancement projects.
When to use Spiral Model?

• When deliverance is required to be frequent.


• When the project is large
• When requirements are unclear and complex
• When changes may require at any time
• Large and high budget projects
Advantages

• High amount of risk analysis


• Useful for large and mission-critical projects.
Disadvantages

• Can be a costly model to use.


• Risk analysis needed highly particular expertise
• Doesn't work well for smaller projects.
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.
• Phases of Agile Model:
• Following are the phases in the Agile model are as follows:
• Requirements gathering
• Design the requirements
• Construction/ iteration
• Testing/ Quality assurance
• Deployment
• Feedback
• 1. Requirements gathering: In this phase, you must define the requirements. You
should explain business opportunities and plan the time and effort needed to build the
project. Based on this information, you can evaluate technical and economic feasibility.
• 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.
• 3. Construction/ iteration: When the team defines the requirements, the work begins.
Designers and developers start working on their project, which aims to deploy a
working product. The product will undergo various stages of improvement, so it
includes simple, minimal functionality.
• 4. Testing: In this phase, the Quality Assurance team examines the product's
performance and looks for the bug.
• 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.
Agile Testing Methods:

• Scrum
• Crystal
• Dynamic Software Development Method(DSDM)
• Feature Driven Development(FDD)
• Lean Software Development
• eXtreme Programming(XP)
1)Scrum
• SCRUM is an agile development process focused primarily on ways to manage
tasks in team-based development conditions.
• There are three roles in it, and their responsibilities are:
• Scrum Master: The scrum can set up the master team, arrange the meeting
and remove obstacles for the process
• Product owner: The product owner makes the product backlog, prioritizes
the delay and is responsible for the distribution of functionality on each
repetition.
• Scrum Team: The team manages its work and organizes the work to complete
the sprint or cycle.
2)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.
3)Crystal:
• There are three concepts of this method-
• A)Chartering: Multi activities are involved in this phase such as making a development team,
performing feasibility analysis, developing plans, etc.
• B)Cyclic delivery: under this, two more cycles consist, these are:
• Team updates the release plan.
• Integrated product delivers to the users.
• C)Wrap up: According to the user environment, this phase performs deployment, post-
deployment.
4)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:
• Time Boxing
• MoSCoW Rules
• Prototyping
• 5)The DSDM project contains seven stages:
• Pre-project
• Feasibility Study
• Business Study
• Functional Model Iteration
• Design and build Iteration
• Implementation
• Post-project
• 6)Feature Driven Development(FDD):
• This method focuses on "Designing and Building" features. In contrast to other smart methods,
FDD describes the small steps of the work that should be obtained separately per function.

• 7) Lean Software Development:


• Lean software development methodology follows the principle "just in time production." The
lean method indicates the increasing speed of software development and reducing costs. Lean
development can be summarized in seven phases.
• Eliminating Waste
• Amplifying learning
• Defer commitment (deciding as late as possible)
• Early delivery
• Empowering the team
• Building Integrity
• Optimize the whole
When to use the Agile Model?

• When frequent changes are required.


• When a highly qualified and experienced team is available.
• When a customer is ready to have a meeting with a software team all
the time.
• When project size is small.
Advantage(Pros) of Agile Method:

• Frequent Delivery
• Face-to-Face Communication with clients.
• Efficient design and fulfils the business requirement.
• Anytime changes are acceptable.
• It reduces total development time.
Disadvantages(Cons) of Agile Model:

• Due to the shortage of formal documents, it creates confusion and


crucial decisions taken throughout various phases can be
misinterpreted at any time by different team members.
• Due to the lack of proper documentation, once the project completes
and the developers allotted to another project, maintenance of the
finished project can become a difficulty.

You might also like