1unit Se
1unit Se
1unit Se
Software Evolution is a term which refers to the process of developing software initially, then timely
updating it for various reasons, i.e., to add new features or to remove obsolete functionalities etc. The
evolution process includes fundamental activities of change analysis, release planning, system
implementation and releasing a system to customers.
The cost and impact of these changes are accessed to see how much system is affected by the change
and how much it might cost to implement the change. If the proposed changes are accepted, a new
release of the software system is planned. During release planning, all the proposed changes (fault
repair, adaptation, and new functionality) are considered.
A design is then made on which changes to implement in the next version of the system. The process of
change implementation is an iteration of the development process where the revisions to the system are
designed, implemented and tested.
The necessity of Software evolution : Software evaluation is necessary just because of the following
reasons:
a) Change in requirement with time : With the passes of time, the organization’s needs change in its
operational working this can be achieved by frequently changing the tools(software) that they are
using need to change for maximizing the performance.
b) Environment change: As the working environment changes the things(tools) that enable us to work
in that environment also changes proportionally same happens in the software world as the working
environment changes then, the organizations need reintroduction of old software with updated features
and functionality to adapt the new environment.
c) Errors and bugs: As the age of the deployed software within an organization increases their
preciseness decrease and the efficiency to bear the increasing complexity workload also continually
degrades. So, in that case, it becomes necessary to avoid use of obsolete and aged software. All such
obsolete Softwares need to undergo the evolution process in order to become robust as per the
workload complexity of the current environment.
d) Security risks: Using outdated software within an organization may lead you to at the verge of
various software-based cyberattacks and could expose your confidential data illegally associated with
the software that is in use. So, it becomes necessary to avoid such security breaches through regular
assessment of the security modules are used within the software
e) For having new functionality and features : In order to increase the performance and fast data
processing and other functionalities, an organization need to continuously evaluate the software
throughout its life cycle so that stakeholders & clients of the product could work efficiently.
Laws used for Software Evolution:
1. Law of continuing change:
This law states that any software system that represents some real-world undergoes continuous
change or become progressively less useful in that environment.
2. Law of increasing complexity:
As an evolving program changes, its structure becomes more complex unless effective efforts are
made to avoid this phenomenon.
3. Law of conservation of organization stability:
Over the lifetime of a program, the rate of development of that program is approximately constant
and independent of the resource devoted to system development.
4. Law of conservation of familiarity:
This law states that during the active lifetime of the program, changes made in the successive
release are almost constant.
1. Modularity: Breaking the software into smaller, reusable components that can be developed and
tested independently.
2. Abstraction: Hiding the implementation details of a component and exposing only the necessary
functionality to other parts of the software.
3. Encapsulation: Wrapping up the data and functions of an object into a single unit, and protecting
the internal state of an object from external modifications.
4. Reusability: Creating components that can be used in multiple projects, which can save time and
resources.
5. Maintenance: Regularly updating and improving the software to fix bugs, add new features, and
address security vulnerabilities.
6. Testing: Verifying that the software meets its requirements and is free of bugs.
7. Design Patterns: Solving recurring problems in software design by providing templates for solving
them.
8. Agile methodologies: Using iterative and incremental development processes that focus on
customer satisfaction, rapid delivery, and flexibility.
9. Continuous Integration & Deployment: Continuously integrating the code changes and deploying
them into the production environment.
Reliability:
Reliability is a characteristic of software that refers to its ability to perform its intended functions
correctly and consistently over time. Reliability is an important aspect of software quality, as it helps
ensure that the software will work correctly and not fail unexpectedly.
Examples of factors that can affect the reliability of software include:
1. Bugs and errors in the code
2. Lack of testing and validation
3. Poorly designed algorithms and data structures
4. Inadequate error handling and recovery
5. Incompatibilities with other software or hardware
To improve the reliability of software, various techniques and methodologies can be used, such
as testing and validation, formal verification, and fault tolerance.
A software is considered reliable when the probability of it failing is low and it is able to recover
from the failure quickly
Required functions are:
Efficiency:
Efficiency is a characteristic of software that refers to its ability to use resources such as memory,
processing power, and network bandwidth in an optimal way. High efficiency means that a
software program can perform its intended functions quickly and with minimal use of resources,
while low efficiency means that a software program may be slow or consume excessive
resources.
Examples of factors that can affect the efficiency of software include:
1. Poorly designed algorithms and data structures
2. Inefficient use of memory and processing power
3. High network latency or bandwidth usage
4. Unnecessary processing or computation
5. Unoptimized code
To improve the efficiency of software, various techniques and methodologies can be used, such
as performance analysis, optimization, and profiling.
Efficiency is important in software systems that are resource-constrained, high-performance, and
real-time systems. It is also important in systems that need to handle a large number of users or
transactions simultaneously.
Required functions are:
Usability:
It refers to the extent to which the software can be used with ease. The amount of effort or
time required to learn how to use the software.
Required functions are:
Maintainability:
It refers to the ease with which the modifications can be made in a software system to extend
its functionality, improve its performance, or correct errors.
Required functions are:
Portability:
A set of attributes that bears on the ability of software to be transferred from one environment
to another, without or minimum changes.
Required functions are:
A software life cycle model (also called process model) is a descriptive and diagrammatic
representation of the software life cycle. A life cycle model represents all the activities required
to make a software product transit through its life cycle phases.In other words, a life cycle model
maps the different activities performed on a software product from its inception to retirement.
Different life cycle models may map the basic development activities to phases in different
ways. Thus, no matter which life cycle model is followed, the basic activities are included in all
life cycle models though the activities may be carried out in different orders in different life
cycle models. During any life cycle phase, more than one activity may also be carried out.
The development team must identify a suitable life cycle model for the particular project and
then adhere to it. Without using of a particular life cycle model the development of a software
product would not be in a systematic and disciplined manner. When a software product is being
developed by a team there must be a clear understanding among team members about when and
what to do. Otherwise it would lead to chaos and project failure. This problem can be illustrated
by using an example. Suppose a software development problem is divided into several parts and
the parts are assigned to the team members. From then on, suppose the team members are
allowed the freedom to develop the parts assigned to them in whatever way they like. It is
possible that one member might start writing the code for his part, another might decide to
prepare the test documents first, and some other engineer might begin with the design phase of
the parts assigned to him. This would be one of the perfect recipes for project failure. A software
life cycle model defines entry and exit criteria for every phase. A phase can start only if its
phase-entry criteria have been satisfied. So without software life cycle model the entry and exit
criteria for a phase cannot be recognized. Without software life cycle models it becomes difficult
for software project managers to monitor the progress of the project.
3. Prototype Model
Prototyping is defined as the process of developing a working replication of a product or system that
has to be engineered. It offers a small scale facsimile of the end product and is used for obtaining
customer feedback as described below:
Prototype model is used when the customers do not know the exact project requirements beforehand.
In this model, a prototype of the end product is first developed, tested and refined as per customer
feedback repeatedly till a final acceptable prototype is achieved which forms the basis for developing
the final product.
System is partially implemented before or during the analysis phase thereby giving the customers an
opportunity to see the product early in the life cycle.
Advantages of using Prototype Model :
This model is flexible in design.
It is easy to detect errors.
We can find missing functionality easily.
There is scope of refinement, it means new requirements can be easily accommodated.
It can be reused by the developer for more complicated projects in the future.
It ensures a greater level of customer satisfaction and comfort.
It is ideal for online system.
It helps developers and users both understand the system better.
Integration requirements are very well understood and deployment channels are decided at a
very early stage.
It can actively involve users in the development phase.
Disadvantages of using Prototype Model :
This model is costly.
It has poor documentation because of continuously changing customer requirements.
There may be too much variation in requirements.
Customers sometimes demand the actual product to be delivered soon after seeing an early
prototype.
There may be sub-optimal solutions because of developers in a hurry to build prototypes.
Customers may not be satisfied or interested in the product after seeing the initial prototype.
There is certainty in determining the number of iterations.
There may be incomplete or inadequate problem analysis.
There may increase the complexity of the system.
Spiral model
Spiral model is one of the most important Software Development Life Cycle models, which provides
support for Risk Handling. In its diagrammatic representation, it looks like a spiral with many loops.
The exact number of loops of the spiral is unknown and can vary from project to project. Each loop of
the spiral is called a Phase of the software development process. The exact number of phases needed
to develop the product can be varied by the project manager depending upon the project risks. As the
project manager dynamically determines the number of phases, so the project manager has an important
role to develop a product using the spiral model.
The Spiral Model is a software development life cycle (SDLC) model that provides a systematic and
iterative approach to software development. It is based on the idea of a spiral, with each iteration of the
spiral representing a complete software development cycle, from requirements gathering and analysis
to design, implementation, testing, and maintenance.
The Spiral Model is a risk-driven model, meaning that the focus is on managing risk through multiple
iterations of the software development process. It consists of the following phases:
1. Planning: The first phase of the Spiral Model is the planning phase, where the scope of the project
is determined and a plan is created for the next iteration of the spiral.
2. Risk Analysis: In the risk analysis phase, the risks associated with the project are identified and
evaluated.
3. Engineering: In the engineering phase, the software is developed based on the requirements
gathered in the previous iteration.
4. Evaluation: In the evaluation phase, the software is evaluated to determine if it meets the
customer’s requirements and if it is of high quality.
5. Planning: The next iteration of the spiral begins with a new planning phase, based on the results of
the evaluation.
6. The Spiral Model is often used for complex and large software development projects, as it allows
for a more flexible and adaptable approach to software development. It is also well-suited to
projects with significant uncertainty or high levels of risk.
The Radius of the spiral at any point represents the expenses(cost) of the project so far, and the
angular dimension represents the progress made so far in the current phase.
Diagram
Each phase of the Spiral Model is divided into four quadrants as shown in the above figure.
1. Objectives determination and identify alternative solutions: Requirements are gathered from
the customers and the objectives are identified, elaborated, and analyzed at the start of every
phase. Then alternative solutions possible for the phase are proposed in this quadrant.
2. Identify and resolve Risks: During the second quadrant, all the possible solutions are
evaluated to select the best possible solution. Then the risks associated with that solution are
identified and the risks are resolved using the best possible strategy. At the end of this quadrant,
the Prototype is built for the best possible solution.
3. Develop next version of the Product: During the third quadrant, the identified features are
developed and verified through testing. At the end of the third quadrant, the next version of the
software is available.
4. Review and plan for the next Phase: In the fourth quadrant, the Customers evaluate the so far
developed version of the software. In the end, planning for the next phase is started.
Risk Handling in Spiral Model: A risk is any adverse situation that might affect the successful
completion of a software project. The most important feature of the spiral model is handling these
unknown risks after the project has started. Such risk resolutions are easier done by developing a
prototype. The spiral model supports coping up with risks by providing the scope to build a prototype
at every phase of the software development.
The Prototyping Model also supports risk handling, but the risks must be identified completely before
the start of the development work of the project. But in real life project risk may occur after the
development work starts, in that case, we cannot use the Prototyping Model. In each phase of the Spiral
Model, the features of the product dated and analyzed, and the risks at that point in time are identified
and are resolved through prototyping. Thus, this model is much more flexible compared to other SDLC
models.
Feasibility Study
Feasibility Study in Software Engineering is a study to evaluate feasibility of proposed project or
system product in terms of how much beneficial product development will be for the organization in a
practical point of view. Feasibility study is one of stage among important four stages of Software
Project Management Process. Feasibility study is carried out based on many purposes to analyze
whether software product will be right in terms of development, implantation, contribution of project to
the organization etc.
Types of Feasibility Study :
The feasibility study mainly concentrates on below five mentioned areas. Among these Economic
Feasibility Study is most important part of the feasibility analysis and Legal Feasibility Study is less
considered feasibility analysis.
1. Technical Feasibility
In Technical Feasibility current resources both hardware software along with required technology
are analyzed/assessed to develop project. This technical feasibility study gives report whether there
exists correct required resources and technologies which will be used for project development.
Along with this, feasibility study also analyzes technical skills and capabilities of technical team,
existing technology can be used or not, maintenance and up-gradation is easy or not for chosen
technology etc.
2. Operational Feasibility
In Operational Feasibility degree of providing service to requirements is analyzed along with how
much easy product will be to operate and maintenance after deployment. Along with this other
operational scopes are determining usability of product
3. Economic Feasibility
In Economic Feasibility study cost and benefit of the project is analyzed. Means under this
feasibility study a detail analysis is carried out what will be cost of the project for development
which includes all required cost for final development like hardware and software resource
required, design and development cost and operational cost and so on. After that it is analyzed
whether project will be beneficial in terms of finance for organization or not.
4. Legal Feasibility –
In Legal Feasibility study project is analyzed in legality point of view. This includes analyzing
barriers of legal implementation of project, data protection acts or social media laws, project
certificate, license, copyright etc. Overall it can be said that Legal Feasibility Study is study to
know if proposed project conform legal and ethical requirements.
5. Schedule Feasibility –
In Schedule Feasibility Study mainly timelines/deadlines is analyzed for proposed project which
includes how many times teams will take to complete final project which has a great impact on the
organization as purpose of project may fail if it can’t be completed on time.
Aim of feasibility study:
The overall objective of the organization are covered and contributed by the system or not.
The implementation of the system be done using current technology or not.
can the system be integrated with the other system which are already exist
Requirements analysis is very critical process that enables the success of a system or software project
to be assessed. Requirements are generally split into two types: Functional and Non-functional
requirements.
Functional Requirements: These are the requirements that the end user specifically demands as basic
facilities that the system should offer. All these functionalities need to be necessarily incorporated into
the system as a part of the contract. These are represented or stated in the form of input to be given to
the system, the operation performed and the output expected. They are basically the requirements stated
by the user which one can see directly in the final product, unlike the non-functional requirements.
Functional Requirements of a system should include the following things:
Non-functional requirements: These are basically the quality constraints that the system must satisfy
according to the project contract. The priority or extent to which these factors are implemented varies
from one project to other. They are also called non-behavioral requirements.
They basically deal with issues like:
Portability
Security
Maintainability
Reliability
Scalability
Performance
Reusability
Flexibility
Following are the differences between Functional and Non Functional Requirement
It specifies “What should the software system It places constraints on “How should the software
do?” system fulfill the functional requirements?”
Helps you verify the functionality of the Helps you to verify the performance of the
software. software.
Functional Testing like System, Integration, Non-Functional Testing like Performance, Stress,
End to End, API testing, etc are done. Usability, Security testing, etc are done.
Example Example
1) Authentication of user whenever he/she logs 1) Emails should be sent with a latency of no
into the system. greater than 12 hours from such an activity.
2) System shutdown in case of a cyber attack. 2) The processing of each request should be done
3) A Verification email is sent to user within 10 seconds
whenever he/she registers for the first time on 3) The site should load in 3 seconds when the
some software system. number of simultaneous users are > 10000
Requirement analysis is significant and essential activity after elicitation. We analyze, refine, and
scrutinize the gathered requirements to make consistent and unambiguous requirements. This activity
reviews all requirements and may provide a graphical view of the entire system. After the completion of
the analysis, it is expected that the understandability of the project may improve significantly.
(i) Draw the context diagram: The context diagram is a simple model that defines the boundaries and
interfaces of the proposed systems with the external world. It identifies the entities outside the proposed
system that interact with the system. The context diagram of student result management system is given
below:
(ii) Development of a Prototype (optional): One effective way to find out what the customer wants is to
construct a prototype, we can use their feedback to modify the prototype until the customer is satisfied
continuously. Hence, the prototype helps the client to visualize the proposed system and increase the
understanding of the requirements. When developers and users are not sure about some of the elements, a
prototype may help both the parties to take a final decision.
System but their feedback may allow us to make the product more attractive to others.
The prototype should be built quickly and at a relatively low cost. Hence it will always have limitations
and would not be acceptable in the final system. This is an optional activity.
(iii) Model the requirements: This process usually consists of various graphical representations of the
functions, data entities, external entities, and the relationships between them. The graphical view may
help to find incorrect, inconsistent, missing, and superfluous requirements. Such models include the Data
Flow diagram, Entity-Relationship diagram, Data Dictionaries, State-transition diagrams, etc.
(iv) Finalise the requirements: After modeling the requirements, we will have a better understanding of
the system behavior. The inconsistencies and ambiguities have been identified and corrected. The flow of
data amongst various modules has been analyzed. Elicitation and analyze activities have provided better
insight into the system. Now we finalize the analyzed requirements, and the next step is to document
these requirements in a prescribed format.
Requirement Specification
1. Introduction
(i) Purpose of this Document – At first, main aim of why this document is necessary and
what’s purpose of document is explained and described.
(ii) Scope of this document – In this, overall working and main objective of document
and what value it will provide to customer is described and explained. It also includes a
description of development cost and time required.
(iii) Overview – In this, description of product is explained. It’s simply summary or
overall review of product.
2. General description : In this, general functions of product which includes objective of user, a
user characteristic, features, benefits, about why its importance is mentioned. It also describes
features of user community.
3. Functional Requirements : In this, possible outcome of software system which includes
effects due to operation of program is fully explained. All functional requirements which may
include calculations, data processing, etc. are placed in a ranked order.
4. Interface Requirements: In this, software interfaces which mean how software program
communicates with each other or users either in form of any language, code, or message are
fully described or explained. Examples can be shared memory, data streams, etc.
5. Performance Requirements: In this, how a software system performs desired functions
under specific condition is explained. It also explains required time, required memory,
maximum error rate, etc.
6. Design Constraints: In this, constraints which simply means limitation or restriction are
specified and explained for design team. Examples may include use of a particular algorithm,
hardware and software limitations, etc.
7. Non-Functional Attributes: In this, non-functional attributes are explained that are required
by software system for better performance. An example may include Security, Portability,
Reliability, Reusability, Application compatibility, Data integrity, Scalability capacity, etc.
8. Preliminary Schedule and Budget: In this, initial version and budget of project plan are
explained which include overall time duration required and overall cost required for
development of project.
9. Appendices: In this, additional information like references from where information is
gathered, definitions of some specific terms, acronyms, abbreviations, etc. are given and
explained.
Uses of SRS document:
1. Development team require it for developing product according to the need.
2. Test plans are generated by testing group based on the describe external behavior.
3. Maintenance and support staff need it to understand what the software product is supposed to
do.
4. Project manager base their plans and estimates of schedule, effort and resources on it.
5. Customer rely on it to know that product they can expect.
6. As a contract between developer and customer.
7. In documentation purpose.
Each iteration is considered as a short time "frame" in the Agile process model, which typically
lasts from one to four weeks. The division of the entire project into smaller parts helps to
minimize the project risk and to reduce the overall project delivery time requirements. 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.
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.
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.
Extreme Programming (XP), the most widely used approach to agile software development. Although
early work on the ideas and methods associated with XP occurred during the late 1980s. Five values that
establish a foundation for all work performed as part of XP—communication, simplicity, feedback,
courage, and respect. Each of these values is used as a driver for specific XP activities, actions, and tasks.
In order to achieve effective communication between software engineers and other stakeholders (e.g., to
establish required features and functions for the software), XP emphasizes close, yet informal (verbal)
collaboration between customers and developers.To achieve simplicity, XP restricts developers to
design only for immediate needs, rather than consider future needs. The intent is to create a
simple design that can be easily implemented in code). If the design must be improved, it can
be refactored at a later time.
Feedback is derived from three sources: the implemented software itself, the customer, and
other software team members. By designing and implementing an effective testing strategy
the software provides the agile team with feedback. XP makes use of the unit test as its
primary testing tactic. As each class is developed, the team develops a unit test to exercise
each operation according to its specified functionality.
An agile XP team must have the discipline (courage) to design for today, recognizing that
future requirements may change dramatically, thereby demanding substantial rework of the
design and implemented code
By following each of these values, the agile team inculcates respect among it members,
between other stakeholders and team members, and indirectly, for the software itself. As they
achieve successful delivery of software increments, the team develops growing respect for the
XP process
Scrum
Crystal
Adaptive Software Development is a method to build complex software and system. ASD
focuses on human collaboration and self-organization. ASD “life cycle” incorporates three
phases namely:
Speculation
Collaboration
Learning
These are explained as following below.
Adaptive Software Development
1.Speculation:
During this phase project is initiated and planning is conducted. The project plan uses
project initiation information like project requirements, user needs, customer mission
statement, etc, to define set of release cycles that the project wants.
2. Collaboration:
It is the difficult part of ASD as it needs the workers to be motivated. It collaborates
communication and teamwork but emphasizes individualism as individual creativity
plays a major role in creative thinking. People working together must trust each others
Criticize without animosity,
Assist without resentment,
Work as hard as possible,
Possession of skill set,
Communicate problems to find effective solution.
3. Learning:
The workers may have a overestimate of their own understanding of the technology which
may not lead to the desired result. Learning helps the workers to increase their level of
understanding over the project.
Learning process is of 3 ways:
1. Focus groups
2. Technical reviews
3. Project postmortem
Scrum
SCRUM is an agile development process focused primarily on ways to manage tasks in team-based
development conditions.
Crystal:
1. Chartering: Multi activities are involved in this phase such as making a development team,
performing feasibility analysis, developing plans, etc.
2. Cyclic delivery: under this, two more cycles consist, these are:
DSDM is a rapid application development strategy for software development and gives an agile project
distribution structure. The essential features of DSDM are that users must be actively connected, and
teams have been given the right to make decisions. The techniques used in DSDM are:
1. Time Boxing
2. MoSCoW Rules
3. Prototyping
1. Pre-project
2. Feasibility Study
3. Business Study
4. Functional Model Iteration
5. Design and build Iteration
6. Implementation
7. Post-project
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.
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.
1. Eliminating Waste
2. Amplifying learning
3. Defer commitment (deciding as late as possible)
4. Early delivery
5. Empowering the team
6. Building Integrity
7. Optimize the whole
Agile Modeling(AM)