Chapter 1 (KDS 063)
Chapter 1 (KDS 063)
(KDS 063)
Lecture Notes
(Unit-1)(Notes-1)(Introduction)
By
Ms.Pallavi Shukla
U.C.E.R
Syllabus for 1 Unit
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 :
Instructions that when executed provide desired function and performance.
Data structures that enable the programs to adequately manipulate information.
Documents that describe the operation and use of the programs.
Or
IEEE defines software as collection of computer programs , procedures ,rules and
associated documentation and data.
SOFTWARE CHARACTERISTICS:
1) “Software is developed or engineered , it is not manufactured in the classical
sense”
- Difference after manufacturing Product cannot be modified but after developing
software , it can be easily modified.
2) “Software does not wear out”.
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 are 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
Real time Software
Personal Computer Software
Artificial Intelligence Software
Web Based Software
System Software:
They directly interacts with the hardware and does 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 specially dedicated to the particular operation is known as
Embedded software. It uses high level language which is fed in to the ROM and is used
to control products & systems.
Real Time Software :
Software which are dealing with changing environment of the real world event is
called as Real Time software.
Artificial Intelligence 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.
Personal Computer Software
Word processing, spreadsheets , Computer graphics , Multimedia, entertainment,
Database access , personal & Business financial applications.
Web Based Software
SOFTWARE COMPONENTS-
CORRECTNESS –
A Program is said to be functionally correct if it meets the desired specifications.
It can be defines in terms of mathematical expression correlating the two qualities
software and specifications.
RELIABILTY –
It can be defined as probability that the software will meet the expected level.
ROBUSTNESS –
If a program performs well even during extraneous conditions i.e they perform well for
which they are not designed.
PERFORMANCE –
It depends on the efficiency as well as reusability part of the system.
VERIFIABILTY:
If its properties can be verified easily.
MAINTAINABILITY –
Maintenance generally accounts for 60% of the total cost of the system.
REUSUABILTY–
Software components can be reused to form a new software by making certain changes in
the software components.
PORTABILITY –
It can be defines as a software which can support various environments or platforms ex –
JAVA, UNIX.
UNDERSTANDABILITY –
It helps the programmer and users in many ways it helps in achieving many of qualities
such as verifiability.
TIMELINESS:
It is a process related to the quality to deliver a product on time.
INTERPERABILITY:
It is defined as the ability of a system to co exists and cooperate with other systems.
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.
Basic objective of software Engineering is to :
“ 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”
Three Factors driving the Software Engineering are :
i) Cost ii) Schedule iii) Quality
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 support
resources.
Schedule – Relates to cycle time from concept to delivery which should be
small.
Quality – Quality of a software product is known through 3 dimensions
i) Product Operation- deals with Quality factors such as correctness , reliability &
efficiency.
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-
Scheduling and costing of a project does not match with the actuals.
Software is not meeting the current demand for which it should accommodate.
Quality of software should be good and more user friendly.
Timely collection of data and analysis is not done correctly
Due to lack of linking and co ordination between the developer and consumer.
Quality of software detoriates if the software has not being developed in systematic
& proper manner.
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
A software project is development project in which a software process is used.
Software products are the outcomes of a software project.
Software Process
Product Process
engineering Management
Process Process
Software
Project
Development Configuration
Management
Process Management
process
Process
FEASIBILITY STUDY:
Feasibility Study in Software Engineering is a study to evaluate feasibility of
proposed project or system.
It is the feasibility analysis or it is a measure of the software product in terms of how
much beneficial product development will be for the organization in a practical point
of view.
Feasibility study is carried out based on many purposes to analyze whether software
product will be right in terms of development, implantation, contribution of project
to the organization etc.
TYPES OF FEASIBILITY STUDY:
Economical
Technical Operational
Feasibility Legal Feasibility
Feasibility Feasibility
Schedule
FeasibilIty
Technical Feasibility:
In Technical Feasibility current resources both hardware software along with
required technology are analyzed/assessed to develop project.
This technical feasibility study gives report whether there exists correct required
resources and technologies which will be used for project development.
Along with this, feasibility study also analyzes technical skills and capabilities of
technical team, existing technology can be used or not, maintenance and up-
gradation is easy or not for chosen technology etc.
Operational Feasibility:
In Operational Feasibility degree of providing service to requirements is analyzed
along with how much easy product will be to operate and maintenance after
deployment.
Along with this other operational scopes are determining usability of product,
Determining suggested solution by software development team is acceptable or not
etc.
Economic Feasibility:
In Economic Feasibility study cost and benefit of the project is analyzed.
Means under this feasibility study a detail analysis is carried out what will be cost of
the project for development which includes all required cost for final development
like hardware and software resource required, design and development cost and
operational cost and so on.
After that it is analyzed whether project will be beneficial in terms of finance for
organization or not.
Legal Feasibility:
In Legal Feasibility study project is analyzed in legality point of view.
This includes analyzing barriers of legal implementation of project, data protection
acts or social media laws, project certificate, license, copyright etc.
Overall it can be said that Legal Feasibility Study is study to know if proposed project
conform legal and ethical requirements.
Schedule Feasibility:
In Schedule Feasibility Study mainly timelines/deadlines is analyzed for proposed
project which includes how many times teams will take to complete final project
which has a great impact on the organization as purpose of project may fail if it can’t
be completed on time.
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 requirement , design & coding errors in the programs.
UNIT TESTING – In this , a module is tested separately and is often performed by the coder
himself simultaneously along with the coding of the module.
INTEGRATION TESTING – After Unit Testing the modules are gradually integrated into
subsystems, which are then integrated to eventually form the entire system.
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.
ACCEPTANCE TESTING – It is performed to demonstrate to the client on the real life data of
the client, the operation of the system.
Final output of testing phase is the test report & the error report.
It represents all the activities required to make a software product transit through its life
cycle phases.
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.
When a software product is being developed by a team there must be a clear understanding
among team members about when and what to do.
Otherwise it would lead to chaos and project failure.
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.
Result of this phase tabulated in feasibility report.
Requirements Analysis – Project Planning:
In this, we define the needs, requirements , scope etc.
This is called critical Phase.
After requirement analysis with rigorous integration with the proposed software end
users the whole project for software development is panned and scheduled.
End products of this phase are requirements document & Project schedule
System Design:
In this, the overall design or architecture of system is proposed using the previous
results of phase carried out.
Product of this stage is System Design Document
Detailed Design:
In this stage , the programmers code for different modules of the software in the
chosen programming Language.
Programmers or every module is individually developed overall the backend is same
for every module programmed.
Testing & Integration:
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:
Whole system is installed if any upgradation of software or hardware is needed at
the site, then the required resources are made available.
Users are given training how to use software & they may also be provided with a
user’s manual.
Operation and Maintenance:
The stage spans to the whole life of software product developed.
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.
· Improving the implementation of the system, and enhancing the functionalities of
the system according to the customer’s requirements. This is called perfective 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 classical waterfall model is an idealistic one since it assumes that no
development error is ever committed by the engineers during any of the life cycle
phases.
However, in practical development environments, the engineers do commit a large
number of errors in almost every phase of the life cycle.
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.
Therefore, in any practical software development work, it is not possible to strictly
follow the classical waterfall model
ADVANTAGES OF WATERFALL MODEL:
Systematic & Sequential
It is linear Model
There is a clear identification of the beginning and end of any stage.
It involves problem documentation
It enforces the responsibility of carrying out all the phases in listed order.
LIMITATIONS OF WATERFALL MODEL:
No changes in the requirement can be after the start of design process.
For long projects , may be the hardware can become obsolete.
Providing different versions with limited capabilities is not possible
There is heavy documentation involved.
We cannot go back to any previously executed phase
There is no risk analysis.
It is very difficult to predict the requirement explicitly for the customer.
WHERE TO USE WATERFALL MODEL-
1. Requirements are clear and fixed that may not change.
2. There are no ambiguous requirements (no confusion).
3. It is good to use this model when the technology is well understood.
4. The project is short and cast is low.
5. Risk is zero or minimum.
PROTOTYPE MODEL:
A prototype is a toy implementation of the system.
A prototype usually exhibits limited functional capabilities, low reliability, and inefficient
performance compared to the actual software.
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.
➢ In many projects the requirements are constantly changing particularly when development
takes a long time.
➢ 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
➢ 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:
As protype is to be discarded there is no point in implementing those parts of requirements
which are well understood.
Because testing consumes a major part of developer expenditure during regular software
development we reduce testing.
THROWAWAY PROTOTYPING:
➢ Idea is to discard after the analysis is complete.
➢ This prototyping helps us in validation of the system and in deriving the complete system
requirements.
➢ 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 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 protypes may end up with sub optimal solutions.
If not managed properly , the iterative process of prototype demonstration and refinement
can continue for long duration.
If end users is not satisfied with initial protype , he may loose 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
capability to the system until the full system is implemented .
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 parts.
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.
In a customized software development, where the client has to essentially provide and
approve the specification it is not always clear how this process can be applied.
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.
Spiral Model is a risk-driven software development process model.
It is a combination of the waterfall model and the iterative model.
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
Region 1 – Determine Objectives –
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.
Region 2 – Risk Analysis-
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.
Region 4 Plan Next Phase:
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.
In this model, very little documentation is generated in compare to waterfall model.
This particular model lays a lot of stress on Risk Analysis.
This model efficiently uses prototyping.
LIMITATIONS:
There are no concrete beginning or end of particular phases.
We do not get very strict standards for software development
RAD MODEL:
When to use RAD Model?
• When a system needs to be produced in a short span of time (2-3 months)
• When the requirements are known
• When the user will be involved all through the life cycle
• When technical risk is less
• When there is a necessity to create a system that can be modularized in 2-3 months
of time
• When a budget is high enough to afford designers for modeling along with the cost of
automated tools for code generation
It is high speed adaption of linear sequential model in which rapid development is done with the help
of component based construction.
In RAD model, there is less attention paid to the planning and more priority is given to the development
tasks. It targets at developing software in a short span of time.
• Business Modeling
• Data Modeling
• Process Modeling
• Application Generation
Business Modeling
Function of this modeling covers following:
Data Modeling
Information flow defined in the above phase is refined into a set of data objects that are needed to
support the business.
Process Modeling:
Data objects defined in previous phase are transformed to achieve the
information flow necessary to implemented a business function.
Application Generation:
RAD process works to reuse the existing program components or create reusable
components .
In this all automated tools are used to facilitate construction of the software.
It is easier to transfer deliverables as scripts, high-level abstractions and intermediate codes are
used.
Due to code generators and code reuse, there is a reduction of manual coding.
Team leader must work closely with developers & customers /users to close the perfect in
time.
If developers are not committed to delivering software on time, RAD projects can fail.
Reduced features due to time boxing, where features are pushed to a later version to finish a
release in short period.
Reduced scalability occurs because a RAD developed application begins as a prototype and
evolves into a finished application.
❑ The V-Model is an extension of the waterfall model and is based on the association of a testing
phase for each corresponding development stage. This means that for every single phase in
the development cycle, there is a directly associated testing phase. This is a highly-disciplined
model and the next phase starts only after completion of the previous phase.
❑ Under the V-Model, the corresponding testing phase of the development phase is planned in
parallel. So, there are Verification phases on one side of the ‘V’ and Validation phases on the
other side. The Coding Phase joins the two sides of the V-Model.
❑ Verification: It involves static analysis technique (review) done without executing code. It is
the process of evaluation of the product development phase to find whether specified
requirements meet.
So V-Model contains Verification phases on one side of the Validation phases on the other
side. Verification and Validation phases are joined by coding phase in V-shape. Thus it is called
V-Model.
Why preferred?
❑ It is easy to manage due to the rigidity of the model.
❑ Each phase of V-Model has specific deliverables and a review process.
When to use?
❑ The V-Model is used when ample technical resources are available with technical expertise.
V-Model- Advantages:
❑ This is a highly disciplined model and Phases are completed one at a time.
❑ V-Model is used for small projects where project requirements are clear.
❑ This model focuses on verification and validation activities early in the life cycle thereby
enhancing the probability of building an error-free and good quality product.
V-Model -Disadvantages:
❑ High risk and uncertainty.
❑ It is not suitable for projects where requirements are not clear and contains high risk of
changing.