Unit-1 Notes
Unit-1 Notes
SOFTWARE ENGINEERING
[214454]
SE IT – SEM IV
PREPARED BY
PROF. MRS. P. S. DOLARE
INTRODUCTION:
Software Engineering is a framework for building software and is an engineering approach to software
development. Software programs can be developed without S/E principles and methodologies but they are
indispensable if we want to achieve good quality software in a cost effective manner.
Software is defined as:
Engineering is the branch of science and technology concerned with the design, building, and use of
engines, machines, and structures. It is the application of science, tools and methods to find cost effective
solution to simple and complex problems.
SOFTWARE ENGINEERING is defined as a systematic, disciplined and quantifiable approach for the
development, operation and maintenance of software.
Characteristics of software
• Software is developed or engineered, but it is not manufactured in the classical sense.
• Software does not wear out, but it deteriorates due to change.
• Software is custom built rather than assembling existing components.
System software. System software is a collection of programs written to service other programs
Embedded software-- resides in read-only memory and is used to control products and systems forthe
consumer and industrial markets.
Artificial intelligence software. Artificial intelligence (AI) software makes use of nonnumeric
algorithms to solve complex problems that are not amenable to computation or straightforward analysis
Engineering and scientific software. Engineering and scientific software have been characterized by
"number crunching" algorithms.
1
Software Myths
Software myths are preconceived notions about software and its creation that people hold to be true but are
in fact untrue. Professionals in Software Engineering have now identified the software myths that have
persisted throughout the years.
These fallacies are common knowledge to managers and software developers. However, it might be
challenging to change old behaviours.
Types of Software Myths
There are three kinds of software myths that are busted down in the article.
• Management Myths
• Customer Myths
• 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 1
Manuals containing simple procedures, principles, and standards are enough for developers to acquire all
the information they need for software development.
Reality 1
Standards discussed in modules are often outdated, inadaptable, and incomplete. Not all the standards in the
manual are known to developers as not all means tend to decrease delivery time and maintain high quality.
Most of the time, developers are unaware of these standards.
Myth 2
Falling behind on schedule could be taken care of by adding more programmers.
Reality 2
Adding more human resources to already late projects worsens the problem. Developers working on the
project have to educate the newcomers, further delaying the project. Also, newcomers are far less
productive than developers already working on them. As a result, time spent on educating newcomers
could not meet the immediate reduction in work.
Myth 3
If a project is outsourced to a third party, we could just relax and wait for them to build it.
2
Reality 3
If an organisation is not able to manage and control software projects internally, then the organisation will
suffer invariably when they outsourced the project.
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 1
Not only detailed conditions a vague collection of software objectives is enough to begin programming
with.
Reality 1
If the objectives of software are vague enough to become ambiguous, then it's inevitable that software will
not do what the customer wants. Often when software development starts without a complete picture
in mind,
it results in software failure.
Myth 2
Softwares are flexible, and developers could accommodate any change later. Developers can quickly take
care of these changes in requirements.
Reality 2
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 1
Once the software is developed or the code is delivered to the customer, the developer's work ends.
Reality 1
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.
3
Myth 2
Software testing could only be possible when the software program starts running.
Reality 2
Quality of software could be measured at any phase of development by applying some QA mechanism.
Myth 3
Unnecessary Documentation slows down the process of software development.
Reality 3
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.
SOFTWARE APPLICATIONS
System Software –
System Software is necessary to manage the computer resources and support the execution of
application programs. Software like operating systems, compilers, editors and drivers, etc., come
under this category. A computer cannot function without the presence of these. Operating systems are
needed to link the machine-dependent needs of a program with the capabilities of the machine on
which it runs. Compilers translate programs from high-level language to machine language.
Application Software –
Application software is designed to fulfill the user’s requirement by interacting with the user directly.
It could be classified into two major categories:- generic or customized. Generic Software is the
software that is open to all and behaves the same for all of its users. Its function is limited and not
customized as per the changing requirements of the user. However, on the other hand, Customized
software the software products which are designed as per the client’s requirement, and are not available
for all.
Embedded Software –
This type of software is embedded into the hardware normally in the Read-Only Memory (ROM) as a
part of a large system and is used to support certain functionality under the control conditions.
Examples are software used in instrumentation and control applications like washing machines,
satellites, microwaves, etc.
4
Reservation Software –
A Reservation system is primarily used to store and retrieve information and perform transactions
related to air travel, car rental, hotels, or other activities. They also provide access to bus and railway
reservations, although these are not always integrated with the main system. These are also used to
relay computerized information for users in the hotel industry, making a reservation and ensuring that
the hotel is not overbooked.
Business Software –
This category of software is used to support business applications and is the most widely used
category of software. Examples are software for inventory management, accounts, banking, hospitals,
schools, stock markets, etc.
Entertainment Software –
Education and entertainment software provides a powerful tool for educational agencies, especially
those that deal with educating young children. There is a wide range of entertainment software such as
computer games, educational games, translation software, mapping software, etc.
Scientific Software –
Scientific and engineering 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 specific to that field. Examples are software like MATLAB, AUTOCAD,
PSPICE, ORCAD, etc.
Utilities Software –
The programs coming under this category perform specific tasks and are different from other software
in terms of size, cost, and complexity. Examples are anti-virus software, voice recognition software,
compression programs, etc.
5
A GENERIC VIEW OF PROCESS SOFTWARE ENGINEERING-A LAYERED TECHNOLOGY
6
A PROCESS FRAMEWORK
A PROCESS FRAMEWORK :
Common process framework Umbrella activities Framework activities Tasks, Milestones, deliverables
SQApoints.
7
A PROCESS FRAMEWORK
Used as a basis for the description of process models Generic process activities
• Communication
• Planning
• Modeling
• Construction
• Deployment
A PROCESS FRAMEWORK
Generic view of engineering complimented by a number of umbrella activities
Software project tracking and control
Formal technical reviews
Software quality assurance
Software configuration management
Document preparation and production
Reusability management
Measurement
Risk management
8
CMMI process meta model can be represented in different ways
1.A continuous model
2.A staged model
Continuous model:
-Lets organization select specific improvement that best meet its business objectives and minimize risk-
Levels are called capability levels.
-Describes a process in 2 dimensions
-Each process area is assessed against specific goals and practices and is rated according to the following
capability levels.
• Incomplete -Process is adhoc . Objective and goal of process areas are not known
• Performed -Goal, objective, work tasks, work products and other activities of software process
arecarried out
• Managed -Activities are monitored, reviewed, evaluated and controlled
• Defined -Activities are standardized, integrated and documented
• Quantitatively Managed -Metrics and indicators are available to measure the process and quality
• Optimized - Continuous process improvement based on quantitative feed back from the user
-Use of innovative ideas and techniques, statistical quality control for process improvement.
9
CMMI - Staged model
- This model is used if you have no clue of how to improve the process for quality software.
- It gives a suggestion of what things other organizations have found helpful to work first
- Levels are called maturity levels
PROCESS PATTERNS
Software Process is defined as collection of Patterns. Process pattern provides a template. It comprises of
• Process Template
-Pattern Name
-Intent
-Types
-Task pattern
- Stage pattern
-Phase Pattern
• Initial Context
• Problem
• Solution
• Resulting Context
• Related Patterns
PROCESS ASSESSMENT
Does not specify the quality of the software or whether the software will be delivered on time or will it stand
up to the user requirements. It attempts to keep a check on the current state of the software process with the
intention of improving it.
PROCESS ASSESSMENT Software Process Software Process Assessment Software Process Improvement
Motivates Capability determination.
ISO 9001:2000 for software Personal and Team Software Process Personal software
processPLANNING
HIGH LEVEL DESIGN
HIGH LEVEL DESIGN REVIEW
DEVELOPMENT
POSTMORTEM
10
• Incremental: PSP is incremental, meaning that it breaks down the development process into
smaller, more manageable pieces that can be completed in a step-by-step fashion.
PROCESS MODELS
This Model suggests a systematic, sequential approach to SW development that begins at the
system leveland progresses through analysis, design, code and testing
.
11
Communication
Planning
Modeling
Construction
Deployment
12
INCREMENT N
Communication
Planning
Modeling
Construction
Deployment
EVOLUTIONARY PROCESSMODEL
– human/machine interaction
13
THE SPIRAL MODEL
An evolutionary model which combines the best feature of the classical life cycle and
the iterative nature of prototype model. Include new element : Risk element. Starts in middle
and continually visits the basic tasks of communication, planning, modeling, construction and
deployment
14
Agile Methodology
What is the Agile methodology? The Agile methodology is a project
management approach that involves breaking the project into phases and
emphasizes continuous collaboration and improvement. Teams follow a cycle of
planning, executing, and evaluating
gile software development methodologies develop software in a small period and
allow incorporating changes in the software while developing it. Our software
development company uses agile methods as per the user requirements to deliver
the best software.
It contains six phases: concept, inception, iteration, release, maintenance, and
retirement. The Agile life cycle will vary slightly depending on the project
management methodology chosen by a team.
gile development is important because it helps to ensure that development teams
complete projects on time and within budget. It also helps to improve
communication between the development team and the product owner.
Additionally, Agile development methodology can help reduce the risks
associated with complex projects.
xamples of Agile Methodology. The most popular and common examples are
Scrum, eXtreme Programming (XP), Feature Driven Development (FDD),
Dynamic Systems Development Method (DSDM), Adaptive Software
Development (ASD), Crystal, and Lean Software Development (LSD).
15
It is usually used in the management of the development of software products
but can be used successfully in a business-related context.
Every day starts with a small 15-minute meeting, the daily Scrum, which takes
the role of synchronising activities and finding the best way to plan out the
working day, allowing for a check on sprint “health” and product progress.
Advantages:
Team motivation is good because programmers want to meet the deadline for
every sprint;
Transparency allows the project to be followed by all the members in a team or even
throughout the organisation;
A simple “definition of done” is used for validating requirements
Focus on quality is a constant with the scrum method, resulting in fewer mistakes;
The dynamics of this method allow developers to reorganise priorities,
ensuring that sprints that have not yet been completed get more attention;
Good sprint planning is prioritised, so that the whole scrum team understands
the “why, what and how” of allocated tasks.
Disadvantages:
The segmentation of the project and the search for the agility of development
can sometimes lead the team to lose track of the project as a whole, focusing on
a single part;
Every developer role may not be well defined, resulting in some confusion
amongst team members.
Advantages:
The simplicity of the written code is an advantage since it allows for improvement at
any given time;
The whole process and the XP development cycle is visible, creating goals for
developers along with relatively rapid results;
Software development is more agile than when using other methodologies, due
to constant testing;
Promotes a highly energising way of working;
XP also contributes to uplifting and maintaining team talent.
Disadvantages:
The extreme focus on code can lead to less importance being paid to design,
meaning that it has to get extra attention later;
This framework may not work at its best if all the team members are not
situated in the same geographical area;
In XP projects, a registry of possible errors is not always maintained, and this lack of
monitoring can lead to similar bugs in the future.
17