Está en la página 1de 6

Características del Software

1. El software se desarrolla - no se manufactura


2. El software no se "descompone"

La mayoría del software se hace a la medida. No se ensambla de


componentes
Mitos del software

Mito: Si fallamos en la planificación podemos añadir más programadores


y recuperar el tiempo perdido.
Realidad: Ley de Brooks: "Agregar gente a un proyecto atrasado, lo
atrasa aún mas".
Razón: Crear software no es una tarea particionable, como dice el
Principio de Brooks: "Gestar a un bebé tarda 9 meses, no importa cuántas
mujeres sean asignadas a la tarea."

Mito: Una declaración general de los objetivos es suficiente para


comenzar a escribir los programas; podemos dar los detalles más
adelante.
Realidad: Una mala definición inicial es la principal causa del trabajo en
vano. Es esencial una descripción formal y detallada del ámbito de la
información, funciones, rendimiento, interfaces y criterios de validación.
Esto solo puede determinarse después de una exhaustiva comunicación
entre el cliente y el analista. Ver siguiente mito.

Mito: Los requisitos del proyecto cambian continuamente pero los


cambios pueden acomodarse fácilmente.
Realidad: El impacto del cambio varía según el momento en el que se
introduzca:

Etapa de desarrollo Costo del Cambio


Definición $X
Desarrollo $1.5X hasta $6X
Después de la entrega $60X hasta $100X

Mito: Una vez que hicimos el programa y funciona, nuestro trabajo ha


terminado.
Realidad: Los datos industriales indican que entre el 50% y el 70% de
todo el esfuerzo dedicado a un programa se realizará después de que se
le haya entregado al cliente por primera vez.
Mito: No hay forma de comprobar la calidad del software hasta
que esta corriendo.
Realidad: Hay técnicas que se pueden aplicar desde el principio.
Y ese es el objetivo de la ingeniería de software y del curso.

Ingeniería de Software

Definición

Estrategia para desarrollar software de alta calidad.

¿Software de alta calidad?

1. Util (al cliente)


2. Portable
3. Mantenible
4. Confiable
5. Tenga integridad - resultados correctos con alto grado de exactitud
6. Eficiente
7. Consistencia de función
8. Accesible (al usuario)
9. Buena ingeniería humana - fácil de aprender y usar

El término "ingeniería de software" se acuñó en 1967 por un grupo de


estudio de la OTAN (Organización del Tratado del Atlántico Norte) para
significar "el establecimiento y uso de principios establecidos de
ingeniería con el objetivo de obtener software económico que sea
confiable y trabaje eficientemente en computadoras reales". Este punto
de vista se opuso a la "magia" de la programación en un esfuerzo de
cambiar el desarrollo de software de "mágico" (que sólo unos pocos
escogidos pueden hacer) a "arte" (que los talentosos pueden hacer) a
"ciencia" (que supuestamente cualquiera puede hacer).

Esta premisa fué avalada por la Conferencia de Ingeniería de Software de


la OTAN en 1968, que concluyóo que la ingeniería de software debería
usar las filosofías y paradigmas de la ingeniería establecida para lo que
aún entonces ya era una crisis del software

¿Por qué surgió la ingeniería de software?

En pocas palabras, por la crisis del software

• Errores costosos por fallas en el software:


o Voyager
o Accidente nuclear de Chernobyl
o Accidente nuclear de Three Mile Island
o Tarjetas tragadas por los cajeros automáticos
• Problemas para estimar tiempo, esfuerzo y costos de los sistemas.
• Un estudio de 1979 sobre proyectos del gobierno de USA demostró
que:
o 2% trabajaron
o 3% pudieron trabajar después de algunas correcciones
o 45% fueron entregados y nunca pudieron ser usados
o 20% se usaron despues de ser casi vueltos a hacer o fueron
abandonados
o 30% fueron pagados y nunca entregados

¿ Por qué es importante la ingeniería de software?

• Altos costos en el software.


• Necesidad de incrementar la productividad.
• Los sistemas son cada vez más grandes y complejos:
o NASA
o Sistemas financieros
o Iniciativa de defensa estratégica: "Star Wars"
• Cambios en la relación de costos del software y hardware.
o Principios de los 60's: 80% hardware y 20% software
o Mediados de los 60's: 50%-60% hardware y 50%-40%
software
o Finales de siglo: menos de 20% hardware y más del 80%
software
• Importancia del mantenimiento. A veces cuesta el doble que el
desarrollo.

La mayor parte del dinero gastado en software se gasta en actividades de


mantenimiento. Hay una amplia variación en la práctica de la ingeniería de
software. Una distribución típica de uso de tiempo en la creación de un
sistema de software, muestra que el 40% del tiempo se gasta en las
pruebas, 35% en el diseño, 20% en la implementación y 5% en el
desarrollo conceptual y análisis de requerimientos. Si tenemos en cuenta
que la mayor parte de los errores típicos (60% a 70%) en un producto son
errores de especificación o de análisis, no es raro que los sistemas
cuesten el doble del costo estimado y tarden en completarse muchos
años más de los planeados.

Wasserman lista siete factores que según él han alterado la práctica de la


ingeniería de software.

1. Tiempos reducidos y limitados para productos comerciales.


2. Decremento de los costos de hardware e incremento en los costos
de desarrollo y mantenimiento.
3. Computación de escritorio.
4. Redes de área local (LANs) y ancha (WANs).
5. Tecnología de objetos.
6. Interfaces gráficas de usuario (GUIs).
7. Decremento de la viabilidad del modelo de la cascada (waterfall).

Luego sugiere ocho nociones fundamentales que forman la base de lo


que el cree es una disciplina efectiva de ingeniería de software.

1. Abstracción.
2. Métodos y notaciones de análisis y diseño.
3. Hacer prototipos de la interface de usuario.
4. Arquitectura del software.
5. Proceso del software.
6. Reutilización.
7. Medidas de metas de mejoramiento.
8. Herramientas y medio-ambientes integrados.

¿Cómo se construye el software?

Crear el software requiere que el sistema se divida de tal forma que las
partes sean compatibles. La creación de software se puede caracterizar
por una serie de pasos que van desde los conceptos exploratorios hasta
su retiro final; esta serie de pasos se refieren generalmente como el ciclo
de vida del software. En general, independientemente del modelo de ciclo
de vida, los pasos se puede agrupar en tres fases:

1. Definición. Intenta responder a la pregunta ¿Qué hace el software?.


o Qué información será procesada.
o Qué función y rendimiento se desea.
o Qué interfaces serán establecidas.
o Qué restricciones de diseño existen.
o Qué criterios de validación se necesitan para definir un
sistema correcto.
2. Desarrollo. Intenta responder a la pregunta ¿Como lo hace?.
o Algoritmos.
o Estructuras de datos.
o Arquitectura de software.
o Interface de usuario.
3. Mantenimiento. Se centra en el cambio asociado a la corrección de
errores, adaptaciones y requisitos cambiantes. Hay cuatro clases
de cambios:
o Corrección. Corrige los errores (bugs) que se hayan colado a
través del proceso.
o Adaptación. Modifica el software para adaptarlo a los
cambios de su medio ambiente. Por ejemplo, nuevas reglas
de la empresa, nuevo CPU o sistema operativo.
o Mejora. Modifica el software agregándole nuevas funciones
no especificadas en los requisitos originales.
o Prevención. Hace cambios en el programa para que se pueda
corregir, adaptar y mejorar más fácilmente. También se le
conoce como reingeniería del software.

También podría gustarte