Notes Unit 1
Notes Unit 1
OMC 204
Software Engineering
Advisors
Prof. (Dr.) Durgesh Pant, Director, School of Computer Science and IT, UOU
Prof. (Dr.) H. N. Nagaraja, Director General, GEU
Dr. Pankaj Khare, Director, IGNOU, New Delhi
Dr. Akshay Kumar, School of Computer and Information Science, New Delhi
Prepared by
Production
All rights reserved. No part of this manual may be reproduced in any form by mimeograph or any
other means without permission in writing from the Graphic Era Deemed to be University, Dehradun.
GEU, DDOE SLM is for the of use GEU ODL students only.
Syllabus
Programme Master of Computer Applications
Semester II
Course Title Software Engineering
Course Code OMC204
Course Credits 3
Course Type Core Theory Course
1. Course Summary
The aim of this course is to create a strong foundation in Software Engineering (SE). The students are
taught the basic phases of the software development life cycle (SDLC) and the process of their
implementation. The students are also taught agile software development approach, project
management, and quality control measures. This course also emphasizes different styles such as
function- and object-oriented designs and coding. The different design tools and coding styles are
taught with their merits and demerits. Students are trained to employ various unit and system testing
methods for the development of a good software product. The activities in risk management and
maintenance of the deployed software are discussed with suitable case studies.
After the successful completion of this course, the student will be able to:
CO-1. Explain the basics of SE and ethical and professional issues of software engineers [L-1]
CO-2. Discuss the phases and activities of SDLC and compare different models including waterfall,
incremental, prototyping, and spiral. [L-2]
CO-3. Prepare designs using data flow diagrams and unified modeling language tools for function-
and object-oriented approaches [L-3]
CO-4. Develop test cases, perform testing, and analyze activities in the maintenance of software [L-
4]
CO-5. Design software project plans, size, and cost metrics, and assess risks in the software
development. [L-5]
3. Course Contents
a. Essential Reading
1. Course Self-Learning Material
2. Sommerville, Ian. (2010). Software Engineering, 10th Ed., Addison-Wesley
3. Pressman, Roger S. (2009), Software Engineering: A Practitioner’s Approach, 7th
Ed., McGraw-Hill.
b. Recommended Reading
1. Jalote, Pankaj. (1997). An Integrated Approach to Software Engineering, Springer
Science and Business Media.
2. Mall Rajib. (2014), Fundamentals of Software Engineering, 4th Ed., PHI Publication.
3. Carlo Ghezzi, M. Jarayei, D. Manodrioli. (2002). Fundamentals of Software
Engineering, PHI Publication.
c. Magazines and Journals
1. IEEE Transaction on Software Engineering
2. Springer Empirical Software Engineering
d. Websites
1. https://www.coursera.org/
2. http://nptel.ac.in/
e. Other Electronic Resources
1. https://ocw.mit.edu/index.htm
2. Course Video Lectures on Bright Space
Contents
Unit 1 Introduction 1
1.0 Structure of the Unit 1
1.1 Unit Outcomes 1
1.2 SE Fundamentals, Software Cost and Projects 1
1.3 Professional software development: FAQs in SE, Software products 3
1.4 Attributes of good software 5
1.5 The importance of SE 5
1.6 Internet and web-based SE, SE applications 7
1.7 Self-Assessment Questions 8
1.8 Multiple Choice Questions (MCQs) 8
1.9 Keys to MCQs 9
1.10 Summary of the Unit 9
1.11 Keywords 9
1.12 Recommended Reading 9
Unit 1
Introduction
Software and Computer Programs: Software is not the same as computer programs, but it includes
configuration and documentation. When a small project is programmed then a single program can be
software. Thus, the software can be a computer program but not vice versa. Always professional software
consists of several independent programs with user documentation. The documentation describes the
structure of the software, how to use the software system, download options, and guidelines to use
websites. The software consists of bundles of programs and data files. Programs in specific software use
these data files to perform dedicated types of tasks. The comparison of the software and computer
program is expressed in Table 1.1.
What are the attributes of good software? Good software should work for the required
specification with reliability and good quality.
It should be efficient, dependable, usable, and
secure.
What are the fundamental software engineering Software specification, software development,
What is the difference between software Computer science focuses on theory and
engineering and computer science? fundamentals; SE is concerned with the
practicalities of developing and delivering
useful software.
What is the difference between software System engineering is concerned with all
engineering and system engineering? aspects of computer-based systems
development including hardware, software,
and process engineering. SE is part of this
more general process
What are the key challenges facing software Coping with increasing diversity, demands for
engineering? reduced delivery times, and developing
trustworthy software.
What are the costs of software engineering? Roughly 60% of software costs are
development costs; 40% are testing costs. For
custom software, evolution costs often exceed
development costs
What are the best software engineering techniques While all software projects must be
and methods? professionally managed and developed,
different techniques are appropriate for
different types of systems. For example,
games should always be developed using a
series of
prototypes whereas safety-critical control
systems require a complete and analyzable
specification to be developed. You can’t,
therefore, say that one method
is better than another.
What differences has the Web made to software The Web has led to the availability of
engineering? software
services and the possibility of developing
highly distributed service-based systems.
Web-based systems development has led to
important advances in programming
languages and software reuse
Bespoke or Customized Software: Software developed for a specific customer is called bespoke or
customized products. The powerful software behind Netflix or Amazon is an example of bespoke
software products.
1.4 Attributes of a Good Software
Software quality is determined by the six attributes as depicted in Figure 1.1.
1. Functionality: The software should provide the functions for which it is developed. It must fulfill
all the stated requirements.
2. Reliability: The software should maintain its performance. Reliability includes security and
safety. The software should be dependable, and it must protect the system from unauthorized users
or damages due to accidents and failures.
3. Usability: The software must be understandable for its use. It should be learned and used
efficiently.
4. Efficiency: The number of resources such as space, time, and effort must be used appropriately in
the software.
5. Maintainability: The software should be capable of modifying, improving, and adapting after it is
put into use. The maintenance of software is done after deploying the software in the client’s
workspace.
6. Portability: The software should be adaptable to different specified environments.
The other quality attributes are correctness, security, safety, reusability, testability, and integrity.
The software is important because many individuals, organizations, offices, and large societies are
dependent on advanced software systems. The different systems in many disciplines need fast and quality
development of reliable and economical trustworthy software support.
The software developed using the SE approach is faster, of good quality, and cheaper. Due to advanced
technology, software product is become quick and has gained popularity in almost every walk of life. The
approach in SE is known as the software process.
The software process is a sequence of activities to produce a software product. These activities include:
1 Defining the requirement and specifications of the software. Determining conditions in which the
software works by consulting both the customer and the software engineers.
2 Designing and programming the software requirements and specifications.
3 Validating the software to ensure that the customer’s requirements are fulfilled.
4 Modifying or evolving software to accommodate customers’ changing or modified requirements
Software processes vary for different types of users or systems. For example, chemical plants or real-time
aircraft controllers require safety-related features to be addressed first. The e-commerce or online
shopping software requires security from malicious or unauthorized users. Different types of systems
need different development processes. SE is related to both Computer Science (CS) and systems
engineering. The relevance of the SE in computer science and systems engineering is discussed in Table
1.2.
In CS, theories and methods behind the software are System engineering involves hardware,
discussed. Software engineers must have some software, policies, and process design. The
knowledge of CS. The CS theories are useful in small overall architecture of the system is
programs. Very rigid and elegant theories of CS determined in systems engineering. System
cannot be applied in large, complex, heterogeneous engineers integrate the different software parts
software. SE addresses the practical problems of to build a complete system. System
developing software. engineering is less concerned with the
development of small software components.
There is no single SE process to develop the above-mentioned software types. The different issues in SE
include heterogeneity in software. The software may be installed on mobile devices, networks, different
types of computers, and so on. The business and social changes in society is a major issue in SE. The
software may become legacy. The legacy software is old software but still in a working state. The
fundamental SE processes are time-consuming and need to be changed. The software systems are in-
network and on shared web service. The SE must include a strong security base to support the software so
that malicious users cannot attack our software and that information security is maintained.
There are some SE fundamentals applicable to all the applications. The common fundamentals of SE are
based on five themes as given below.
1 A well-understood SE process
2 SE approach with Dependability and performance of all the software systems
3 Understanding and managing requirement specifications
4 Effective use of resources or re-usability
Web-based systems have helped in using and combining assembling the pre-existed software
components to develop new software.
Nowadays, it is not necessary to mention all the requirements beforehand. The internet helps
develop a small software at the beginning and then goes on adding different software parts and
features as and when required.
The most identified types of software applications developed using the SE approach are as given in Table
1.4.
Type of Description
Application
Stand-alone Application systems running on local computers, such as a PC.
applications
Interactive These are applications executed on remote computers and accessed by users
transaction-basedfrom their PCs or terminals. e-business systems, cloud-based services, mail, and
applications photo sharing. Interactive applications using a large data store that is accessed
and updated in each transaction
Embedded control Software systems for controlling and managing hardware devices. Software in
systems the microwave, washing machine, cell phone, etc.
Batch processing Software systems designed to process data in large batches. Banking transactions
systems where many individual inputs are processed to generate outputs
Entertainment SE systems are used in personal works and entertainment.
systems
Systems for SE is used in developing computation-intense, parallel complex software used by
modeling and scientists and engineers, etc.
simulation
Data collection Systems are used to collect data from the environment for processing.
systems
Systems of systems Systems that are composed of several other software systems. For example, MS
Office 365 includes word, spreadsheets, ppts, etc.
Table 1.4 SE Applications
Q5. The continuous refining of the software for better quality is known as ____ [1 mark, L2]
A. Software specification
B. Software Maintenance
C. Software Evolution
D. Software Process