Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
138 views16 pages

Software Engineering

This document is a textbook on Software Engineering for Second Year B.Sc. Computer Science students, following the new syllabus effective from June 2020. It covers essential topics such as software processes, Agile development, requirements analysis, modeling, and design concepts. The authors emphasize the importance of software engineering in managing software complexity and ensuring high-quality software production.

Uploaded by

Aisha Memon
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
138 views16 pages

Software Engineering

This document is a textbook on Software Engineering for Second Year B.Sc. Computer Science students, following the new syllabus effective from June 2020. It covers essential topics such as software processes, Agile development, requirements analysis, modeling, and design concepts. The authors emphasize the importance of software engineering in managing software complexity and ensuring high-quality software production.

Uploaded by

Aisha Memon
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 16

A Book Of

SOFTWARE
E N G IN E E RIN G
For S.Y.B.Sc. Computer Science : Semester – III (Paper – II)
[Course Code CS 232 : Credits - 2]
CBCS Pattern
As Per New Syllabus, Effective from June 2020

Dr. A. B. Nimbalkar Mrs. Veena K. Gandhi


M.C.S., M.Phil. (C.S.), Ph.D. (Comp. Sci.), D.C.L. M.C.S., M.Phil (Comp. Sci.), UGC-NET
Assistant Professor, Computer Science Department, Head, Department of B.C.A. (Science),
PDEA's A. M. College, Hadapsar, Abeda Inamdar Senior College,
Pune Pune

Price ` 200.00

N5402
SOFTWARE ENGINEERING ISBN 978-93-90225-37-8
First Edition : July 2020
© : Authors
The text of this publication, or any part thereof, should not be reproduced or transmitted in any form or stored in any computer
storage system or device for distribution including photocopy, recording, taping or information retrieval system or reproduced on any disc,
tape, perforated media or other information storage device etc., without the written permission of Authors with whom the rights are
reserved. Breach of this condition is liable for legal action.
Every effort has been made to avoid errors or omissions in this publication. In spite of this, errors may have crept in. Any mistake, error
or discrepancy so noted and shall be brought to our notice shall be taken care of in the next edition. It is notified that neither the publisher
nor the authors or seller shall be responsible for any damage or loss of action to any one, of any kind, in any manner, therefrom.

Published By : Polyplate Printed By :


NIRALI PRAKASHAN YOGIRAJ PRINTERS AND BINDERS
Abhyudaya Pragati, 1312, Shivaji Nagar, Survey No. 10/1A, Ghule Industrial Estate
Off J.M. Road, Pune – 411005 Nanded Gaon Road
Tel - (020) 25512336/37/39, Fax - (020) 25511379 Nanded, Pune - 411041
Email : [email protected] Mobile No. 9404233041/9850046517

DISTRIBUTION CENTRES
PUNE
Nirali Prakashan : 119, Budhwar Peth, Jogeshwari Mandir Lane, Pune 411002, Maharashtra
(For orders within Pune) Tel : (020) 2445 2044; Mobile : 9657703145
Email : [email protected]
Nirali Prakashan : S. No. 28/27, Dhayari, Near Asian College Pune 411041
(For orders outside Pune) Tel : (020) 24690204; Mobile : 9657703143
Email : [email protected]
MUMBAI
Nirali Prakashan : 385, S.V.P. Road, Rasdhara Co-op. Hsg. Society Ltd.,
Girgaum, Mumbai 400004, Maharashtra; Mobile : 9320129587
Tel : (022) 2385 6339 / 2386 9976, Fax : (022) 2386 9976
Email : [email protected]

DISTRIBUTION BRANCHES
JALGAON
Nirali Prakashan : 34, V. V. Golani Market, Navi Peth, Jalgaon 425001, Maharashtra,
Tel : (0257) 222 0395, Mob : 94234 91860; Email : [email protected]
KOLHAPUR
Nirali Prakashan : New Mahadvar Road, Kedar Plaza, 1st Floor Opp. IDBI Bank, Kolhapur 416 012
Maharashtra. Mob : 9850046155; Email : [email protected]
NAGPUR
Nirali Prakashan : Above Maratha Mandir, Shop No. 3, First Floor,
Rani Jhanshi Square, Sitabuldi, Nagpur 440012, Maharashtra
Tel : (0712) 254 7129; Email : [email protected]
DELHI
Nirali Prakashan : 4593/15, Basement, Agarwal Lane, Ansari Road, Daryaganj
Near Times of India Building, New Delhi 110002 Mob : 08505972553
Email : [email protected]
BENGALURU
Nirali Prakashan : Maitri Ground Floor, Jaya Apartments, No. 99, 6th Cross, 6th Main,
Malleswaram, Bengaluru 560003, Karnataka; Mob : 9449043034
Email: [email protected]
Other Branches : Hyderabad, Chennai
Note : Every possible effort has been made to avoid errors or omissions in this book. In spite this, errors may have crept in. Any type of
error or mistake so noted, and shall be brought to our notice, shall be taken care of in the next edition. It is notified that neither the publisher,
nor the author or book seller shall be responsible for any damage or loss of action to any one of any kind, in any manner, therefrom. The
reader must cross check all the facts and contents with original Government notification or publications.
[email protected] | www.pragationline.com
Also find us on www.facebook.com/niralibooks
Preface …

We take an opportunity to present this Text Book on "Software Engineering" to the


students of Second Year B. Sc. (Computer Science) Semester-III as per the New Syllabus,
June 2020.

The book has its own unique features. It brings out the subject in a very simple and lucid
manner for easy and comprehensive understanding of the basic concepts. The book covers
theory of Introduction to Software Engineering and Process Models, Agile Development,
Requirements Analysis, Requirements Modeling and Design Concepts.

A special word of thank to Shri. Dineshbhai Furia, and Mr. Jignesh Furia for
showing full faith in us to write this text book. We also thank to Mr. Amar Salunkhe and
Mrs. Prachi Sawant of M/s Nirali Prakashan for their excellent co-operation.

We also thank Mr. Ravindra Walodare, Mr. Sachin Shinde, Mr. Ashok Bodke,
Mr. Moshin Sayyed and Mr. Nitin Thorat.

Although every care has been taken to check mistakes and misprints, any errors,
omission and suggestions from teachers and students for the improvement of this text book
shall be most welcome.

Authors
Syllabus …
1. Introduction to Software Engineering and Process Models (8 Hrs.)
1.1 Definition of Software
1.2 Nature of Software Engineering
1.3 Changing Nature of Software
1.4 Software Process
1.4.1 The Process Framework
1.4.2 Umbrella Activities
1.4.3 Process Adaptation
1.5 Generic Process Model
1.6 Prescriptive Process Models
1.6.1 The Waterfall Model
1.6.2 Incremental Process Models
1.6.3 Evolutionary Process Models
1.6.4 Concurrent Models
1.6.5 The Unified Process
2. Agile Development (5 Hrs.)
2.1 What is Agility?
2.2 Agile Process
2.2.1 Agility Principles
2.2.2 The Politics of Agile Development
2.2.3 Human Factors
2.3 Extreme Programming(XP)
2.3.1 XP Values
2.3.2 XP Process
2.3.3 Industrial XP
2.4 Adaptive Software Development (ASD)
2.5 Scrum
2.6 Dynamic System Development Model (DSDM)
2.7 Agile Unified Process (AUP)
3. Requirements Analysis (7 Hrs.)
3.1 Requirement Elicitation,
3.2 Software Requirement Specification (SRS)
3.2.1 Developing Use Cases (UML)
3.3 Building the Analysis Model
3.3.1 Elements of the Analysis Model
3.3.2 Analysis Patterns
3.3.3 Agile Requirements Engineering
3.4 Negotiating Requirements
3.5 Validating Requirements
4. Requirements Modeling (10 Hrs.)
4.1 Introduction to UML
4.2 Structural Modeling
4.2.1 Use Case Model
4.2.2 Class Model
4.3 Behavioral Modeling
4.3.1 Sequence Model
4.3.2 Activity Model
4.3.3 Communication or Collaboration Model
4.4 Architectural Modeling
4.4.1 Component Model
4.4.2 Artifact Model
4.4.3 Deployment Model
5. Design Concepts (6 Hrs.)
5.1 Design Process
5.1.1 Software Quality Guidelines and Attributes
5.1.2 Evolution of Software Design
5.2 Design Concepts
5.2.1 Abstraction
5.2.2 Architecture
5.2.3 Patterns
5.2.4 Separation of Concerns
5.2.5 Modularity
5.2.6 Information Hiding
5.2.7 Functional Independence
5.2.8 Refinement
5.2.9 Aspects
5.2.10 Refactoring
5.2.11 Object Oriented Design Concepts
5.2.12 Design Classes
5.2.13 Dependency Inversion
5.2.14 Design for Test
5.3 The Design Model
5.3.1 Data Design Elements
5.3.2 Architectural Design Elements
Contents …

1. Introduction to Software Engineering and Process Models 1.1 – 1.38

2. Agile Development 2.1 – 2.32

3. Requirements Analysis 3.1 – 3.34

4. Requirements Modeling 4.1 – 4.62

5. Design Concepts 5.1 – 5.26


CHAPTER
1

Introduction to Software
Engineering and Process Models
Objectives …
To understand Basic Concepts of Software and Software Engineering
To know Nature of Software Engineering and Changing Nature of Software
To study Software Process, Process Framework etc.
To learn Generic and Prescriptive Process Models

1.0 INTRODUCTION
• Today, software plays a vital role in every field of human activity and we are literally
relying on them to do anything in our lives. Software has become an integral part of
life for banking, shopping, communicating, learning and so on.
• Currently, softwares is simply embedded in everything we have in our car, in our
office, and in our home.
• With the day-to-day advancement of the internet, we will find them taking over our
life in everything we have and everything we do and the controls to come even from
what we wear as they become wearable devices.
• With this accelerated growth of software, one thing is certain. The complexity or the
software development has become multi-fold and with the ever-changing spectrum of
new methodologies, new languages and new paradigms, it is very difficult to keep
track of everything in software.
• Software development now necessitated the presence of a team, which could prepare
detailed plans and designs, carry out testing, develop intuitive user interfaces, and
integrate all these activities into a system. This new approach led to the emergence of
a new discipline known as software engineering.
• Software engineering provides methods to handle complexities in a software system
and enables the development of reliable software systems, which maximize
productivity with high quality.
• Software engineering is an increasingly important discipline that studies the nature of
software, approaches and methodologies for large-scale software development, and
the theories and laws behind software behaviors and software engineering practices.

1.1
Software Engineering (S.Y.B.Sc. Comp. Science) Introduction to Software Engineering and Process Models

1.1 BASIC CONCEPTS OF SOFTWARE


• Computer software is the product that software engineers build. Software engineering
is concerned with building/developing reliable and high quality software.
• Software engineering is an engineering discipline that is concerned with all aspects of
software production from the early stages of system specification through to
maintaining the system after it has gone into use.

1.1.1 Definition of Software (April 15)

• Software is a set of instructions used to acquire inputs and to manipulate them to


produce the desired output in terms of functions and performance as determined by
the user of the software.
• Software is defined as, “a set of instructions to acquire inputs and to manipulate
(process) them to produce the desired output in terms of functions and performance
as determined by the user of the software.” OR
• The Institute of Electrical and Electronics Engineers (IEEE) defines software as, “a
collection of computer programs, procedures, rules and associated documentation and
data.” OR
• A software is, "a set of instructions, (computer programs) that when executed provide
desired output, performance and function".
• Computer software is a product that is designed and built by software engineers.
Software is a collection of programs, documentation and operating procedures,
(See Fig. 1.1).
• Software includes following forms:
1. Instructions (computer programs) that when executed provide desired functions
and performance.
2. Data structures that enable the programs to adequately manipulate information.
3. Documents that describe the operation and use of the programs.

Programs

Operating
Documentation procedures

Fig. 1.1: Software = Program + Documentation + Operating Procedures

1.2
Software Engineering (S.Y.B.Sc. Comp. Science) Introduction to Software Engineering and Process Models

• Software is designed to perform a well-defined task or function. Software controls,


integrates and manages the hardware components of computer systems.
• Some common attributes of good software are:
1. Functionality: It refers to the degree of performance of the software against its
intended purpose.
2. Reliability: It refers to the ability of 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 use of system resources.
7. Acceptability: Software must be accepted by the users for which it was designed.
8. Portability: It refers to the ease with which software developers can transfer
software from one platform to another, without changes.
9. Integrity: It refers to the degree to which unauthorized access to the software can
be prevented.
10. Robustness: It refers to the degree to which the software can keep on functioning
in spite of being provided with invalid data.

1.1.2 Nature of Software


• Software is more than just a program code. A program is an executable code, which
serves some computational purpose.
• Software is considered to be a collection of executable programming code, associated
libraries and documentations.
• Today, software takes on a dual role. It is a product, and at the same time, the vehicle
for delivering a product.
• Software, when made for a specific requirement is called software product. A software
product has to perform a certain specific function/task required by users (customers).
1. Software as a Product:
• Software delivers the computing potential embodied by computer hardware or more
broadly, by a network of computers that are accessible by local hardware.
• Whether, it resides within a mobile phone, a hand-held tablet, on the desktop, or
within a mainframe computer, software is an information transformer-producing,
managing, acquiring, modifying, displaying, or transmitting information that can be as
simple as a single bit or as complex as a multimedia presentation derived from data
acquired from dozens of independent sources.
1.3
Software Engineering (S.Y.B.Sc. Comp. Science) Introduction to Software Engineering and Process Models

2. Software as a Vehicle for Delivering a Product:


• As the vehicle used to deliver the product, software acts as the basis for the control of
the computer (operating systems), the communication of information (networks), and
the creation and control of other programs (software tools and environments).
• Software delivers the most important product of our time - information. It transforms
personal data (e.g., an individual’s banking transactions) so that the data can be more
useful in a local context; it manages business information to enhance competitiveness;
it provides a gateway to worldwide information networks (e.g., the Internet), and
provides the means for acquiring information in all of its forms.
• Software also provides a vehicle that can threaten personal privacy and a gateway
that enables those with malicious intent to commit criminal acts.
1.1.3 Characteristics of Software (April 17)

• Software is defined as the tool with designated order of instructions, performing tasks
to provide the desired results after obtaining the requirements of the users.
• The key characteristics of software are as under:
1. Software is Developed or Engineered: Software is not Manufactured in the
Classical Sense:
• Although some similarities exist between software development and hardware
manufacture, the two activities are fundamentally different.
• In both activities, high quality is achieved through good design, but the manufacturing
phase for hardware can introduce quality problems that are nonexistent for software.
• Both activities depend on people, but the relationship between people applied and
work accomplished is entirely different. Both require the construction of a ‘product’.
But the approaches are different.
• Software costs are concentrated engineering. This means that software projects cannot
be managed as if they were manufacturing projects.
2. Software does not “Wear Out”:
• There is a well-known bath-tub curve in reliability studies for hardware. Fig. 1.2
shows failure rate as a function of time for hardware.
• The ‘bath-tub curve’ indicates that, at the beginning of the life of hardware it shows a
high failure rate as it contains many defects. By time, the manufacturers or the
designers repair these defects and it becomes idealized or gets into a steady state and
continues.
• But after that, as time goes, the failure rate rises again and this may be caused by
excessive temperature, dust, vibration, improper use and so on and at one time it
becomes totally unusable. This state is the “wear out” state.

1.4
Software Engineering (S.Y.B.Sc. Comp. Science) Introduction to Software Engineering and Process Models

• On the other hand, software does not wear out like hardware. It also has a high failure
rate at its initial state. Then it gets modified and then defects get corrected and thus it
comes to the idealized state.
• Software is not susceptible to the environmental melodies due to this hardware to
wear out. Ideally, the failure rate curve for software should take the form of the curve
shown in Fig. 1.3.

Burn-in
phase
Useful life phase Wear out
Failure intensity

phase

Failure rate
Continuous at same
rate until obsolescense

Time Time

Fig. 1.2: Bath-tub Curve Fig. 1.3: Idealized Software Failure Curve

• An undiscovered defect will cause high failure rates in the life of the program.
Software does not wear out during its life, software will undergo maintenance (or
change).
• As changes are made, it is likely that some new defects will be recognized, causing the
failure rate curve to spike as shown in Fig. 1.4.

Increased failure rate due


to side effects
Failure rate

Change

Actual curve

Idle curve

Time

Fig. 1.4: Actual Software

• On the other hand, software does not wear out. Like hardware, software also shows a
high failure rate at its infant state. Then it gets modifications and the defects get
corrections and thus it comes to the idealized state.

1.5
Software Engineering (S.Y.B.Sc. Comp. Science) Introduction to Software Engineering and Process Models

3. Most Software is Custom Built, rather than being Assembled from Existing
Components:
• Most software continues to be custom built, although recent developments tend to be
component-based. A software component should be designed and implemented such a
way that it can be reused in many different programs.
• Modern reusable components encapsulate both data and the processing applied to
data, enabling the software engineer to create new applications from reusable parts.
• For example, today GUI is built using reusable components that enable the creation of
graphics windows, pull-down menus, and a wide variety of interaction mechanisms.
• Various versions of the software are possible. New modifications or updations are
done in existing software to form a new version of software.
1.1.4 Software Application Domains
• A domain defines a set of common requirements terminology, functionality for any
software program constructed to solve a problem in the area of computer
programming environment.
• An application domain is a mechanism used to isolate executed software applications
from one another so that they do not affect each other’s functionality.
• There are seven main categories of software domains as explained below:
1. System Software:
• System software is a collection of programs written to service other programs.
• For example, compilers, file management utilities, device drivers, editors and
operating system. These programs heavily interact with hardware components.
2. Application Software:
• Application software is a standalone program which solves a specific business
requirement. It uses technical data which facilitates business operations.
• For example, real-time manufacturing process control, payroll system etc.
3. Engineering/Scientific Software:
• Engineering/scientific software uses various number crunching algorithms.
Applications range from astronomy to volcanology, from automotive stress analysis to
space shuttle orbital dynamics etc.
• But new applications may not be based on the conventional numerical algorithms.
• For example, System simulation, Computer Aided Design (CAD), etc.
4. Embedded Software:
• Embedded software resides within a system or product which is used to implement
and control features and functions for the end-user for the system itself.
• Embedded software can perform limited and esoteric functions.
• For example, keypad control for refrigerator or oven.

1.6
Software Engineering

30%
OFF

Author : Dr. A. B. Nimbalkar, Mrs.


Publisher : Nirali Prakashan ISBN : 9789390225378
Veena K. Gandhi

Type the URL :https://www.kopykitab.com/product/54799

Get this eBook

You might also like