SE_UNIT - I NOTES
SE_UNIT - I NOTES
SE_UNIT - I NOTES
UNIT - I
Introduction to Software Engineering: The evolving role of software, changing nature of software,
software myths.
A Generic view of process: Software engineering- a layered technology, a process framework, the
capability maturity model integration (CMMI).
Process models: The waterfall model, Spiral model and Agile methodology
INTRODUCTION TO SOFTWARE ENGINEERING
WHAT IS SOFTWARE?
Software is a program or set of programs containing instructions that provide desired
functionality.
(OR)
Software is a collection of executable program codes and their associated libraries and
documentation
Engineering is the process of designing and building something that serves a particular purpose
and finds a cost-effective solution to problems.
There are two main categories of software:
1. System Software
2. Application Software
1. System Software
This type of software provides a platform for running application software and managing computer
hardware.
Example
Operating systems like Windows, macOS, Linux, and Unix
Device drivers
Firmware
Utility programs such as disk management tools, antivirus software, and system optimization
utilities.
2. Application Software
Application software is designed to perform specific tasks or functions for end-users. Application
software can be general-purpose or specialized for particular industries or use cases.
Example
Word processors
Spreadsheets
Web browsers
Email clients
Media players
Graphic design tools
Games
Business applications.
Application software can be general-purpose or specialized for particular industries or use
cases.
WHAT IS SOFTWARE ENGINEERING?
Software Engineering is the process of designing, developing, testing, and maintaining software.
Software engineering is a set of predefined procedure which a developer or any organization
should follow while developing any project.
It is a systematic and disciplined approach to software development that aims to create high-
quality, reliable, and maintainable software.
Software engineering includes a variety of techniques, tools, and methodologies, including
requirements analysis, design, testing, and maintenance.
It is a rapidly evolving field, and new tools and technologies are constantly being developed to
improve the software development process.
SOFTWARE CHARACTERISTICS
The following are the top 7 characteristics of software:
1. Software does not wear out
2. Software is not manufacture
3. Reusability of components
4. Flexibility of software
5. Maintainability of software
6. Portability of software
7. Reliability of Software
1. Software does not wear out
Different things like clothes, shoes, ornaments do wear out after some time. But, software once created
never wears out. It can be used for as long as needed and in case of need for any updating, required
changes can be made in the same software and then it can be used further with updated features.
2. Software is not manufactured
Software is not manufactured but is developed. So, it does not require any raw material for its
development.
3. Reusability of components
If any particular segment of code is required in some other software, we can reuse the existing code
form the software in which it is already present. This reduced our work and also saves time and money.
4. Flexibility of software
A software is flexible. What this means is that we can make necessary changes in our software in the
future according to the need of that time and then can use the same software then also.
5. Maintainability of software
Every software is maintainable. This means that if any errors or bugs appear in the software, then they
can be fixed.
6. Portability of software
Portability of the software means that we can transfer our software from one platform to another that
too with easy. Due to this, the sharing of the software among the developers and other members can be
done flexibly.
7. Reliability of Software
This is the ability of the software to provide the desired functionalities under every condition. This
means that our software should work properly in each condition.
THE EVOLVING ROLE OF SOFTWARE
Software Evolution is a term that refers to the process of developing software initially, and then
timely updating it for various reasons, i.e., to add new features or to remove obsolete functionalities,
etc.
Dual Role of Software
There is a dual role of software in the industry. The first one is as a product and the other one is as a
vehicle for delivering the product.
1. As a Product
It transforms information
It produces, manages, acquires, modifies, displays, or transmits information
It delivers computing potential of hardware and networks
Example: Website, Web App, Android App
2. As a Vehicle for Delivering a Product
It provides system functionality (e.g., payroll system).
It controls other software (e.g., an operating system).
It helps build other software (e.g., software tools).
It effects communications (e.g., networking software).
CHANGING NATURE OF SOFTWARE
There are seven broad categories of computer software present continuing challenges for software
engineers.
1. System Software
System software refers to the collection of programs and software components that enable a
computer or computing device to function properly.
System software is software that provides a platform for other software.
Example
1. Operating Systems
2. Antivirus Software
3. Disk Formatting Software
4. Computer Language Translators, Etc .
2. Application Software
The term “application software” refers to software that performs specific functions for a user.
When a user interacts directly with a piece of software, it is called application software.
Example
1. Microsoft Word
2. Excel
3. Firefox
4. Google Chrome
5. C, JAVA
3.Engineering and Scientific Software
Engineering and Scientific Software satisfies the needs of a scientific or engineering user to
perform enterprise-specific tasks.
Such software is written for specific applications using principles, techniques, and formulae
particular to that field.
Example
1. MATLAB
2. AUTOCAD
3. ORCAD, etc.
4.Embedded Software
Embedded software is software that is not directly visible or invokable by a human user but is
part of a system.
Embedded software is used to control the functions of hardware devices. For example, a train
control system reads various signals produced by sensors along tracks to control the speed of the
train.
Example
1. Television Sets
2. Airplanes
3. Video Games.
5.Product-line Software
Designed to provide a specific capability for use by many different customers, product-
line software can focus on a limited and esoteric market place or address mass consumer markets.
Example
1. Word processing
2. Spreadsheets
3. Computer graphics
4. Multimedia
5. Entertainment
6. Database management
7. Personal and business financial applications
6.Web Application
A web application is software that runs in your web browser.
Businesses have to exchange information and deliver services remotely.
They use web applications to connect with customers conveniently and securely.
Example
1. Shopping carts
2. Product search and filtering
3. Instant messaging
4. Social media newsfeeds
7.Artificial Intelligence Software
Artificial intelligence software makes use of a nonnumerical algorithm to solve a complex
problem.
Applications within this area include robotics, expert systems, pattern recognition, artificial
neural networks, theorem proving, and game playing.
SOFTWARE MYTHS
A software myth refers to a common misconception or widely held belief about software development,
processes, or technology that may not align with reality or best practices.
Types of Software Myths
There are three kinds of software myths that are busted down in the article.
1. Management Myths
2. Customer Myths
3. Practitioner’s Myths
Management myths
Managers are often under pressure for software development under a tight budget, improved quality,
and a packed schedule, often believing in some software myths. Following are some management
myths.
Myth: We have all the standards and procedures available for software development.
Reality: Software experts do not know all the requirements for the software development. And all
existing processes are incomplete as new software development is based on new and
different problem.
Myth: If we get behind schedule, we can add more programmers and catch up.
Reality: Software development is not a mechanistic process like manufacturing. In the words of
Brooks [Bro95]: “adding people to a late software project makes it later.” However, as new
people are added, people who were working must spend time educating the newcomers,
thereby reducing the amount of time spent on productive development effort. People can
be added but only in a planned and well coordinated manner.
Myth: If I decide to outsource the software project to a third party, I can just relax and let
that firm build it.
Reality: If an organization does not understand how to manage and control software projects
internally, it will invariably struggle when it outsources software projects.
Customer myths
Customer Myths are generally due to false expectations by customers, and these myths end up leaving
customers with dissatisfaction with the software developers. Following are some customer myths.
Myth: A general statement of objectives is sufficient to begin writing programs—we can
fill in the details later.
Reality: Although a comprehensive and stable statement of requirements is not always possible,
an ambiguous “statement of objectives” is a recipe for disaster. Unambiguous
requirements (usually derived iteratively) are developed only through effective and
continuous communication between customer and developer.
Myth: Softwares are flexible, and developers could accommodate any change later.
Developers can quickly take care of these changes in requirements.
Reality: Longer the time for which software has proceeded for development, it becomes more and
more difficult to accommodate any changes. Any change causes an increase in additional
costs because incorporating changes at later stages needs redesigning and extra
resources.
Practitioner’s myths
Developers often work under management pressure to complete software within a timeframe, with
fewer resources often believing in these software myths. Following are some practitioners’ myths.
Myth: Once the software is developed or the code is delivered to the customer, the
developer's work ends.
Reality: A significant chunk of developers' work, i.e., 50-60 % of all the efforts expended on
software, will be spent after the customer provides the software. Major requirements
would get found missing, and new bugs may get discovered, and so on.
Myth: Software testing could only be possible when the software program starts running.
Reality: Quality of software could be measured at any phase of development by applying some QA
mechanism.
Myth: Unnecessary Documentation slows down the process of software development.
Reality: Software engineering is about creating a quality product at every level and not about
adding unnecessary work. Proper documentation of software helps us guide the user and
enhance the quality, which reduces the amount of rework.
A GENERIC VIEW OF PROCESS
Process: A set of activities, methods, practices, and transformations that people use to develop and
maintain software and the associated products (e.g., project plans, design documents, code, test cases,
and user manuals)
SOFTWARE ENGINEERING - A LAYERED TECHNOLOGY
Software engineering is a fully layered technology, to develop software we need to go from one layer to
another. All the layers are connected and each layer demands the fulfillment of the previous layer.