Software Engineering Fundamentals
Software Engineering Fundamentals
MLMLMOM
5558585 055
<558585
KFF6 KPKKKFK/
FUNDAMENTALS OF
ENGINEERING
SOFTWARE
BASIC CONCEPTS
What is software?
• It is the product that software engineers design and build. This
encompasses programs that run inside a computer of any size and
architecture, virtual and printed documents, and data that combines
numbers, text, audio, video, and images.
Because it is important?
What are the steps?
APPLICATIONS OF
SOFTWARE
It can be applied in any situation where a specific set of
procedural steps has been previously defined.
• Systems software
• Software of real time
• Software of management
• Software of engineering and
scientist
PRODUCT OF
SOFTWARE
Reliability.
• The software must not cause physical or economic damage in the
event of failure.
Efficiency.
• The software should not waste system resources.
Proper use.
• The software must have an appropriate user interface and
documentation.
ENGINEERING
SOFTWARE
The term “ Software Engineering ” emerged at the end of the
1960s within a conference dedicated to “the software crisis.”
Is defined as:
Software engineering:
• Set of methods, tools and procedures to produce high quality
software. [R. Pressman]
Methods describe how to technically build the software. It
includes the activities of:
• Project planning and estimating
• Analisys of requirements
• Design
• Coding
• Proof
• Maintenance
SOFTWARE QUALITY
Software quality is a notion that can be described by a series
of factors, which can be:
• External: observable by users of the product.
• Internal: observable by computing professionals.
EXTERNAL FACTORS
Correctness: ability of software products to perform their tasks as
defined in their requirements specification.
Robustness: ability of a software system to function in abnormal
situations.
Modifiable: ease of a product to adapt to changing specifications.
Reusability: ease of being reused in whole or in part for new
applications.
Compatibility: ease of software products for
combine with each other.
Efficiency: good use of software and hardware resources
available.
EXTERNAL FACTORS
Ease of use: ability to learn how to handle a software system, operate with
it, prepare input data, interpret results, etc.
INTERNAL FACTORS
Its modules should be cohesive (in charge of one specific task and only one) and loosely
coupled to each other (to facilitate system maintenance).
Each module should offer well-defined interfaces to the others and hide its implementation
details.
It must be possible to relate the design decisions made to the system requirements that
caused them.
• Multilayer architectures
• Client/server architectures
IMPLEMENTATION
• Suitable tools
• A development environment that makes our work easier
• A programming language appropriate for the type of system we are
going to build.
EVIDENCE
To err is human and the testing stage aims to detect errors
that may have been made in the previous stages of the
project (and, eventually, correct them).
• Unit tests
• Integration testing
• Alpha testing
• Beta testing
• Acceptance test
• Reviews
EU
INSTALLATION/DEPLOYMEN
T
Given the nature of the software, which neither breaks nor wears out with
use, its maintenance includes three different facets:
• Eliminate defects detected during its useful life ( corrective maintenance )
• Adapt it to new needs ( adaptive maintenance )
• Add new functionality ( perfective maintenance ),
LIFECYCLE
Succession of stages that a software product goes through throughout its
development and existence.
From analysis to
delivery to the
user
Utility:
The activities are not fixed to any priority, but the following
are chosen based on the risk analysis, starting with the inner
loop.
ADVANTAGES
The risk analysis is done explicitly and clearly. Join the best elements of the
other models.
Reduces project risks
Expensive model
Requires experience in risk identification
OTHER TYPES OF
MODELING
Incremental model
DRA model
“Y” model
Agile methodology
Scrum
extreme programming
CLASSIFICATION OF THE
TECHNOLOGY IN THE
DEVELOPMENT OF
SOFTWARE
One of the tasks of the software engineer is to select the best
technology for the type of project to be developed.
Yo
pa MARCO DE L
REASONING
The basic idea of this technology is that it is possible to structure the model of a software
system based on functions that process information that they receive from other
functions (or from the outside) and direct the processed information to other functional
modules (or to the outside).
The approach followed, therefore, is to think about the necessary system functions
(drawn from the system requirements) and then the data they require.
TECHNOLOGIES ORIENTED
. mm Go-AA.....................
Structured development technologies have demonstrated their
limitations in organizing and facilitating the evolution of complex
software systems.
Since the creation of software began, the need arose for tools that
automate the process.
•Software crisis
T
• a C m on b ju ié nt n o s d e p é u t e od
d
o e s n , you ti el fi a d i e rof
automation of the information life
th
a
cycle, completely either
n
ADVANTAGES
The best reason for creating these tools was the increase in the speed of system
development.
Because of this, companies were able to develop systems without facing the
problem of having changes in business needs before completing the
development process.
CLASSIFICATION OF CASE
TOOLS
There is no single classification of CASE tools and it is
sometimes difficult to include them in a given class.
They could be classified according to:
Low level tools, L-CASE (Lower CASE) or back end, aimed at the last phases
of development: construction and implementation.
Tool sets or Tools-Case , are the simplest type of CASE tools. They
automate a phase within the life cycle. Within this group you would find the
reengineering tools, aimed at the maintenance phase.
Advantages Disadvantages
CASE type
Programming tools.
Maintenance tools.
Support tools.
COMPONENTS OF A
CASE
Repository: Central database of a CASE tool. Most CASE tools have their
own repository or work on a repository provided by another manufacturer
or vendor.
• Generated language
• Code portability
• Program skeleton generation
Documentation generator module: The documentation
generator module is powered by the repository to
transcribe the specifications contained therein.