0% found this document useful (0 votes)
14 views6 pages

Software Engineering Challenges Explained

The document discusses the challenges faced in software engineering, including high costs, unreliability, and maintenance difficulties due to complex requirements. It highlights the software crisis resulting from poor project management and the inability to adapt to changing user needs, leading to projects that are late and over budget. The solution proposed is a systematic approach to software development that emphasizes organization, user requirements, and quality control.

Uploaded by

codecon90
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)
14 views6 pages

Software Engineering Challenges Explained

The document discusses the challenges faced in software engineering, including high costs, unreliability, and maintenance difficulties due to complex requirements. It highlights the software crisis resulting from poor project management and the inability to adapt to changing user needs, leading to projects that are late and over budget. The solution proposed is a systematic approach to software development that emphasizes organization, user requirements, and quality control.

Uploaded by

codecon90
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

1.

4 SOFTWARE PROBLEM
myriad of
Large, complex industrial strength software
systems having conflicting
requirements have some problems related to the design, implementation,
problems are:
maintenance and extendibility. Some important
Software is expensive
year new processors are
With the advancement of technology, virtually every
ancestors. Hardware/
introduced with a speed manifolds of their previous
software ratio for a computer system is shown in figure 1.1.

Software
100+
development
80 Hardware

60

40 T
sbftware
20
maintenance

0 1955 1970 1995

Figure 1.1: Hardware Software Cost


Software Engineering MAHE Page No. 6
Introduction to Softvare Engineering Unit 1

Software is costler because constructing software is labor intensive. in industry.


productivity is measured in terms of DLÌG (Deliverable Lines Of Gode) per
person-month. The current productivity ranges from 300-1000 DLOC per person
month, where as the labor charges 8000-1O000 ollars per person-month.
Therefore, even moderately sized software containing about 50000 lines of code
(LOC)cost between $0.5 million and $1.25 million !
This clearly shows that software is the only costliest item in the
computer-based
system. Asoftware costing millions of dollars can run on the machines COsting
thousands of dollars. So, the hardware cost is only a fraction of the total cost.
Therefore, focus is given to the software component to have better control over
the software construction that should make the software
economical and
efficient.

Late, costly and unreliable


The software industry has gained a reputation of not delivering software within
schedule and budget and of producing poor quality software. Projects are behind
schedule and have heavy cost overruns, products are not being delivered ori
tirme and within budget. The final project completion cost was almost 10times the
original estimate! Some projects are scrapped and others are categorized as
runaway - where the budget and the schedule are out of controi.

Unreliability
Many tirnes, software does not do what it supposed to do and does what is not
Supposed to do. All other engineering disciplines are well advanced and they find
the software component weakest. This is because, the software problems bubble
Qut only after the system become operational. Bugs occur due to errors that
introduced during design and development. The problen of cost and schedule
overruns and reliability are the major contributors to the software CRISIS.

Software Engineering MAHE Page No. 7


Introduction to Software Engineering Unit 1
Intro
Problem of change and rework
Once the softvware is delivered and deploved and becomes operational, software diffi

maintenance is required to fix the residual errors remaining in the system as they cap

are disCOvered. User requirements also change with the use of the system. This long
har
leads to software revwork or software maintenance.
The
be the maintenance cOst.
OT the total software cost. nearly 60-80 percent will nur
understanding of the system,
This is because, maintenance involves complete ma
modifying and testing of the
possibly by the person who has not developed it, cha
Changing requirements
changed parts and retesting of the unaltered parts. pro
reasons: First, user start thinking in
arises in the system mainly because of two sy
accordingly his requirements such as
new ways after start using the system,
un

stated before developing the


interfaces, functionality and constraints have to be
ter

Visualizing all requirements is tough task. Therefore, requirements are


systemn.
operational. Th
frozen gradually after the system becomes
to

change at different stages such as designing, coding, testing


Requirements may
the previous
all C
stage must also be reflected in
etc. Changes made in one maintenance. C

So, earlier the change is made, easier will be the


stages. C

2-3 years, the requirements specified before starting


If the project takes
useless when the project is completed. This makes
development, may become
the software useless.

1.5 SOFTWARE CRISIS


perform demanding tasks such as space shuttle
These days software is asked to
controlling the elevators in hundred-story office
control. air traffic control, myriad of
These applications are inherently complex with
buildings
requirements. Behavior of such system is intensely
competing and contradictory
Page No. 8
MAHE
Software Engineering
Introduction to Software Engineering Unit 1

difficult to comprehend. Complexity of such systems exceeds human intellect ual


capacity. Such applications usually take a long time to implement, stay around
long time, As it persists it accumulates Variety of patches, and more it is patched
harder it becomes to maintain.

The problem worsens because making moditications causes potentialy


numerous problems in other parts OT SOtware. Under these circumstances
maintenance of large systems becomes true headache, implications of srmall
changes are difficult to isolate, tixes made to one part may give birth to the
problems at another part.) No one understands the architecture of the entire
system, identifying mistakes become virtually impossible./Extending software
under such condition is impossible. By this time, a lot of time and cost is spent in
terms of maintenance. Ultimately the software becomes useless.

The more complex the system, more open it is to the total breakdown. Qur failure
to master the complexity results in projects that are too late, over
budget and
deficient in their stated requirements., This state of a project is called software
CRISIS. This crisis leads to squandering of precious human resources as well as
considerable loss of opportunities. It is unacceptable to allow this situation to
continue.

The solution to this software crisis is a systematic


organized method of
constructingsoftware, called software engineering.

1.6 SOFTWARE ENGINEERING PROBLEM

The Adhoc, programming-centered approach of software development does not


work for large, complex systems. To control the problems that crops up due to
software crisis, a systematic, methodical approach of software development that

Software Engineering MAHE Page No. 9


Introduction to Sottware Engineenng
close to the scientitic method must be followed. If these
repeatable and applied by different people, similar methodoprloogducejes a,
software should be
developing software
Software engineering focuses on the methods of Throughout the
projects.
these methods can be applied on various
importance must be given tothe user's requirements. devclopmert
Engineering
} 1.6.1 Fundamental Problems of Software

The problem of scale


The methods used for developing a small software containing hundreds of lines
wilil not work for the large Systems containing thousands of lines. When a scale
formal method of development that
changes from smallto large Systems, a more
validations are required. This
includes more management, organization and
as wel as the formal method
requtres fomal methods of software development
project, a proper method of
of project management. To successfully execute the
to make
deveiopment has to be used and the project has to be tightly managed
quality and
Sure that the methods are indeed being followed and that the COSt,
schedule are under control.

Cost, schedule and quality


Like ali engineering disciplines, software engineering is also driven by the
3 rnajor factors: cost, quality and schedule.

COST: The cost of developing asystem is the cost of resources (hardware,


software, manpower etc.). The manpower cost is the dominant cost and is
neasured in terms of the totalnumber f person-months spent on the project.
D

SCHEDULE: The window of opportunities in the business field is very smal.


Business trends require that the cyCle time from the accept to delivery of a
Software Engincering MAHE Page No. 10
Introduction to Software Engineering
Unit 1

product should be small. Therefore, to maintain this reduced cycle tirne, schedule
is an important factor in projects.

QUALITY: Producing high-quality software products is a key to establish the


good Customer base and also it is important for the survival of the inductoy
Quality of software can be viewed as having 3 dimensions.

Qualities related to the operation of the system - correctness, reliability,


efficiency, usability and integrity.

Qualities related to the product transition - portability, inter operatability and


reusability.

Qualities rlated to the maintenance - flexibility, testability and modifiability.

Therefore, the measure of quality cannot be reduced to any single parameter and
quality factors are different for different projects. Before starting the project,
quality objectives specific to the project must be decided and the development
process should ensure achieving these quality objectives.

One measure of quality is number of defects in KLOC (Kilo Lines of Code). A


defect may be any thing from asevere one that causes the system to crash, or a
simple fornatting mistake.

The problem of Inconsistency


e is the

Common questions

Powered by AI

Software engineering is vital in addressing the software crisis as it introduces a systematic, organized method of constructing software to control issues arising due to ad-hoc development approaches. This method resembles the scientific approach and is critical for developing large, complex systems with reliability and efficiency. By focusing on user's requirements, utilizing repeatable methodologies, and emphasizing management and organization in project execution, software engineering aims to address the complexity and unreliability that characterize the software crisis .

The primary factors driving the discipline of software engineering are cost, quality, and schedule. These factors are crucial for ensuring that software projects are completed efficiently and effectively. The cost is mainly influenced by the manpower required to develop the software and is measured in terms of person-months. Schedule is critical because business opportunities often have small windows, necessitating a reduced cycle time from acceptance to delivery. Quality is essential for establishing a reliable customer base and ensuring user satisfaction, encompassing aspects such as reliability, efficiency, and usability. Together, these factors guide the development and project management processes within software engineering .

Large software systems are inherently complex due to their multitude of conflicting requirements and intricate interdependencies. This complexity surpasses human intellectual capacity, making systems difficult to comprehend and manage. When a system is modified with patches and updates, this complexity increases, causing maintenance challenges. Modifications often lead to unintended effects in other parts of the software, further increasing complexity and potentially causing system breakdowns. This situation results in software projects that are late, over budget, and deficient, leading to a software crisis .

Software is considered costly mainly because it is labor-intensive to construct, which makes development expensive. The typical productivity in the industry is measured in Deliverable Lines Of Code (DLOC) per person-month, ranging from 300-1000 DLOC per person month. Labor charges for developing this software range between $8,000 and $10,000 per person-month. Consequently, the cost of developing even moderately sized software with approximately 50,000 lines of code can range between $0.5 million and $1.25 million. Compared to this, hardware costs are significantly lower, meaning that software becomes the costliest item in a computer-based system .

The adhoc programming-centered approach fails in large software projects because it lacks the systematic, organized methodologies required to manage and develop complex systems effectively. This approach does not incorporate formal methods of development or project management, which are necessary for maintaining control over cost, schedule, and quality. Large projects require a more structured development approach that emphasizes validation, management, and adherence to user requirements to succeed. Without this structure, projects become prone to delays, cost overruns, and deficiencies, contributing to the software crisis .

A formal method of software development aids in managing large projects by providing structured processes and methodologies that ensure consistency, quality, and control over the development cycle. Formal methods incorporate extensive management, organization, and validation stages that help mitigate the risks of cost overruns, schedule delays, and quality issues typical in large projects. They enable precise requirement definition, efficient allocation of resources, and continuous monitoring and adjustment throughout the development process, leading to more predictable and successful project outcomes .

User requirements contribute significantly to software maintenance issues because they tend to evolve after the software system becomes operational. Users often change their requirements based on new insights after starting to use the system, affecting interfaces, functionalities, and constraints. These changes necessitate modifications across various stages of development, such as design, coding, and testing. As a result, maintenance involves not only updating the software to meet new requirements but also ensuring that these changes do not negatively affect the existing system, which significantly inflates the cost and complexity of maintenance .

Software engineering plays a crucial role in improving productivity by introducing systematic methods that enhance the efficiency and effectiveness of software development, despite the high cost of manpower. By employing repeatable and disciplined approaches to software construction, such as formal development methods and project management frameworks, software engineering seeks to manage resources better and control quality, schedule, and cost. This systematic approach minimizes errors and rework, leading to a more predictable and controlled development process that maximizes the productivity of the workforce .

Large, complex software systems are considered open to total breakdowns due to their intricate architecture and the vast number of interconnections among components. The modifications required over their lifecycle can inadvertently introduce new errors, disrupt existing functionality, and amplify systemic complexities. As these systems are continuously patched and extended, they accumulate complexities that surpass human intellectual capacities to oversee comprehensively, increasing the likelihood of critical system-level failures .

Software maintenance becomes a 'headache' for large systems due to the complexity and interdependence inherent in these systems. As systems persist over time, they accumulate a variety of patches that make them harder to maintain. Modifications to one part of the system often have unpredictable and potentially numerous adverse effects on other parts due to this interdependence. As result, fixes can inadvertently create new issues elsewhere in the software. The difficulty in isolating these ramifications and the lack of comprehensive understanding of the underlying architecture of large systems complicates maintenance efforts significantly .

You might also like