0% found this document useful (0 votes)
7 views

chapter-1

The document provides a comprehensive overview of software, defining it as instructions, data structures, and descriptive information. It discusses various categories of software, characteristics of software engineering, and the layered technology approach, emphasizing the importance of quality and process in software development. Additionally, it outlines different software process models, including the Waterfall, Incremental, Prototyping, Spiral, and RAD models, along with their advantages and disadvantages.

Uploaded by

adityapandji1
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views

chapter-1

The document provides a comprehensive overview of software, defining it as instructions, data structures, and descriptive information. It discusses various categories of software, characteristics of software engineering, and the layered technology approach, emphasizing the importance of quality and process in software development. Additionally, it outlines different software process models, including the Waterfall, Incremental, Prototyping, Spiral, and RAD models, along with their advantages and disadvantages.

Uploaded by

adityapandji1
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 11

Chapter 1:

Definition of Software
Software is:
1. Instructions (computer programs) that when executed provide desired features, function, and performance;
2. Data structures that enable the programs to adequately manipulate information, and
3. Descriptive information (documents) in both hard copy and virtual forms that describes the operation and
use of the programs.

Characteristics of software
Software is developed or engineered; it is not manufactured in the classical sense.
The two activities (software development and hardware manufacturing) are fundamentally different. In
both activities, high quality is achieved through good design, but the manufacturing phase for hardware
can introduce quality problems.
Software doesn’t “wear out.” But it does deteriorate!
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” shown in Figure

This seeming contradiction can best be explained by considering the actual curve in Figure 1.2. During its
life, software will undergo change. As changes are made, it is likely that errors will be introduced, causing
the failure rate curve to spike as shown in the “actual curve” .Before the curve can return to the original
steady-state failure rate, another change is requested, causing the curve to spike again. Slowly, the
minimum failure rate level begins to rise—the software is deteriorating due to change.
Although the industry is moving toward component-based construction, most software continues to
be custom built.

Subject: Software Engineering Subject Teacher: Farheen Dabir


Categories of software /changing nature of software
System software
 It is collection of programs written to service other programs. Some system software (e.g., compilers,
editors, and file management utilities) processes complex, but determinate, information structures.
 Other systems applications (e.g., operating system components, drivers, networking software,
telecommunications processors) process largely indeterminate data.
Application software
 Stand-alone programs that solve a specific business need.
 Applications in this area process business or technical data in a way that facilitates business operations
or management/technical decision making
Engineering/scientific software
 Applications range from astronomy to volcanology, from automotive stress analysis to space shuttle
orbital dynamics, and from molecular biology to automated manufacturing
 E.g.: CAD software.
Embedded software
 Resides within a product or system and is used to implement and control features and functions for the
end user and for the system itself.
 Embedded software can perform limited functions (e.g., key pad control for a microwave oven) or
provide significant function and control capability (e.g., digital functions in an automobile such as fuel
control, dashboard displays, and braking systems).
 E.g. Control buttons of washing machine.
Product-line software
 Designed to provide a specific capability for use by many different customers.
 Product-line software can focus on a limited marketplace (e.g., inventory control products) or address
mass consumer markets (e.g., word processing, spreadsheets, computer graphics, multimedia,
entertainment, database management, and personal and business financial applications).
Web applications
 Called “WebApps,” this network-centric software category spans a wide array of applications.
 In their simplest form, WebApps can be little more than a set of linked hypertext files that present
information using text and limited graphics.
Artificial intelligence software
 Makes use of non-numerical algorithms to solve complex problems that are not amenable to
computation or straightforward analysis.
 Applications within this area include robotics, expert systems, pattern recognition (image and voice),
artificial neural networks, theorem proving, and game playing

Software Engineering: a layered technology approach:

Subject: Software Engineering Subject Teacher: Farheen Dabir


 Software engineering is a layered technology. Referring to, any engineering approach (including
software engineering) must rest on an organizational commitment to quality. The bedrock that supports
software engineering is a quality focus.
 The foundation for software engineering is the process layer. 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 (models, documents, data, reports,
forms, etc.) are produced, milestones are established, quality is ensured, and change is properly
managed.
 Software engineering methods provide the technical how-to’s 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 a set of basic
principles that govern each area of the technology and include modeling activities and other descriptive
techniques.
 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 computer-aided software engineering, is
established.

The software process framework /framework activities:


 A process framework establishes the foundation for a complete software process by identifying a
small number of framework activities that are applicable to all software projects, regardless of their
size or complexity.
 In fig each framework activity is populated by a set of software engineering actions. A collection
of related tasks that produces a major software engineering work product.
Each action in process framework is populated with individual work tasks that accomplish some part of
the work implied by the action.
1. Communication:
Communication framework activity involves heavy communication and collaboration with the
customer, encompasses requirements gathering, data gathering and other related activities.
2. Planning:
Planning activity establishes a plan for software engineering work that follows. Planning describes
the technical tasks to be conducted, the resources that will be required, schedule, and the risks that
are likely in the work products to be produced.
3. Modeling:
Modeling activity encompasses the creation of models that allow the developer and the customer
to better understand software requirements specifications and the design that will achieve those
requirements.
There are two types of modeling i.e. analysis modeling and design modeling.
4. Construction:
Construction activity combines code generation and the testing.
5. Deployment:
The software is delivered to the customers who evaluates the delivered product and provides
feedback based on the evaluation.

Subject: Software Engineering Subject Teacher: Farheen Dabir


Software Engineering umbrella activities:
Typical umbrella activities include:
1. Software project tracking and control
Allows the software team to assess progress against the project plan and take any necessary action
to maintain the schedule.
2. Risk management
Assesses risks that may affect the outcome of the project or the quality of the product.
3. Software Quality Assurance
Defines and conducts the activities required to ensure software quality.
4. Formal Technical reviews
Assesses software engineering work products in an effort to uncover and remove errors before they
are propagated to the next activity.
Subject: Software Engineering Subject Teacher: Farheen Dabir
5. Measurement
Defines and collects process, project, and product measures that assist the team in delivering
software that meets stakeholders’ needs; can be used in conjunction with all other framework and
umbrella activities.
6. Software Configuration Management
Manages the effects of change throughout the software process.
7. Reusability management
Defines criteria for work product reuse (including software components) and establishes
mechanisms to achieve reusable components.
8. Work product preparation and production
Encompasses the activities required to create work products such as models, documents, logs,
forms, and lists.
Software Process Models or SDLC
1. Waterfall Model
The waterfall model, sometimes called the classic life cycle, suggests a systematic, sequential
approach6 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.

Fig: Waterfall Model


Situation in which waterfall model is applicable:
 There are times when the requirements for a problem are well understood—when work flows from
communication through deployment in a reasonably linear fashion. This situation is sometimes
encountered when well-defined adaptations or enhancements to an existing system must be made.
 Framework activities involved:
 Communication:
It involves heavy communication with the customer (or stakeholder) and encompasses requirement
gathering and related activities.
 Planning:
In this activity, effort required, cost/budget, risk analysis ,time duration re estimated (project plan is
made)
 Modeling:
This activity creates analysis and design models that both developers and customer to better
understand the requirements. Data structure, software architecture and other details are made.
 Construction:
This activity performs code generation and testing to ensure whether requirements are fulfilled.
Code generation is done first and then testing is done after that.
 Deployment:
Once the product is fully developed, it is delivered to the customer. Customer evaluates the product
and provides feedback.

Subject: Software Engineering Subject Teacher: Farheen Dabir


Advantages:
 It is the simplest software process model.
 Easy to understand
 Phases are completed one at a time
 Works well for smaller projects
Disadvantages:
 Real projects rarely follow the sequential flow that the model proposes. Although the linear model
can accommodate iteration, it does so indirectly. As a result, changes can cause confusion as the
project team proceeds.
 It is often difficult for the customer to state all requirements explicitly. The waterfall model
requires this and has difficulty accommodating the natural uncertainty that exists at the beginning
of many projects.
 The customer must have patience. A working version of the program(s) will not be available until
late in the project time span. A major blunder, if undetected until the working program is reviewed,
can be disastrous.

2. Incremental Model:

Fig: Incremental Model

The incremental model combines elements of linear and parallel process flows .Referring to Figure the
incremental model applies linear sequences in a staggered fashion as calendar time progresses. Each
linear sequence produces deliverable “increments” of the software.

Situation in which incremental model is applicable:


 There are many situations in which initial software requirements are reasonably well defined, but the
overall scope of the development effort precludes a purely linear process.
 In addition, there may be a compelling need to provide a limited set of software functionality to
users quickly and then refine and expand on that functionality in later software releases.

Subject: Software Engineering Subject Teacher: Farheen Dabir


 When an incremental model is used, the first increment is often a core product.
That is, basic requirements are addressed but many supplementary features (some known, others
unknown) remain undelivered.
 The core product is used by the customer (or undergoes detailed evaluation). As a result of use
and/or evaluation, a plan is developed for the next increment.
 The plan addresses the modification of the core product to better meet the needs of the customer and
the delivery of additional features and functionality. This process is repeated following the delivery
of each increment, until the complete product is produced.
 The incremental process model focuses on the delivery of an operational product with each
increment. Early increments are stripped-down versions of the final product, but they do provide
capability that serves the user and also provide a platform for evaluation by the user.
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. It should be noted
that the process flow for any increment can incorporate the prototyping paradigm.
Advantages:
 Useful when staffing is unavailable
 Less costly to change the scope of the project
 Customer can respond to each build.
Disadvantages:
 Cost is higher than waterfall model.
 Needs good planning and design
Difference:

Subject: Software Engineering Subject Teacher: Farheen Dabir


3. Prototyping model:

Fig: Prototyping model

Situation in which prototyping model is applicable:


Often, a customer defines a set of general objectives for software, but does not identify detailed
requirements for functions and features. In other cases, the developer may be unsure of the efficiency of
an algorithm, the adaptability of an operating system, or the form that human-machine interaction should
take. In these, and many other situations, a prototyping paradigm may offer the best approach.
 The prototyping paradigm assists you and other stakeholders to better understand what is to be built when
requirements are fuzzy.
 The prototyping paradigm begins with communication. You meet with other stakeholders to define the
overall objectives for the software, identify whatever requirements are known, and outline areas where
further definition is mandatory.
 Prototyping iteration is planned quickly, and modeling (in the form of a “quick design”) occurs. A quick
design focuses on a representation of those aspects of the software that will be visible to end users (e.g.,
human interface layout or output display formats). The quick design leads to the construction of a
prototype.
 The prototype is deployed and evaluated by stakeholders, who provide feedback that is used to further
refine requirements. Iteration occurs as the prototype is tuned to satisfy the needs of various stakeholders,
while at the same time enabling you to better understand what needs to be done.
Advantages:
 Users are actively involved in the development.
 Users get better understanding of the system being developed.
 Errors can be detected much earlier.
 Quick user feedback is available.
Disadvantages:
 Overall software quality or maintainability may not get considered when the prototype is being
developed.
 An inefficient algorithm may be implemented.
 Inappropriate OS or programming language maybe used simply because it is available.

Subject: Software Engineering Subject Teacher: Farheen Dabir


4. Spiral Model:

Fig: Spiral Model


 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.
 Using the spiral model, software is developed in a series of evolutionary releases. During early
iterations, the release might be a model or prototype. During later iterations, increasingly more
complete versions of the engineered system are produced.
 A spiral model is divided into a set of framework activities defined by the software engineering team.
Each of the framework activities represent one segment of the spiral path illustrated in Figure. As this
evolutionary process begins, the software team performs activities that are implied by a circuit around
the spiral in a clockwise direction, beginning at the center.
 Risk is considered as each revolution is made.
 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:
 The spiral model is a realistic approach to the development of large-scale systems and software.
 High amount of risk analysis hence, avoidance of risk is enhanced.

Subject: Software Engineering Subject Teacher: Farheen Dabir


Disadvantages:
 It may be difficult to convince customers (particularly in contract situations) that the evolutionary
approach is controllable.
 It demands considerable risk assessment expertise and relies on this expertise for success.
 If a major risk is not uncovered and managed, problems will undoubtedly occur.

5. RAD Model (Rapid Application Development Model)


Note: refer hand written notes

Disadvantages:
 RAD needs enough human resources to create the required number of RAD teams.
 If developers and customers are not committed to the rapid model, the RAD project fails.
 Rapid-fire activities need to be completed in very short or small time frame. Time is the major constraint
in RAD.
 RAD has to be modularized in a proper way otherwise creates a lots of confusions and problems.
 In case of high performance requirement, RAD cannot be ideal model. Still if RAD model has to be used
then it can be done by making tune between interface and system components.

Subject: Software Engineering Subject Teacher: Farheen Dabir


Msbte questions:
1. Describe the characteristics of software. (W-15,4M)
2. Explain software engineering as a layered technology approach (S-15,W14,W-
15,4M)
3. With neat diagram, explain the nature and general steps of spiral model. Also give
its advantages and disadvantages. (S-15,W-14,6M,W-15,8M)
4. Define PSP and TSP, Give advantages of TSP. (W-15,4M)
5. In which situation RAD model is applicable? Give its advantages and disadvantages.
(W-14,W-15,4M)
6. Explain the basic process framework activities. (S-15,W-14,W-15,4M)
7. State any four attributes of good software. (S-15,W-14,4M)
1. Functionality:
It refers to the degree of performance of the software against its intended purpose.
2. Reliability:
It refers to the ability of the software to provide desired functionality under the
given conditions.
3. Usability:
It refers to the extent to which the software can be used with ease and simple.
4. Maintainability:
Software must evolve to meet changing needs.
5. Dependability:
Software must be trustworthy.
6. Efficiency:
Software should not make wasteful of system resources.
8. Explain incremental process model using suitable diagram. (W-14,4M)
9. What are PSP and TSP frame work activities? Explain their meaning in detail. (W-
14,4M)
10.Explain different cycles in software development. (W-14,8M) (any process model to
be explained)
11.Differentiate between waterfall model and incremental model. (S-15,4M)
12.Write four drawback of RAD model.(S-15,4M)
13.Explain Failure curve for software.(S-14,4M)
14.Explain Agile software development (4M)
Refer hand written notes for agile and XP.

Subject: Software Engineering Subject Teacher: Farheen Dabir

You might also like