Tipos de Software
Tipos de Software
Tipos de Software
Software de Sistemas
Programas que han sido escritos para servir a otros programas. Se caracterizan por una fuerte interaccin con el hardware de la computadora Compartir recursos Sofisticada gestin de procesos Estructuras de datos complejas Mltiples interfaces externas Ejemplo: compiladores, editores y utilidades de gestin de archivos, ciertos componentes del sistema operativo, utilidades de manejo de perifricos, procesadores de telecomunicaciones, etc.
4
4
Software de Gestin
El proceso de la informacin comercial constituye la mayor de las reas de aplicacin del software. Han evolucionado hacia el software de sistemas de informacin de gestin (SIG) que accede a una o ms bases de datos que contienen informacin comercial Por ejemplo: nminas, cuentas de haberes-dbitos, inventarios, etc. Se realizan tareas convencionales de procesamientos de datos
6
6
Software empotrado
Reside en memoria de slo lectura Se utiliza para controlar productos y sistemas de los mercados industriales y de consumo Ejecuta funciones muy limitadas Ejemplo: El control de las teclas de un horno de microondas, control de la gasolina de un automvil, sistemas de frenado, etc.
8
8
12
12
13
Interoperable (Interoperability) Productivo (Productivity) A tiempo (Timeliness) Visible (Visibility) Cohesivo Desacoplado Comprensible (Understandability) Mantenible (Maintainability)
15
Correcto
Un software es correcto si se comporta de acuerdo a su especificacin La definicin supone:
La existencia es una especificacin de requisitos. La posibilidad de determinar sin ambigedad la correspondencia entre la especificacin y el diseo.
Especificacin de Requerimientos
Diseo
16
Confiable
El software se comporta de acuerdo con lo esperado por el usuario. A diferencia de la correccin, la confiabilidad es algo relativo. El mercado puede admitir algunos errores en el software siempre que en general se comporte en forma esperada. La confiabilidad es relativa: un SW puede an ser confiable si la consecuencia de un error no es seria; o si la cantidad de errores por unidad de tiempo no es alta.
Correcto
Confiable
17
Robusto
Un software es robusto si se comporta en forma razonable an en situaciones no anticipadas.
Datos de entrada incorrectos o fallas de hardware son las situaciones mas frecuentes. La cantidad de cdigo que se dedica a hacer el software robusto depende de la experiencia de los usuarios o lo crtico de su misin. Si algo se especifica como requerimiento, cumplirlo es cuestin de correccin; si no est en los requerimientos es cuestin de robustez.
18
Eficiencia-Performance
Un sistema de software es eficiente si usa sus recursos en forma econmica.
Muy lento baja la productividad de los usuarios. Usa mucho disco puede ser muy caro ejecutarlo. Usa mucha memoria puede afectar la performance de otros sistemas
Los criterios de eficiencia varan con la tecnologa y el tiempo. Mtodos de evaluacin de performance:
Monitoreo Anlisis Simulacin
Usualmente es muy difcil mejorar considerablemente el performance sin redisear. No es bueno evaluar el performance slo despus que el producto est listo, sino durante todo el proceso.
19
Amigable
Un software es amigable si sus usuarios lo encuentran fcil de utilizar.
La interfaz con los usuarios es parte esencial de ser amigable Depende de los usuarios: Novicios: lo mejor son largos mensajes explicativos Expertos aprecian los atajos.
Otros factores importantes para lograr esta cualidad son la facilidad en la configuracin y el proceso para realizar una tarea.
20
Verificable
El software es verificable si sus propiedades pueden ser comprobadas.
La correccin y el performance pueden verificarse fcilmente La verificacin puede hacerse mediante el anlisis o testing.
Tambin se verifica: Monitoreos de cdigo Diseo modular Disciplina en la codificacin Lenguaje de programacin adecuado.
21
Reusable/Re-utilizable
Software ya construido se usa con pocos o
ningn cambio.
La reutilizacin es mas apropiada para componentes que para sistemas completos
Las bibliotecas (libreras) cientficas FORTRAN son los ejemplos ms conocidos y Java APIs son ejemplos ms nuevos. Debe apuntarse a ella desde el diseo. La reutilizacin es una cualidad difcil (imposible) de conseguir a posteriori. La orientacin a objetos tiene potencial para mejorar la reutilizacin y la evolucin.
22
Portable
Un SW es portable si puede ejecutarse en distintos ambientes (hardware, sistemas operativos, etc.)
Una forma de lograr portabilidad es suponer la mnima configuracin.
Esto penaliza los sistemas que podran ejecutarse mejor haciendo uso del ambiente disponible. Otra opcin es determinar sobre la marcha las disponibilidades del ambiente.
23
Interoperable
Un sistema es interoperable si puede coexistir y cooperar con otros sistemas.
Las componentes reutilizables son interoperables. La estandarizacin de las interfaces promueve la interoperabilidad. Los sistemas abiertos son casos tpicos de sistemas interoperables.
24
Productivo
La productividad es la eficiencia del proceso de desarrollo del software.
La productividad de un equipo de desarrollo es generalmente menor que la suma de las productividades individuales. Existen mtricas para medir la productividad (LOCK, puntos de funcin, etc.) La automatizacin y el soporte del software de desarrollo aumenta la productividad.
25
Visible
Un proceso de desarrollo de software es visible si todos sus pasos estn claramente documentados, y se puede saber su estado de avance en cada momento.
Diseo, testing, codificacin e integracin pueden suceder simultneamente, pero deben coordinarse.
La visibilidad ayuda a evaluar el impacto de las decisiones. Tambin es esencial rotacin en el personal. cuando existe
26
Cohesin
Medida de la relacin entra las partes de un componente.
Diferentes tipos:
Coincidental: No relacionados.
Lgica: Funciones similares.
Acoplamiento
Mdulo Mdulo B Mdulo D
A Mdulo C
Mdulo A Datos A
Mdulo C Datos C
Mdulo D Datos D
28
Comprensible
Un sistema es comprensible si es fcil de comprender cmo funciona.
Caractersticas que afectan la comprensibilidad del sistema
*Complejidad
Si un sistema es comprensible, es tambin ms Mantenible y verificable. Desde un punto de vista del usuario, ser comprensible es ser amigable y robusto.
29
Mantenible
Un sistema es Mantenible si es fcil modificarlo.
Tipos de mantenimiento: *Correctivo (aprox. 20%) *Adaptativo (aprox. 20%) *Perfectivo (aprox. 50%) Software Mantenible: *Reparable : que permite corregir defectos, *Evolucionable: facilita la introduccin de nuevas funcionalidades Condiciones *Nmero de componentes, *Acoplamiento *Documentacin: Completa, Comprensible o al da.
Evolucionabilidad
Un SW es evolucionable si permite cambios que lo hacen capaz de satisfacer nuevos requerimientos. Se logra mediante modularizacin; los sucesivos cambios tienden a reducir la modularizacin. El diseo original y cada cambio deben hacerse con esta cualidad en mente.
31
A tiempo
El proceso de desarrollo debe obtener su producto en el tiempo planeado.
Tener el producto a tiempo da una mejor oportunidad comercial, y a veces hace que el producto sea til o intil.
Planificacin
Estimacin del trabajo Hitos verificables (metas parciales)
32
Bibliografa
Pressman, Roger. (2002). Ingeniera del Software. Un enfoque prctico. 5ta. Ed. Mc Graw Hill: Espaa.
33