Características del software
Correcto.
El software es una imitacion fiel de la especificación.
Una especificación se puede dar de diferentes maneras
* Informal, en lenguaje natuarl
* Formal. Usando un lenguaje matematico; o una notación
* Se puede verificar una especificación utilizando una metodología matemática.
Debe seguir todas las funciones indicadas.
Confiable.
No tiene "bugs" o errores inesperados.
El software puede ser correcto mas no confiable.
Robusto. Debe reaccionar ante eventos imprevistos y manejarlos.
Desempeño. En manejar los recursos de computo de manera eficiente.
Amigable. Ayudar al usuario a usarlo. Su manipulación es autodocumentable.
Verificable. Se pueden aplicar facilmente pruebas sobre el software.
Diseño por contrato. El software debe cumplir con ciertas aseveraciones
lógicas.
Administrable. Debe ser manejado facilmente.
Existen varias etapas en su administración.
Correcion. Consiste en modificar o reparar errores.
Adaptación. Es prepararlo ante nuevas especificaciones
Mejora. Dar nuevas funciones y nuevas versiones al software
Reusable. Se puede usar el software en otros proyectos.
Componentes de software
Portable. Se debe adaptar a otras plataformas y tecnologias
Integrable. Consiste en que pueda hablar con otras aplicaciones
de manera transparente.
Reparable. Ante la falla de un modulo o una funcion, se debe sustituir
rapidamente el modulo que falla.
Evolucionable. Adaptarse a nuevas tecnologias y organizaciones
Entendible. El software no debe ser "extraño" al usuario o dificil
de entender.
Interoperable. Relacionado con que sea integrable con otras aplicaciones,
y consiste en que tenga un protocolo transparente para hablar con
otras aplicaciones. XML, CORBA, DCOM son un esfuerzo para esto.
Productividad. El software debe construirse en un proceso de desarrollo
eficiente.
Linea de tiempo. Es entregar el software en los tiempos planificados.
Desarrollo incremental. Es entregar en pequeñas etapas un subconjunto
de especificaciones del software.
Visible el desarrollo. La construcción se debe monitorear paso a paso.
* Dimensiones en el desarrollo de software.
Participantes al desarrollar un sistema de software.
*) Producto. Lo que deseamos obtener.
*) Tecnología. Como desarrollo el producto.
*) Proceso. La manera como se va a obtener el producto.
*) Personas. Quien va a hacer las cosas. Calidad vs Cantidad.
* Tipos de sistemas de cómputo
Sistemas de informacion. Centrados en datos. Existe un sistema
de bases de datos, transacciones y visualizadores de la información
Sistemas de tiempo real. Centrados en el control del procesamiento.
Importa que las tareas se apliquen un tiempo y rango predefinido
Estos sistemas deben manipular los recursos de computo para evitar
perdida de información
Sistemas distribuidos. El software se distribuye en varias computadoras.
Sistemas integrados. (Embedded Systems) Son sistemas que se adaptan o
integran a sistemas mas complejos, su funcion es dar inteligencia a otros
sistemas (automoviles, videocaseteras, edificios inteligentes,
telefonoso celulares)
Ejemplo. Java tiene una tecnologia para cada tipo de los sistemas descritos.
J2SDK - Java 2 Software Development Kit
J2EE - Java 2 Enterprise Edition
J2ME - Java 2 Micro Edition
Jini - Manipulacion de sistemas distribuidos y servicios de red
Jaxta - Integracion de sistemas integrados en el esquema Peer to Peer (p2p)
Arquitecturas de software.
Una arquitectura es una organizacion de un conjunto de elementos.
La arquitectura de software describe como ordenar modulos de software
--------------
Presentacion
de la informacion
-----------------
--------------------
Logica de la aplicacion
Objetos del negocio
----------------------
----------------------
Logica de la aplicacion
Servicios u objetos transaccionales
-----------------------------------
-------------------------
Persistencia o almacenamiento
----------------------------
* Proceso de desarrollo del software
Metodologias para poder construir software.
*) Planificacion y elaboracion de requerimientos
*) Construcción
*) Liberación
Construccion - Análisis y diseño de la aplicación , codificación,
pruebas y preparación para liberación.
* Proceso de desarrollo de software de codigo abierto.
Ensamblador - computadoras en centros de investigacion
Algol, Cobol, Fortran - mainframes
Pascal, C, Basic - Computo personal (PC), servidores UNIX
Java , CGI s - Era de Internet
????? - Era de Peer to Peer - recursos de computo disponibles
desde cualquier parte
Software de código Abierto. Richard Stallman
               (
geocities.com/gusdelact)