1. F A B I O L A L A G U N A
2 7 . 1 3 5 . 0 2 4
S I S T E M A S I I
2. ASPECTOS RELACIONADOS AL DISEÑO DEL
SOFTWARE
• Compatibilidad: el software puede operar con otros productos que están
diseñados para la interoperabilidad con otro producto. Por ejemplo, una
pieza de software puede ser compatible con versiones anteriores de una
versión anterior de sí mismo.
• Extensibilidad: es un principio de ingeniería de software y diseño de
sistemas donde la implementación toma en cuenta el crecimiento futuro. El
término extensibilidad también puede verse como una medida sistémica de
la capacidad de extender un sistema y el nivel de esfuerzo requerido para
implementar la extensión.
• Modularización: es una técnica para dividir un sistema de software en
múltiples módulos independientes y discretos, que se espera que sean
capaces de realizar tareas de forma independiente. Estos módulos pueden
funcionar como construcciones básicas para todo el software. Los
diseñadores tienden a diseñar módulos de manera que puedan ejecutarse y /
o compilarse por separado e independientemente.
3. ASPECTOS RELACIONADOS AL DISEÑO DEL
SOFTWARE (CONT.)
• Tolerancia a fallos: el software es resistente y puede recuperarse de un fallo
de componente.
• Mantenimiento: una medida de la facilidad con la que se pueden realizar
correcciones de errores o modificaciones funcionales. La alta mantenibilidad
puede ser el producto de la modularidad y la extensibilidad.
• Confiabilidad (durabilidad del software): el software puede realizar una
función requerida en las condiciones establecidas durante un período de
tiempo específico.
• Reutilización: la capacidad de usar algunos o todos los aspectos del
software preexistente en otros proyectos con poca o ninguna modificación.
• Robustez: el software puede operar bajo estrés o tolerar una entrada
impredecible o no válida. Por ejemplo, puede diseñarse con resistencia a las
condiciones de poca memoria.
4. ASPECTOS RELACIONADOS AL DISEÑO DEL
SOFTWARE (CONT.)
• Seguridad: el software es capaz de resistir actos e influencias hostiles.
• Concurrencia: una técnica que se implementa dividiendo el software en
múltiples unidades de ejecución independientes, como módulos y
ejecutándolos en paralelo. En otras palabras, la concurrencia
proporciona al software la capacidad de ejecutar más de una parte del
código en paralelo entre sí.
• Cohesión: es una medida que define el grado de dependencia interna
dentro de los elementos de un módulo. Cuanto mayor sea la cohesión,
mejor es el diseño del programa.
• Acoplamiento: es una medida que define el nivel de interdependencia
entre los módulos de un programa. Indica a qué nivel los módulos
interfieren e interactúan entre sí. Cuanto menor sea el acoplamiento,
mejor será el programa.
5. ASPECTOS RELACIONADOS AL DISEÑO DEL
SOFTWARE (CONT.)
• Rendimiento: el software realiza sus tareas dentro de un marco de
tiempo que es aceptable para el usuario y no requiere demasiada
memoria.
• Portabilidad: el software debe poder utilizarse en diferentes
condiciones y entornos.
• Escalabilidad: el software se adapta bien a los datos en aumento o al
número de usuarios.
• Verificación: es necesario verificar el resultado antes de pasar a la
siguiente fase. Cuanto antes se detecte cualquier error, mejor será o no
se detectará hasta la prueba del producto. Si los resultados de la fase
de diseño están en forma de notación formal, entonces se deben usar
sus herramientas asociadas para la verificación, de lo contrario se
puede usar una revisión exhaustiva del diseño para la verificación y
validación.
6. ASPECTOS RELACIONADOS AL DISEÑO
ORIENTADO A OBJETOS
• Abstracción: el proceso de abstracción permite seleccionar las
características relevantes dentro de un conjunto e identificar
comportamientos comunes para definir nuevos tipos de entidades en el
mundo real. La abstracción es clave en el proceso de análisis y diseño
orientado a objetos, ya que mediante ella podemos llegar a armar un
conjunto de clases que permitan modelar la realidad o el problema que se
quiere atacar.
• Encapsulamiento: significa reunir todos los elementos que pueden
considerarse pertenecientes a una misma entidad, al mismo nivel de
abstracción.
• Principio de ocultación: cada objeto está aislado del exterior, es un módulo
natural, y cada tipo de objeto expone una "interfaz" a otros objetos que
especifica cómo pueden interactuar con los objetos de la clase. El
aislamiento protege a las propiedades de un objeto contra su modificación
por quien no tenga derecho a acceder a ellas; solamente los propios
métodos internos del objeto pueden acceder a su estado.
7. ASPECTOS RELACIONADOS AL DISEÑO ORIENTADO A
OBJETOS (CONT.)
• Clase: Son tipos de datos definidos por el usuario. Representan la mayor de
las veces a las entidades del mundo real. Son identificadas como Entidades
en el dominio del problema.
• Objeto: Es una instancia de una clase. Este tipo de dato definido por el
usuario puede ser usado solo cuando se crean instancias del tipo de datos.
Un objeto promete cumplir el contrato prometido por su clase. Cada objeto
puede definirse en términos del comportamiento que muestra o se espera
que muestre.
• Interfaz e Implementación: Cuando la complejidad de una entidad en el
mundo real llega a ser muy grande, se precisa ocultar al usuario algunos de
los detalles menos necesarios acerca de esa entidad. Usualmente, cada
entidad tiene dos aspectos:
- Interfaz: Es la forma en la cual se presenta la clase al mundo real.
- Implementación: Es el método que se sigue para hacer que el objeto de la clase
realice sus responsabilidades.
8. ASPECTOS RELACIONADOS AL DISEÑO ORIENTADO A
OBJETOS (CONT.)
• Polimorfismo: comportamientos diferentes, asociados a objetos
distintos, pueden compartir el mismo nombre; al llamarlos por ese
nombre se utilizará el comportamiento correspondiente al objeto que se
esté usando.
• Métodos: son una parte de la declaración de la clase. Son los
algoritmos usados por la clase para implementar la tarea prometida por
la interfaz.
• Mensajes: los objetos se comunican unos con otros a través de
mensajes. Es un pedido a un objeto para que realice una tarea a través
de un método apropiado. El objeto iniciador conoce la interfaz del
objeto sobre el cual esta acción es iniciada. El objeto receptor satisface
el requerimiento del objeto iniciador aceptándolo e implementando la
tarea. Un mensaje puede cambiar el estado de un objeto receptor.