Chapter 2-Introduction To Software Engineering
Chapter 2-Introduction To Software Engineering
Definition of Software:
A software is, "a set of instructions, (computer programs) that when executed
provide desired output, performance and function".
OR
IEEE (Institute of Electrical and Electronics Engineers):
IEEE defines software as, "a collection of computer programs, procedures, rules and
associated documentation and data."
OR
Computer software is a product that is designed and built by software engineers.
Software is a collection of programs, documentation and operating procedures.
Characteristics of Software:
Following are the characteristics that makes it different from Hardware:
1. Software is developed or engineered; it is not manufactured in the classical
sense.
In both activities, high quality is achieved through good design.
Both activities are dependent on people, but the relationship between people
and work accomplished are different.
Software costs are concentrated in engineering. This means that software
projects cannot be managed as if they were manufacturing projects.
Both require the construction of a 'product'.
2. Software doesn’t “wear out.”
Hardware exhibits high failure rates early in its life (design or manufacturing
defects); defects are corrected and the failure rate drops to a steady-state level
for some period of time.
As time passes, the failure rate rises again as hardware components suffer
from the effects of dust, vibration, temperature and many other environmental
problems.
Stated simply, the hardware begins to wear out.
Software Engineering (Fritz Bauer): The establishment and use of sound engineering
principles in order to obtain economically software that is reliable and works
efficiently on real machines.
Product Operation:
It includes five software quality factors, which are related to the requirements that
directly affect the operation of the software such as operational performance,
convenience, ease of usage, and correctness.
These factors help in providing a better user experience.
Correctness: The extent to which software meets its requirements
specification.
Efficiency: The number of hardware resources (computing resources) and
software code required by a program to perform its function
Integrity: The extent to which the software can control an unauthorized person
from accessing the data or software.
Reliability: The extent to which software performs its intended functions
without failure.
Usability: The extent of effort required to learn, operate and understand the
functions of the software.
Product Revision:
It includes three software quality factors, which are required for testing and
maintenance of the software.
They provide ease of maintenance, flexibility, and testing effort to support the
software to be functional according to the needs and requirements of the user in the
future.
Maintainability: The effort required to detect and correct an error during the
maintenance phase.
Flexibility: The effort needed to improve an operational software program.
Testability: The effort required to verify software to ensure that it meets the
specified requirements.
Product Transition:
It includes three software quality factors that allow the software to adapt to the
change of environments in the new platform or technology from the previous.
Portability: The effort required to transfer a program from one platform to
another.
Re-usability: The extent to which the program’s code can be reused in other
applications.
Interoperability: The effort required to integrate two systems with one
another.
Quality Criteria (Not in syllabus)
A quality criteria is an attribute of a quality factor that is related to software
development.
List of Quality Criteria:
1. Access to Audit: Ease with which the software and data can be checked for
compliance/fulfilment with standards.
2. Accuracy: Accuracies of computations and output.
3. Access Control: Provisions for control and protection of the software.
4. Completeness: Degree to which full implementation of required functionalities
have been achieved.
5. Communicativeness: Ease with which the inputs and outputs can be integrated.
6. Conciseness: Compactness of the source code, in terms of lines of code.
7. Consistency: Use of uniform design and implementation techniques.
8. Data commonality: Use of standard data representation.
9. Error tolerance: Degree to which continuity of operation is confirmed under
adverse conditions.
10. Execution efficiency: Run time efficiency of the software.
11. Expandability: Degree to which storage requirements or software functions can
be expanded.
12. Hardware independence: Degree to which a software is dependent on the
underlying hardware.
13. Modularity: Provision of highly independent modules.
Software Process:
Software process is defined as, "the related set of activities and processes that are
involved in developing and evolving a software system."
OR
Software development process is defined as, "a collection of procedures to develop
the software product according to certain goals or standards."
1) Communication:
This is the first activity.
Before starting any technical work it is very important to communicate
with the customer/user/or other stakeholders.
This activity is performed for requirement gathering.
Communicate with stakeholders and customers to obtain/determine
goal/objectives of the system and requirements for the software.
2) Planning:
It consists of complete estimation, scheduling for project development
and tracking.
In this activity, we discuss related technical tasks, work plan, lists of
required resources, project estimate (money, time, etc.), work
schedule/plan, risk factors that are likely to occur, etc.
3) Modelling(Design):
In modelling activity, a product’s model is created in order to better
understanding and requirements.
Architectural models and design are used for better understanding of
the problem.
The diagrams like Flowchart, Algorithm, and DFD etc. are used in
designing.
4) Construction(Coding and Testing):
Construction consists of code generation and the testing part.
Coding part implements the design details using an appropriate
programming language.
Testing is to check whether the flow of coding is correct or not.
Testing also check that the program provides desired output.
Testing is carried out to find and fix the bugs in code in order to make
better product.
We ensure that all specified requirements are met.
5) Deployment:
In this activity, a complete or non-complete product or working system
or software is delivered to the customers to evaluate and give feedback.
If the customer wants some corrections or demands for the additional
capabilities, then the change is required for improvement in the quality
of the software.
Umbrella Activities:
Umbrella activities are the activities (or set of steps or procedures) that the software
engineering team follows to maintain the progress, quality, change and risks in
project throughout the software development process.
i)Software project tracking and control:
In this activity, the developing team accesses project plan and compares it with the
predefined schedule.
If these project plans do not match with the predefined schedule, then the required
actions are taken to maintain the schedule.
ii) Risk management:
The risks that may affect project outcomes or quality can be analyzed.
Analyze potential risks that may have an impact on the software product’s quality
and outcome.
iii)Software Quality Assurance (SQA):
SQA is the planned and systematic pattern of activities which are required to give a
guarantee of software quality.
These activities are required to maintain software quality.
For example, during the software development meetings are conducted at every
stage of development to find out the defects and suggest improvements to produce
good quality software.
Software Product:
The final software that is delivered to the customer with documentation is
called the software product.
It is the outcome of the entire software development process.
It describes how to install and use the system.
It may include source code, data, user guides, reference manuals, installation
manuals, specification documentation, other documentation, etc.