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

1. Software Engineering Defined and the Software Problem

Software engineering is a discipline focused on the systematic development, operation, and maintenance of software, involving teams rather than individuals. It encompasses ten sub-disciplines, including software requirements, design, development, testing, and maintenance, all aimed at achieving goals like maintainability, reliability, and efficiency. The software crisis is characterized by issues such as projects running over budget and time, low-quality output, and unmanageable code, highlighting the need for effective software engineering practices.

Uploaded by

dannyjnr745
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)
2 views

1. Software Engineering Defined and the Software Problem

Software engineering is a discipline focused on the systematic development, operation, and maintenance of software, involving teams rather than individuals. It encompasses ten sub-disciplines, including software requirements, design, development, testing, and maintenance, all aimed at achieving goals like maintainability, reliability, and efficiency. The software crisis is characterized by issues such as projects running over budget and time, low-quality output, and unmanageable code, highlighting the need for effective software engineering practices.

Uploaded by

dannyjnr745
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/ 15

SOFTWARE ENGINEERING

DEFINED
THE SOFTWARE PROBLEM
& SOFTWARE CRISIS

1
WHAT IS SOFTWARE
ENGINEERING?

▪ The importance of software is fast growing. For


many engineering projects, enterprise business
organization and operations management.

▪ Nowadays the software has become the pivotal


tool for the above trend.
▪ Software engineering deals with software
developed by teams rather than individual
programmers. However, the definition varies
from one author to another…

▪ (According to Pressman, 2000):


Software engineering is a discipline that
integrates methods, tools, and procedures for
the development of computer software
WHAT IS SOFTWARE
ENGINEERING?

• (According to IEEE): Software engineering is


the application of systematic, disciplined,
quantifiable approach to development,
operation and maintenance of software.

• (According to Mbam B.C , 2002): Software


engineering is the establishment and the use of
sound engineering principles to obtain
economically software that is reliable and
works effectively on computers.
INSTRUCTOR & CLASS
DEFINITION OF SOFTWARE
ENGINEERING?

▪ Software engineering is the application


of a systematic, disciplined, and
quantifiable approach to the
development, operation, and
maintenance of software;

▪ It also involves the study of these


approaches.

▪ Software engineering can be divided


into ten sub-disciplines.
TEN SUB-DISCIPLINES OF
SOFTWARE ENGINEERING

Software engineering can be divided into


ten sub-disciplines. They are as follows:

1.Software requirements: The elicitation,


analysis, specification, and validation of
requirements for software.

2.Software design: Software Design consists of


the steps a programmer should do before they
start coding the program in a specific language. It
is usually done with Computer-Aided Software
Engineering (CASE) tools and use standards for
the format, such as the Unified Modeling
Language (UML).

3.Software development: It is construction of


software through the use of programming
languages.
TEN SUB-DISCIPLINES OF
SOFTWARE ENGINEERING

4. Software testing: Software Testing is an


empirical investigation conducted to provide
stakeholders with information about the
quality of the product or service under test.

5. Software maintenance: This deals with


enhancements of Software systems to solve
the problems the may have after being used
for a long time after they are first completed.

6. Software configuration management: is


the task of tracking and controlling changes in
the software. Configuration management
practices include revision control and the
establishment of baselines.

7. Software engineering management: The


management of software systems borrows
heavily from project management.
TEN SUB-DISCIPLINES OF
SOFTWARE ENGINEERING

8. Software Development process: A


software development process is a structure
imposed on the development of a software
product. There are several models for such
processes, each describing approaches to a
variety of tasks or activities that take place
during the process.

9. Software engineering tools: (CASE which


stands for Computer Aided Software
Engineering) CASE tools are a class of
software that automates many of the
activities involved in various life cycle phases.

10.Software Quality and Quality Assurance:


The totality of functionality and features of a
software product that bear on its ability to
satisfy stated or implied needs..
SOFTWARE ENGINEERING GOALS

The software engineering goals include the


following:
• Maintainability: Changes to software without
increasing the complexity of the original system
design should be possible.

• Reliability: The software should be able to


prevent failure in design and construction as well
as recover from failure in operation. In other
words, the software should perform its intended
function with the required precision at all times.

• Efficiency: The software system should use the


resources that are available in an optimal
manner.

• Understandability: The should be easy to


read at the expense of being easy to write, and
not the other way around. It should not be
technically tedious to understand.
SOFTWARE ENGINEERING
PRINCIPLES

The key Principles that govern Software


Engineering include the following:

I.Abstraction: The purpose of abstraction is to


bring out essential properties while omitting
inessential detail. The software should be
organized as a ladder of abstraction in which
each level of abstraction is built from lower
levels. The code is sufficiently conceptual so the
user need not have a great deal of technical
background in the subject. The reader should be
able to easily follow the logical 14 path of each of
the various modules. The decomposition of the
code should be clear.
II.Its main goal is to handle complexity by hiding
unnecessary details from users.

III.Information Hiding: The code should include


no needless detail. Elements that do not affect
other segment of the system are inaccessible to
the user, so that only the intended operations can
SOFTWARE ENGINEERING
PRINCIPLES

I. Modularity: The code is purposefully


structured. Components of a given module
are logically or functionally dependent.

II. Uniformity: The notation and use of


comments, specific keywords and formatting
is consistent and free from unnecessary
differences in other parts of the code.

III. Completeness: Nothing is deliberately


missing from any module. All important or
relevant components are present both in the
modules and in the overall system as
appropriate.

IV. Confirmability: The modules of the


software can be tested individually with
adequate rigor. This gives rise to a more
readily alterable system, and enables the
reusability of tested components.
SOFTWARE ENGINEERING
PRINCIPLES

IX. Localization: is the adaptation of


software product to have local
content and meet the need of the
users. The breakdown and
decomposition of the code is rational.
Logically related computational units
are collected together in modules.
WHAT IS WELL ENGINEERED
SOFTWARE?

▪ Well-engineered computer software can be


described as software that does what the user
wants and can be made to continue to do what
the user wants.

▪ Somerville and other notable software


engineers suggest that well-engineered
software MUST have the following
characteristics and qualities:

I. Be easy to use
II. Be easy to maintain
III.Be reliable
IV. Be efficient
V. Provide and support an appropriate
user interface…and user interaction.

12
WHY STUDY SOFTWARE
ENGINEERING?

Software Engineering is studied in order ….

▪To acquire skills to be a better programmer:


this makes for higher productivity and better
quality programs.

▪To acquire skills to develop large programs.

▪It helps you to gather ability to solve


complex programming problems

▪To learn techniques of specification, design,


interface development, testing and
integration, project management etc.

13
THE SOFTWARE PROBLEM AND
THE SOFTWARE CRISIS

▪ The software industry is largely interested in


developing industry-strength software, and
the area of software engineering focuses on how
to build such systems.

▪ In other words, the problem domain for software


engineering is industrial strength software.

▪ In the industrial-strength software domain, there


are three basic forces at play—cost, schedule,
and quality.

▪ Thus, at all times the software should be


produced at reasonable cost, in a reasonable
time, and should be of good quality.

▪ These three parameters MUST drive and define a


software project.

14
MANIFESTATION OF SOFTWARE
CRISIS

❑The crisis manifested and still


manifesting in the following ways:

I. Software Projects running over-budget.


II. Software Projects running over-time.
III. Produced Software very inefficient.
IV. Produced Software generally of low
quality.
V. Most produced Software often did not
meet requirements.
VI. Most Software Projects are becoming
unmanageable and underlying source
code difficult to maintain.
VII. Proposed Software never delivered.

• The above issues largely contribute


to the persisting software crisis in
the World.

• The Issues will be highlighted in this


15

Course, and discussed throughout

You might also like