0% found this document useful (0 votes)
53 views

Chapter 2-Introduction To Software Engineering

Uploaded by

07dkarke
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)
53 views

Chapter 2-Introduction To Software Engineering

Uploaded by

07dkarke
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/ 12

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 is not susceptible to environmental problems like hardware.


 Undiscovered defects will cause high failure rates early in the life of a
program.
 Software doesn’t wear out. But it does deteriorate!
 During its life, software will undergo change. As changes are made, errors
will be introduced, causing the failure rate curve to spike as shown in the
“actual curve”. Slowly, the minimum failure rate level begins to rise and the
software is deteriorating due to change.
3. Most Software is Custom Built, rather than being assembled from existing
components:
 In the hardware world, component reuse is a natural part of the engineering
process.
 A software component should be designed and implemented so that it can be
reused in many different programs.
 Modern reusable components encapsulate both data and the processing that is
applied to the data, enabling the software engineer to create new applications
from reusable parts.

Definition of Software Engineering:

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.

IEEE Software Engineering:


The application of systematic, disciplined, quantifiable approach to the
development, operation, and maintenance of software i.e., the application of
engineering to software.

Need of Software Engineering:

Handling Big Projects: A corporation must use a software engineering


methodology in order to handle large projects without any issues.
To manage the cost: Software engineering programmers plan everything and
reduce all those things that are not required.
For efficient use of Resources: As software development is expensive so proper
measures are required, so that the resources are used efficiently.
To decrease time: It will save a lot of time if you are developing software using a
software engineering technique.
For Production of Reliable software: Software should be reliable that means , the
delivered software should work as per user's expectations without any errors and it
should be delivered in time.
For reduction of Complexity: Today the complexity of software project is
increased. Large projects are broken down into smaller ones (modules) and solved
one at a time in software engineering. Individual solutions are found for each of
these issues.
To Increase Productivity: Productivity: Because it contains testing systems at
every level, proper care is done to maintain software productivity.
To Maintain Effectiveness of Software: Effectiveness comes/results if anything is
developed according to the standards. Software companies follow all standards. So
software becomes more effective in performance with the help of software
engineering.
For Quality Management: Better process of software development provides better
and quality software product.

Layered Technology of Software Engineering:


or
Software Engineering Layers:

 Software engineering is a layered technology.


 To develop software one will have to go from one layer to another.
 The layers are related and each layer demands the fulfillment of the previous
layer.
 It consists of set of key elements(layers) like
o Quality
o Process
o Methods
o Tools
Quality Layer:
 An engineering approach must have a focus on quality.
 The software product should fulfill the customer/user quality requirements
(efficiency, reliability, usability etc.), developer quality requirements
(maintainability, reusability, etc.).
 The bedrock that supports software engineering is a quality focus.
Process Layer:
 Process Layer is the Foundation for Software Engineering.
 Process defines a framework for a set of key process areas (KPAs) that must
be established for effective delivery of software engineering technology.
 The key process areas are
o technical methods(deciding the programming language i.e. s/w,h/w) are
applied,
o work products (models, documents, data, reports, forms, etc.) are
produced
o milestones are established,
o and quality is ensured.
 The Software Engineering process ensures that all the technology layers work
together and enables the timely development of computer software.
Methods Layer:
 It provides technical knowledge for developing software.
 The method layer covers tasks like requirements analysis, design, coding,
testing and maintenance phases of the software development.
Tools Layer:
 Software engineering tools provides automated or semi-automated support for
the Process and Method layer.
 When tools are integrated so that information created by one tool can be used
by another, a system for the support of software development, called
computer-aided software engineering, is established.
Software Quality:
IEEE defines software quality as,
"the degree to which a system, component, or process meets specified
requirements."
OR
"the degree to which a system, component, or process meets customer or user
needs or expectations."
Mc Call’s Quality factors:

 McCall’s Software Quality Model was introduced in 1977.


 This model is incorporated with many attributes, termed as software factors
 These factors focus on following three important aspects of a software
product:
1. Product Operation: Its operational characteristics.
2. Product Revision: Its ability to undergo change.
3. Product Transition: Its adaptability to new environments
 The 11 software quality factors are shown in McCall's Quality Triangle. These
factors are referred to as McCall's quality factors.

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."

Characteristics of Software Process:


 Understandability  Visibility
 Supportability  Acceptability
 Reliability  Robustness
 Rapidity  Maintainability
Software Process Framework:
 Software Process Framework is a foundation of complete software
engineering process.
 Software process framework includes all set of umbrella activities.
 It also includes number of framework activities that are applicable to all
software projects.
 The software process framework is a collection of task sets.
 Task sets consist of a collection of small work tasks, project milestones, work
productivity and software quality assurance points.

Process Framework Activities/Generic Process Framework Activities:


Generic process framework encompasses five activities given below

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.

iv) Formal Technical Reviews (FTR):


FTR is a meeting conducted by the technical staff.
The aim of this meeting is to detect quality problems and suggest improvements.
The objectives of the FTR are
(1) to uncover errors in function, logic, or implementation for any representation of
the software;
(2) to verify that the software under review meets its requirements;
(3) to ensure that the software has been represented according to predefined
standard.
v) Reusability Management:
It defines the criteria for reuse of the product.
The quality of software is good when the components of the software are developed
for certain application and are useful for developing other applications.
vi) Software Configuration Management:
SCM manages the changes made in the software processes throughout the life cycle
of the software project.
It also controls changes made to the configuration and maintains the integrity of the
software.
vii)Work product preparation and production:
It consists of the activities that are needed to create the documents, forms, lists, logs
and user manuals for developing a software.
Task Set:
A task set is a collection of software engineering work tasks, milestones, and
deliverables that must be accomplished to complete a particular project.

E.g. Consider Communication Activity.


For small project, this can be defined as having tasks set:
 Making a phone call with stakeholder.
 Discuss requirements and note them down.
 Organize requirements.
 Mail stakeholder for review and approval.

Software Product and Software Process:

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.

Types of Software Products:


Software products fall into two broad categories:
1. Generic products:
Generic products are developed by a production unit and sold on the open market to
any customer who is able to buy them.
Generic Software is designed in general for public use.
2. Customized Products:
Customized products are the systems that are built for a particular customer.
Custom Software is a software that is specially designed for specific organizations
or users.

You might also like