Software Engineering Defined and The Software Problem

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 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 be performed. There are no "undocumented
features".
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 Course, and


discussed throughout your study as a Software
Engineer at ADUN …….
15

You might also like