Software engineering
an engineering branch associated with development of software product using well-defined scientific principles, methods and procedures.
Software
considered to be collection of executable programming code, associated libraries and documentations. Software, when made for a specific requirement is called software product
program
is an executable code, which serves some computational purpose.
Engineering
on the other hand, is all about developing products, using well-defined, scientific principles and methods.
Software Evolution
The process of developing a software product using software engineering principles and methods
Software Evolution Cycle
Evolution Cycle
Software Evolution Laws Lehman
Static-type (S-type)
Practical-type (P-type)
Embedded-type (E-type)
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
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 paradigms
refer to the methods and steps, which are taken while designing the software. There are many methods proposed and are implemented. But, we need to see where in the software engineering concept, these paradigms stand.
Software Development Paradigm
Software Development Paradigm consists of
This paradigm is a part of Software Development and includes