Software Engineering Introduction

Download as pdf or txt
Download as pdf or txt
You are on page 1of 11

CHAPTER NO:-1

INTRODUCTION TO SOFTWARE & SOFTWARE ENGINEERING

Software & Software Engineering


Software:
 Computer software is the product that software professionals build and then support over the
long term.
 It encompasses programs that execute within a computer of any size and architecture,
content that is presented as the computer programs execute, and descriptive information
in both hard copy and virtual forms that encompass virtually any electronic media.

Characteristics of software :

[1] Software is developed or engineered; it is not manufactured in the classical sense:

 Although some similarities exist between software development and hardware


manufacturing, but few activities are fundamentally different.
 In both activities, high quality is achieved through good design, but the manufacturing
phase for hardware can introduce quality problems than software.
[2] Software doesn’t “wear out.”
 Hardware components suffer from the growing effects of dust, vibration, abuse,
temperature extremes, and many other environmental maladies. Stated simply, the
hardware begins to wear out.
 Software is not susceptible to the environmental maladies that cause hardware to wear
out. In theory, therefore, the failure rate curve for software should take the form of the
“idealized curve”.
 When a hardware component wears out, it is replaced by a spare part.
 There are no software spare parts.
 Every software failure indicates an error in design or in the process through which design
was translated into machine executable code.
 Therefore, the software maintenance tasks that accommodate requests for change involve
considerably more complexity than hardware maintenance.
 However, the implication is clear—software doesn’t wear out. But it does deteriorate.
Hardware Failure curve Software Failure curve

[3] Although the industry is moving toward component-based construction, most software
continues to be custom built.
A software component should be designed and implemented so that it can be reused in many different
programs.

Difference between program and software

Program Software

1) Small in size. ) Large in size.


2) Authors himself is user-soul. 2) Large number.
3) Single developer. 3) Team developer.
4) Adopt development. 4) Systematic development.
5) Lack proper interface. 5) Well define interface.
6) Large proper documentation. 6) Well documented

Software Engineering:
Software Engineering is the application of a systematic, disciplined, quantifiable approach to the
development, operation, and maintenance of software; that is, the application of engineering to
software.
A Layered Technology:
A quality Focus:
 Every organization is rest on its commitment to quality.
 Total quality management, Six Sigma, or similar continuous improvement culture and it is this
culture ultimately leads to development of increasingly more effective approaches to software
engineering.
 The foundation that supports software engineering is a quality focus.

Process:
 The software engineering process is the glue that holds the technology layers together and
enables rational and timely development of computer software.
 Process defines a framework that must be established for effective delivery of software
engineering technology.
 The software process forms the basis for management control of software projects and
establishes the context in which technical methods are applied, work products are produced,
milestones are established, quality is ensured, and change is properly managed.

Methods:
 Software engineering methods provide the technical aspects for building software.
 Methods encompass a broad array of tasks that include communication, requirements analysis,
design modeling, program construction, testing, and support.
 Software engineering methods rely on the set of modeling activities and other descriptive
techniques

Tools:
 Software engineering tools provide automated or semi-automated support for the process
and the methods.
 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 CASE (computer-aided software
engineering), is established.

Waterfall Process Model


The waterfall model, sometimes called the classic life cycle, suggests a systematic, sequential approach
to software development that begins with customer specification of requirements and progresses
through planning, modeling, construction, and deployment, culminating in ongoing support of the
completed software.
Limitations:
 The nature of the requirements will not change very much during development; during
evolution.
 The model implies that you should attempt to complete a given stage before moving on to the
next stage.
 Does not account for the fact that requirements constantly change.
 It also means that customers cannot use anything until the entire system is complete.
 The model implies that once the product is finished, everything else is maintenance.
 Surprises at the end are very expensive
 Some teams sit ideal for other teams to finish
 Therefore, this model is only appropriate when the requirements are well-understood and
changes will be fairly limited during the design process.

When to use waterfall model?


 Requirements are very well known, clear and fixed
 Product definition is stable
 Technology is understood
 There are no ambiguous requirements
 Ample resources with required expertise are available freely
 The project is short

Incremental Process Model


 The incremental model combines elements of linear and parallel process flows.
 The incremental model applies linear sequences in a staggered fashion as calendar time
progresses.
 Each linear sequence produces deliverable “increments” of the software.
 For example, word-processing software developed using the incremental paradigm might
deliver basic file management, editing, and document production functions in the first
increment; more sophisticated editing and document production capabilities in the second
increment; spelling and grammar checking in the third increment; and advanced page layout
capability in the fourth increment.
Advantages:
 Generates working software quickly and early during the software life cycle.
 This model is more flexible – less costly to change scope and requirements.
 It is easier to test and debug during a smaller iteration.
 In this model customer can respond to each built.
 Lowers initial delivery cost.
 Easier to manage risk because risky pieces are identified and handled during iteration.

Disadvantages:
 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

When to use waterfall model?


 This model can be used when the 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.
 There are some high risk features and goals.

RAD (Rapid Application Development) Process Model


 It is a type of incremental model. In RAD model the components or functions are developed
in parallel as if they were mini projects.
 The developments are time boxed, delivered and then assembled into a working prototype.
 This can quickly give the customer something to see and use and to provide feedback
regarding the delivery and their requirements.

Advantages:
 Reduced development time.
 Increases reusability of components
 Quick initial reviews occur
 Encourages customer feedback
 Integration from very beginning solves a lot of integration issues.
Disadvantages:
 For large but scalable projects RAD requires sufficient human resources.
 Projects fail if developers and customers are not committed in a much shortened time-frame.
 Problematic if system cannot be modularized.
 Not appropriate when technical risks are high (heavy use of new technology).
When to use RAD model?
 RAD should be used when there is a need to create a system that can be modularized in 2-3
months of time.
 It should be used if there’s high availability of designers for modeling and the budget is high
enough to afford their cost along with the cost of automated code generating tools.
 RAD SDLC model should be chosen only if resources with high business knowledge are
available and there is a need to produce the system in a short span of time (2-3 months).
Prototype process model
 The basic idea here is that instead of freezing the requirements before a design or coding
can proceed, a throwaway prototype is built to understand the requirements.
 This prototype is developed based on the currently known requirements.
 By using this prototype, the client can get an “actual feel” of the system, since the
interactions with
prototype can enable the client to better understand the requirements of the desired system.
 Prototyping is an attractive idea for complicated and large systems for which there is no
manual process or existing system to help determining the requirements.
 The prototype are usually not complete systems and many of the details are not built in the
prototype. The goal is to provide a system with overall functionality.

Advantages:
Figure: Prototype Model
Users are actively involved in the development
Since in this methodology a working model of the system is provided, the users get a better
understanding of the system being developed.
Errors can be detected much earlier.
Quicker user feedback is available leading to better solutions.
Missing functionality can be identified easily
Confusing or difficult functions can be identified
Disadvantages:
Leads to implementing and then repairing way of building systems.
Practically, this methodology may increase the complexity of the system as scope of the system may
expand beyond original plans.
Incomplete application may cause application not to be used as the full system was designed.
When to use Prototype Model?
 Prototype model should be used when the desired system needs to have a lot of interaction
with the end users.
 Typically, online systems, web interfaces have a very high amount of interaction with end
users, are best suited for Prototype model. It might take a while for a system to be built
that allows ease of use and needs minimal training for the end user.
 Prototyping ensures that the end users constantly work with the system and provide a
feedback which is incorporated in the prototype to result in a useable system. They are
excellent for designing good human computer interface systems.

Spiral process model
 It was originally proposed by Barry Boehm, the spiral model is an evolutionary software
process model that couples the iterative nature of prototyping with the controlled and
systematic aspects of the waterfall model.
 It provides the potential for rapid development of increasingly more complete versions of the
software.
 The spiral development model is a risk-driven process model generator that is used to guide
multi- stakeholder concurrent engineering of software intensive systems.
 It has two main distinguishing features. One is a cyclic approach for incrementally growing a
system’s
degree of definition and implementation while decreasing its degree of risk.
 The other is a set of anchor point milestones for ensuring stakeholder commitment to
feasible and mutually satisfactory system solutions.

 The first circuit around the spiral might result in the development of a product specification;
subsequent passes around the spiral might be used to develop a prototype and then
progressively more sophisticated versions of the software.
 Each pass through the planning region results in adjustments to the project plan.
 Cost and schedule are adjusted based on feedback derived from the customer after delivery.
 In addition, the project manager adjusts the planned number of iterations required to
complete the software.

Advantages:
 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.
 Software is produced early in the software life cycle.
Disadvantages:
 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 to use spiral process model?


 When costs and risk evaluation is important for medium to high-risk projects.
 Long-term project commitment unwise because of potential changes to economic priorities
 Users are unsure of their needs.
 Requirements are complex
 New product line Significant changes are expected (research and exploration)




















Comparision of Process Models

Factors Water Iterative Prototype Evolution RAD Spiral


Fall Model Model Model Model Model Model

Cost Costly Low High Low Low Expensive

Simplicity Simple Intermediate Simple Complex Simple Intermediate

Risk Rigid Easily Medium Low Low Low


Managed

Involvement Less High, After High Medium Only at the High


Of user Each beginning
Iteration

Flexibility Rigid Much Highly Medium Easy Flexible


Flexible Flexible

Maintenance Least Maintainable High Less Easily Typical


Maintenance Maintenance Maintainable

Integrity - - - - - -

Security Medium Medium Medium Medium Vital High

Reusability Least Yes Weak Less Yes High


Possible
Requirement Yes Beginning Frequently Yes Time boxed Beginning
Changed release

You might also like