Академический Документы
Профессиональный Документы
Культура Документы
La ingeniera de software es una aplicacin prctica del conocimiento cientfico para proveer metodologas y tcnicas que ayuden a
desarrollar sistemas de software a tiempo, y a su vez que aseguren que el desarrollador cumpla con las expectativas de calidad y
permanezca dentro del presupuesto.
2.2. HISTORIA DE LA ING DE SW
El termino de ingeniera de software empez a usarse a finales de los 60, en octubre de 1968, segn Alan Davis como "la aplicacin
inteligente de principios probados, tcnicas, lenguajes y herramientas para la creacin y mantenimiento, dentro de un coste razonable,
de software que satisfaga las necesidades de los usuarios".
Su origen se debi a que el entorno de desarrollo de sistemas software adoleca de:
Retrasos considerables en la planificacin, Poca productividad, Elevadas cargas de mantenimiento, Demandas cada vez ms desfasadas frente a las
ofertas, Baja calidad y fiabilidad del producto, Dependencia de los realizadores
Cmo se define crisis?
La palabra crisis "un punto decisivo en el curso de algo; momento, etapa, o evento decisivo o crucial". Para el software no ha habido
ningn punto crucial, slo una lenta evolucin.
La crisis en la industria del software permanece durante muchos aos, Lo que si se podra decir es que hay un problema crnico en el
desarrollo de software.
debido a la falta de: Formalismo y metodologa, Herramientas de soporte
Actualmente la evolucin de la Ingeniera del Software, tiene nuevos mtodos y herramientas formales que van a permitir en el futuro
un planteamiento de ingeniera en el proceso de elaboracin de software.
Dicho planteamiento permitir dar respuesta a los problemas de:
- Administracin
- Calidad
- Productividad
- Fcil mantenimiento
Este ltimo es uno de los grandes problemas, pues puede llegar a suponer un importe superior al 60% del total del coste del software.
Porque se crea la Ingeniera de Software??
La ingeniera de software se crea debido a las siguientes caractersticas:
Confiable y realizar slo las tareas especificadas en los requerimientos.
El producto debe ser robusto. Esto quiere decir que el software se comporta de manera razonable, incluso en circunstancias no
anticipadas desde el principio.
Reutilizable, de manera tal que pueda ser incorporado en otro producto de software si se requiere.
Eficiente en el uso de los recursos del sistema.
Evolutivo, de forma tal que se pueda agregar funcionalidad adicional sin efectos perjudiciales.
Cumplir con los requerimientos de rendimiento especificados, es decir, debe cumplir algunas de las restricciones relacionadas al
rendimiento.
Portable, es decir que puede trabajar bajo diferentes plataformas de software y ambientes.
El producto de software debe ser utilizable, su uso debe ser los suficientemente sencillo por parte de personas no especialistas.
2.3. CARACTERSTICAS DEL SOFTWARE
El software se desarrolla o construye no se fabrica.
El desarrollo del software y la construccin del hardware son actividades fundamentalmente diferentes.
En ambas actividades la buena calidad se adquiere mediante un buen diseo, pero la fase de construccin del hardware
puede introducir problemas de calidad que no existen (o son fcilmente corregibles) en el software.
Ambas actividades dependen de las personas, pero la relacin entre las personas dedicadas y el trabajo realizado es
completamente diferente para el software.
Ambas actividades requieren la construccin de un producto pero los enfoques son diferentes.
Los costos del software se concentran en la ingeniera. Esto significa que los proyectos de sw no se pueden manejar como si
fueran proyectos de fabricacin.
MODELO EN V
Incluye fases similares a las del modelo en cascada pero de forma jerrquica. En horizontal se representa el avance en el desarrollo y en
vertical el nivel de detalle.
VERIFICACIN, comprobacin de que una parte del sistema cumple con sus especificaciones.
VALIDACIN, comprobacin de que un elemento satisface las necesidades del usuario identificadas durante el anlisis.
PROTOTIPOS
En los modelos clsicos revisin de resultados al final de cada fase para evitar la vuelta atrs, orientados a una forma de desarrollo lineal.
PROTOTIPO, es un sistema auxiliar que permite probar experimentalmente soluciones parciales a los requisitos del sistema
Para que el coste de desarrollo del prototipo sea bajo en relacin al del sistema final podemos:
Limitar las funciones
Limitar su capacidad
Limitar su eficiencia
Evitar limitaciones de diseo, utilizando un hardware ms potente que el que ejecutar el sistema finaL
Reducir la parte a desarrollar
PROTOTIPOS RPIDOS
Su finalidad es solo adquirir experiencia, no se aprovechan como producto (usar y tirar). Se denominan maquetas cuando su
funcionalidad o capacidad es muy limitada.
El sistema final se codifica totalmente partiendo de cero, no se aprovecha el cdigo del prototipo
Lo importante de estos prototipos es que se desarrollen en poco tiempo.
PROTOTIPOS RPIDOS
PROTOTIPOS EVOLUTIVOS
En este caso se intenta aprovechar al mximo el cdigo del prototipo, y para ello se emplea el mismo hardware/software del sistema
final.
Se realizan fases de anlisis y diseo parcial, que se van ampliando hasta construir el sistema final mediante adiciones sucesivas.
Se puede considerar un modelo en cascada en bucle, de manera que en cada iteracin se va avanzando en el desarrollo.
HERRAMIENTAS PARA EL DESARROLLO DE PROTOTIPOS, se emplean lenguajes de 4 generacin, que son de alto nivel y de tipo
declarativo. Tambin se emplean lenguajes de especificacin, como VDM y Z. Si disponemos del compilador correspondiente podemos
obtener automticamente el cdigo del prototipo.
En el desarrollo de prototipos es clave la reutilizacin de software
PROTOTIPOS EVOLUTIVOS
MODELO EN ESPIRAL
Puede considerarse como un refinamiento del modelo evolutivo general que introduce el anlisis de riesgo como elemento fundamental
para guiar la evolucin del proceso de desarrollo.
En la dimensin radial se representa el esfuerzo realizado en el desarrollo (siempre creciente)
En cada iteracin 4 fases:
PLANIFICACIN, determina que parte del desarrollo se abordar en ese ciclo.
ANALISIS DE RIESGO, evaluar diferentes alternativas para esa parte del desarrollo seleccionando la ms ventajosa y
tomando precauciones para evitar los posibles inconvenientes.
INGENIERA, las actividades de los modelos clsicos
EVALUACIN, se analizan los resultados de la fase de ingeniera.
MODELO EN ESPIRAL
Costos de Prevencin
En el costo de prevencin se incluye:
Planificacin de calidad,
Revisiones de tcnicas formales,
Equipo de pruebas,
Formacin.
Costos de Evaluacin
En el costo de evaluacin se incluyen actividades para tener una visin mas profunda de la condicin del producto la primera vez a travs
de cada proceso.
Algunos ejemplos de costos de evaluacin:
Inspeccin en el proceso y entre procesos,
Calibrado y mantenimiento del equipo,
Pruebas.
Costos de Fallo
Los costos de fallo son los costos que desapareceran si no surgieran defectos antes del envi de un producto a los clientes.
Estos costos se pueden subdividir en costos de fallo interno y costos de fallo externo.
Los internos se producen cuando se detecta un error en el producto antes de su envi. Entre estos se incluyen:
Revisin,
Reparacin,
Anlisis de las modalidades de fallos.
Los costos de fallo externo son los que se asocian a los defectos encontrados una vez enviado el producto al cliente.
Algunos ejemplos de costos de fallo externo:
Resolucin de quejas,
Devolucin y sustitucin de productos,
Soporte de lnea de ayuda,
Trabajo de garanta.
Correccin. es la capacidad de los productos de software para realizar con exactitud sus tareas, tal y como se definen en las
especificaciones.
Fiabilidad que un programa lleve a cabo su funcin con la exactitud requerida.
Eficiencia. Es la capacidad de un sistema de software para exigir la menor cantidad posible de recursos hardware.
Integridad. capacidad de los sistemas software de proteger sus diversos componentes contra modificaciones y accesos no autorizados.
Usabilidad Es la facilidad con la cual cualquier personas pueden aprender a usar los productos de software y aplicarlos a la resolucin de
problemas. Tambin cubre la facilidad de instalacin, de operacin y de supervisin.
Facilidad de mantenimiento. El esfuerzo necesario para localizar y arreglar un error en un programa. Flexibilidad. Que se pueda
modificar un programa que ya est en funcionamiento.
Facilidad de prueba. El esfuerzo necesario para probar un programa y asegurarse de que realiza correctamente su funcin.
Portabilidad. Es la facilidad de transferir los productos software a diferentes entornos hardware y software.
Reusabilidad (capacidad de reutilizacin). los elementos de software de servir para la construccin de muchas aplicaciones diferentes.
Interoperatividad. es la facilidad de combinar unos elementos de software con otros.