Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
36 views

Software Engineering Fundamentals

This document presents the basic concepts of software engineering. Explains that software is the product that software engineers design and can be applied in any situation where procedural steps have been previously defined. In addition, it describes the different types of software, quality characteristics, processes, activities and life cycles for software development.
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
36 views

Software Engineering Fundamentals

This document presents the basic concepts of software engineering. Explains that software is the product that software engineers design and can be applied in any situation where procedural steps have been previously defined. In addition, it describes the different types of software, quality characteristics, processes, activities and life cycles for software development.
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 53

MLML-

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.

Who does it?


• Software engineers build it, and virtually anyone in the industrialized world
uses it either directly or indirectly.

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

They are software systems along with documentation


that describes how to install and use it.
• Documentation of requirements
• Design documentation
• Source code
• System test plans
• Principles of operation
• Installation instructions
• Maintenance procedures
• User manuals
CATEGORIES OF
SOFTWARE
Software products can be divided into two groups:
• Generic products: developed for a market.
• Custom products: ordered by a client.

The difference between one and the other:


• In generics, the organization that develops the software controls its
specification.
• In others, it is usually developed and controlled by the organization that is
purchasing the software.
SOFTWARE PRODUCT
FEATURES
Maintainable.
• It must be possible for the software to evolve and continue to meet
its specifications.

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:

• “The technological discipline related to the systematic production and


maintenance of software products that are developed and modified on schedule
and within estimated costs.”

Its goal is to produce software products.


OTHER CONCEPTS

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

The tools provide semi-automatic support to the methods.


Procedures formally relate methods and tools.

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

Portability: ease of adaptation to other software or hardware environments.

Verifiability: ease of preparing acceptance procedures, in particular test


data, to detect failures during the validation and operation phases.

Integrity: ability of a system to protect its documents (programs, data)


against unauthorized access and modification.

Ease of use: ability to learn how to handle a software system, operate with
it, prepare input data, interpret results, etc.

INTERNAL FACTORS

Modularity: functional independence of


program components.

Readability: ease of reading and interpreting the


program code.
THE PROCESS OF
SOFTWARE
What is a software process?

It is a set of activities, actions and tasks that are executed


when some work product is to be created.
• An activity seeks to achieve a broad objective and is developed
regardless of the application domain.
• An action is a set of tasks that produce a significant work product.
• A task focuses on a small but well-defined objective that produces a
tangible result.
ACTIVITIES OF THE
PROCESS OF
SOFTWARE
A general process structure for software engineering consists of the following
activities:
• Planning
• Analysis
• Design
• Implementation
• Evidence
• Installation or Deployment
• Use and maintenance

Communication: Communicate with clients to understand objectives.


Planning: Any trip is simplified if there is a map. For software development the map is the
software project plan.
Modeling: creating a sketch of the object to be made in order to understand the panorama.

Construction: code generation and testing to discover errors.

Deployment: delivery to the consumer for evaluation.


PLANNING

Delimitation of the scope of the project

Conducting a feasibility study

Analysis of risks associated with the project

Project cost estimate

Temporal planning and allocation of resources to the different


stages of the project.
ANALYSIS
Requirements elicitation techniques
• It includes everything from the client who pays for the project to the
end users of the application.
• Without forgetting third parties, competing companies and regulatory
bodies.

System modeling tools.


• They help communicate the structure of a complex system
• They serve to specify the desired behavior of the system
• They help to better understand what we are designing
• They allow you to discover opportunities for simplification and reuse

Requirements analysis methodologies.


DESIGN
Well-designed software should exhibit certain characteristics.

Your design should be modular

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.

Most common designs

• Multilayer architectures
• Client/server architectures
IMPLEMENTATION

Before writing a single line of code (or creating a table in


our database) it is essential to have well understood the
problem to be solved and to have applied basic design
principles that allow us to build a quality information
system.

• 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

Once the development stages of an information system (analysis, design,


implementation and testing) have been completed, it is time to put the system
into operation, its installation or deployment.
In view of its installation, we must plan the environment in which the system
must operate, both hardware and software: necessary equipment and its
physical configuration, interconnection networks between the equipment and
access to external systems, operating systems (updated to avoid security
issues), libraries and components supplied by third parties, etc.

USE AND MAINTENANCE

The maintenance stage typically consumes 40 to 80 percent of a software


development company's resources.

In fact, at 60% on average, it is probably the most important stage of the


software life cycle.

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.

There are different forms, paradigms or models of software life cycle:


• Classic or waterfall
• Prototyping.
• Evolutionary or spiral.
• Combination of styles, etc.

Alternatively, the terms are sometimes used

“Life cycle”, and “Life cycle model”


LIFECYCLE

Life cycle = Development cycle

Whole system life:

From analysis to
delivery to the
user

from conception to end of use


CLASSIC OR CASCADE
Proposed by W. Royce in the early 70s.

Sequential application of a series of steps.

Each step generates input and documentation for the


next.
CASCADE MODEL
REAL
CRITICISM OF THE
CLASSIC LIFE CYCLE

Projects rarely follow the sequential life cycle.

Difficulty in establishing requirements at the beginning of the


process.

Errors detected late.

Maintenance by patching (correct as problems arise).


PROTOTYPING
Prototyping consists of building an initial
version of a product, which describes the
human-machine interaction without fully
implementing the functionality of the system
(prototype without functionality).

Utility:

•Helps analysts establish customer needs.


•Helps developers improve products.
PROTOTYPE CLASSES
Vertical: fully develops some of the
facets of the product.

Horizontal: partially develops all facets of the product.

Evolutionary: the final version is the already built product.

Disposable: It is used only to capture


requirements and functionality.
OBSERVATIONS
ABOUT PROTOTYPING
Facilitates capturing customer requirements.

Reduces the risk of patching the final product.

The construction of the prototype requires an additional


investment.

The client sees a version of what their program will be running


without assuming that said version is not robust or complete.
EVOLUTIONARY OR IN
SPIRAL

Spiral development was first defined by Barry Boehm in 1986.

The activities of this model are formed in a spiral, in which


each loop or iteration represents a set of activities.

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

Incorporates quality objectives

Integrate development with maintenance, etc.


Furthermore, it is possible to take into account improvements and new
requirements without breaking with the methodology, since this life cycle is
neither rigid nor static.
DISADVANTAGES

Generates a lot of time in the


development of the system

Expensive model
Requires experience in risk identification
OTHER TYPES OF
MODELING
Incremental model

DRA model

“Y” model

Rational Unified Process (RUP)

Agile methodology

Scrum
extreme programming

WHAT MODEL TO USE?

For well-known systems the Cascade Model can be used. The


risk analysis phase is relatively easy

With stable requirements and critical security systems, it is


recommended to use formal models

With incomplete specifications, the prototyping model helps


identify them and produces a functional system

Hybrid models can be used in different parts of development

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.

We define software technology as an integrated set of notations, tools


and methods, based on solid foundations, that allow the development
of a software product in a given organizational context.

A software technology can be considered to consist of the following


components:
Theories and models

Yo
pa MARCO DE L
REASONING

Lifecycle support Knowledge about the


application domain
SOFTWARE
TECHNOLOGIES

The two most important are:

• Structured development technologies


• Object-oriented technologies
TECHNOLOGY
STRUCTURED
Structured development technologies are the most conventional of those used today.
They have arisen from the evolution of structured programming ideas (more than twenty-
five years ago) towards the initial phases of the life cycle.

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.

The decomposition into functions makes it difficult for the designer to


maintain the relationship with the real-world objects on which the user's
requirements are generally modified.

Object-oriented decomposition methods constitute the most influential


trend observed in software systems engineering in recent years.

By them we refer to a set of methods (still in the development or


evolution phase) that allow the analyst and designer to conceive their
system by identifying classes of objects, permitted operations and
relationships between them as a basis for the structure of the system to
be designed.
What are the advantages of an object-oriented
language?
• Encourages code reuse and extension.
• It allows to create more complex systems.
• Relate the system to the real world.
• Facilitates the creation of visual programs.
• Prototype construction
• Streamline software development
• Facilitates teamwork
• Facilitates software maintenance
CASE TOOLS

We use computers in our lives without thinking about it.

• TV's, microwaves, ATMs, etc.

Since the creation of software began, the need arose for tools that
automate the process.

Translators, compilers, assemblers, macro processors, etc.


• These applications caused a huge demand for developing software.

A large amount of software was created that needed maintenance and


updating.
It caused a lot of problems for the software industry, since it could not
meet the demand with the methods that were used.

•Software crisis

Methodologies were created to try to create development standards.

In addition, automated support was created for software development


and maintenance,
•Computer Aided Software Engineering (CASE)
WHAT ARE CASE TOOLS?
They are a set of programs and aids that provide
assistance to analysts, software engineers and
developers, during all steps of the Software
development Life Cycle.

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.

It also allows companies to compete more effectively by using these newly


developed systems to compare with their current business needs. In a highly
competitive market, this can make the difference between success and failure.
CASE tools also allow analysts to have more time for analysis
and design and minimize time for coding and testing.
They also allow:

•Verify the use of all elements in the designed system.


• Automate drawing of diagrams.
• Assist in system documentation.
• Assist in creating relationships in the Database.
TO"

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:

•The platforms they support.


•The systems development life cycle phases they cover.
•The architecture of the applications they produce.
•Its functionality.

PHASES OF THE CYCLE


LIFE THEY COVER
Integrated tools, I-CASE (Integrated CASE): cover all phases of the systems
development life cycle. They are also called CASE workbench.

High-level tools, U-CASE (Upper CASE) or front-end, aimed at automating


and supporting the activities carried out during the first phases of
development: analysis and design.

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

I – CASE • Integrate the life cycle. • It is not as efficient for


• It allows achieve important solutions simple, but
improvements of for complex solutions.
productivity to • Depends on hardware and
medium term. Software.
• Allows efficient support to • It's expensive.
System maintenance.
• Maintains the consistency of
Upper CASE • systems at the
It is used on corporate level.it is
PC platform, • Allows quality improvement
applicable to different
of systems, but does not
environments. improve productivity.
• Lower cost. • Does not allow integration
the cycle of life.
Lower CASE • It allows achieve important • Does not guarantee
consistency
improvements of
productivity to of results at the corporate
level.
short term.
• Allows efficient support to • No guarantees efficiency
System maintenance. of Analysis and Design.
• No allows integration
the cycle of life.
ACCORDING TO ITS
FUNCTIONALITY
Management systems planning tools.

Analysis and design tools.

Programming tools.

Integration and testing tools.

Prototype management tools.

Maintenance tools.

Project management 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.

Diagramming and modeling modules: Some of the most frequently used


diagrams and models are:

• Data flow diagram.


• Entity model - interrelationship.
• History of the life of the entities.
• Data Structure Diagram.
• Frame structure diagram.
• Matrix techniques.
Prototyping tool: The main objective of this tool is to be able to show the
user, from the initial moments of design, what the application will look like
once developed.

Code generator: It is normally used on personal computers or


workstations, so the subsequent transfer of the code to the host can cause
problems, having to compile in both environments.

The most important features of code generators are:

• 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.

Some characteristics of the documentation generators are:

•Automatic generation from repository data


•Combination of textual and graphic information
•Generation of cross references.
•Text processing help

You might also like