Software Engineering Unit-1
Software Engineering Unit-1
(KCS 601)
Lecture Notes
(Unit-1)(Notes-1)(Introduction)
Unit-1 Syllabus
PROGRAM:
It is complete in itself and is generally used only by the author of the program, there is
usually little documentation or other aids to help other people use the program. These
programs are not designed with issues of portability, reliability and usability in mind.
SOFTWARE:
Software is:
Or
SOFTWARE CHARACTERISTICS:
In this errors are corrected in the early stage after that it maintains that position.
3) “Most Software is custom built rather than being assembled from existing components”.
Hardware is assembled from components available in market but software is build according to the
needs of the customer.
TYPES OF SOFTWARE:
► System software
► Business software
► Embedded Software
System Software:
They directly interact with the hardware and do the necessary work relating to
hardware like CPU scheduling, resource sharing and complex data structure handling.
Business Software:
These are application level software developed for specific operations like according
package, payroll package & MIS.
Embedded Software:
Software which is dealing with changing environment of the real world event is called
as Real Time software.
Software packages used for analysis are known as Expert systems or knowledge based
systems. They make use of non-numerical algorithms to solve complex problems that
are not amenable to computation.
► RELIABILTY –
► ROBUSTNESS –
If a program performs well even during extraneous conditions i.e. they perform well for
which they are not designed.
► PERFORMANCE –
It is the ability of a system in the form of responsiveness to various actions within a certain period
of time
► TESTABILITY:
It shows how well the system or component facilitates to perform tests to determine whether the
predefined test criteria have been met.
► MAINTAINABILITY –
The ease with which a software system or component can be modified to correct faults, improve
performance or other attributes, or adapt to a changed environment.
► REUSUABILTY–
Software components can be reused to form new software by making certain changes inthe
software components.
► PORTABILITY –
► SECURITY –
It is the ability of a system to resist or block malicious or unauthorized attempts that destroy the
system and at the same time provide access to legitimate users.
► TIMELINESS-
► INTEROPERABILITY-
It is the ability of two or more systems to communicate or exchange data easily and to use the
data that has been exchanged.
SOFTWARE ENGINEERING
► It is application of science and mathematics by which the capabilities of computer
equipment are made useful to man via computer programs, procedures and
associated documentation.
“Develop methods and procedures for software development that can scale up for
large systems and that can be used to consistently produce high quality Software at
low cost and with a small cycle time”
Cost - Cost of a developing system is the cost of resources used for the system, in case of
software are Manpower, Hardware, software and other supportresources.
Schedule – Relates to cycle time from concept to delivery which should be
small.
ii) Product transition- deals with factors like portability , Interoperability, Reusability
iii) Product Revision – It is concerned with those aspects related to modification,
maintainability & testability.
SOFTWARE CRISIS-
Software crisis is a term used in the early days of computing science for the difficulty of writing useful
and efficient computer programs in the required time. The software crisis was due to the rapid
increases in computer power and the complexity of the problems that could not be tackled. With the
increase in the complexity of the software, many software problems arose because existing methods
were inadequate.
► Scheduling and costing of a project does not match with the actuals.
► Software is not meeting the current demand for which it should accommodate.
► Due to lack of linking and coordination between the developer and consumer.
SOFTWARE PROCESS-
► It is set of activities, together with ordering constraints among them such that if the
activities are performed properly and in accordance with the ordering constraints, the
desired result is produced. Desired result is High quality software at low cost.
► The process that deals with the technical and management issues of software
development is called a “software process” it specifies a method of developing
software
Software Process
Product Process
engineering Management
Process Process
Software
Project
Development Configuration
Management
Process Management
process
Process
► Management Process: specifies how to plan and control these activities are met
► PREDICTABILTY –
The observation from the data about effort distribution with phases is that testing
consumes the most resources during development.
Underestimating the testing & less knowledge of testing tools effort often causes the
planners to allocate insufficient resources for testing which in turn results in
unreliable software or schedule slippage.
Errors occur throughout the department Process. However, the cost of correcting
errors of different phases is not the same and depends on when the error is detected
and corrected.
The greater the delay in detecting an error after it occurs the more expensive it is to
correct it.
Detecting errors soon after they have introduced is clearly an objective that should be
supported by the process.
► PROCESS IMPROVEMENT –
Having process improvement as a basic goal of the software process implies that the
software process used is such that it supports its improvement. This requires that
there be means for evaluating the existing process and underestimating the weakness
in the process. And it is always preferable to have a quantifiable evaluation rather than
a subjective evaluation. Hence it is important that the process provides data that can
be used to evaluate the current processes and its weakness. Process improvement is
a fundamental objective which requires that the software process be a closed loop
process. “The Process must learn from previous experiences & each project done
using the existing process must feed information back into the process itself, which
can then use this information for self-improvement”.
SOFTWARE DEVELOPMENT LIFE CYCELE (SDLC) -
► PHASED DEVELOPMENT PROCESS
PLANNING:
Leaders of the project evaluate the terms of the project, including the calculation of labor and
material costs, to create a timetable with goals.
Planning must also include areas of feedback from stakeholders or anybody who is going to
benefit from the applications.
The scope of the project should be clearly defined, the purpose of the application outlined, and
the boundaries that are needed to keep the project from expanding beyond scope or shifting.
In other words, the team should determine the feasibility of the project and how they can
implement the project successfully with the lowest risk in mind.
REQUIREMENTS ANALYSIS:
► It is done in order to understand the problems that the software system is to solve.
A CLIENT, A DEVELOPER
The developer usually does not understand the client’s problem and client does not
understand the issues involved in software systems.
► Problem Understanding
► Requirement Specification
Once the problem is analyzed & the essentials understood the requirements must be specified
in the requirement specification document.
Requirement document (SRS) must satisfy all functional & performance requirements , the
formats of inputs and outputs and all design constraints that exist due to political ,
economic, environmental & security reasons.
SOFTWARE DESIGN:
► Purpose is to plan a solution of the problem specified by the requirements documents.
► It is the most critical factor affecting the quality of software. It has major impact on
the later phases such as Testing and Maintenance.
► Output is design document which is similar to a blue print or plan for the
solution and is used later during implementation, testing and maintenance.
► System Design
► Detailed Design
In system design the focus is on identifying the modules, whereas during design the focus is
on designing the logic for each of the modules.
CODING:
► Goal of coding phase is to translate the design of the system into code in a given
programming language.
► During coding the focus should be on developing programs that are easy to read &
understand.
► Goal of structured programming is to linearize the control flow in the program i.e.
program text should be as a sequence of statements & during execution the statements
are executed in the sequence given in the programming.
TESTING:
► Its basic function is to detect errors in the software
► Goal of testing is to uncover requirements, design & coding errors in the programs.
► SYSTEM TESTING – Here the system tested against the system requirements to see
if all the requirements are met and if the system performs as specified by the
requirements.
► Final output of testing phase is the test report & the error report.
LIFE CYCLE MODEL
► Process model is a descriptive and diagrammatic representation of the software life cycle.
► Life cycle model maps the different activities performed on a software product
from its inception to retirement.
► Different life cycle models may map the basic development activities to phases in
different ways.
► No matter which life cycle model is followed, the basic activities are included in all
life cycle models though the activities may be carried out in different orders in
different life cycle models.
During any life cycle phase, more than one activity may also be carried out
► Without using of a particular life cycle model the development of a software product
would not be in a systematic and disciplined manner.
► Suppose a software development problem is divided into several parts and the parts are
assigned to the team members.
► From then on, suppose the team members are allowed the freedom to develop the parts
assigned to them in whatever way they like.
► It is possible that one member might start writing the code for his part, another might
decide to prepare the test documents first, and some other engineer might begin with the
design phase of the parts assigned to him.
► A software life cycle model defines entry and exit criteria for every phase.
► A phase can start only if its phase-entry criteria have been satisfied.
► So without software life cycle model the entry and exit criteria for a phase cannot be
recognized.
► Without software life cycle models it becomes difficult for software project managers to
monitor the progress of the project.
► Each of them has some advantages as well as some disadvantages. A few important and
commonly used life cycle models are as follows:
► Prototyping Model
► Evolutionary Model
► Spiral Model
CLASSICAL WATERFALL MODEL:
System
Feasibility
Requirement
Analysis
System
Design
Detailed
Design
Coding
System Feasibility:
► In this, we establish requirements for all system elements and the allocating some
subsets of these needs to software.
► In this, the overall design or architecture of system is proposed using the previous
results of phase carried out.
► In this stage, the programmers code for different modules of the software in the
chosen programming Language.
► All the wides for various modules are tested for their aimed working & efficiency.
► After achieving the rate factor results, all the modules are integrated & their again
the integrated system is chosen for testing in wholesome manner.
► End Product is test & integration report
Installation:
► Routine check is also needed to ensure the proper & efficient monitoring of software
installed at the site.
► If end users face any problem afterwards, it is also looked into the software is
always expected to be maintained upgraded in the further for various changes
occurring in the users environment & also in his needs.
► Maintenance of a typical software product requires much more than the effort
necessary to develop the product itself.
► Many studies carried out in the past confirm this and indicate that the relative effort
of development of a typical software product to its maintenance effort is roughly in
the 40:60 ratios.
► Maintenance involves performing any one or more of the following three kinds of
activities:
Correcting errors that were not discovered during the product development phase.
This is called corrective maintenance.
Porting the software to work in a new environment. For example, porting may
be required to get the software to work on a new computer platform or with a
new operating system. This is called adaptive maintenance.
SHORTCOMINGS OF THE CLASSICAL WATERFALL MODEL:
► The source of the defects can be many: oversight, wrong assumptions, use of
inappropriate technology, communication gap among the project engineers, etc.
► These defects usually get detected much later in the life cycle. For example, a design
defect might go unnoticed till we reach the coding or testing phase. Once a defect is
detected, the engineers need to go back to the phase where the defect had occurred
and redo some of the work done during that phase and the subsequent phases to
correct the defect and its effect on the later phases.
► It is linear Model
► It enforces the responsibility of carrying out all the phases in listed order.
► The shortcut implementation of a function, for example, may produce the desired
results by using a table look-up instead of performing the actual computations.
► A prototype usually turns out to be a very crude version of the actual system
NEED OF PROTOTYPE:
► To illustrate the input data formats, messages, reports, and the interactive
dialogues to the customer.
► This is a valuable mechanism for gaining better understanding of the customer’s needs:
► Another reason for developing a prototype is that it is impossible to get the perfect
product in the first attempt.
► The experience gained in developing the prototype can be used to develop the final
product.
► A prototyping model can be used when technical solutions are unclear to the
development team.
► A developed prototype can help engineers to critically examine the technical issues
associated with the product development.
► In such circumstances, a prototype may be the best or the only way to resolve the
technical issues. A prototype of the actual product is preferred in situations such as:
Experience of developing the prototype might reduce the cost if the later phases
when the actual software development is done.
Client and users get experience with the system it is more likely that the
requirements specified after the prototype will be closer to the actual
requirements. This will lead to fewer changes in the requirements at a later time.
TYPES OF PROTOTYPING:
Evolutionary Prototyping
Incremental Prototyping
Throwaway Prototyping
EVOLUTIONARY PROTOTYPING:
► It helps in delivering the complete system to user.
► The system design starts with prototype & subsequent modules are developed &
integrated with the prototype which would ultimately result in the complete system
even high costs does not matter because our prototype will form a part of the
system.
► The development of the prototype type starts when the preliminarily version of
the requirements specification document has been developed.
► After the prototype has been developed the end users and clients are given an
opportunity to use the prototype.
► Based on the feedback, the initial requirements are modified to produce the final
requirements specification which is then used to develop the production Quality
System.
HOW COST CAN BE REDUCED:
INCREMENTAL PROTOTYPING:
Incremental Model is a process of software development where requirements are
broken down into multiple standalone modules of software development cycle.
Each iteration passes through the requirements, design, coding and testing phases.
And each subsequent release of the system adds function to the previous release
until all designed functionality has been implemented.
More flexible
When major requirements are understood but some requirements can evolve within the
passage of time.
When a customer has no problem with the budget but he demands more and more
quality in software.
THROWAWAY PROTOTYPING:
Idea is to discard after the analysis is complete.
Cost of prototype is kept to a minimum as when the overall system is developed this
prototype is of no use.
ADVANTAGES:
► Partial product is built in the initial stages therefore customers get a chance to see the
product early in life cycle & thus give necessary feedback.
► As user is involved from the starting of the project, he/she tend to be more secure,
comfortable and satisfied.
DISADVANTAGES:
► After seeing an early prototype end users demand the actual system to be delivered soon.
► End users may not like to know the difference between a prototype and aw well
engineered fully developed system.
► Developers in a hurry to build porotypes may end up with sub optimal solutions.
► If end user is not satisfied with initial prototype, he may lose interest in the project.
► Poor documentation.
ITERATIVE ENHANCEMENT MODEL:
► Known as Momental Enhanced Model.
► Aims at bonding the merits of prototyping and the waterfall model
► Software should be developed in increments, each increment adding some functional
► Project Control List is created that contains all the tasks that must be performed to
obtain the final implementation
► First step is to create a simple initial implementation is done for a subset if overall
problem.
► Each step consists of removing the next task from the list, designing the
implementation for the selected task, coding and testing the implementation.
► The process is iterated until the project control list is empty, at which time the final
implementation of the system, will be available.
► Project control list guides the iteration steps and keeps track of all tasks that must be
done.
► Based on analysis one of the tasks in the list can include redesign of defective
components or redesign of the entire system.
► However, redesign of the system will generally occur only in initial steps.
ADVANTAGES:
► One effective use of this type of model is for product development, in which the
developers themselves provide the specifications & therefore have a lot of control on
what specifications go in the system & what stay out.
► Limited number of persons can be put on project because work is to be delivered in part
► As development activities for next release & use of early version of product is done
simultaneously, errors if found can be corrected.
► Customers or end users feedback requirements for successive releases become more
clear.
► Risk of failure of a product is decreased as users start using the product early.
DISADVANTAGES:
► As product is delivered in parts total development cost is higher.
► Well defined interfaces are required to connect modules developed with each phase.
► Model requires well defined project planning schedule to distribute the work properly.
► Another problem is in generating the business control how will the cost of additional
features be determined, negotiated, particularly because the client organization is
likely to be tied to the original vendor who developed the first version.
SPIRAL MODEL:
► Proposed by Bohem.
► The activities in this model can be organized like a spiral that has many cycles.
► Radial Dimensions represents the cumulative cost incurred in accomplishing the steps
done so far.
► Angular dimensions represent the progress made in completing each cycle of the
spiral.
MAIN PHASES OF SPIRAL MODEL:
► It has four stages or phases: The planning of objectives, risk analysis, engineering or
development, and finally reviews. A project passes through all these stages
repeatedly and the phases are known as a Spiral in the model.
• Determine Objectives
• Alternatives
• Constraints
• Planning Phase
This phase includes requirement gathering and analysis. Based on the requirements,
objectives are defined and different alternate solutions are proposed. There’s a wide
range of them, from trivial to fatal. The primary task for the development team is to
enumerate all the possible risks and prioritize them according to importance.
In this quadrant, all the proposed solutions are analyzed and any potential risk is
identified, analyzed, and resolved. During the first spiral, when the overall requirements
are not so clear, the so-called Proof of Concept (POF) is created to get the customer’s
feedback.
Region 3 – Develop and verify next level of Product
This phase includes the actual implementation of the different features. All the
implemented features are then verified with thorough testing.
► In this phase, the software is evaluated by the customer. It also includes risk
identification and monitoring like cost overrun or schedule slippage and after that
planning of the next phase is started.
ADVANTAGES:
► This model is a very flexible model and it is highly suited to project development of
our times.
LIMITATIONS:
► There is no concrete beginning or end of particular phases.