0% found this document useful (0 votes)
11 views25 pages

Lecture 1

This document provides an introduction to software engineering, including definitions, challenges, and approaches. It discusses: - The definition of software engineering as the application of systematic and quantifiable approaches to developing, operating, and maintaining software. - Common challenges in software engineering like requirement volatility, limited budgets/resources, lack of communication, and technical debt. - Different types of software and examples of software failures caused by bugs, highlighting the "software crisis". - Approaches to addressing challenges like employing testing techniques, refactoring code, and prioritizing technical debt reduction.

Uploaded by

Dr. Vishal
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views25 pages

Lecture 1

This document provides an introduction to software engineering, including definitions, challenges, and approaches. It discusses: - The definition of software engineering as the application of systematic and quantifiable approaches to developing, operating, and maintaining software. - Common challenges in software engineering like requirement volatility, limited budgets/resources, lack of communication, and technical debt. - Different types of software and examples of software failures caused by bugs, highlighting the "software crisis". - Approaches to addressing challenges like employing testing techniques, refactoring code, and prioritizing technical debt reduction.

Uploaded by

Dr. Vishal
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 25

Introduction to Software Engineering

Lecture-1
Introduction: Concept of Software
Engineering.

Software Engineering Challenges &


Approach.
What is software Engineering?
The art of programming is not sufficient to construct a
large program.
There are serious problems in the cost, timelines,
maintenance and quality of many software products.
Software Engineering has the objective of solving these
problems by producing
1. Good quality software
2. Maintainable software ,
3. on time software ,
4. With in Budget software
Definition -1
IEEE defines software engineering as:

The application of a systematic,disciplined,quantifiable

approach to the development, operation and maintenance of

software; that is, the application of engineering to software.

quantifiable:

able to be expressed or measured as a quantity


Definition -2

Software engineering is the establishment and use of

sound engineering principles in order to obtain

economically software that is reliable and work

efficiently on real machines.


Program Vs Software
Software=
Programs + Documentation +Operating Procedure
Documentation includes:
1. Analysis and specification
2. Design details ( DFD,flow chart ,ERD)
3. Implementation detail (source code )
4. Testing details ( Test results and test Data)

Operating Procedure
5. User Manual
6. Operational Manual –Installation and administration
Software Program
Software’s are mainly dependent on Programs are mainly dependent on
operating system. compiler.
Various categories of software includes
application software, system software, There are no such categories of program.
computer programming tools, etc.
Size of software generally ranges from Size of program generally ranges from
megabytes (Mb) to gigabytes (Gb). kilobytes (Kb) to megabytes (Mb).
Software’s are usually developed by
people having expert knowledge and Programs are usually developed by
experience as well as are trained in person who is beginner and have no prior
developing software and are also referred experience.
to as software developers.
It requires more time to create software It requires less time to create program
than program. than software.
Examples of software includes Adobe Examples of program includes Web
Photoshop, Google Chrome, PowerPoint, browsers, word processors, video games,
Adobe Reader, etc. etc.
A comparison of constructing a bridge and writing a program

Sr. Constructing a bridge Writing a program


NO

1 The problem is well understood Only one part of problem


understood, many left

2 There are many existing Bridge Every software is different

3 The requirement for a bridge typically do Requirements changes during all


not change much during construction phase of development

4 The strength and stability of a bridge can Not possible to calculate


be calculated with precision correctness of a program with
existing methods.
5 When bridge collapse, there is a detailed When software fails , the reasons
investigation and report are often unavailable or can be
hidden.
6 Engineering are developing bridges from Developers are writing program
thousands years only from last 20 to 30 years.

7 Materials and techniques change slowly in Hardware and software are


this case changing rapidly.
Software Myths

1. Software is easy to change : actually its hard to change


the software without introducing errors.
2. Testing a software remove all error: Testing can show
only presence of error but not show the absence of errors.
3. Reusing code increases Safety: code reuse good for
development efficiency, but still it requires analysis and
testing.
4. Software Never Fails: actually many software fails and
different conditions.
5. Software can work right the first time: it means start
production without developing prototype, but it does not
happen in real implementation.
Types of Software
1. System software

2. Real time software

3. Embedded Software

4. Personal computer Software

5. Business software

6. AI software

7. Engineering and scientific software


Software Crisis
1. The Y2K problem was a problem in last century, the 4- digit data format like 1978 , was
shortened to 2-digit like 78. the developer could not visualise the problem of year 2000.
Millions of dollars was spent to handle this practically non existent problem.
2. USA Patriot Missile was used first time in Gulf WAR. It is used for defence against Iraqi
scud missile. It fails many times to hit scud missile including one that killed 28 US soldier.
The review team was formed for investigating failure of patriot missile and reason was
software Bug and it is timing error that clock accumulate after 14 hours.
3. One little bug ,one big crash of Ariane-5 space rocket, developed at a cost of 7000 million
dollars over a 10 years period.
4. A last-minute software glitch led to the failure of the Chandrayaan 2 mission. Vikram
Lander crash-landed on the moon's surface after its guidance software went kaput, according
to an internal report presented to the Space Commission.
5. An Indian rocket failed to place an Earth observation satellite into low orbit just five
minutes after liftoff. The failure was a big setback for the space agency whose missions
have been delayed due to the pandemic.
6. Since its June 7 launch, revamped portal developed by Infosys has faced issues in generating
passwords, linking data for past returns, and filing of returns.Finance Minister Nirmala Sitharaman
summoned Parekh — the second meeting in two months — to explain the reasons for the continuing
glitches, and has now given Infosys a deadline of September 15 to resolve these.
7. This list is endless many big companies around the world facing bugs in software.
Challenges in Software Engineering

Lack of resources, time constraints and increasing


complexity of software are some of the most
common challenges in software engineering, threatening
the overall equilibrium of the work environment.
Requirement volatility
This is one of the most prevalent software engineering
problems. The project requirements are unpredictable
and often need to be clarified to the team members when
they might shift. It often happens when the team
introduces new features or if stakeholders and
consultants are involved in the project.
Project requirement volatility is a crucial issue that is
stressful for the team to keep up with. However, this can
be mitigated once the projects are finalized and the
stakeholders provide ample time for the team to develop
the desired software. This would help in reducing stress
in the workplace.
Limited budget and resources
This is one of the most common problems
and challenges in software engineering. At times the
client or the manager does not present a realistic
timeline and thus creates constraints in both time and
budget.
Limited budget and resources can lead to 2 outcomes.
1. Project delay for an uncomfortable timeframe.
2. Unrest among teams due to the involvement of stakeholders and
consultants in trying to fit all the features within a low budget.
Lack of communication and collaboration
Lack of communication and collaboration is one of the
key managerial issues in software engineering. The
team manager acts as a messenger between the
stakeholders and the team. If the team manager fails to
produce the deliverables to the client, it is primarily
because of the lack of communication between the
team and the manager.
This can be mitigated if the team manager can pass on
the stakeholders’ vision to the team. This would
increase efficient team collaboration and reduce any
arising conflicts.
Poor software quality and maintenance
Quality assurance is a crucial aspect of software
engineering. Inadequate testing practices can lead to
unreliable software and unsatisfied users. Employing
manual and automated testing techniques, including unit
testing, integration testing, and regression testing, can help
identify and fix issues early in development.
Besides, it can be easily overcome by employing
competent engineers with adequate technical knowledge.
Integration and compatibility
issues
In most software projects, software reuse plays a vital
role. This happens when people work on a project
informally and search for a code similar to the required
code. Hence, similar codes create a compatibility issue
and give rise to pertinent software engineering problems.
This problem could be mitigated by increasing the project
budget and providing appropriate products to compile
and make potent software. A skilled engineer with sound
knowledge of code compilation would be fit to handle
such challenges in an organization.
Technical debt management
Accumulated technical debt, such as code shortcuts
and substandard design decisions, can hinder software
development progress and increase maintenance
efforts. Regular code refactoring, conducting code
reviews, and prioritizing technical debt reduction can
help manage and minimize its impact on
development.
Managing complex codebases
Working with large, complex codebases can
overwhelm new and experienced developers. The lack
of clear documentation, inconsistent coding styles, and
poor code organization can hinder productivity and
introduce bugs.
Employing software development best practices such
as modularisation, code refactoring, and utilising
version control systems can streamline code
maintenance and improve code quality.
Inadequate testing and debugging
Testing and debugging are essential aspects of
software engineering. To make an application flawless
or robust, it should be tested under various simulated
environments. Testers must ensure an understanding of
every bit of the code before taking up regression tests
in complex applications.
Recruiting a dedicated quality analysis team can help
manage this problem. A quality analysis team is tasked
with running, testing and debugging the code before
handing it to clients. This would save time and also
help the organisation retain its clients.
Security and privacy concerns
With the increasing prevalence of cyber threats,
ensuring the security of software systems is
paramount. Implementing secure coding practices,
conducting regular security audits, and following
industry-standard encryption and authentication
mechanisms can help safeguard sensitive data and
protect against vulnerabilities. This would ensure the
company’s security and privacy and mitigate
these software engineering problems.
Adapting to changing technology and industry trends
Software projects often face changing requirements
due to evolving user needs or shifting market
demands. This can disrupt development plans and
impact project timelines. The difficulty in keeping up
with trends in the global market often takes away the
competitive edge resulting in the organisation losing
business.
Overcoming Challenges of Software Engineering

The evolving nature of the software development

industry poses challenges for engineers. However,


adopting some simple steps and practices can help
combat these software engineering challenges. By
implementing these solutions, software engineers can
enhance their productivity, ensure project success, and
deliver high-quality software solutions.
 Embrace continuous learning: Stay updated with industry
trends, frameworks, and tools by dedicating time to self-
improvement, attending conferences, participating in online
courses, and joining developer communities.
• Balancing innovation and maintenance: Striking a balance
between developing innovative features and maintaining existing
systems is essential for developers. Prioritising technical debt
reduction, conducting regular code refactoring, and establishing
a culture of code cleanliness can help ensure a healthy balance
between innovation and maintenance.
• Collaborate and share knowledge: Foster a culture of
collaboration within the team, where knowledge and expertise
are shared. Encouraging knowledge-sharing sessions, code
reviews, and pair programming to promote continuous learning
and skill development can bring significant employee and
organisation growth.
Stakeholder alignment and
understanding: Understanding and addressing the
viewpoints and concerns of stakeholders is essential for
project success. Establish clear communication channels
with stakeholders and actively listen to requirements,
concerns and feedback.

You might also like