0% found this document useful (0 votes)
23 views18 pages

SE Chap 1

Software engineering is a systematic process of developing software products that meet user needs, focusing on cost, schedule, and quality. It encompasses various types of software, including system, application, networking, and embedded software, and follows methodologies like Waterfall, Incremental, and Agile for development. Agile development emphasizes flexibility, collaboration, and rapid delivery, enhancing customer satisfaction and adaptability to changing requirements.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
23 views18 pages

SE Chap 1

Software engineering is a systematic process of developing software products that meet user needs, focusing on cost, schedule, and quality. It encompasses various types of software, including system, application, networking, and embedded software, and follows methodologies like Waterfall, Incremental, and Agile for development. Agile development emphasizes flexibility, collaboration, and rapid delivery, enhancing customer satisfaction and adaptability to changing requirements.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 18

Software Engineering is the process of developing a software product in

a
well-defined systematic approach.
Software engineering is the process of analyzing user needs and then
designing, constructing, and testing end-user applications that will satisfy
these needs through the use of software programming languages.

Parameters Defining Software Project


The software should be produced at a reasonable cost, in a reasonable
time,
and should be of good quality. These three parameters often drive and
define
a software project.
1. Cost: As the main cost of producing software is the manpower
employed, the cost of developing software is generally measured in
terms of person-months of effort spent in development. The
productivity in the software industry for writing fresh code mostly
ranges from a few hundred to about 1000 + LOC per person per
month.
2. Schedule: The schedule is another important factor in many
projects. Business trends are dictating that the time to market a
product should be reduced; that is, the cycle time from concept to
delivery should be small. This means that software needs to be
developed faster and within the specified time.
3. Quality: Quality is one of the main mantras, and business
strategies are designed around it. Developing high-quality software
is another fundamental goal of software engineering.

Attributes of Software
The international standard on software product quality suggests that
software quality comprises six main attributes:
1. Reliability: The capability to provide failure-free service.
2. Functionality: The capability to provide functions that meet stated
and implied needs when the software is used.
3. Usability: The capability to be understood, learned, and used.
4. Efficiency: The capability to provide appropriate performance
relative to the amount of resources used.
5. Maintainability: the capability to be modified for purposes of
making corrections, improvements, or adaptations.
6. Portability: The capability to be adapted for different specified
environments without applying actions or means other than those
provided for this purpose in the product.
Types of Software
The software is used extensively in several domains including hospitals,
banks, schools, defense, finance, stock markets, and so on. It can be
categorized into different types:
1. Based on Application
The software can be classified on the basis of the application. These are
to
be done on this basis.
1. System Software:
System Software is necessary to manage 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.
2. 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 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 user’s changing requirements. However, on the
other
hand, customized software is the software products designed per the
client’s
requirement, and are not available for all.
3. Networking and Web Applications Software:
Networking Software provides the required support necessary for
computers
to interact with each other and with data storage facilities.
Networkingsoftware 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.
4. 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.
5. 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.
6. 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.
7. 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.
8. 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.9. 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
particular to that field. Examples are software like MATLAB,
AUTOCAD,
PSPICE, ORCAD, etc.
10. Utility 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 antivirus software, voice recognition software, compression programs,
etc.
11. Document Management Software:
Document Management Software is used to track, manage, and store
documents 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.
2. Based on Copyright
Classification of Software can be done based on copyright. These are
stated
as follows:
1. Commercial Software:
It represents the majority of software that we purchase from software
companies, commercial computer stores, etc. In this case, when a user
buys
software, they acquire a license key to use it. Users are not allowed to
make
copies of the software. The company owns the copyright of the program.
2. Shareware Software:
Shareware software is also covered under copyright, but the purchasers
are
allowed to make and distribute copies with the condition that after testing
the software, if the purchaser adopts it for use, then they must pay for it.
In
both of the above types of software, changes to the software are not
allowed.
3. Freeware Software:
In general, according to freeware software licenses, copies of the software
can be made both for archival and distribution purposes, but here,
distribution
cannot be for making a profit. Derivative works and modifications to the
software are allowed and encouraged. Decompiling of the program code
is
also allowed without the explicit permission of the copyright holder.
4. Public Domain Software:
In the case of public domain software, the original copyright holder
explicitly
relinquishes all rights to the software. Hence, software copies can be
made
both for archival and distribution purposes with no restrictions on
distribution. Modifications to the software and reverse engineering are
also
allowed.

Layered Technology in Software Engineering


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.

Layered technology is divided into four parts:


1. A quality focus: It defines the continuous process improvement
principles
of software. It provides integrity that means providing security to the
software so that data can be accessed by only an authorized person, no
outsider can access the data. It also focuses on maintainability and
usability.
2. Process: It is the foundation or base layer of software engineering. It is
key
that binds all the layers together which enables the development of
software
before the deadline or on time.
Process defines a framework that must be established for the effective
delivery of software engineering technology. The software process covers
all
the activities, actions, and tasks required to be carried out for software
development.

Process activities are listed below:-



Communication: It is the first and foremost thing for the
development of software. Communication is necessary to know the
actual demand of the client.

Planning: It basically means drawing a map for reduced the
complication of development.

Modeling: In this process, a model is created according to the
client for better understanding.

Construction: It includes the coding and testing of the problem.

Deployment:- It includes the delivery of software to the client for
evaluation and feedback.
3. Method: During the process of software development the answers to
all
“how-to-do” questions are given by method. It has the information of all
the
tasks which includes communication, requirement analysis, design
modeling,
program construction, testing, and support.
4. Tools: Software engineering tools provide a self-operating system for
processes and methods. Tools are integrated which means information
created by one tool can be used by another.
1. The Waterfall Model
• The waterfall model is also called as 'Linear sequential
model' or 'Classic life cycle model'.
• In this model, each phase is fully completed before the beginning of
the next phase.
• This model is used for the small projects.
• In this model, feedback is taken after each phase to ensure that the
project is on the right path.
• Testing part starts only after the development is complete.
NOTE: The description of the phases of the waterfall model is same as
that
of the process model.
An alternative design for 'linear sequential model' is as follows

Advantages of waterfall model


• The waterfall model is simple and easy to understand, implement, a
• nd use.• All the requirements are known at the beginning of the project,
hence
it is easy to manage.
• It avoids overlapping of phases because each phase is completed at
once.
• This model works for small projects because the requirements are
understood very well.
• This model is preferred for those projects where the quality is more
important as compared to the cost of the project.
Disadvantages of the waterfall model
• This model is not good for complex and object oriented projects.
• It is a poor model for long projects.
• The problems with this model are uncovered, until the software
testing.
• The amount of risk is high.
2. Incremental Process model
• The incremental model combines the elements of waterfall model and
they are applied in an iterative fashion.
• The first increment in this model is generally a core product.
• Each increment builds the product and submits it to the customer for
any suggested modifications.
• The next increment implements on the customer's suggestions and
add additional requirements in the previous increment.
• This process is repeated until the product is finished.
For example, the word-processing software is developed using the
incremental model.

Advantages of incremental model


• This model is flexible because the cost of development is low and
initial product delivery is faster.
• It is easier to test and debug during the smaller iteration.
• The working software generates quickly and early during the software
life cycle.
• The customers can respond to its functionalities after every increment.
Disadvantages of the incremental model
• The cost of the final product may cross the cost estimated initially.
• This model requires a very clear and complete planning.
• The planning of design is required before the whole system is broken
into small increments.
• The demands of customer for the additional functionalities after every
increment causes problem during the system architecture.

3. RAD model
• RAD is a Rapid Application Development model.
• Using the RAD model, software product is developed in a short period
of time.
• The initial activity starts with the communication between customer
and developer.
• Planning depends upon the initial requirements and then the
requirements are divided into groups.

• Planning is more important to work together on different modules.


The RAD model consist of following phases:
1. Business Modeling
• Business modeling consist of the flow of information between various
functions in the project.
• For example what type of information is produced by every function
and which are the functions to handle that information.
• A complete business analysis should be performed to get the essential
business information.
2. Data modeling
• The information in the business modeling phase is refined into the set
of objects and it is essential for the business.
• The attributes of each object are identified and define the relationship
between objects.
3. Process modeling
• The data objects defined in the data modeling phase are changed to
fulfil the information flow to implement the business model.
• The process description is created for adding, modifying, deleting or
retrieving a data object.
4. Application generation
• In the application generation phase, the actual system is built.
• To construct the software the automated tools are used.
5. Testing and turnover
• The prototypes are independently tested after each iteration so that
the overall testing time is reduced.
• The data flow and the interfaces between all the components are fully
tested. Hence, most of the programming components are already
tested.
Agile Software Development
Agile Software Development is a software development methodology
that
values flexibility, collaboration, and customer satisfaction.
Agile Software Development is an iterative and incremental approach
to software development that emphasizes the importance of delivering a
working product quickly and frequently.
Agile software development is an iterative and incremental approach to
software development.
It emphasizes collaboration between the development team and the
customer, flexibility, and adaptability in the face of changing
requirements,
and the delivery of working software in short iterations.

1. Requirements Gathering: The customer’s requirements for the


software are gathered and prioritized.
2. Planning: The development team creates a plan for delivering the
software, including the features that will be delivered in each
iteration.
3. Development: The development team works to build the software,
using frequent and rapid iterations.
4. Testing: The software is thoroughly tested to ensure that it meets
the customer’s requirements and is of high quality.
5. Deployment: The software is deployed and put into use.
6. Maintenance: The software is maintained to ensure that it
continues to meet the customer’s needs and expectations.
Agile Software Development is widely used by software development
teams and is considered to be a flexible and adaptable approach to
software
development that is well-suited to changing requirements and the fast
pace
of software development.
Agile is a time-bound, iterative approach to software delivery that builds
software incrementally from the start of the project, instead of trying to
deliver all at once.

Advantages of Agile Software Development over traditional


software development approaches:
1. Increased customer satisfaction: Agile development involves
close collaboration with the customer, which helps to ensure that
the software meets their needs and expectations.
2. Faster time-to-market: Agile development emphasizes the
delivery of working software in short iterations, which helps to get
the software to market faster.
3. Reduced risk: Agile development involves frequent testing and
feedback, which helps to identify and resolve issues early in the
development process.
4. Improved team collaboration: Agile development emphasizes
collaboration and communication between team members, which
helps to improve productivity and morale.
5. Adaptability to change: Agile Development is designed to be
flexible and adaptable, which means that changes to the project
scope, requirements, and timeline can be accommodated easily.
This can help the team to respond quickly to changing business
needs and market demands.
6. Better quality software: Agile Development emphasizes
continuous testing and feedback, which helps to identify and
resolve issues early in the development process. This can lead to
higher-quality software that is more reliable and less prone to
errors.7. Increased transparency: Agile Development involves frequent
communication and collaboration between the team and the
customer, which helps to improve transparency and visibility into
the project status and progress. This can help to build trust and
confidence with the customer and other stakeholders.
8. Higher productivity: Agile Development emphasizes teamwork
and collaboration, which helps to improve productivity and reduce
waste. This can lead to faster delivery of working software with
fewer defects and rework.
9. Improved project control: Agile Development emphasizes
continuous monitoring and measurement of project metrics, which
helps to improve project control and decision-making. This can
help the team to stay on track and make data-driven decisions
throughout the development process.
Disadvantages Agile Software Development:

In the case of large software projects, it is difficult to assess the
effort required at the initial stages of the software development
life cycle.

Agile Development is more code-focused and produces less
documentation.

Agile development is heavily dependent on the inputs of the
customer. If the customer has ambiguity in his vision of the
outcome, it is highly likely that the project to get off track.

Face-to-face communication is harder in large-scale
organizations.

Only senior programmers are capable of making the kind of
decisions required during the development process. Hence, it’s a
difficult situation for new programmers to adapt to the
environment.

Lack of predictability: Agile Development relies heavily on
customer feedback and continuous iteration, which can make it
difficult to predict project outcomes, timelines, and budgets.

Limited scope control: Agile Development is designed to be
flexible and adaptable, which means that scope changes can be
easily accommodated. However, this can also lead to scope creep
and a lack of control over the project scope.

Lack of emphasis on testing: Agile Development places a greater
emphasis on delivering working code quickly, which can lead to alack of
focus on testing and quality assurance. This can result in
bugs and other issues that may go undetected until later stages of
the project.

Risk of team burnout: Agile Development can be intense and fast
paced, with frequent sprints and deadlines. This can put a lot of
pressure on team members and lead to burnout, especially if the
team is not given adequate time for rest and recovery.

Lack of structure and governance: Agile Development is often
less formal and structured than other development methodologies,
which can lead to a lack of governance and oversight. This can
result in inconsistent processes and practices, which can impact
project quality and outcomes.

What is Extreme Programming (XP)?


Extreme programming (XP) is one of the most important software
development frameworks of Agile models. It is used to improve software
quality and responsiveness to customer requirements. The extreme
programming model recommends taking the best practices that have
worked
well in the past in program development projects to extreme levels.
Good practices need to be practiced in extreme programming: Some
of the
good practices that have been recognized in the extreme programming
model
and suggested to maximize their use are given below:

Code Review: Code review detects and corrects errors efficiently.
It suggests pair programming as coding and reviewing of written
code carried out by a pair of programmers who switch their work
between them every hour.

Testing: Testing code helps to remove errors and improves its
reliability. XP suggests test-driven development (TDD) to
continually write and execute test cases. In the TDD approach, test
cases are written even before any code is written.

Incremental development: Incremental development is very good
because customer feedback is gained and based on this
development team comes up with new increments every few days
after each iteration.

Simplicity: Simplicity makes it easier to develop good-quality code
as well as to test and debug it.

Design: Good quality design is important to develop good quality
software. So, everybody should design daily.

Integration testing: It helps to identify bugs at the interfaces of
different functionalities. Extreme programming suggests that the
developers should achieve continuous integration by building and
performing integration testing several times a day
Basic principles of Extreme programming:
XP is based on the frequent iteration through which the developers
implement User Stories.
A User Story is a conventional description by the user of a feature of the
required system. It does not mention finer details such as the different
scenarios that can occur.
Based on User stories, the project team proposes Metaphors. Metaphors
are
a common vision of how the system would work.
The development team may decide to build a Spike for some features.
A Spike is a very simple program that is constructed to explore the
suitability of a solution being proposed. It can be considered similar to
a
prototype.
Applications of Extreme Programming (XP): Some of the projects that
are
suitable to develop using the XP model are given below:

Small projects: The XP model is very useful in small projects consisting
of small teams as face-to-face meeting is easier to achieve.

Projects involving new technology or Research projects: This type of
project faces changing requirements rapidly and technical problems. So
XP model is used to complete this type of project.

Web development projects: The XP model is well-suited for web
development projects as the development process is iterative and requires
frequent testing to ensure the system meets the requirements.

Collaborative projects: The XP model is useful for collaborative
projects
that require close collaboration between the development team and the
customer.

Projects with tight deadlines: The XP model can be used in projects that
have a tight deadline, as it emphasizes simplicity and iterative
development.

Projects with rapidly changing requirements: The XP model is
designed to handle rapidly changing requirements, making it suitable for
projects where requirements may change frequently.
Advantages of Extreme Programming (XP):

Slipped schedules − Timely delivery is ensured through slipping
timetables and doable development cycles.

Misunderstanding the business and/or domain − Constant
contact and explanations are ensured by including the client on the
team.

Cancelled projects − Focusing on ongoing customer engagement
guarantees open communication with the consumer and prompt
problem-solving.

Staff turnover − Teamwork that is focused on cooperation
provides excitement and goodwill. Team spirit is fostered by
multidisciplinary cohesion.

Costs incurred in changes − Extensive and continuing testing
ensures that the modifications do not impair the functioning of the
system. A functioning system always guarantees that there is
enough time to accommodate changes without impairing ongoing
operations.

Business changes − Changes are accepted at any moment since
they are seen to be inevitable.

Production and post-delivery defects: Emphasis is on − the unit
tests to find and repair bugs as soon as possible.
Adaptive Software Development (ASD)
Adaptive Software Development is a method to build complex
software and system. ASD focuses on human collaboration and self
organization. Adaptive software development (ASD) is a software
development process that grew out of the work by Jim Highsmith and
Sam Bayer on rapid application development (RAD). ASD “life
cycle” incorporates three phases namely:
1. Speculation
2. Collaboration
3. Learning
These are explained as following below.

1. Speculation:
During this phase project is initiated and planning is conducted. The
project plan uses project initiation information like project requirements,
user needs, customer mission statement, etc, to define set of release
cycles that the project wants.
2. Collaboration:
It is the difficult part of ASD as it needs the workers to be motivated. It
collaborates communication and teamwork but emphasizes
individualism as individual creativity plays a major role in creative
thinking. People working together must trust each others to
Criticize without animosity,

Assist without resentment,•
Work as hard as possible,

Possession of skill set,

Communicate problems to find effective solution.
3. Learning:
The workers may have a overestimate of their own understanding of the
technology which may not lead to the desired result. Learning helps the
workers to increase their level of understanding over the project.
Learning process is of 3 ways:
1. Focus groups
2. Technical reviews
3. Project postmortem
ASD’s overall emphasis on the dynamics of self-organizing teams,
interpersonal collaboration, and individual and team learning yield
software project teams that have a much higher likelihood of success.
Scrum (software development)
Scrum is the type of Agile framework. It is a framework within which
people can address complex adaptive problem while productivity and
creativity of delivering product is at highest possible values. Scrum
uses Iterative process. Silent features of Scrum are:

Scrum is light-weighted framework

Scrum emphasizes self-organization

Scrum is simple to understand

Scrum framework help the team to work together

1. Sprint: A Sprint is a time box of one month or less. A new Sprint


starts
immediately after the completion of the previous Sprint.
2. Release: When the product is completed, it goes to the Release
stage.
3. Sprint Review: If the product still has some non-achievable features,
it will be checked in this stage and then passed to the Sprint
Retrospective stage.
4. Sprint Retrospective: In this stage quality or status of the product is
checked.
5. Product Backlog: According to the prioritize features the product is
organized.
6. Sprint Backlog: Sprint Backlog is divided into two parts Product
assigned features to sprint and Sprint planning meeting.
Advantage of using Scrum framework:

Scrum framework is fast moving and money efficient.

Scrum framework works by dividing the large product into
small sub-products. It’s like a divide and conquer strategy

In Scrum customer satisfaction is very important.

Scrum is adaptive in nature because it have short sprint.

As Scrum framework rely on constant feedback therefore the
quality of product increases in less amount of timeDisadvantage of using
Scrum framework:

Scrum framework do not allow changes into their sprint.

Scrum framework is not fully described model. If you wanna
adopt it you need to fill in the framework with your own details
like Extreme Programming(XP), Kanban, DSDM.

It can be difficult for the Scrum to plan, structure and organize
a project that lacks a clear definition.

The daily Scrum meetings and frequent reviews require
substantial resources.

You might also like