Definición de Ingeniería de Software
Es el enfoque sistemático para el desarrollo,
operación, mantenimiento y eliminación de software.
Puntos
Clave:
Los procedimientos definen la secuencia
en que se aplican los métodos, los documentos que se requieren, los controles
que permiten asegurar la calidad y las directrices que permiten a los gestores
evaluar los progresos
Objetivo de las organizaciones fabricantes de software
Producir software de buena calidad de una
manera sistemática y predecible.
– Producto
de software:
Es el conjunto de programas (fuentes y ejecutables),
procedimientos, reglas y documentación posible asociada, así como los datos
pertenecientes a la operación del sistema
– Proceso
de software:
Es el conjunto de actividades técnicas y
administrativas necesarias para la fabricación de un producto de software
– Disciplinas
auxiliares:
Ciencias de la computación (Fundamentos
científicos),Administración (Fundamentos para administración de proyectos),
Economía (Fundamentos para estima de recursos y control de costos), Psicología
y técnica de comunicación (Fundamentos de trabajo).
INTERDISIPLINARIO Y BUENA COMUNICACIÓN INTERPERSONAL ENTRE EL
GRUPO Y CLIENTE
–
La ingeniería de software combina:
.Métodos completos para todas las faces
del desarrollo de software
.Mejores herramientas para automatizar estos
métodos.
.Bloques de construcción más potentes para
la implementación de software
.Mejores técnicas para la garantía de calidad
de software
Factores que influyen en la actividad y
productividad del software:
Capacidad
individual, Entendimiento del problema, Comunicación del grupo, Complejidad
del producto, Facilidades y recursos, Metas adecuadas, Nivel tecnológico,
Tiempo disponible.
Categorías de acuerdo al tamaño:
Proyectos triviales
Comprende un programador dedicado medio
tiempo durante algunos días o quizás semanas, surgiendo un programa de aproximadamente
500 proposiciones, utilizando entre 10 y 20 subrutinas.
Productos Pequeños
Necesita un programador dedicado de 1 a
6 meses, resultando un producto de entre 1000 y 2000 líneas de código fuente,
con 25 a 50 rutinas. Aplicaciones para resolver problemas numéricos, generación
de informes, proyectos estudiantiles, etc
Proyectos medianos
De 2 a 5 programadores durante 1-2 años
de trabajo, un código de 250 a 1000 rutinas. Ensambladores, compiladores,
sistemas pequeños de manejo de información, inventarios y control de procesos
Proyectos grandes:
Necesita de 5 a 20 programadores que trabajen
de 1-3 años, generen un producto de entre 50 mil y 100 mil líneas de código,
mediante varios subsistemas. Compiladores de gran tamaño, sistemas pequeños
de tiempo compartido, paquetes de bases de datos, sistemas gráficos y proyectos
para control en tiempo real.
Proyectos muy grandes:
Se realiza entre 100 y 1000 programadores
por tiempo de 4 a 5 años, resultando cerca de 1000000 de líneas de código,
y normalmente con varios subsistemas de los cuales algunos son considerados
como proyectos grandes. Sistemas de procesamiento en tiempo real, sistemas
de telecomunicaciones, grandes sistemas operativos, etc.
Proyectos extremadamente
grandes:
Un producto de esta magnitud incluye de
2000 a 5000 programadores por un periodo de 10 años, para llegar a generar entre 1000000 a 10000000 de líneas de código.
CONCEPTOS DE ADMINISTRACION
Comprenden los métodos para ordenar y seguir
el caso de un proyecto, Estimación de datos, Políticas y asignación de recursos,
Control de presupuesto, Definición de logros del proyecto, Re-asignacion de
recursos y ajustes al calendario de trabajo, etc.
Problemas importantes en la administración del software.
La planeación
es pobre, los procedimientos para seleccionar gerentes son malos, la contabilidad
en proyectos es pobre, la capacidad para estimar correctamente los recursos
para un proyecto es casi nula, y así muchos más eerres.
Posibles Soluciones
Usar estándares,
analiza resultados de proyectos anteriores, establecer prioridades del éxito,
desarrollar estimaciones de costos, selección basándose en sus capacidades
y habilidad técnica, etc.
Mitos de Gestión
Si fallamos
en la planificación, añadimos mas programadores para recuperar el tiempo perdido.
Mitos del Cliente
Una declaración
general de los objetivos es suficiente para empezar los programas, los detalles
luego.
Mitos de los Programadores
Apenas escribimos
el programa y hacemos que funcione, nuestro trabajo ha terminado, lo único que se entrega al terminar el proyecto es el
programa funcionando.
Problemas del Software
Insatisfacción
de cliente por falta de una buena definición de datos requeridos, no se pueden
evaluar con eficiencia las herramientas técnicas estándares a utilizar
Métodos de la Ingeniería de Software
Mejorar
la calidad de los procesos de fabricación de software, al igual que la calidad
de productos de software.
Planeación del Proyecto
Desarrollar
el enunciado definitivo del problema a resolver, Describir la situación actual,
restricciones del problema y las metas que se logran, Justificar una estrategia
de solución computarizada para el problema, Identificar las funciones a realizar,
restricciones, el subsistema de equipo de computo, el subsistema del producto
de programación y el personal.
Para
el desarrollo de una estrategia de solución es deseable:
Esbozar
varias estrategias de solución, sin considerar restricciones, Realizar un
estudio de factibilidad para cada estrategia, Desarrollar una lista de prioridades
para las características del producto.
En la planeación del proceso de desarrollo será adecuado:
Definir el modelo de ciclo de vida de una
estructura organizacional del proyecto.
Planear las actividades de administración
de configuración, control de calidad y validación.
Determinar las herramientas por fase, técnicas
y notación a utilizar.
Establecer estímulos preliminares del costo
para el desarrollo del sistema.
Estimados personales de recursos de computo
necesarios para operar y mantener el sistema.
Preparar glosario de términos
El desarrollo del software esta
formado por:
Los principios: Consideraciones generales y abstractas aplicables
al proceso de construcción y manejo de software. Ejemplo, la Norma ISO 9000-3.
El modelo de ciclo de vida de desarrollo
de software: Conjunto de etapas que
describen el desarrollo de software desde su nacimiento hasta su reemplazo
o eliminación y se compone de tres
grandes faces:
· Definición
· Desarrollo
· Mantenimiento
Método: Formas explícitas para realizar una o varias actividades requeridas.
Los métodos nos especifican cómo
construir técnicamente el software mediante un proceso disciplinado, sistemático
y riguroso para generar un conjunto
de modelos o abstracciones que describen varios aspectos de un sistema de
software en desarrollo, utilizando una notación bien definida
• Un método debe tener:
· Notación
+ semántica
· Algoritmo
para aplicar la notación
· Mecanismo
para medir el avance y decidir cuándo se termina
· Herramienta
de apoyo
Metodología:
Son una colección de métodos aplicados a lo largo del ciclo de vida de desarrollo
de software.
Concepto de ciclo de vida.
Se entiende la sucesión de etapas por las
que pasa el software desde que un nuevo proyecto es concebido hasta que se
deja de usar.
Cada una de estas etapas lleva asociada
una serie de tareas que deben realizarse, y una serie de documentos
(en sentido amplio: software) que serán la salida de cada una de estas fases
y servirán de entrada en la fase siguiente. Entre los modelos existentes están:
Codificar/Corregir
· Codificar primero.
· Análisis, especificaciones, pruebas para después.
· Hay muchos errores de codificación que deben corregirse.
· Falta de
planificación.
· Falsa sensación
de productividad.
· Después
de varias correcciones el programa se queda sin estructura.
· No se produce
documentación.
Aspectos formativos y psicológicos que fluyen para aceptar el modelo Codificar/Corregir:
· Necesidad
del reto, medido en líneas de código.
· Preferencia
por trabajar solo.
· Formación
en solución de problemas deterministicos.
· Aparente
facilidad de las tareas que debe desarrollar el software.
· Creencia
de que con una vaga idea del sistema, se puede codificar.