Escolar Documentos
Profissional Documentos
Cultura Documentos
Software
4. JUICIO
Los Ingenieros de Software deberán mantener la
integridad e independencia en sus juicios profesionales.
5. ADMINISTRACIÓN
Los gerentes y lideres ingenieros de software deberán
suscribir y promocionar un enfoque ético en la
administración del desarrollo y mantenimiento del
software.
6. PROFESIÓN
Los Ingenieros de Software deberán mantener la
integridad y reputación de la profesión de acorde al
interés público.
Continuación......
7. COLEGAS
Los Ingenieros de Software debén ser imparciales y apoyar
a sus colegas.
8. PERSONAL
Durante toda su existencia, los ingenieros de software
Confidencialidad
El ingeniero de software deberá respetar la
confidencialidad de sus empleadores o clientes
independientemente de que hayan firmado un
acuerdo de confidencialidad.
Competencia
El ingeniero de software no debe falsificar su nivel
de competencia. No debe hacer trabajos que
esten fuera de su capacidad.
Continua..................
Derecho de propiedad intelectual
Los ingenieros de software deben estar
pendientes de las leyes locales que gobiernan el
uso de la propiedad intelectual, como patentes,
copyright etc. Deben asegurarse de que la
propiedad intelectual de los empleadores y
clientes este protegida.
Uso inapropiado de los computadores
Los ingenieros de software no deben utilizar sus
habilidades técnicas para utilizar de forma
inapropiada los computadores.
¿Cómo surge la Ingeniería del Software? (I)
Inspeccionar el código
Mantenibilidad
El software debe escribirse de tal forma que pueda
evolucionar para cumplir las necesidades de cambios de
los clientes
Confiabilidad
Fiabilidad, seguridad, protección.
Eficiencia
Software no debe hacer que se malgasten los recursos
del sistema, memoria, ciclos de procesamientos.
Tiempos de respuestas y de procesamiento.
Usabilidad
El software deberá ser fácil de utilizar, sin esfuerzo
adicional por el usuario.
El Proceso de Construcción de Software
Proceso
Software
Qué es el proceso software?
Especificación de requisitos
Código
Proceso de construcción
Obtención Diseñar
Codificar Probar
requisitos sistema
Requisitos
Diseño
Codificación
Prueba
Operación
Modelo de Ciclo de Vida Clásico o en Cascada (ii)
Royce-1970
Orden lineal en las transiciones entre fases
Vuelta atrás al detectar Equivocaciones
Asume que:
Los requisitos se pueden conocer completamente y sin
ambigüedad al principio del proceso de desarrollo
Los requisitos no varían
Cada etapa implica una revisión
No se pasa a la siguiente etapa hasta que se completa la
actual
Modelo de Ciclo de Vida Clásico o en Cascada (iii)
Implica que:
Los requisitos pueden quedarse obsoletos
No hay un ejecutable que enseñar al
usuario hasta el final
99% de recursos consumidos - errores
irremediables
Coste de cada etapa
Según Boehm (1975):
Tipo de Sistema Req y Diseno Implementar Pruebas
Sistemas de Control 46 20 34
Sistemas especiales 34 20 46
Sistemas Operativos 33 17 50
Sistemas científicos 45-53 27-36 15-23
Sistemas de Gestión 44 28 28
Modelo de Ciclo de Vida Evolutivo
Cuándo:
El cliente no sabe bien lo que quiere
No se comprende bien lo que quiere
No se está seguro de la viabilidad de la solución
Objetivo: producir una versión de
funcionalidad reducida en las fases iniciales
del proceso de desarrollo
En papel, describiendo la interacción
Ejecutable: (un prototipo que funcione) tiene su propio ciclo de
vida
El prototipo es evaluado por el usuario y se
refina la especificación de requisitos
Tipos de Prototipos
Desechable:
sólo se incorporan los aspectos peor entendidos o dudosos
desarrollo ‘quick and dirty’
Prototipo evolutivo:
el prototipo se desarrolla rigurosamente
fácil de ampliar y modificar
se van incorporando las partes mejor entendidas
Prototipado
Etapas:
Análisis preliminar y especificación de requisitos
Diseño e implementación del prototipo
Prueba del prototipo
Refinamiento iterativo del prototipo
Refinamiento de la especificación de requisitos
Diseño e implementación del sistema final
Modelo de Ciclo de Vida Iterativo
Incremental
Espiral
Modelo de Ciclo de Vida en Espiral (i)
Costes acumulados
Evaluación de alternativas,
Determinación de objetivos, identificación de riesgos
alternativas, restricciones
Análisis
deriesgo
Análisis
deriesgo
Análisis
deriesgo
Análisis Prototipo Prototipo Prototipo
deriesgo
Revisión Prototipo operativo
Boehm - 1986
Enfoque dirigido por el riesgo. En cada ciclo
se hace un análisis de riesgo:
identificar situaciones que pueden causar el
fracaso
centrarse primero en los aspectos de mayor riesgo
Tipos de ciclos:
Internos: prototipado
Externos: clásico
Proceso unificado de desarrollo RUP
RUP
• Es un proceso de desarrollo de software
• Dirigido por casos de uso
• Centrado en la Arquitectura
• Iterativo e Incremental
Especificación de requerimiento.
Validación de requerimiento.
El proceso de ingeniería de requisitos
Feasibility Requirements
study elicitation and
analysis
Requir ements
specification
Feasibility Requirements
report validation
System
models
User and system
requirements
Requirements
document
Diseño de Software e implementación
de la especificación.
Implementación
Traducir esta estructura en un programa
ejecutable
Las actividades de diseño e implementación están
Requirements
specification
Design activities
Software Data
System Interface Comp onent Algorithm
specification structure
architecture specification specification specification
specification
Design products
Metodos de Diseño
Aproximación sistemática para desarrollar un
diseño de software.
El diseño es usualmente documentado como
un conjunto de modelos gráficos (artefactos)
Tipos de modelos
Modelo Data-flow
Modelo Entity-relation-attribute
Modelo estructurado
Modelo de Objeto.
Programación and depuración
(debugging)
Traducir un diseño en un programa y eliminar
los errores de ese programa.
La programación es una actividad personal no
hay un proceso generico.
Los programadores llevan a cabo algunas
pruebas del programa para descubrir fallos en
él y eliminar estos fallos en el proceso de
depuración
El proceso de depuración.
Unit
testing
Module
testing
Sub-system
testing
System
testing
Acceptance
testing