Sie sind auf Seite 1von 40

Qué es la Ingeniería de Software

Surgimiento

Definiciones

Solución de Problemas

Relación con otras disciplinas

El Software en la sociedad actual

Etica y Responsabilidad

Calidad del Software

Participantes en el Desarrollo

Ingeniería de Software e Ingeniería de Sistemas

Cambios y Tendencias

En los comienzos:

Surgimiento

el programador era el usuario

los problemas a resolver bien conocidos y simples

Desarrollo de las computadoras:

aparece la figura del programador especializado

la mayor potencia de los equipos permite atacar

problemas más complejos

Se habla de la “Crisis del Software”

El término Ing. de Software aparece por 1ra.

vez en 1968

Definiciones

Software: Programas de computador, procedimientos, y

la documentación y los datos posiblemente asociados

relacionados con la operación de un sistema de computador - IEEE 90.

(el

ingeniero) aplica el método y enfoque científico a

la solución de problemas

Ingeniería de Software:(1)aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo,

operación y mantenimiento de software, esto es, la

aplicación de la ingeniería al software - (2)El estudio de enfoques como en (1) - IEEE 90.

Solución de Problemas

Solucionar un problema complejo

Análisis (en subproblemas más simples)

Síntesis de una solución al problema a partir de las soluciones a los subproblemas

Recurriendo a:

Técnicas, Métodos

Herramientas (mejorar resultado o eficiencia)

Procedimientos (combinan métodos y herramientas)

Paradigmas (“estilo” de la solución)

Definiciones

Técnica

Procedimiento técnico para construir o evaluar software que requiere habilidades y produce un resultado técnico, p.e.

probar, codificar, etc.

Método

Es un procedimiento para gestionar la aplicación de técnicas de software (cuándo y cómo aplicar, cuándo comenzar y terminar, qué técnica es apropiada, cómo evaluarla), p.e. plan de prueba,

recopilar requerimientos

Herramienta

Producto de software que facilita la ejecución de una técnica o método

Procedimiento

Combinación de métodos, técnicas y herramientas

Paradigma

Filtro conceptual que determina cómo percibimos/interpretamos

Relación con otras disciplinas

Ciencias de la Computación aporta:

Teorías

Funciones de Computadoras

Cliente trae:

Problema

Ingeniería de Software (2) desarrolla:

Métodos,Herramientas, Procedimientos, Paradigmas

para resolver problemas

Ingeniería de Software (1) resuelve problemas

Aug-16

Ciencias de la Computación

Cliente

Teorías
Teorías
Funciones de las Computa- doras
Funciones
de las
Computa-
doras
Problema
Problema
Cliente Teorías Funciones de las Computa- doras Problema Ingeniería de Software (2) Herramientas y Técnicas para
Cliente Teorías Funciones de las Computa- doras Problema Ingeniería de Software (2) Herramientas y Técnicas para
Cliente Teorías Funciones de las Computa- doras Problema Ingeniería de Software (2) Herramientas y Técnicas para

Ingeniería de

Software (2)

Herramientas y Técnicas para resolver problemas
Herramientas y
Técnicas para
resolver problemas

Ingeniería de

Software (1)

Solución
Solución
y Técnicas para resolver problemas Ingeniería de Software (1) Solución Ing. de Software Qué es la

Ing. de Software

Qué es la Ing. de Sw - 7

Relación con otras disciplinas

Programación -Programa-Producto-Sistema

x3
x3

Un programa

x3
x3

Un sistema de programas

x3
x3

Multiplicación de esfuerzo

x3
x3

Un producto de software

Un producto sistema de programas

Ingeniería: “Construcción de artefactos

cumpliendo con restricciones”

Arte más que Ciencia (hacer más que saber)

Plazo, Costo, Calidad, Otras

Administración Proyectos, Recursos Humanos

Software en la Sociedad Actual

¿Dónde no está presente?

Energía

Comunicaciones

Automóviles

Electrodomésticos Equipos médicos

¿ Crisis del Software?

Etica y Responsabilidad

Repercusiones de fallas en el software:

pérdidas financieras

riesgo a la seguridad

Más allá de las fallas:

Impacto social

Calidad de vida

Cuestiones legales

Ing. de SW ¿una profesión?

SWEBOK IEEE 2004

Software Engineering Body of Knowledge

Código de Ética ACM IEEE-CS

En su versión corta establece…

Los ingenieros de software…

actuarán en forma congruente con el interés social

actuarán de manera que se concilien los mejores intereses de sus clientes y empresarios, congruentemente con el interés social

asegurarán que sus productos y modificaciones correspondientes

cumplen los estándares profesionales más altos posibles

mantendrán integridad e independencia en su juicio profesional

gerentes y líderes promoverán y se suscribirán a un enfoque ético en la administración del desarrollo y mantenimiento de software

incrementarán la integridad y reputación de la profesión

congruentemente con el interés social

apoyarán y serán justos con sus colegas

participarán toda su vida en el aprendizaje relacionado con la

práctica de su profesión y promoverán un enfoque ético en la práctica

de la profesión

Problemas:

Calidad

Plazo Costo respecto a presupuesto

Utilidad Requerimientos oscuros o cambiantes Fallas Rigidez Alto costo de mantenimiento

Riesgos

puede generar un error humano Calidad (falta-falla) ?! que puede generar u n a f
puede generar un error humano Calidad (falta-falla) ?! que puede generar u n a f

puede generar

un error humano

Calidad (falta-falla)

puede generar un error humano Calidad (falta-falla) ?! que puede generar u n a f a

?!

puede generar un error humano Calidad (falta-falla) ?! que puede generar u n a f a

que puede generar

una falta

(interna)

una falla

(externa)

¿Qué es la Calidad?

Visión:

Calidad - Visiones

Trascendente -se reconoce pero no se puede definir del Usuario - adecuación al uso

del Productor- adecuación a las especificaciones

del Producto - características específicas

comportamiento externo (visible para todos)

características internas (normalmente sólo visibles al productor)

basada en el Valor - cuánto estaría dispuesto a pagar

Usuario:

Calidad - Visiones(2)

satisfacer necesidades/expectativas (utilidad,tiempo de respuesta)

esfuerzo necesario (facilidades de aprendizaje y uso)

sin inconvenientes (frecuencia e impacto de fallas)

Implementador:

cantidad y tipo de faltas

facilidad de entender bajo impacto de las modificaciones

Correctness

Correctness

Correctness
Reliability

Reliability

Reliability
Efficiency

Efficiency

Efficiency
Integrity

Integrity

Integrity
Usability

Usability

Usability
Maintainability

Maintainability

Maintainability
Testability

Testability

Testability
Flexibility

Flexibility

Flexibility
Portability

Portability

Portability
Reusability

Reusability

Reusability
Interoperability Aug-16
Interoperability Aug-16

Interoperability

Aug-16

Interoperability Aug-16
Interoperability Aug-16
Interoperability Aug-16
Traceability Completeness Consistency Accuracy Error tolerance Execution efficiency Storage efficiency Access
Traceability
Completeness
Consistency
Accuracy
Error tolerance
Execution efficiency
Storage efficiency
Access control
Access audit
Operability
Training
Communicativeness
Simplicity
Conciseness
Instrumentation
Self-descriptiveness
Expandability
Generality
Modularity
Self-descriptiveness Expandability Generality Modularity Ing. de Software Software system independe Machine
Self-descriptiveness Expandability Generality Modularity Ing. de Software Software system independe Machine
Self-descriptiveness Expandability Generality Modularity Ing. de Software Software system independe Machine

Ing. de Software

Expandability Generality Modularity Ing. de Software Software system independe Machine independence Data

Software system independe

Machine independence
Machine independence

Data Commonality

Communications commonal

Qué es la Ing. de Sw - 17

Calidad - Visiones (4)

según la visibilidad:

factores externos (visibles a todos) factores internos (visibles a los implementadores)

atinentes al:

Producto (una vez que el producto ya existe)

Proceso de Producción (mientras se produce)

Qué relación habrá entre

¿factores internos y externos?

¿factores del proceso y del producto?

Calidad - Visiones(5)

En el contexto del Negocio

Valor Técnico - Valor para el Negocio

Retorno de la Inversión (Negocio)

Período de Repago

Tasa de Retorno Valor Actual de los Flujos de Caja

Retorno de la Inversión (Software)

Factores de Costo, Beneficios

Calidad - Valor para el negocio

Facilities Software costs Hardware costs Materials General Assessments SCE costs IR&D Process Documentation
Facilities
Software costs
Hardware costs
Materials
General
Assessments
SCE costs
IR&D
Process
Documentation
Quality group
Software process group
General
30%
0%
10%
20%
40%
50%
60%
70%
Esfuerzo
Dólares

% de entrevistas

Disparidad de factores considerados en la definición de ROI

en SW entre gobierno de US y sus proveedores

Quiénes participan

Desarrollo a Medida

Cliente (solicita)

Desarrollador construye

Usuario

COTS (Commercial Off The Shelf)

Desarrollador subcontrata parte

Producto “llave en mano”

Personalización

Integración

Patrocina el desarrollo del sistema C L I E N T E $$$, necesidades DESARROLLADOR

Patrocina el desarrollo del sistema

CLIENTE

$$$,

necesidades

desarrollo del sistema C L I E N T E $$$, necesidades DESARROLLADOR USUARIO Usa el

DESARROLLADOR

USUARIO Usa el sistema
USUARIO
Usa el
sistema

Obligación

el
el

sistema

USUARIO Usa el sistema Obligación el sistema contractual Construye Necesidades Sistema de software Aug-16
USUARIO Usa el sistema Obligación el sistema contractual Construye Necesidades Sistema de software Aug-16
USUARIO Usa el sistema Obligación el sistema contractual Construye Necesidades Sistema de software Aug-16
USUARIO Usa el sistema Obligación el sistema contractual Construye Necesidades Sistema de software Aug-16
USUARIO Usa el sistema Obligación el sistema contractual Construye Necesidades Sistema de software Aug-16
USUARIO Usa el sistema Obligación el sistema contractual Construye Necesidades Sistema de software Aug-16

contractual

Construye

Necesidades

Necesidades
Obligación el sistema contractual Construye Necesidades Sistema de software Aug-16 Ing. de Software Qué es la

Sistema de software

Roles de los Desarrolladores

Análisis y Definición de Requerimientos Diseño del Sistema Diseño del programa Implementación del programa
Análisis y Definición de
Requerimientos
Diseño del Sistema
Diseño del programa
Implementación del
programa
Prueba Unitaria
Prueba de Integración
Prueba del Sistema
Liberación del Sistema
Mantenimiento
Aug-16
Ing. de Software
el DesarrolloPaso Softwaredeen

AnalistaAug-16 Ing. de Software el DesarrolloPaso Softwaredeen Diseñador Programador Tester Capacitador Qué es la Ing. de

DiseñadorIng. de Software el DesarrolloPaso Softwaredeen Analista Programador Tester Capacitador Qué es la Ing. de Sw

ProgramadorAug-16 Ing. de Software el DesarrolloPaso Softwaredeen Analista Diseñador Tester Capacitador Qué es la Ing. de

TesterIng. de Software el DesarrolloPaso Softwaredeen Analista Diseñador Programador Capacitador Qué es la Ing. de Sw

CapacitadorAug-16 Ing. de Software el DesarrolloPaso Softwaredeen Analista Diseñador Programador Tester Qué es la Ing. de

Qué es la Ing. de Sw - 23

Ing.Software y de Sistemas

El Software como componente de un sistema:

Hardware Software

Personas

Sistema

Límite

Interacción con el exterior

Componentes y sus relaciones

Sistema de Informes

Sistema de Administración de los datos

Sistema de Comunicación

de ubicaciones remotas a central

Sistema de cálculo de los datos remotos

Sistema de recopilación de datos remotos

Cambios y Tendencias Tecnología de Objetos Problemas con Modelo en Cascada CAMBIOS EN INGENIERIA DE

Cambios y Tendencias

Tecnología de Objetos

Cambios y Tendencias Tecnología de Objetos Problemas con Modelo en Cascada CAMBIOS EN INGENIERIA DE SOFTWARE

Problemas con Modelo en Cascada

Tecnología de Objetos Problemas con Modelo en Cascada CAMBIOS EN INGENIERIA DE SOFTWARE Desktop computing Tiempo
Tecnología de Objetos Problemas con Modelo en Cascada CAMBIOS EN INGENIERIA DE SOFTWARE Desktop computing Tiempo
Tecnología de Objetos Problemas con Modelo en Cascada CAMBIOS EN INGENIERIA DE SOFTWARE Desktop computing Tiempo

CAMBIOS EN

INGENIERIA DE SOFTWARE

con Modelo en Cascada CAMBIOS EN INGENIERIA DE SOFTWARE Desktop computing Tiempo para salir al mercado
con Modelo en Cascada CAMBIOS EN INGENIERIA DE SOFTWARE Desktop computing Tiempo para salir al mercado

Desktop computing

Tiempo para

salir al mercado

Inversión de relación de costo entre HW y SW
Inversión de relación
de costo entre HW y SW
al mercado Inversión de relación de costo entre HW y SW Interfaces Gráficas Interconexión en Redes
al mercado Inversión de relación de costo entre HW y SW Interfaces Gráficas Interconexión en Redes

Interfaces

Gráficas

Interconexión

en Redes

Cambios y Tendencias

Nociones Fundamentales:

Abstracción Métodos y Notaciones para Análisis y Diseño Prototipación Arquitectura del Software

Proceso de Software

Reuso

Mediciones

Herramientas y Ambientes Integrados

Abstracción

es una decripción del problema a cierto nivel de generalización que permite concentrarnos en los aspectos esenciales del problema sin preocuparnos de detalles.

Identificar clases de objetos que permiten agrupar elementos

Formar jerarquías

Abstracción

Dispositivo eléctrico Sensor Sensor de Agua Sensor de Aire
Dispositivo eléctrico
Sensor
Sensor de Agua
Sensor de Aire

Métodos de Notación Análisis y Diseño

Construir Modelos y verificar completitud y consistencia

Usar notación estándar para ayudarnos a comunicar y documentar las decisiones

Prototipos

Construir una pequeña versión de un

sistema para

ayudar al usuario y al cliente a identificar los

requerimientos clave

demostrar la factibilidad de un diseño o enfoque

¿El usuario se siente cómodo con la

apariencia y forma de interacción?

Arquitectura

La arquitectura de un sistema lo describe

en términos de un conjunto de unidades arquitectónicas y de cómo esas unidades

se relacionan entre sí

Existen distintos “estilos arquitectónicos” y distintos enfoques para identificar las unidades arquitectónicas

Arquitectura- cómo descomponer

a partir de las funciones: asignar funciones a

módulos

orientada a los datos: a partir de las

estructuras de datos externas

orientada a eventos

diseño de afuera hacia adentro: basada en

las entradas del usuario al sistema

diseño orientado a objetos: basado en identificar clases de objetos y sus

interrelaciones

Proceso

Proceso de desarrollar software

(organización y disciplina en las actividades)

contribuir a la calidad del software y a la

velocidad con la que se desarrolla

Desarrollo

Controlado

Desarrollo

Rápido

de aplicaciones

Proceso- especificidad

Aplicaciones para toda la empresa o división

Aplicaciones

Departamentales

Mono-usuario, herramientas para PC de escritorio

Mision -critica

Multi -usuario

Multi -plataforma

2- 3-capas

Visión/Alcance limitados

Riesgo bajo/medio

mono/ multi -plataforma

1-2-capas

Paquetes/desarrollo

minimo

Bajo costo/bajo riesgo

plataforma única

Reuso

Sacar partido de los elementos comunes

entre aplicaciones reutilizando elementos de desarrollos previos

Componentes Reusables como bienes de

activo del negocio

Mediciones

Cuantificando dónde estamos y lo que

podemos, describimos nuestras acciones y sus resultados en un lenguaje matemático

común que nos permite evaluar nuestro

progreso.

Herramientas y Ambientes Integrados

Utilizar herramientas para mejorar el

desarrollo de software, ayudan en:

análisis y diseño

registrar el avance

depurar programas probar programas

Preguntas

Brinde al menos una definición de Ing. de software (IS)

¿Cuántos años tiene como disciplina?

¿Con qué otras disciplinas está relacionada?

¿Qué se entiende por “crisis del software”?

¿Cómo afecta a la IS que el software esté

presente en las más diversas áreas?

¿Qué implicancias tiene sobre la ética y

responsabilidad?

¿Qué relación tiene la IS con cuestiones legales?

Preguntas (2)

¿Cuál es la diferencia entre falta (o defecto) y una falla del software?

¿Cuándo es posible evaluar los factores de

calidad externos de un producto de software?

¿Qué problemas plantea la evaluación de los

factores de calidad externos durante el proceso

de desarrollo?

¿Qué nociones fundamentales han persistido?