Unit 01 Introduction
Unit 01 Introduction
Course Contents
Unit-1: Introduction
Software and its Types; Attributes of Good Software; Software Engineering and its
Importance; Fundamental Software Engineering Activities; Difference between
Software Engineering and Computer Science; Difference between Software
Engineering and System Engineering; Challenges and Cost of Software Engineering;
Professional Software Development; Software Engineering Diversity; Internet
Software Engineering; Software Engineering Ethics
Course Contents
Unit 8: Software Testing
Introduction; Validation and Verification Testing; Software Inspection; Software
Testing Process; Development Testing; Test-Driven Development; Release Testing;
User Testing
Text Book:
1. Software Engineering, 10th Edition, Ian Sommerville, Pearson Education 2016
References Books:
1. Software Engineering: A Practitioner‟s Approach, 8th Edition, Roger S.
Pressman and Bruce R. Maxim, McGraw-Hill Education 2015
2. Beginning Software Engineering, Rod Stephens, John Wiley & Sons Inc 2015
Unit-1: Introduction
1. Professional Software Development
1.1 Software engineering
What is software?
What are the attributes of good software?
What is software engineering?
What are the fundamental software engineering activities?
What is the difference between software engineering and computer science?
What is the difference between software engineering and system engineering?
What are the key challenges facing software engineering?
What are the costs of software engineering?
What are the best software engineering techniques and methods?
What differences has the Internet made to software engineering?
E-R Diagram
E-R Diagram:
Conceptual Design
Logical Design (Relational Tables)
Class Diagram
BASIC CHARACTERISTICS OF OBJECT-ORIENTED SYSTEMS:
Unit-1: Introduction
Importance of Software Engineering:
Virtually all countries now run depend on complex computer-based system.
National infrastructures and utilities rely on computer-based systems that include
a computer and controlling software.
Industrial manufacturing and distribution is completely computerised, as is the
financial system.
Therefore , producing and maintaining software cost–effectively is essential for
the functioning of national and international economies.
Software Engineering is an engineering discipline whose focus is the cost-
effective development of high-quality systems.
As the evolution of new technologies in computer, communications and complex
graphical user interfaces, a complex software is also require.
So, new techniques and methods are required to control the complexity inherent
in large software systems.
Unit-1: Introduction
Introduction:
Software systems are abstract and intangible. They are not constrained by the
properties of materials, nor are they governed by physical laws or by
manufacturing processes.
There are many different types of software system, ranging from simple
embedded systems to complex, worldwide information systems.
There are no universal notations, methods, or techniques for software engineering
because different types of software require different approaches. Developing an
organizational information system is completely different from developing a
controller for a scientific instrument.
All of these applications need software engineering; they do not all need the same
software engineering methods and techniques.
Unit-1: Introduction
Software engineering is criticized as inadequate for modern software development.
However, many of these so-called software failures are a consequence of two factors:
1. Increasing system complexity: Systems have to be built and delivered more
quickly; larger, even more complex systems are required; and systems have to
have new capabilities that were previously thought to be impossible. New
software engineering techniques have to be developed to meet new the challenges
of delivering more complex software.
2. Failure to use software engineering methods: Many companies do not use
software engineering methods in their everyday work. Consequently, their
software is often more expensive and less reliable than it should be. We need
better software engineering education and training to address this problem.
Unit-1: Introduction
1. Professional Software Development:
Lots of people/individual write programs. However, most software
development is a professional activity in which software is developed for
business purposes, for inclusion in other devices, or as software products
such as information systems and computer-aided design systems.
The key distinctions between individual and professional are that
professional software is intended for use by someone apart from its
developer and that teams rather than individuals usually develop the
software. It is maintained and changed throughout its life.
Software engineering is intended to support professional software
development rather than individual programming. It includes techniques
that support program specification, design, and evolution, none of which
are normally relevant for personal software development.
Unit-1: Introduction
1. Professional Software Development:
A professionally developed software system is often more than a
single program. A system may consist of several separate programs
and configuration files that are used to set up these programs. It
may include system documentation, which describes the structure of
the system, user documentation, which explains how to use the
system, and websites for users to download recent product
information. This is one of the important differences between
professional and amateur(unprofessional) software development.
Unit-1: Introduction
Software and its Types?
Software is a computer programs and associated documentation such as requirements,
design models and user manuals. Software products may be developed for a particular
customer or may be developed for a general market.
Software engineers are concerned with developing software products that can be sold
to a customer. There are two kinds of software product:
1. Generic products - developed to be sold to a range of different customers e.g. PC
software such as Excel or Word.
2. Customized (or bespoke) software - developed for a single customer according to
their specification. A software contractor designs and implements the software
especially for that customer. Examples are control systems for electronic devices,
systems written to support a particular business process, and air traffic control
systems.
New software can be created by developing new programs, configuring generic
software systems or reusing existing software.
Unit-1: Introduction
Software and its Types?
Computer programs and associated documentation.
Software products may be developed for a particular
customer or may be developed for a general market.
Unit-1: Introduction
Unit-1: Introduction
Attributes of good software?
Functionality
Maintainability,
Reliability
Efficiency
Portability
Usability
Unit-1: Introduction
Software Engineering and its Importance
Engineering is the field that deals with the application of science,
mathematics and other types of data to design and build up products and
services that benefit the human livelihood.
Engineering is broken down into many sub disciplines on the behalf of
specialization in particular domains using various technologies.
Software Engineering and Systems Engineering are two sub specialized
disciplines that are not purely interconnected disciplines but they are
intimately intertwined (linked).
Although these two disciplines are interconnected to each other but at some
phases they creates marginal difference.
Unit-1: Introduction
Software Engineering and its Importance
Unit-1: Introduction
Software Engineering and its Importance
Unit-1: Introduction
What is system engineering?
System engineering concerns on the overall management of engineering projects
throughout their life cycle.
System engineering highly concerns on the hardware part of the project. It deals
with logistics, team coordination, automatic machinery control, work processes
and similar tools.
Work of System Engineering?
Operational concept development: This phase prepare the document of overall
project development plan that describing the characteristics of a proposed system
from the viewpoint of an individuals who will use that system.
System integration: It defines the process of bringing collectively the component
subsystems into one system and ensuring that the subsystems function together as
a system.
Unit-1: Introduction
Work of System Engineering?
Software Testing: It is a method of assessing the functionality of a software
program. There are many different types of software capable to test proper
software. Broadly testing is divided into two categories dynamic testing and static
testing.
Quality Analysis: It engage the fully software development process that includes
monitoring and improving the process, and making sure that all the standard
procedures are followed and ensuring that the problems are found and dealt with
it.
Risk managements and control: Risk management and control is the method by
which software engineer identify the risk, reduce the impact of risk, reduce the
probability or likelihood of risk and risk monitoring as well.
Project opportunities analysis: It detailed review of the prospects for a software
product within a possible market.
Unit-1: Introduction
Software Engineering deals with designing and developing software of the highest
quality, while Systems Engineering is the sub discipline of engineering, which deals with
the overall management of engineering projects during their life cycle.
Unit-1: Introduction
Software Engineering and System Engineering?
Unit-1: Introduction
Difference between Software Engineering and Other Engineering?
1. Technology available
2. Scientific laws
3. Human resources
4. Product type (Intangible)
Unit-1: Introduction
4. Product is Intangible:
You can see representations of it (code, models, etc.), but can’t hold it. These
days it is mostly transmitted over the Internet.
Other engineered products need shipping or are built in place.
Other engineers have to be concerned about the properties of the materials that
will be used to construct their product, and there is a manufacturing process after
the design is done.
With software there are no ‘materials’, other than other intangible software, and
there is a deployment step rather than a manufacturing step.
We can change intangible software without having to throw away materials.
Software is often changed without fully understanding the consequences,
resulting in degradation of the design over time.
Physical engineered products, on the other hand, degrade physically due to wear
and chemical reactions.
Unit-1: Introduction
Unit-1: Introduction
Unit-1: Introduction
What are the best software engineering techniques and methods?
There are no methods and techniques that are good for everything.
Unit-1: Introduction
Challenges and Cost of Software Engineering
Software engineering is concerned with cost-effective software development.
Software costs often dominate computer system costs. The costs of software on a
PC are often greater than the hardware cost.
Software costs more to maintain than it does to develop. For systems with a long
life, maintenance costs may be several times development costs.
Roughly 60% of costs are development costs, 40% are testing costs. For custom
software, evolution costs often exceed development costs.
Costs vary depending on the type of system being developed and the requirements
of system attributes such as performance and system reliability.
Distribution of costs depends on the development model that is used.
Unit-1: Introduction
Software Engineering Diversity:
There are many different types of software system and there is no universal set of
software techniques that is applicable to all of these.
The software engineering methods and tools used depend on the type of application
being developed, the requirements of the customer and the background of the
development team.
Unit-1: Introduction
Unit-1: Introduction
Unit-1: Introduction
Unit-1: Introduction
Software Engineering Ethics
Unit-1: Introduction
What are professional practices?
The term 'professional practice' refers to the conduct and work of someone from a
particular profession. Professional bodies may set standards of ethics,
performance, competence, insurance, training and so on that must be met to
remain within the profession.
Software engineering has evolved into a respected, worldwide profession. As
professionals, software engineers should abide by a code of ethics that guides the
work that they do and the products that they produce. An ACM/IEEE-CS Joint
Task Force has produced a Software Engineering Code of Ethics and Professional
Practices (Version 5.1). The code [ACM98] states:
Software engineers shall commit themselves to making the analysis, specification,
design, development, testing and maintenance of software a beneficial and
respected profession. In accordance with their commitment to the health, safety
and welfare of the public, software engineers shall adhere to the following Eight
Principles:
Professional Practices
1. PUBLIC—Software engineers shall act consistently with the public interest.
2. CLIENT AND EMPLOYER—Software engineers shall act in a manner that is in the
best interests of their client and employer consistent with the public interest.
3. PRODUCT—Software engineers shall ensure that their products and related
modifications meet the highest professional standards possible.
4. JUDGMENT—Software engineers shall maintain integrity and independence in
their professional judgment.
5. MANAGEMENT—Software engineering managers and leaders shall subscribe to
and promote an ethical(moral) approach to the management of software
development and maintenance.
6. PROFESSION—Software engineers shall advance the integrity and reputation of
the profession consistent with the public interest.
7. COLLEAGUES—Software engineers shall be fair to and supportive of their
colleagues.
8. SELF—Software engineers shall participate in lifelong learning regarding the
practice of their profession and shall promote an ethical approach to the practice
of the profession.
Professional Practices
A software engineer should work in the public interest. On a personal level, a
software engineer should abide by the following rules:
Never steal data for personal gain.
Never distribute or sell proprietary information obtained as part of your work on a
software project.
Never maliciously destroy or modify another person’s programs, files, or data.
Never violate the privacy of an individual, a group, or an organization.
Never hack into a system for sport or profit.
Never create or promulgate a computer virus or worm.
Never use computing technology to facilitate discrimination or harassment.
In the context of software engineering, a process is not a rigid prescription for how to
build computer software. Rather, it is an adaptable approach that enables the people
doing the work (the software team) to pick and choose the appropriate set of work
actions and tasks. The intent is always to deliver software in a timely manner and
with sufficient quality to satisfy those who have sponsored its creation and those who
will use it.
Unit-1: Introduction
3. Case Studies
To illustrate software engineering concepts, case studies of four different types of
system are demonstrate as an example for clarity. Software engineering practice
depends on the type of systems being produced.
Therefore have given an appropriate example when discussing concepts such as safety
and dependability, system modeling, reuse, etc.
The system types that use as case studies are:
1. An embedded system: This is a system where the software controls some hardware
device and is embedded in that device. Issues in embedded systems typically include
physical size, responsiveness, and power management, etc. The example of an
embedded system that use is a software system to control an insulin pump for people
who have diabetes.
Unit-1: Introduction
3. Case Studies
The system types that use as case studies are:
2. An information system: The primary purpose of this type of system is to manage
and provide access to a database of information. Issues in information systems include
security, usability, privacy, and maintaining data integrity. The example of an
information system used is a medical records system.
3. A sensor-based data collection system: This is a system whose primary purposes are
to collect data from a set of sensors and to process that data in some way. The key
requirements of such systems are reliability, even in hostile environmental conditions,
and maintainability. The example of a data collection system that use is a wilderness
weather station.
4. A support environment: This is an integrated collection of software tools that are
used to support some kind of activity. Here describe an example of a digital learning
environment that is used to support students’ learning in schools.
Unit-1: Introduction – Q&A
Unit-1: Introduction
9. Software engineering fundamentals to all types of software systems (software engineering fundamentals that
apply to all types of software systems)
a. Process
b. Dependability
c. Requirements and management
d. Reuse
10. Issues of professional responsibility
a. Confidentiality
b. Competence
c. Intellectual property rights
d. Computer misuse
11. Professional Practices
a. PUBLIC
b. CLIENT AND EMPLOYER
c. PRODUCT
d. JUDGMENT
e. MANAGEMENT
f. PROFESSION
g. COLLEAGUES
h. SELF