Uploaded by Sunny Kumar

software engineering-1

advertisement
SOFTWARE
ENGINEERING
by-Mrs Mamta Prajapati
Course-BCA
 Engineering is the application of scientific and
practical knowledge in order to invent,design,
build, maintain, and improve systems,
processes, etc.
 The software is collection of Integrated programs
 Software consists of carefully-organized instructions andcode
written by programmers in any of various special computer
languages.
 Computer programs and associated documentation suchas
requirements, design models and user manuals.
 Software engineering is an engineering discipline that is
concerned with all aspects of software production.
 According to IEEE's definition software engineering can be
defined as the application of a systematic, disciplined,
quantifiable approach to the development, operation, and
maintenance of software, and the study of these approaches;
that is, the application of engineering tosoftware.
Software Crisis







It was in late 1960’s
Many software projects failed.
Many software projects late, over budget, providing unreliable software that is expensive to maintain.
Many software projects produced software which did not satisfy the requirements of the customer.
Complexities of software projects increased as hardware capability increased.
Larger software system is more difficult and expensive to maintain.
Demand of new software increased faster than ability to generate new software.
All the above attributes of what was called a ‘Software Crisis’. So the term ‘Software Engineering’ first introduced at a
conference in late 1960’s to discuss the software crisis.
Why software engineering?
Once the need for software engineering was identified and software engineering recognized as a discipline-•
The late 1970’s saw the widespread evolution of software engineering principles.
•
The 1980’s saw the automation of software engineering and growth of CASE (Computer Aided Software
Engineering).
•
The 1990’s have seen increased emphasis on the ‘management’ aspects of projects and the use of standard quality
and ‘process’ models like ISO 9001 and the Software Engineering Institute’s Software Capability Maturity Model (CMM).
These models help organizations put their software development and management processes in place
What is software Engineering?
•
In1969 Fritz Bauer defined software eng. as, ‘the establishment and use of sound engineering principles in order to
obtain, economically, software that is reliable and works efficiently on real machines’.
•
According to Boehm, software engineering involves, ‘the practical application of scientific knowledge to the design
and construction of computer programs and the associated documentation required developing, operating and
maintaining them’
•
IEEE, in its standard 610.12-1990, defines software engineering as:
(i) The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance
of software; that is, the application of engineering to software.
(ii) The study of approaches as in (i).
•
By combining all the above definition we can define software engineering as, ‘Software engineering is the
technological and managerial discipline concerned with systematic production and maintenance of software products
that are developed and modified on time and within cost estimates.’
Goal of software engineering
The primary goals of software engineering are:
•
To improve the quality of the software products.
•
To increase the productivity &
•
To give job satisfaction to the software engineers.
The role of software engineer
The evolution of software engineering field has defined the role of the software engineer. A software engineer should
have the following qualities:
•
Should be a good programmer, be well-versed in data structures and algorithms, and be fluent in one or more
programming languages.
•
Should be familiar with several design approaches, be able to translate vague requirements and desires into
precise specifications and be able to converse with the use of a system in terms of applications.
•
Needs the ability to move among several levels of abstraction at different stages of the project, from specific
application procedures and requirements, to abstraction for software systems, to a specific design for system and finally
to the detailed coding level.
The characteristics of software engineer
•
Should be able to build and use a model of the application to guide choices of the many trade- offs that he or she
will face. The model is used to answer questions about both the behavior of the system and its performance.
•
Needs communication skills and interpersonal skills. He also needs the ability to schedule work both of his own
and that of others.
What is well engineered software?
If the software system does what the user wants, and can be made to continue to do what the user wants, it is well
engineered.
•
•
•
•
•
Any well engineered software system should have the following attributes:
Be easy to maintain
Be reliable
Be efficient
Provides an appropriate user interface
The development of software must make trade-offs between these attributes.
 A framework that describes the activities performed at each stage ofa
software development project.
 A set of activities whose goal is the development or evolution of
software.
 Generic activities in all software processes are:
 Specification - what the system should do and its development
constraints
 Development - production of the software system
 Validation - checking that the software is what the customer
wants
 Evolution - changing the software in response to changing
demands.
Software Development Life Cycle (SDLC)
A software life cycle model (also termed process model) is a pictorial and diagrammatic representation
of the software life cycle. A life cycle model represents all the methods required to make a software
product transit through its life cycle stages. It also captures the structure in which these methods are to
be undertaken.
In other words, a life cycle model maps the various activities performed on a software product from its
inception to retirement. Different life cycle models may plan the necessary development activities to
phases in different ways. Thus, no element which life cycle model is followed, the essential activities are
contained in all life cycle models though the action may be carried out in distinct orders in different life
cycle models. During any life cycle stage, more than one activity may also be carried out.


Need of SDLC
 The development team must determine a suitable life cycle model for a particular plan and then observe to it.
 Without using an exact life cycle model, the development of a software product would not be in a systematic
and disciplined manner. When a team is developing a software product, there must be a clear understanding
among team representative about when and what to do. Otherwise, it would point to chaos and project failure.
This problem can be defined by using an example. Suppose a software development issue is divided into various
parts and the parts are assigned to the team members. From then on, suppose the team representative is
allowed the freedom to develop the roles assigned to them in whatever way they like. It is possible that one
representative might start writing the code for his part, another might choose to prepare the test documents
first, and some other engineer might begin with the design phase of the roles assigned to him. This would be
one of the perfect methods for project failure.

SDLC Cycle
SDLC Cycle represents the process of developing software. SDLC framework includes the following steps:
The stages of SDLC are as follows:
Stage1: Planning and requirement analysis




Requirement Analysis is the most important and necessary stage in SDLC.
The senior members of the team perform it with inputs from all the stakeholders and domain experts or SMEs in the industry.
Planning for the quality assurance requirements and identifications of the risks associated with the projects is also done at this stage.
Business analyst and Project organizer set up a meeting with the client to gather all the data like what the customer wants to build, who will be the end
user, what is the objective of the product. Before creating a product, a core understanding or knowledge of the product is very necessary.
Stage2: Defining Requirements


Once the requirement analysis is done, the next stage is to certainly represent and document the software requirements and get them accepted from the project
stakeholders.
This is accomplished through "SRS"- Software Requirement Specification document which contains all the product requirements to be constructed and developed
during the project life cycle.
Stage3: Designing the Software

The next phase is about to bring down all the knowledge of requirements, analysis, and design of the software project. This phase is the product of the
last
two, like inputs from the customer and requirement gathering.
Stage4: Developing the project

In this phase of SDLC, the actual development begins, and the programming is built. The implementation of design begins concerning writing code.
Developers have to follow the coding guidelines described by their management and programming tools like compilers, interpreters, debuggers, etc.
are used to develop and implement the code.
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.
 Waterfall Model
 Incremental Model
 Prototyping model
 Spiral Model
 .
 Easy to understand, easy to use
 Provides structure to inexperienced staff
 Milestones are well understood
 Good for management control (plan, staff, track)
 Works well when quality is more important than cost or
schedule
 All requirements must be known upfront
 Deliverables created for each phase are considered frozen
inhibits flexibility
 Can give a false impression of progress
 Does not reflect problem-solving nature of software
development – iterations of phases
 Integration is one big bang at the end
 Little opportunity for customer to preview the system
(until it may be too late)
 Requirements are very well known
 Product definition is stable
 Technology is understood
 New version of an existing product
 Porting an existing product to a new platform.
 High risk for new systems because of specification
and design problems
 Whole requirement is divided into various builds
 Multiple development cycles take place here, making the
life cycle a “multi-waterfall” cycle.
 Cycles are divided up into smaller, more easily managed
modules.
 Each module passes through the requirements, design,
implementation and testing phases.
 A working version of software is produced during the first
module, so you have working software early on during the
software life cycle.
 Generates working software quickly and early during the
software life cycle.
 More flexible – less costly to change scope and
requirements.
 Easier to test and debug during a smaller iteration.
 Customer can respond to each built.
 Lowers initial delivery cost.
 Needs good planning and design.
 Needs a clear and complete definition of the whole system
before it can be broken down and built incrementally.
 Total cost is higher than waterfall.
 Requirements of the complete system are clearly defined
and understood.
 Major requirements must be defined; however, some
details can evolve with time.
 There is a need to get a product to the market early.
 A new technology is being used
 Resources with needed skill set are not available
 The spiral model is similar to the incremental model, with
more emphasis placed on risk analysis.
 The spiral model has four phases: Planning, Risk Analysis,
Engineering and Evaluation.
 A software project repeatedly passes through these phasesin
iterations (called Spirals in this model).
 The baseline spiral, starting in the planning phase,
requirements are gathered and risk is assessed.
 High amount of risk analysis hence, avoidance of Risk is
enhanced.
 Good for large and mission-critical projects.
 Strong approval and documentation control.
 Additional Functionality can be added at a later date.
 Can be a costly model to use.
 Risk analysis requires highly specific expertise.
 Project’s success is highly dependent on the risk analysis
phase.
 Doesn’t work well for smaller projects.
 When costs and risk evaluation is important
 For medium to high-risk projects
 Users are unsure of their needs
 Requirements are complex
 New product line
 Significant changes are expected (research and
exploration)
Download