Software Engineering
Software Engineering
ENGINEERING
By
NEHA BHANDARE
Chapter 1
INTRODUCTION TO SYSTEM
ENGINEERING
SYSTEM DEFINITION
• A system is a collection of interrelated components that function together to
achieve some outcome (goal or objective). Systems are created to solve problems.
One can think of the systems approach as an organized way of
dealing with a problem.
• A computer system consists of hardware components that have been carefully
chosen so that they work well together and software components or programs that
run in the computer
• The main software component is itself an operating system that manages and
provides services to other programs that can be run in the computer
BASIC COMPONENTS OF SYSTEM
• A system has three basic elements input, processing and output. The other elements
include control, feedback, boundaries, environment and interfaces.
1. Input: Input is what data the system receives to produce a certain output.
2. Output: What goes out from the system after being processed is known as
Output.
3. Processing: The process involved to transform input into output is known as
Processing.
4. Control: In order to get the desired results it is essential to monitor and control
the input Processing and the output of the system. This job is done by the control.
5. Feedback: The Output is checked with the desired standards of the output set and the
necessary steps are taken for achieving the output as per the standards, this process is called
as Feedback. It helps to achieve a much better control in the system.
6. Boundaries: The boundaries are nothing but the limit of the system. Setting up
boundaries helps for better concentration of the activities carried in the system.
7. Environment: The things outside the boundary of the system are known as environment.
Change in the environment affects the working of the system.
8. Interfaces: The interconnections and the interactions between the sub-systems is known
as the Interfaces. They may be inputs and outputs of the systems
ELEMENTS OF THE SYSTEM
1. Every system has a purpose within a larger system:- For example, the
purpose of the R&D department in organization is to generate new
product ideas and features for the organization.
2. All of a system's parts must be present for the system to carry out its
purpose optimally:- For example, the R&D system in organization
consists of people, equipment, and processes. If any one of these
components is removed, this system could no longer function.
3. A system's parts must be arranged in a specific way for the system to carry out
its purpose: For example, if you rearranged the reporting relationships in your R&D
department so that the head of new-product development reported to the entry-level lab
technician, the department would likely have trouble carrying out its purpose.
4. Systems change in response to feedback: The word feedback plays a central role in
systems thinking. Feedback is information that returns to its original transmitter such that it
influences that transmitter's subsequent actions.
A probabilistic System is one in which the occurrence of events cannot be perfectly predicated.
Though the behavior of such a system can be described in terms of probability, a certain degree of error is always
attached to the prediction of the behavior of the system.
For example, the Weather forecasting system is probabilistic.
3. Open and Closed System:- An open system does not provide for its control or
modification. It does not supervise itself so it needs to be supervised by people.
For example: If the high-speed printer used with computer systems did not have a switch to
sense whether the paper is in the printer, then a person would have to notice when the paper
runs out and signal the system (push a switch) to stop printing.
A closed system that does not interact with the outside environment is known as a closed
system i.e. it has no input or output.
For example, the Computer system is relatively closed. It does not disturb from outside the
system. A chemical reaction in the sealed tube also is an example of a closed system.
Chapter 2
INTRODUCTION TO SOFTWARE
ENGINEEING
INTRODUCTION
• 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 requirement
is called software product. A software product has to perform certain
specific function/task required by users (customers).
• Engineering: Engineering is all about developing products, using well-
defined, scientific principles and methods.
DEFINITION OF SOFTWARE
• Software is defined as, "a set of instructions to acquire inputs and to manipulate (process)
them to produce the desired output in terms of functions and performance as determined
by the user of the software.“
OR
• A software is, "a set of instructions, (computer programs) that when executed provide
desired output, performance and function".
OR
• Software is defined as, "a data structure that enables the programmer to adequately
manipulate information".
• Software is logical rather than a physical system element.
CHARACTERISTICS OF SOFTWARE
1.Software is developed or engineered; it is not manufactured in
the classical sense:
1. Although some similarities exist between software development and
hardware manufacturing, few activities are fundamentally different.
2. In both activities, high quality is achieved through good design, but the
manufacturing phase for hardware can introduce quality problems than
software.
2. The software doesn’t “wear out.”:- Hardware components suffer from the growing
effects of many other environmental factors. Stated simply, the hardware begins to wear
out.
•Software is not susceptible to the environmental maladies that cause hardware to wear
out.
•Every software failure indicates an error in design or in the process through which the
design was translated into machine-executable code.
• To manage the cost: Software engineering programmers plan everything and reduce all those things
that are not required.
• To decrease time: It will save a lot of time if you are developing software using a software
engineering technique.
• Reliable software: It is the company’s responsibility to deliver software products on schedule and to
address any defects that may exist..
•Effectiveness: Effectiveness results from things being created in accordance with the
standards.
•Reduces complexity: Large challenges are broken down into smaller ones and solved
one at a time in software engineering. Individual solutions are found for each of these
issues.
•Productivity: Because it contains testing systems at every level, proper care is done to
maintain software productivity
MCCALL’S QUALITY FACTOR
• Quality factor refers to the characteristics of a product or service which
define its ability to satisfy user requirements.
• In software engineering, software quality depends on various characteristics
such as correctness, reliability and efficiency. These characteristics are used as
a checklist to implement quality in software and ensure that the software
meets all the quality standards and specifications.
Product Operation
Product Operation 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 and code the software, needs to perform
a 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
Product Revision includes three software quality factors, which are required for
testing and maintenance of the software. They provide ease of maintenance,
flexibility, and testing efforts 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
maintenance.
•Testability: The effort required to verify software to ensure that it meets the
specified requirements.
Product Transition
Product Transition 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.
Stage5: Testing
After the code is generated, it is tested against the requirements to make sure that the products are solving the
needs addressed and gathered during the requirements stage.
During this stage, unit testing, integration testing, system testing, acceptance testing are done.
Stage6: Deployment
Once the software is certified, and no bugs or errors are stated, then it is deployed.
Then based on the assessment, the software may be released as it is or with suggested enhancement in the
object segment.
After the software is deployed, then its maintenance begins.
Stage7: Maintenance
Once when the client starts using the developed systems, then the real issues come up and requirements to be
solved from time to time.
This procedure where the care is taken for the developed product is known as maintenance.
Advantages of SDLC
• A formally defined method for software development in the form of the
SDLC achieves a number of benefits:
• A common vocabulary for each step.
• Defined communication channels between development teams and
stakeholders.
• Clear roles and responsibilities among developers, designers, business
analysts, and project managers.
• Clearly-defined inputs and outputs from one step to the next.
Difference between System analysis and system design
1. System design is the creation as the
1. System analysis is the process of
system which is the solution of the
examination of the problem.
problem.
2. It is related with identifying all the
2. It is related with the co-ordination of
constraints and influences.
the activities, job procedures and
3. It deals with data collection and a
equipment utilization in order to
detailed evaluation of current system.
4. It gives logical model of the system achieves system goals.
through Data Flow Diagrams (DFDs) 3. It deals with general and detailed
and Data Dictionary etc. design specification of input, output,
files and procedures. It also deals with
program development, testing and
user acceptance.
4. It provides technical specification and
reports with which the problem can
be tackled.
A Generic Process Model
• A software process is a set of activities and associated results, which produce
a software product. A software process model is an abstract representation
of a software process.
• A process model is defined as, "a model of a process system that describes
process organization, categorization, hierarchy, interrelationship, and
tailorability".
Activities of Generic Process Model
• The generic process Model includes following five main activities.
1. Communication: Involves communication among the customer and other stake holders;
includes requirements gathering.
2. Planning: Establishes a plan for software engineering work; addresses technical tasks,
resources, work products, and work schedule.
3. Modelling (Analyze, Design): Includes the creation of models to better under the
requirements and the design.
4. Construction (Code, Test): Combines code generation and testing to find errors.
5. Deployment: Involves delivery of software to the customer for evaluation and feedback.
Advantages of Process Model
1. Enables Effective Communication: It enhances understanding and provides a
specific basis for process execution.
2. Facilitates Process Reuse: Process development is a time consuming and expensive
activity. Thus, the software development team utilizes the existing processes for
different projects.
3. Effective: Since, process models can be used again and again; re-usable processes
provide an effective means for implementing processes for software development.
4. Facilitates Process Management: They provide a framework for defining process
status criteria and measures for software development.
Prescriptive Process Model
• A software process model presents a description of a process from some particular
perspective.
• A prescriptive process model defines a distinct set of activities, actions, tasks,
milestones, and work products that are required to engineer high-quality software.
• There are three types of prescriptive process models. They are:
• 1. Waterfall model.
• 2. Incremental process model.
• 3. Evolutionary process model.
Waterfall Model
• The waterfall model was first process model. It is also referred to as a linear-
sequential life cycle model or 'Classic life cycle model’.
• This model is very simple to understand and use. It is traditional software
lifecycle model and best understood by upper management.
• In waterfall model, a work flow is in a linear (sequential) fashion. The
waterfall model often used with well-defined adaptations or enhancements to
current software.
V And V Model
• A contemporary of traditional software development model is 'V-Model'. V-Model
also referred to as the Verification and Validation Model. This is an extension of the
Waterfall model.
• In this, each phase of SDLC must complete before the next phase starts. It follows
a sequential design process same as the waterfall model. Testing of the device is
planned in parallel with a corresponding stage of development.
• The crux of V model establishes an association between each phase of testing with
that of development. The phases of testing are categorized as "Validation Phase"
and that of development as "Verification Phase". Therefore for each phase of
development there's a corresponding test activity planned in advance.
Verification: It involves a static analysis method (review) done without executing
code. It is the process of evaluation of the product development process to find
whether specified requirements meet.
There are four types of Prototyping Models, which are described below:
1. Rapid Throwaway Prototyping
2. Evolutionary Prototyping
3. Incremental Prototyping
4. Extreme Prototyping
1. Rapid Throwaway Prototyping