Está en la página 1de 33

Tipos de Software y sus Cualidades

Unidad de Competencia I Curso Ingeniera de Software

Tipos de software y su desarrollo


Para realizar una tarea en una computadora, es necesario darle instrucciones a travs del software. Software es el nombre asignado a las aplicaciones o programas que se ejecutan en la computadora. El contenido y el determinismo de la informacin son factores importantes a considerar para determinar la naturaleza de una aplicacin de software. El contenido se refiere al significado y a la forma de la informacin de entrada y salida. Algunas veces es difcil establecer categoras genricas para las aplicaciones del software que sean significativas.
INSTITUTO TECNOLGICO DE SONORA INGENIERA DE SOFTWARE

Tipos de software y su desarrollo


Software de Sistemas Software de Tiempo Real Software de Gestin Software de Ingeniera y cientfico Software empotrado Software de computadoras personales Software basado en Web Software de Inteligencia Artificial
Programacin en Computadoras Unidad I INTRODUCCIN

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 Tiempo Real


Coordina/analiza/controla sucesos del mundo real conforme ocurren. Integra diferentes componentes:
Recoleccin de datos Dar formato a la informacin recibida del exterior De anlisis para transformar la informacin De Control/salida que responda al exterior De Monitorizacin que coordine a todos los componentes En un tiempo de entre 1 milisegundo a 1 segundo.
5
5

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 de Ingeniera y cientfico


Est caracterizado por los algoritmos (conjunto finito de instrucciones o pasos que sirven para ejecutar una tarea o resolver un problema ) de manejo de nmeros Ejemplo: Astronoma, vulcanologa, anlisis de la presin de los automotores, dinmica orbital de las lanzaderas espaciales, biologa molecular, fabricacin automtica.
Pero las nuevas aplicaciones del rea de ingeniera se han alejado de los algoritmos convencionales numricos. El diseo asistido por computadora (del ingls CAD), la simulacin de sistemas y otras aplicaciones interactivas, han comenzado a coger caractersticas del software de tiempo real e incluso del software de sistemas.
7
7

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

Software de computadoras personales


El mercado del software de computadoras personales ha germinado en las pasadas dos dcadas. Aplicaciones que pertenecen a esta categora: El procesamiento de textos Hojas de clculo Los grficos por computadora Multimedia Entretenimientos Gestin de bases de datos Aplicaciones financieras, de negocios y personales Redes o acceso a bases de datos externas
9
9

Software basado en Web


Las pginas Web buscadas por un explorador son software que incorpora instrucciones ejecutables (por ejemplo, HTML, Perl, o Java), y datos (por ejemplo, hipertexto y una variedad de formatos de audio y visuales). En esencia, la red viene a ser una gran computadora que proporciona un recurso software casi ilimitado que puede ser accedido por cualquier persona con un MODEM.
10
10

Software de Inteligencia Artificial


Este tipo de Software hace uso de algoritmos no numricos para resolver problemas complejos para los que no son adecuados el clculo o el anlisis directo. Ejemplos: Los sistemas expertos, reconocimiento de patrones (imgenes y voz), redes neuronales prueba de teoremas y juegos.
11
11

Caractersticas que diferencian a un software de otro.


Complejidad Significado y forma de la informacin de entrada y salida. Compartir recursos La interaccin con el Hardware (HW) El objetivo para lo que fueron diseados

12

12

Cualidades del Software


Qu es un buen software?

13

Clasificacin de las cualidades


Externas: son visibles a los usuarios. Internas: son visibles a los desarrolladores. Del producto: son observables en los distintos productos y subproductos del ciclo de vida. Del proceso: describen a la forma en que el producto es producido.
14

Cualidades del Software


Correcto (Correctness) Confiable (Reliability) Robusto (Robustness) Eficiente (Eficciency) Amigable (Friendliness ) Verificable (Verifiability) Reusable (Reusability) Portable (Portability)

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

Lo correcto del software puede probarse ejecutndolo o mediante anlisis.

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.

Comunicacional: Comparten el Input (emtrada).


Secuencial: Output de uno es input de otro.

Temporal: Ejecucin simultanea.


Procedural: Secuencia de control.

Funcional: Todas las partes son necesaria para la funcin.


Objeto: Todas las acciones actan sobre los mismos datos del objeto. 27

Acoplamiento
Mdulo Mdulo B Mdulo D

Medida de la interdependencia de distintas componentes.


Sistemas muy acoplados
*Comparten variables o informacin de control. Sistemas desacoplados *Interfaces definidas con listas de parmetros.
Mulo B Datos B

A Mdulo C

rea de datos compartidos

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

*Cohesin y acoplamiento *Nombres *Documentacin

*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.

*Uso de componentes estndar


La evolucionabilidad decrece con cada versin del software.
30

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.

Tener un producto a tiempo sin confiabilidad o eficiencia tampoco es til.


Requiere:

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

También podría gustarte