Está en la página 1de 27

Ingeniería de Software

Introducción
Introducción

 Ingeniería de software tiene que ver con


teorías, métodos y herramientas para el
desarrollo profesional de software.
 Las economías de TODAS las naciones
desarrolladas dependen del software
 Más y más sistemas están controlados por
software
Ejemplos de fallos
 British Airways se enfrentó a una falla mundial masiva que
la llevo a cancelar todos los vuelos de Heathrow y Gatwick
en mayo de 2017.
 En 2016, HSBC se convirtió en el primer banco en sufrir
un corte de TI importante. Millones de clientes del banco
no pudieron acceder a cuentas en línea durante dos días.
 En 2015, un problema provocó que más de 3.200
prisioneros estadounidenses fueran liberados antes de
tiempo.
Ejemplos de fallos de software
 911 no estaba disponible durante seis horas en siete estados de
EEUU en abril de 2017. 6.000 personas hicieron llamadas al 911
que no pudieron conectarse en Washington y partes de otros
seis estados.
 Mayo de 2017, Fiat retiró más de un millón de camiones debido
a un problema de software que estaba relacionado con al
menos un accidente mortal. Un código erróneo que deshabilitó
temporalmente las bolsas de aire y la funcionalidad del cinturón
de seguridad.
Crisis del software

Causas:
 Hardware más potente.

 Mayor demanda.

 Falta de metodologías y técnicas.

 Uso inadecuado de recursos.

 Sistemas más complejos.

 Poca información de los desarrolladores.


Crisis del software
Síntomas:
 Baja productividad de los desarrolladores en relación a la
demanda.
 Los sistemas no responden a las expectativas de los
usuarios.
 Los programas fallan a menudo.
 La calidad no es adecuada.

 Costes a menudo sobrepasan lo esperado.


 Mantenimiento costoso y complejo.

 Plazos no se cumplen.

 Difícil cambiar de plataforma.

 No hay aprovechamiento óptimo de recursos.


Crisis del software
Consecuencias:
 Baja productividad.

 Baja calidad.

Solución:
 Aplicar la Ingeniería del Software en la

construcción de Sistemas Informáticos.


 La necesidad de un enfoque de ingeniería en el
desarrollo del software fue propuesta en una
conferencia de la OTAN en 1968.
Desarrollo profesional de
software
 Es bastante fácil escribir programas de
computadora sin utilizar métodos
y técnicas de ingeniería de software
 ¿por qué es necesaria la separación
entre programación amateur y
desarrollo profesional de software?
Atributos de buen software
 Mantenibilidad El software debe evolucionar
para satisfacer necesidades cambiantes
 Confiabilidad y seguridad El software debe
ser fiable, no causar daños físicos o econónicos.
Seguro ante accesos no deseados.
 Eficiencia El software no debe hacer uso
dispendioso de los recursos del sistema
 Usabilidad El software debe ser usable por los
usarios para los cuales fue diseñado
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:
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 -IEEE 90.
Tipos de software
 Software de sistemas.
Es un conjunto de programas diseñado para servir a otros
programas. (sistema operativo, compiladores )
 Software de tiempo real
Coordina, analiza y controla sucesos del mundo real
conforma ocurren. Sistema meteorológico,
 Software de gestión
Facilitan operaciones comerciales para gestionar la toma de
decisiones (Procesamiento de transacciones en puntos de
venta, sistema de inscripciones, etc)
 Software de ingeniería y científico.
Caracterizado por el manejo de números. ( abarcan áreas
desde la biología hasta la dinámica orbital)
Tipos de software
 Software empotrado.
Son los que residen en memoria de solo lectura, y se utiliza
para controlar productos de sistemas de los mercados
industriales. (Microondas, maquinas expendedoras de
refrescos, cajeros, etc)
 Software de computadoras personales
Procesadores de textos, hojas de cálculo, etc.
 Software basado en web
Todos los programas que funcionan en Internet
 Software de Inteligencia Artificial
Hace uso de algoritmos no numéricos para resolver
problemas complejos, (redes neuronales, sistemas
expertos, etc)
Mitos o Realidad del software?
 Si fallamos en la planificación, podemos añadir mas
programadores y adelantar el tiempo perdido.
 Una declaración general de los objetivos es
suficiente para comenzar a escribir los programas
 Los requisitos del proyecto cambian continuamente,
pero los cambios pueden acomodarse fácilmente
ya que el software es flexible.
 Una vez escribimos el programa y hacemos
funcione nuestro trabajo ha terminado.
 Lo único que se entrega al terminar el proyecto es
el programa funcionando.
Una visión general de la
ingeniería de Software
El trabajo de la ingeniería de software se puede dividir en tres fases genéricas:
 Fase de definición.
Se centra en el qué. Intenta identificar que información va ha ser procesada, que función
se desea, que comportamiento se quiere, que interfases van ha ser establecidas, y que
criterios de validación se necesitan para definir un sistema correcto.
 Fase de desarrollo
Se centra en el como. Intenta definir como van a diseñarse estructura de datos, como han
de implementarse las funciones, como ha de traducirse el diseño en un lenguaje de
programación.
 Fase de mantenimiento.
Se centra en el cambio que va asociado a la corrección de errores. Se conocen 4 tipos de
cambios
Corrección. Cambia el software para corregir errores
Adaptación. Produce cambios para adaptarlo a los cambios de su entorno
externo.(por ejemplo CPU, Sistema Operativo)
Mejora. Lleva al software mas allá de los requisitos funcionales originales
Prevención. Hace cambios a fin de que se puedan corregir y adaptar y mejorar
mas fácilmente.
Modelos de construcción del
software
 Una representación simplificada de un proceso de
software
 Un proceso de software es un conjunto de actividades
cuyas meta es el desarrollo o evolución de software
 Actividades genéricas en todos los procesos del
software son:
 Especificación - qué debe hacer el sistema y sus restricciones
de desarrollo
 Desarrollo - producción del sistema de software
 Validación - verifica que el software es lo qué el cliente quiere
 Evolución - cambia el software en respuesta a demandas de
cambio
Modelos de construcción del
software
 Algunos modelos de construcción de
software son:
 Modelo de construcción de Prototipos
 Modelo en Cascada (lineal secuencial)
 Desarrollo Incremental
 Integración y Configuración
 Modelos Ágiles de desarrollo
 Programación Extrema
 Modelado Ágil
 Scrum
 Kanban
 RUP, …etc
Modelo de construcción de
prototipos
 Comienza con la recolección de requisitos. El
cliente y el desarrollador encuentran y definen
los objetivos
 Entonces aparece un diseño rápido que se
centra en una representación de los aspectos del
software que serán visibles al usuario.
 Este diseño rápido lleva a la construcción de un
prototipo. El prototipo lo evalúa el
cliente/usuario, y se utiliza para refinar los
requisitos del software a desarrollar.
Modelo de construcción de
prototipos
Lo ideal seria que el prototipo sirva como
mecanismo para identificar los requisitos del
software., ya que el la mayoría de los proyectos el
primer sistema a penas se puede utilizar, puede
ser demasiado lento y torpe para su uso. El
prototipo se recomienda tirar.
Desventajas
Cuando se informa a cliente que el producto se
debe construir otra vez, el cliente no entiende y
pide solo unos pequeños ajustes para hacer que
el producto funcione
Modelo en cascada (lineal
secuencial)
Características.
 Los proyectos raras veces
Definición de
requisitos

siguen el modelo
secuencial. Diseño del sistema
y del software

 A menudo es difícil que el


cliente exponga Implementación y
explícitamente todos los pruebas de unidades

requisitos
 Una versión del programa Pruebas del sistema

no esta disponible hasta


que el proyecto este muy Funcionamiento y
avanzado mantenimiento
Modelo en cascada (lineal
secuencial)
Desventajas
 El inconveniente del modelo de Definición de

cascada es la dificultad de
requisitos

acomodar cambios después Diseño del sistema

que el proceso está en marcha y del software

 Partición inflexible del proyecto


en fases distintas. Esto hace Implementación y

difícil responder a
pruebas de unidades

requerimientos cambiantes del


cliente Pruebas del sistema

 Por eso, este modelo es sólo


apropiado cuando los
requerimientos están bien
Funcionamiento y
mantenimiento

entendidos
Desarrollo Incremental
 Se divide en “incrementos” o “fases”, también llamado
“Desarrollo en Fases”
Ventajas del Desarrollo
Incremental
 Se reduce el costo de acomodar los cambios en los
requisitos.
 El trabajo es mucho menor que en el modelo en

cascada
 Es más fácil obtener retroalimentación del cliente
sobre la parte del desarrollo terminado
 El cliente puede ver el avance del proyecto y realizar

comentarios en las demostraciones


 Se pueden realizar entregas más rápidas de software que
puede ser útil para el cliente
 El cliente puede usar y ganar valor con el software

de forma más temprana que con el modelo en cascada


Desventajas del Desarrollo
Incremental
 Si los sistemas son desarrollados de forma rápida, es difícil
mantener la trazabilidad de documentos entre una versión
y otra. Además, no es eficiente producir documentación que
refleje cada versión del sistema
 La estructura del sistema tiende a degradarse con cada
incremento
 Los cambios regulares tienden a corromper la estructura

del sistema
 Tiempo y dinero son invertidos en la refactorización del

sistema
 A medida que pasa el tiempo, incorporar los cambios se

torna difícil y costoso


Métodos ágiles
 Tienen en común el desarrollo incremental,
pequeñas entregas con ciclos rápidos, cooperativo
(desarrolladores y usuarios trabajan juntos)
adaptativos ( capaz de incorporar cambios). La
clave de los MAS son la velocidad y la simplicidad.
Entre ellos tenemos:
 Programación Extrema(XP).,
 Scrum,
 Evolutionary Project Development(FDD),
 Racional Unified Processs(RUP),
 Dynamic Systems Development Method (LSD),
 Agile Moldeling
Integración y Configuración
 Está basado en la reutilización de componentes de
software o COTS (Commercial-off-theshelf), los cuales
son integrados en el sistema a construir
 Los componentes en general tienen que ser

configurados para adaptar su comportamiento y


funcionalidad a los requerimientos del cliente
 La reutilización de componentes es hoy en día un

enfoque estándar para la construcción de muchos tipos


de sistemas de negocio
Integración y configuración
Ventajas y Desventajas de
Integración y Configuración
 Se reducen costos y riesgos ya me que menos
software se desarrolla desde cero.
 Desarrollo y entrega del producto más rápida.
 Puede que el sistema no cumpla con las necesidades
reales del cliente (o las cumpla parcialmente).
 Se pierde control sobre la evolución de los
elementos reutilizados en el sistema.

También podría gustarte