0% found this document useful (0 votes)
7 views

Unit-1 Notes

The document provides an overview of Software Engineering, defining it as a systematic approach to software development that emphasizes quality and cost-effectiveness. It discusses various software categories, common myths surrounding software development, and the importance of structured processes and methodologies, including the Capability Maturity Model Integration (CMMI). Additionally, it outlines different software applications and process models, highlighting the significance of personal and team software processes in improving performance and productivity.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views

Unit-1 Notes

The document provides an overview of Software Engineering, defining it as a systematic approach to software development that emphasizes quality and cost-effectiveness. It discusses various software categories, common myths surrounding software development, and the importance of structured processes and methodologies, including the Capability Maturity Model Integration (CMMI). Additionally, it outlines different software applications and process models, highlighting the significance of personal and team software processes in improving performance and productivity.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 18

NOTES ON

SOFTWARE ENGINEERING
[214454]

SE IT – SEM IV

PREPARED BY
PROF. MRS. P. S. DOLARE

DEPARTMENT OF INFORMATION TECHNOLOGY

DVVP, COLLEGE OF ENGINEERING &TECHNOLOGY


UNIT - I

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:

Instructions + Data Structures + Documents

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.

The Evolving role of software:

The dual role of Software is as follows:


1. A Product- Information transformer producing, managing and displaying information.
2. A Vehicle for delivering a product- Control of computer(operating system),the communication of
information(networks) and the creation of other programs.

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.

THE CHANGING NATURE OF SOFTWARE


The various categories of software are
1. System software
2. Application software
3. Engineering and scientific software
4. Embedded software
5. Product-line software
6. Web-applications
7. Artificial intelligence software

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.

Networking and Web Applications Software –


Networking Software provides the required support necessary for computers to interact with each other
and with data storage facilities. The networking software is also used when software is running on a
network of computers (such as the World Wide Web). It includes all network management software,
server software, security and encryption software, and software to develop web-based applications like
HTML, PHP, XML, etc.

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.

Artificial Intelligence Software –


Software like expert systems, decision support systems, pattern recognition software, artificial neural
networks, etc. come under this category. They involve complex problems which are not affected by
complex computations using non-numerical algorithms.

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.

Document Management Software –


Document Management Software is used to track, manage and store documents in order to reduce the
paperwork. Such systems are capable of keeping a record of the various versions created and modified
by different users (history tracking). They commonly provide storage, versioning, metadata, security,
as well as indexing and retrieval capabilities.

5
A GENERIC VIEW OF PROCESS SOFTWARE ENGINEERING-A LAYERED TECHNOLOGY

Fig: Software Engineering-A layered technology

SOFTWARE ENGINEERING - A LAYERED TECHNOLOGY

• Quality focus - Bedrock that supports Software Engineering.


• Process - Foundation for software Engineering
• Methods - Provide technical How-to’s for building software
• Tools - Provide semi-automatic and automatic support to methods

6
A PROCESS FRAMEWORK

• Establishes the foundation for a complete software process


• Identifies a number of framework activities applicable to all software projects
• Also include a set of umbrella activities that are applicable across the entire software process.

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

CAPABILITY MATURITY MODEL INTEGRATION(CMMI)

• Developed by SEI(Software Engineering institute)


• Assess the process model followed by an organization and rate the organization with different levels
• A set of software engineering capabilities should be present as organizations reach different levels of
process capability and maturity.

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.

Six levels of CMMI


• Level 0:Incomplete
• Level 1:Performed
• Level 2:Managed
• Level 3:Defined
• Level 4:Quantitatively managed
• Level 5:Optimized

• 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.

APPROACHES TO SOFTWARE ASSESSMENT


• Standard CMMI assessment (SCAMPI)
• CMM based appraisal for internal process improvement
• SPICE(ISO/IEC 15504)

ISO 9001:2000 for software Personal and Team Software Process Personal software
processPLANNING
HIGH LEVEL DESIGN
HIGH LEVEL DESIGN REVIEW
DEVELOPMENT
POSTMORTEM

PERSONAL AND TEAM SOFTWARE PROCESS

PERSONAL SOFTWARE PROCESS:


The personal software process is focused on individuals to improve their performance. The PSP is an
individual process, and it is a bottom-up approach to software process improvement. The PSP is a
prescriptive process, it is a more mature methodology with a well-defined set of tools and techniques.
Key Features of PSP :
• Process-focused: PSP is a process-focused methodology that emphasizes the importance of
following a disciplined approach to software development.
• Personalized: PSP is personalized to an individual’s skill level, experience, and work habits. It
recognizes that individuals have different strengths and weaknesses, and tailors the process to
meet their specific needs.
• Metrics-driven: PSP is metrics-driven, meaning that it emphasizes the collection and analysis
of data to measure progress and identify areas for improvement.

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.

TEAM SOFTWARE PROCESS


TSP is a team-based process. It is focused on team productivity. Basically, it is a top-down approach. The
TSP is an adaptive process, and process management methodology.
Key Features of TSP :
• Team-focused: TSP is team-focused, meaning that it emphasizes the importance of collaboration
and communication among team members throughout the software development process.
• Process-driven: TSP is process-driven, meaning that it provides a structured approach to
software development that emphasizes the importance of following a disciplined process.
• Metrics-driven: TSP is metrics-driven, meaning that it emphasizes the collection and analysis of
data to measure progress, identify areas for improvement, and make data-driven decisions.
• Incremental: TSP 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.
• Quality-focused: TSP is quality-focused, meaning that it emphasizes the importance of
producing high-quality software that meets user requirements and is free of defects.
• Feedback-oriented: TSP is feedback-oriented, meaning that it emphasizes the importance of
receiving feedback from peers, mentors, and other stakeholders to identify areas for improvement

PROCESS MODELS

• Help in the software development


• Guide the software team through a set of framework activities
• Process Models may be linear, incremental or evolutionary

THE WATERFALL MODEL

• Used when requirements are well understood in the beginning


• Also called classic life cycle
• A systematic, sequential approach to Software development

Begins with customer specification of Requirements and progresses through planning,


modeling,construction and deployment.

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

PROBLEMS IN WATER FALLMODEL


• Real projects rarely follow the sequential flow since they are always iterative
• The model requires requirements to be explicitly spelled out in the beginning, which is often difficult
• A working model is not available until late in the project time plan

THE INCREMENTAL PROCESS MODEL


• Linear sequential model is not suited for projects which are iterative in nature
• Incremental model suits such projects
• Used when initial requirements are reasonably well-defined and compelling need to provide
limitedfunctionality.
• Functionality expanded further in later releases
Communication
Planning
Modeling
Construction
Deployment

12
INCREMENT N

Communication
Planning
Modeling
Construction

Deployment

• Software releases in increments


• 1st increment constitutes Core product
• Basic requirements are addressed
• Core product undergoes detailed evaluation by the customer
• As a result, plan is developed for the next increment. Plan addresses the modification of
core productto better meet the needs of customer
• Process is repeated until the complete product is produced

EVOLUTIONARY PROCESSMODEL

• Software evolves over a period of time


• Business and product requirements often change as development proceeds making a straight-line
path to an end product unrealistic
• Evolutionary models are iterative and as such are applicable to modern day applications

Types of evolutionary models


– Prototyping
– Spiral model
– Concurrent development model

– 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

THE SPIRAL MODEL

• Realistic approach to the development of large scale system and software


• Software evolves as process progresses
• Better understanding between developer and customer
• The first circuit might result in the development of a product specification
• Subsequent circuits develop a prototype
• sophisticated version of software
Does not focus on flexibility and extensibility (more emphasis on high quality)
• Requirement is balance between high quality and flexibility and extensibility

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).

Main Agile methodologies:


1. Scrum
Scrum is, undoubtedly, the most used of the many frameworks underpinning
Agile methodology. Scrum is characterised by cycles or stages of development,
known as sprints, and by the maximisation of development time for a software
product towards a goal, the Product Goal. This Product Goal is a larger value
objective, in which sprints bring the scrum team product a step closer.

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.

2. Extreme Programming (XP)


This is a typical Agile development framework, developed by Kent Beck, and
can be adapted to development companies of various dimensions.

Extreme Programming (“XP”) methodology is based around the idea of


discovering “the simplest thing that will work” without putting too much weight
on the long-term product view.

It is a methodology that emphasises values such as Communication, Simplicity,


Feedback, Courage and Respect, and prioritises customer satisfaction over
everything else. This methodology encourages trust by motivating developers to
accept changes in customer requirements, even if they arrive during the latter
stages of the development cycle.

Teamwork is extremely important in XP, since, when there is a problem, it is


solved by the whole team of managers, developers or customers, bringing them
together to promote conversation and engagement and break down barriers to
communication. They all become essential pieces of the same puzzle, creating a
16
fertile environment for high productivity and efficiency within teams. In Extreme
Programming, the software is tested from day one, collecting feedback to
improve development. XP promotes activities such as pair programming, and
with a strong testing component, it’s an excellent engineering methodology.

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

You might also like