WHAT IS A SOFTWARE?
SOFTWARE is capable of performing many tasks as opposed to
hardware which can only perform mechanical tasks that they are
                        designed for.
 Software provides the means for accomplishing many different
             tasks with the same basic hardware.
                            SOFTWARE
        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 requirements
is called software product.
                 CLASSES OF SOFTWARE
o System software
       helps run the computer hardware and computer system itself. System
software includes operating system, device drivers, diagnostic tools and more.
System software is almost always pre-installed on your computer.
o Application Software
   Allows users to accomplish one or more tasks. It includes word processing, web
   browsing and almost any other task for which you might install software. (Some
   application software is pre-installed on most computer systems.)
                 CLASSES OF SOFTWARE
o Programming Software
       is a set of tools to aid developers in writing programs. The various tools
available are compiler, linkers, debuggers, interpreters and text editors.
                          BASIC PRINCIPLES
1. Software, commonly known as programs or apps, consists of all the instructions that tell
   the hardware how to perform a tasks.
2. These instructions come from a software developer in the form that will be accepted by
   the platform (operating system + CPU) that they are based on.
3. For example, a program that is designed for the Windows operating system will only work
   for that specific OS. Compatibility of software will vary as the design of the software and
   the OS differ. Software that is designed for Windows XP may experience a compatibility
   issue when running under Windows 2000.
4. Software, in its most general sense, is a set of instructions or programs instructing a
   computer to do a specific tasks. Software is a generic term used to describe computer
   programs. Scripts, applications programs and a set of instruction are all terms often used
   to describe software.
                        SOFTWARE EVOLUTION
        The process of developing a software product using software engineering principles and methods
is referred in 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.
Software evolution refers to the ongoing process of developing and modifying software after its
initial release to adapt to changing needs, fix bugs, and add new features.
        Evolution starts from the requirement gathering process. After which developers create a
prototype of the intended software and show it in the users to get their feedback at the early stage of
software product development. The users suggest changes 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 requirement 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 requirement.
SOFTWARE EVOLUTION
                      1. Change
                Identification Process
4. New System                            2. Change
                                          Proposal
                   3. Software
                Evolution Process
                 1. Change
           Identification Process                                2. Change proposal
                                                        A formal document submitted to
     Recognizing the need for a change and            suggest modifications to a product,
    understanding its rationale. This includes      process or system, often in the context
identifying areas that are require improvement,        of engineering, manufacturing, or
  defining the desired outcome, and assessing
    the potential impact and feasibility of the
                                                        business. Ultimatelty, a change
  change. It’s a crucial first step in any change    proposal aims to manage and control
   management process, paving the way for                  changes, ensuring they are
          planning and implementation.                 implemented effectively and with
                                                              minimal disruption.
      3. Software evolution process             New System
 Is the process of modifying and updating
software after its initial release to address
    changing needs and requirements. It
      involves activities like identifying      Be open to
   necessary changes, planning releases,
implementing modification, and ensuring          changing
    the software remains functional and
relevant over time. This process is crucial
                                                processes.
  for adapting to new technologies, fixing
bugs, and integrating with other evolving
                  systems.
   NECESSITY OF SOFTWARE EVOLUTION
1.Change in requirement with time: With time, the organizations needs
and modus Operandi of working could substantially be changed so in this
frequently changing time the tools(software) that they are using need to
change to maximize the performance.
2.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 require reintroduction of old software with updated
features and functionality to adapt the new environment.
     NECESSITY OF SOFTWARE EVOLUTION
3. Errors and bugs: As the age of the deployed software within an organization increases their preciseness or
impeccability decrease and the efficiency to bear the increasing complexity workload also continually
degrades. It becomes necessary to avoid use of absolete and aged software. All such obsolete Pieces of
software need to undergo the evolution process in order to become robust as per the workload complexity of
current environment.
An error is a mistake in the code, logic, or design made by the developer. A bug, on the other hand, is a flaw in
the software that causes unexpected behavior or results, and it's often discovered during testing or after
deployment.
4. Security risks: Using outdated software within an organization may lead you at the verge of various
software-based cyberattacks and could expose your confidential data illegally associated with the software
that is in use. O it become necessary to avoid such as breaches through regular assessment of the security
patches/modules are used within the software. If the software isn’t robust enough to bear the current occurring
Cyber attacks so it must be changed (updated)
5. For having new functionality and features. In order to increase the performance and fast data
processing and other functionalities, an organization need to continuously evolute the software throughout its
life cycle so that stakeholders and clients of the product could work efficiently.
 EIGHT LAWS FOR SOFTWARE EVOLUTION
1. Continuing change – A software system must continue to adopt to the real world
   changes, else it becomes progressively less useful.
2. Increasing complexity – A software system evolves, its complexity tends to increase
   unless work is done to maintain or reduce it.
3. 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.
4. Continuing growth –In order for a system intended to resolve some business
   problem, its size of implementing the changes grows according to the lifestyle
   changes of the business.
            EIGHT LAWS FOR SOFTWARE
                   EVEOLUTION
5. Reducing quality – A software system declines in quality unless rigorously
   maintained and adapted to a changing operational environment.
6. Feedback system – The software system constitute multi-loop, multi-level
   feedback systems and must be treated as such to be successfully modified
   or improved.
7. Self-regulation – a system evolution process are self regulating with the
   distribution of product and process measure close to normal.
8. Organizational stability – The average effective global activity rate in an
   evolving system over the lifetime of the product.
                SOFTWARE PARADIGMS
      SOFTWARE DEVELOPMENT PARADIGM
       Software paradigms refers to the methods and steps, which are taken
while designing the software. There are many methods proposed and are in
work today, but we need to see where in the software engineering these
paradigms stands.
       These can be combined into various categories, though each of them is
contained in one another.
        Programming paradigm is a subset of Software design paradigm which
is further a subset of Software development paradigm.
       SOFTWARE DEVELOPMENT PARADIGM
       The paradigm is known as software engineering paradigms where all the
engineering concepts pertaining to the development of software are applied. It
includes various reasearches and requirement gathering which helps the software
product to build. It consist of the following:
 Requirement gathering
 Software design
 Programming
       SOFTWARE DESIGN PARADIGM
• This paradigm is a part of Software development and includes the following:
        Design
        Maintenance
     Programming
    PROGRAMMING PARADIGM
    • This paradigm is relatively closely to programming aspects of software development must satisfy on
      the following grounds:
     Coding
     Testing
     Integration
CHARACTERISTICS OF GOOD SOFTWARE
      A software product can be judged by what it offers and how well it can
be used. This software must satisfy on the following grounds:
Operational
Transitional
Maintenance
OPERATIONAL
       This tells us how well software works in operation. It can be measured on:
 Budget – cost
 Usability – the degree of case with which products such as software and Web applications
 can be used to achieve required goals effectively and efficiency.
 Efficiency – is defined as a level of performance that uses the lowest amount of inputs to
 create the greatest amount of outputs.
 Correctness – adherence to the specifications that determine how users can interact with
 the software and how the software should behave when it is used correctly.
 Functionality – is the ability of the system to do the work for which it was intendd.
 Dependability – is the ability to provide services that can defensibly be trusted within a
 time-period.
 Security – secured system
 Safety
       TRANSITIONAL
This aspects is important when the software is moved from one platform to another.
 Portability – he usability of the same software in different environments,
 Interoperability – the ability of computer systems or software to exchange and make use of
 information.
 Reusability – the use of existing assets in some form within the software product development
 process; these assets are products and by-products of the software development life cycle and
 include code, software components, test suites, designs and documentation.
 Adaptability – an open system that is able to fit its behavior according to changes in its
 environment or in parts of the system itself.
       MAINTENANCE
This aspects brief about how well a software has the capabilities to maintain
itself in the ever-changing environment.
 Modularity – the extent to which a software/Web application may be divided
 into smaller modules.
 Maintainability – is defined as the degree to which an application is
 understood , repaired or enhanced.
 Flexibility – it normally refers to the ability for the solution to adopt to
 possible or futue changes in its requirements.
 Scalability – is the ability of a program to scale.