0% found this document useful (0 votes)
22 views19 pages

Unit 1

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)
22 views19 pages

Unit 1

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/ 19

UNIT – I

Software

 Software is a collection of computer programs that when executed together with data
provide desired outcomes.
 There exist several definitions of software in the software engineering literature.
 IEEE defines software as:
 ”Software is a collection of computer programs, together with data, procedures, rules, and
associated documentation, which operate in a specified environment with certain constraints to
provide the desired outcomes.”
 The view of computer software is shown in figure given below.

Data Procedures

Software
Programs

Rules

Documentation

Fig : Software View

 A program can be simple input-process-Software is developed by software engineers for


an output statements, a function, a component, or program libraries. organization on the
requirement of a customer and it is used by the end users.
 The general attributes of software are efficiency, maintainability, interoperability,
portability, usability, performance, understandability, and reliability.
PHASED LIFE CYCLE ACTIVITIES:

 SDLC is a process followed for a software project, within a software organization. It


consists of a detailed plan describing how to develop, maintain, replace and alter or
enhance specific software. The life cycle defines a methodology for improving the
quality of software and the overall development process
 The general development process activities which are covered in software development
life cycle models are feasibility study, requirements analysis, and design, coding testing,
deployment, operation, and maintenance.
 The software development life cycle various activities is pictorially represented in the
figure given below:

Fig: Software Development Life Cycle Activities

Requirements gathering and analysis

 Requirement analysis is the most important and fundamental stage in SDLC. It is


performed by the senior members of the team with inputs from the customer, the sales
department, market surveys and domain experts in the industry

DESGIN

 The goal of the design phase is to transform the collected requirements into a structure
that is suitable for implementation in programing language.
 The software designer begins with making architecture, outlining the hierarchical
structure and writing algorithm for each component in the system.
 The design phase has two aspects: physical and logical design. Physical design is also
called high-level design.
 A high-level design concentrates on identifying the different modules in a system that
interacts with each other to create the architecture of the system.
 In logical design which is also known as detailed design, the internal logic of a model in
an algorithmic manner.
CODING

 The coding phases are concerned with the development of the source code that will
implement the design.
 This code is written in a formal language called a programming language, such as C,
C++,java etc.

TESTING

 Testing is performed to remove the defects in the developed system.


 Testing covers various errors at the requirements, design and coding phases.
 Requirement errors my arise due to improper understanding of the customer needs.
 Design errors occur if the algorithms are not properly implemented in coding.
 Coding errors are mainly logical and syntactical errors.
 Testing is performed at different levels:
1. Unit testing
2. Integration testing
3. System testing
4. Acceptance testing
 Unit testing is carried out for individual modules at code level.
 Interfaces among various models are checked with integration testing.
 System test ensures that the system satisfies the requirements specified by the customer.
 Acceptance test is done for customer satisfaction.

DEPLOYMENT

 The purpose of software deployment is to make the software available for operational
use.
 The main activities or work products of this phase are
 Delivery of software to the customer.
 Installing software at customer site.
 Training employees at customer site.
 Providing user manuals and documentation to the customer.
MAINTENANCE

 Software maintenance is performed to adapt to changes in a new environment, correct


bugs, and enhance the performance by adding new features.
 The main activities or work products of this phase are
i. Adding new features to existing software.
ii. Changing the software environment.
iii. Collecting new user requirements.
iv. Fixing errors which are detected after software delivery.
v. Preventing problems in the future.

Advantages Of SDLC :

In decoding the advantages and disadvantages of SDLC, now we are going to explore the
advantages of SDLC. You will know why SDLC and its different models are popular and also
helps software development process.
Structured Approach:- SDLC provides a structured approach to software development, In
addition, it enables developers to plan and organize their work more efficiently. Besides, this
approach helps to minimize errors, increase productivity, and ensure the timely delivery of
software.
Risk Management:- SDLC helps to identify and manage risks associated with software
development. Further, by identifying potential risks early in the development process, developers
can take steps to mitigate them, which reduces the overall risk of software development.
Consistency:- SDLC ensures consistency in software development by providing a standard
framework and methodology. Besides, this consistency helps to improve the quality of the
software and ensures that the end product meets the client’s expectations.
Collaboration:- SDLC encourages collaboration among team members by providing a common
application frameworks and language for communication. This collaboration helps to improve
the overall quality of the software and ensures that the end product meets the client’s
requirements.
Cost-Effective:- SDLC helps to reduce development costs by identifying potential issues early
in the development process using prototype software like Figma and others. Furthermore, by
identifying issues early, developers can take steps to mitigate them.Which reduces the overall
cost of development.
Disadvantages Of SDLC :

In the initial discussion of the advantages and disadvantages of SDLC, we discussed the
advantages. Here, we discuss the disadvantages. There are always some drawbacks to anything.
Let’s explore.

Time-Consuming:- SDLC can be time-consuming, especially if the development process is


complex. This can result in delays in the delivery of software, which can be frustrating for
clients.
Inflexibility:- SDLC can be inflexible, especially if the requirements change during the
development process. This inflexibility can result in a suboptimal end product that does not meet
the client’s expectations.
High Upfront Cost:- SDLC requires a significant upfront investment in terms of time, money,
and resources. Moreover, this can be a barrier to entry for small businesses or startups that may
not have the resources to invest in SDLC.
Overemphasis on Process:- SDLC can sometimes place too much emphasis on the process and
not enough emphasis on the end product. And then this can result in a lack of innovation and
creativity in the final product.

SOFTWARE DEVELOPMENT PROCESS MODELS

 Software development organizations follow some development process models when


developing a software product.
 The general activities of the software life cycle models are feasibility study, analysis,
design, coding, testing, deployment, and maintenance.
 We will discuss the following development process models
 Classical waterfall model
 Iterative waterfall model
 Prototyping model
 Incremental model
 Spiral model
 Agile process model
 RUP process model
CLASSICAL WATERFALL MODEL

 The classical waterfall model divides the life cycle into a set of phases. This model
considers that one phase can be started after the completion of the previous phase.
 That is the output of one phase will be the input to the next phase. Thus the
development process can be considered as a sequential flow in the waterfall. Here the
phases do not overlap with each other.
 The different sequential phases of the classical waterfall model are shown in the
below figure.

1. Feasibility Study
 The main goal of this phase is to determine whether it would be financially and
technically feasible to develop the software.
 The feasibility study involves understanding the problem and then determining the
various possible strategies to solve the problem.
 These different identified solutions are analyzed based on their benefits and drawbacks,
The best solution is chosen and all the other phases are carried out as per this solution
strategy.
2. Requirements Analysis and Specification
The aim of the requirement analysis and specification phase is to understand the exact
requirements of the customer and document them properly. This phase consists of two different
activities.

 Requirement gathering and analysis: Firstly all the requirements regarding the
software are gathered from the customer and then the gathered requirements are analyzed. The
goal of the analysis part is to remove incompleteness and inconsistencies
 Requirement specification: These analyzed requirements are documented in a
software requirement specification (SRS) document. SRS document serves as a contract
between the development team and customers. Any future dispute between the customers and
the developers can be settled by examining the SRS document.
3. Design
 The goal of this phase is to convert the requirements acquired in the SRS into a format
that can be coded in a programming language.
 It includes high-level and detailed design as well as the overall software architecture.
A Software Design Document is used to document all of this effort (SDD)
4. Coding and Unit Testing
 In the coding phase software design is translated into source code using any suitable
programming language.

 Thus each designed module is coded. The aim of the unit testing phase is to check
whether each module is working properly or not.

5. Integration and System testing


 Integration of different modules is undertaken soon after they have been coded and unit
tested.
 Integration of various modules is carried out incrementally over a number of steps.
During each integration step, previously planned modules are added to the partially integrated
system and the resultant system is tested.
 Finally, after all the modules have been successfully integrated and tested, the full
working system is obtained and system testing is carried out on this.
System testing consists of three different kinds of testing activities as described below.

 Alpha testing: Alpha testing is the system testing performed by the development team.
 Beta testing: Beta testing is the system testing performed by a friendly set of
customers.
 Acceptance testing: After the software has been delivered, the customer performed
acceptance testing to determine whether to accept the delivered software or reject it.

6. Deployment
 An operational system is deployed at the customer sits and proper training and
manuals are provided to the uses
 The working system requires maintenance if there is any flaw encountered during its
operation..

7. Maintenance
 Maintenance is the most important phase of a software life cycle. The effort spent on
maintenance is 60% of the total effort spent to develop a full software. There are basically
three types of maintenance.

 Corrective Maintenance: This type of maintenance is carried out to correct errors that
were not discovered during the product development phase.
 Perfective Maintenance: This type of maintenance is carried out to enhance the
functionalities of the system based on the customer’s request.
 Adaptive Maintenance: Adaptive maintenance is usually required for porting the
software to work in a new environment such as working on a new computer platform or with a
new operating system.
Advantages of Classical waterfall model

 Simple and easy to understand and use.


 Easy to manage due to the rigidity of the model.
 Works well for smaller projects where requirements are very well understood.
 The amount of resources required to implement this model are minimal.
 Development processed in sequential manner so very less chance to rework.
 Due to straightforward organization of phases, it is fit for other engineering process models,
such as civil, mechanical etc.
 It is a document-driven process that can help new people to transfer knowledge.
Disadvantages of Classical waterfall model

 The model assumes that the requirements will not change during the project.
 Once an application is in the testing stage, it is very difficult to go back and change
something that was not well-constructed in the earlier stages.
 No working software is produced until late during the life cycle.
 It is very difficult to estimate time and cost in the waterfall model.
 Not a good model for complex and object-oriented projects.
 Poor model for long and ongoing projects.
 Not suitable for the projects where requirements are at a moderate to high risk of changing.
 Less effective if requirements are not very clear at the beginning.

ITERATIVE WATERFALL MODEL


 Classical Waterfall model was enhanced with a feedback process, which is referred to as an
iterative model.
 The iterative waterfall model is an extended waterfall model with backtracking at each phase
to its preceding phases.
 This idea was also proposed by R W Royce in 1970.
 The life cycle phases are organized similar to those in the classical waterfall model.
 The development activities such as feasibility study, analysis, design, coding, testing,
operation and maintenance are performed in a linear fashion.
 The only difference between classical and iterative models is backtracking of phases on
detection of errors at any stages.
 The iterative waterfall model is shown in the figure given below:
Fig: Iterative Waterfall Model

Advantages of Iterative waterfall model

 In iterative model we are building and improving the product step by step. Hence we can
track the defects at early stages. This avoids the downward flow of the defects.
 In iterative model we can get the reliable user feedback.
 In iterative model less time is spent on documenting and more time is given for
designing.
 Waterfall model is simple to implement and also the amount of resources required for it
are minimal.
 In this model, output is generated after each stage (as seen before), therefore it has high
visibility.

Disadvantages of Iterative waterfall model

 Each phase of iteration is rigid with no overlaps.


 Costly system architecture or design issues may arise because not all requirements are
gathered up front for the entire lifecycle.
 Real projects rarely follow the sequential flow and iterations in this model are handled
indirectly. These changes can cause confusion as the project proceeds.
 It is often difficult to get customer requirements explicitly.
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.

1. Requirement analysis: In the first phase of the incremental model, the product analysis
expertise identifies the requirements. And the system functional requirements are understood by
the requirement analysis team. To develop the software under the incremental model, this phase
performs a crucial role.

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.

3. Testing: In the incremental model, the testing phase checks the performance of each existing
function as well as additional functionality. In the testing phase, the various methods are used to
test the behavior of each task.

4. Implementation: Implementation phase enables the coding phase of the development system.
It involves the final coding that design in the designing and development phase and tests the
functionality in the testing phase. After completion of this phase, the number of the product
working is enhanced and upgraded up to the final system product
Advantage of Incremental Model

o Errors are easy to be recognized.


o Easier to test and debug
o More flexible.
o Simple to manage risk because it handled during its iteration.
o The Client gets important functionality early.

Disadvantage of Incremental Model

o Need for good planning


o Total Cost is high.
o Well defined module interfaces are needed.

Agile software development model

o The meaning of Agile is swift or versatile."Agile process model" refers to a software


development approach based on iterative development and incremental model.
o 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.
o Plans regarding the number of iterations, the duration and the scope of each iteration are
clearly defined in advance.
o Each iteration is considered as a short time "frame" in the Agile process model, which
typically lasts from one to four weeks.
o The division of the entire project into smaller parts helps to minimize the project risk and
to reduce the overall project delivery time requirements.
o Each iteration involves a team working through a full software development life cycle
including planning, requirements analysis, design, coding, and testing before a working
product is demonstrated to the client.
Phases of Agile Model:
Following are the phases in the Agile model are as follows:

1. Requirements gathering
2. Design the requirements
3. Construction/ iteration
4. Testing/ Quality assurance
5. Deployment
6. 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:

o Scrum
o Crystal
o Dynamic Software Development Method(DSDM)
o Feature Driven Development(FDD)
o Lean Software Development
o eXtreme Programming(XP)

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:

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):
It uses specific practices like pair programming, continuous integration, and test-driven
development to achieve these goals. Extreme programming is ideal for projects that have high
levels of uncertainty and require frequent changes, as it allows for quick adaptation to new
requirements and feedback.
The Twelve Principle of Agile Model:

1. Customer Satisfaction: Manifesto provides high priority to satisfy the costumer's


requirements. This is done through early and continuous delivery of valuable software. In the
case of traditional management methodologies, customers get to see the product only after
completion and when several tests and quality checks have been performed. This not only keeps
the customers in dark but also makes it problematic for the team members to introduce any
changes in the product.

In order to keep the customers happy, it’s important to continuously engage them with a working
version of the product. Show small increments every sprint planning and make changes as
required.

2. Welcome Change: Making changes during software development is common and inevitable.
Every changing requirement should be welcome, even in the late development phase. Agile
process works to increase the customers' competitive advantage.

3. Deliver the Working Software: Deliver the working software frequently, ranging from a few
weeks to a few months with considering the shortest time period. The Agile philosophy favors a
smaller time frame and delivers working software frequently. This iterative process requires
team members to continuously improve their performance.

4. Collaboration: A major problem associated with traditional project management


methodologies is that the project stakeholders are often oblivious to the development stages of
the project. The Agile principles encourage all stakeholders to remain involved in all stages of
the project in order to ensure constant feedback and a valuable end product.Business people
(Scrum Master and Project Owner) and developers must work together during the entire life of a
project development phase.

5. Motivation: Projects should be build around motivated team members. Provide such
environment that supports individual team members and trust them. It makes them feel
responsible for getting the job done thoroughly. It is the responsibility of the project manager to
create a motivating environment and support where members are not afraid to voice their
opinions and give suggestions for the betterment of the team’s performance. Giving the team
members the confidence and motivating them would cause their overall performance to improve
significantly which will ultimately be better for the project.

6. Face-to-face Conversation: In the Agile manifesto, a lot of importance is given to effective


communication between the involved parties. For effective communication, methods like memos
and email are not preferred and more importance is given to face-to-face communication. This is
now easier because of the advances in communication technologies. All stakeholders can now
have a meeting through video conferencing rather than coming to the office for a short meeting.
Face-to-face conversation between Scrum Master and development team and between the Scrum
Master and customers for the most efficient and effective method of conveying information to
and within a development team.

7. Measure the Progress as per the Working Software: The only factor to measure success is
the delivery of a working product that satisfies the customer. Before Agile, there were many
measures of success and that resulted in a drop in the quality of the final product. The working
software is the key and primary measure of the progress.

8. Maintain Constant Pace: The aim of agile development is sustainable development. All the
businesses and users should be able to maintain a constant pace with the project. A repeatable
and iterative pattern should be established where sustainable development of the project takes
place at a constant rate. This prevents the team members from being overwhelmed and over-
stressed, while the project keeps on progressing at an acceptable rate.

9. Monitoring: Pay regular attention to technical excellence and good design to maximize
agility.

10. Simplicity: In each time box, the tasks at hand should be the main focus of all team
members. Too much planning and adding extra features to the product should be avoided during
the development. Keep things simple and use simple terms to measure the work that is not
completed.

11. Self-organized Teams: A self-organized team with decision-making powers would simply
perform better because the responsibility of satisfying the customers will on the team members,
rather than a single project manager. The Agile team should be self-organized. They should not
be depending heavily on other teams because the best architectures, requirements, and designs
emerge from self-organized teams.

12. Review the Work Regularly: The work should be reviewed at regular intervals, so that the
team can reflect on how to become more productive and adjust its behavior accordingly.
Agile methodologies stand on the concept of iteration, where teams learn from their past
mistakes and continuously improve their performance. Project managers should promote
sessions where the whole team reflects on their performance and discuss ways to improve their
technical and management skills.

Advantages of Agile model:

 Customer satisfaction by rapid, continuous delivery of useful software.

 People and interactions are emphasized rather than process and tools. Customers,
developers and testers constantly interact with each other.
 Working software is delivered frequently (weeks rather than months).
 Face-to-face conversation is the best form of communication.
 Close, daily cooperation between business people and developers.
 Continuous attention to technical excellence and good design.
 Regular adaptation to changing circumstances.
 Even late changes in requirements are welcomed

Disadvantages of Agile model:

 In case of some software deliverables, especially the large ones, it is difficult to assess the
effort required at the beginning of the software development life cycle.
 There is lack of emphasis on necessary designing and documentation.
 The project can easily get taken off track if the customer representative is not clear what
final outcome that they want.
 Only senior programmers are capable of taking the kind of decisions required during the
development process. Hence it has no place for newbie programmers, unless combined
with experienced resources.
Values of Agile Model:

1. Individuals and Interactions over process and tools:

 This value of the Agile manifesto focuses on giving importance to communication with
the clients.
 There are several things a client may want to ask and it is the responsibility of the team
members to ensure that all questions and suggestions of the clients are promptly dealt
with.

2. Working software over comprehensive document:

 In the past, more focus used to be on proper documentation of every aspect of the project.
There were several times when this was done at the expense of the final product.
 The Agile values dictate that the first and foremost duty of the project team is completing
the final deliverables as identified by the customers.

3. Customer collaboration over contrast negotiation:

 Agile principles require customers to be involved in all phases of the project. The
Waterfall approach or Traditional methodologies only allow customers to negotiate
before and after the project. This used to result in wastage of both time and resources.
 If the customers are kept in the loop during the development process, team members can
ensure that the final product meets all the requirements of the client.

4. Responding to changes over following a plan:

 Contrary to the management methodologies of the past, Agile values are against using
elaborate plans before the start of the project and continue sticking to them no matter
what.
 Circumstances change and sometimes customers demand extra features in the final
product that may change the project scope. In these cases, project managers and their
teams must adapt quickly in order to deliver a quality product and ensure 100% customer
satisfaction.
difference between agile and waterfall methodology:

1.state and explain various phases of software development life cycle.

2. a)write advantages og agile software development.

b)describe values of agile software development.

3) a)principles of agile software development.

b)Advantages og sdlc.

You might also like