University of Mustansiriyah/ College of Engineering Computer Engineering Department
Third Class/ Software Engineering/ Chapter -1Prepared by: Assist. Prof. Rana Riad K.
Software Engineering Tutorial
This tutorial provides you with a basic understanding of software products, software
design, and development processes, software project management, and design
complexities. At the end of the tutorial, you should be equipped with well
understanding of software engineering concepts.
Text Books:
1. Mall Rajib, Fundamentals of Software Engineering, PHI.
2. Pressman, Software Engineering Practitioner’s Approach, TMH.
3. Software-Engineering-9th-Edition-by-Ian-Sommerville
University of Mustansiriyah/ College of Engineering Computer Engineering Department
Third Class/ Software Engineering/ Chapter -1Prepared by: Assist. Prof. Rana Riad K.
Introduction to Software Engineering
TABLE OF CONTENTS
Table of contents ................................................................................................... 2
Objectives ........................................................................................................... 2
Introduction ........................................................................................................ 3
Definitions of Software Engineering .................................................................... 3
What are the best software engineering techniques and methods? ................... 4
The fundamental software engineering activities ............................................... 5
Need for Software Engineering ........................................................................... 5
characteristics of a good software ...................................................................... 6
OBJECTIVES
Lecture 1 is a general introduction that introduces professional software engineering
and defines some software engineering concepts.
.
University of Mustansiriyah/ College of Engineering Computer Engineering Department
Third Class/ Software Engineering/ Chapter -1Prepared by: Assist. Prof. Rana Riad K.
INTRODUCTION
Software is essential to the functioning of the modern world, for instance:
-
National infrastructures and utilities are controlled by computer-based
systems.
Most electrical products include a computer and controlling software.
Industrial manufacturing and distribution are completely computerized, as is
the financial system.
Entertainment, including the music industry, computer games, and film and
television, is software intensive.
In general, without software programming, space exploration, the Internet, and
contemporary communications would not have been possible. All modes of
transportation would be more dangerous and costly.
For this reason, it is crucial that the applications we use and depend upon be in
accordance with our requirements. This level of quality is not acquired by chance;
rather, rather we need to engineer that quality into the software that we use.
Therefore, software engineering is essential for the functioning of national and
international societies.
DEFINITIONS OF SOFTWARE ENGINEERING
First, it is important to define what "Software Engineering" really means. The phrase
originates from the combination of software and engineering.
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 documentation. Software,
when made for a specific requirement is called a software product.
Engineering, on the other hand, is all about developing products, using well-defined,
scientific principles and methods.
Software engineering is the discipline of engineering concerned with creating
software products according to proper scientific guidelines. An effective and
trustworthy software product is the result of software engineering.
University of Mustansiriyah/ College of Engineering Computer Engineering Department
Third Class/ Software Engineering/ Chapter -1Prepared by: Assist. Prof. Rana Riad K.
Figure -1- General scientific guidelines of software engineering
WHAT ARE THE BEST SOFTWARE ENGINEERING TECHNIQUES AND
METHODS?
There are many different types of software systems, for example:
• System software: System software is software written to service and support
other programs. Compilers, editors, debuggers, operating systems, and
hardware drivers are examples of such software.
• Application software: Application software are programs designed to solve a
specific business need. Most software operating with business and technical
data are application software, as are most real-time systems.
• Embedded software: This is software that resides directly within some
hardware component in order to provide control over the component or other
vital features required for it to function.
• Web applications: A web application is an application accessed via a web
browser over a network.
• Artificial intelligence software: has been defined as "the science and
engineering of making intelligent machines. Application domains that make
use of AI software include robotics, expert systems, pattern recognition,
It is pointless to look for universal notations, methods, or techniques for software
engineering because different types of software require different approaches.
University of Mustansiriyah/ College of Engineering Computer Engineering Department
Third Class/ Software Engineering/ Chapter -1Prepared by: Assist. Prof. Rana Riad K.
THE FUNDAMENTAL SOFTWARE ENGINEERING ACTIVITIES
A domain where all of the engineering practices associated with making software
are used. The process includes a wide range of investigation and requirement
collecting that ultimately aid in the development of the software. A few of its
constituent parts are:
-
Software specification.
-
Software development.
-
Software validation.
-
Software evolution.
NEED FOR SOFTWARE ENGINEERING
The need for software engineering arises because of a higher rate of change in user
requirements and the environment in which the software is working. Following are
some of the needs stated:
Large software - As the size of the program increases, engineering must step in
to give it a scientific procedure (just as it is simpler to construct a wall than a home
or structure).
Scalability- If the software process were not based on scientific and engineering
concepts, it would be easier to re-create new software than to scale an existing one.
Cost- Because of the expertise and scale of the hardware sector, the cost of
computers and electrical devices has dropped significantly in recent years. However,
if the right procedures are not implemented, the price of the program will stay
expensive.
Dynamic Nature- Always growing and adapting nature of the software hugely
depends upon the environment in which the user works. If the nature of software is
always changing, new enhancements need to be done to the existing one. This is
where software engineering plays a good role.
Quality Management- A better process of software development provides better
and quality software products.
University of Mustansiriyah/ College of Engineering Computer Engineering Department
Third Class/ Software Engineering/ Chapter -1Prepared by: Assist. Prof. Rana Riad K.
CHARACTERISTICS OF A GOOD SOFTWARE
Of course, the precise set of characteristics you could anticipate from a software
system will vary depending on its intended use. These can be generalized into the
set of attributes shown in table 1.1.
Maintainability
Dependability
security
Efficiency
Acceptability
Table (1-1) General attributes of a good software
Software should be written in such a way that it can evolve
to meet the changing needs of customers. This is a critical
attribute because software change is an inevitable
requirement of a changing business environment
and Software dependability includes a range of characteristics
including reliability, security, and safety. Dependable
software should not cause physical or economic damage in
the event of system failure. Malicious users should not be
able to access or damage the system
Software should not make wasteful use of system resources
such as memory and processor cycles. Efficiency therefore
includes
responsiveness,
processing
time,
memory
utilization, etc.
Software must be acceptable to the type of users for which it
is designed. This means that it must be understandable,
usable, and compatible with other systems that they use.