portafolio ingeniería de software ii

23
PORTAFOLIO INGENIERÍA DE SOFTWARE II Javier Edgardo Chávez Romero Usulután, 28 de Abril de 2015

Upload: javier-chavez

Post on 22-Jul-2015

32 views

Category:

Engineering


3 download

TRANSCRIPT

Page 1: Portafolio ingeniería de software II

PORTAFOLIO INGENIERÍA DE SOFTWARE II Javier Edgardo Chávez Romero

Usulután, 28 de Abril de 2015

Page 2: Portafolio ingeniería de software II

Entregable A. Generalidades.

Carátula.

Nombre del sistema y logotipo.

Introducción.

Índice.

Objetivos del Informe.

Objetivo general.

Objetivos específicos.

Entregable B. Metodología Utilizada.

Metodología RUP.

Definición de RUP.

Ventajas.

Fases del RUP (hacer referencia a la etapa actual).

Entregable C. Fases del desarrollo del Aplicativo (Ingeniería de Software I).

Análisis.

Alcances y límites.

Tabla de tipificación de problemas y alternativas de solución.

Identificación de Clases, Atributos y Operaciones.

Diagrama de Asociaciones.

Modularización del Sistema.

Requerimientos funcionales y no funcionales.

Diseño.

Diseño de salidas.

Diseño de entradas y validación.

Diseño de base de datos.

Diseño de clave de acceso.

Diseño de pantalla de bienvenida.

Diseño del menú principal.

Diseño de submenús.

Page 3: Portafolio ingeniería de software II

Diseño de cuadros de diálogo y mensajes de error.

Diseño de ayuda del aplicativo.

Construcción funcional y online.

Creación de base de datos.

Entradas y validación.

Salidas.

Clave de acceso.

Pantalla de bienvenida.

Menú principal y submenús.

Cuadros de diálogo y mensajes de error.

Ayuda del aplicativo.

Seguridad y back-up.

Entregable D. Puesta en marcha.

Plan de capacitación a usuarios y administradores del aplicativo.

Plan de Conversión del producto.

Plan de Pruebas del aplicativo.

Entregable E. Manuales.

Manual de procedimientos.

Manual de funciones de usuario.

Manual de usuario.

Manual de instalación del aplicativo.

Documentación del código.

CONCLUSIONES Y RECOMENDACIONES.

BIBLIOGRAFIA.

ANEXOS.

Page 4: Portafolio ingeniería de software II

CALENDARIZACIÓN

FECHAS ACTIVIDADES A

EVALUAR

PORCENTAJE DEL

COMPUTO

12/Febrero/2015 Sitio Web que contendrá el

aplicativo. 20%

19/Febrero/2015 Plan de Métricas de Calidad

bajo estándar ISO/IEC9126 15%

18/Febrero/2015

Slideshare sobre estándar

W3C para el desarrollo web.

Enlace a MOODLE.

10%

4/Marzo/2015 Publicación en issuu tema

Patrones de diseño web. 15%

5/Marzo/2015 Primer Examen Parcial. 40%

Total Cómputo I 100%

19/Marzo/2015 Avance de aplicativo

funcional. 20%

26/Marzo/2015 Avance de aplicativo

funcional. 20%

9/Abril/2015 Avance de aplicativo

funcional. 10%

6/Mayo/2015 Plan de capacitación y plan

de conversión. 10%

7/Mayo/2015 Segundo Examen Parcial 40%

Total Cómputo II 100%

27/Mayo/2015 Proyecto Integrador. 20%

28/Mayo/2015

Defensa final de la

documentación del

aplicativo.

20%

4/Junio/2015 Ejecución Plan de Métricas

de Calidad. 20%

11/Junio/2015 Defensa Final del Aplicativo

Funcional. 40%

Total Cómputo III 100%

Page 5: Portafolio ingeniería de software II

Concepto de calidad de software.

La gestión de la calidad del software incluye los procesos y actividades de la organización

ejecutante que determinan políticas de calidad, objetivos y responsabilidades de tal manera

que el proyecto satisfaga las necesidades para las que fue adelantado.

Implementa el mejoramiento continuo de los procesos durante todo el ciclo del proyecto

cuando se considere necesario.

Tendencias de los sistemas de calidad.

Identificar cuáles requerimientos de calidad son relevantes tanto para el producto y

formalizar cómo el proyecto demostrará cumplimiento. El equipo debe ser cuidadoso de

preservar uno de los principios fundamentales de la gestión de calidad moderna: La calidad

es planeada, diseñada y construida, no se incorpora mediante inspección. El beneficio

fundamental de satisfacer requerimientos de calidad es minimizar el hecho de realizar de

nuevo parte del trabajo. La mejora continua del proceso de calidad reduce las actividades

inútiles y que no agregan valor, lo cual permite que los procesos operen con mayores niveles

de eficiencia y efectividad.

Es el proceso de monitorear y registrar resultados con el objetivo de recomendar cambios

necesarios.

Page 6: Portafolio ingeniería de software II

Nuestra empresa perdió 900 millones de dólares en último trimestre. Su trabajo es

hacer que este aspecto mejore para que no vuelva a suceder.

La mala noticia es, que usted es quien menos trabaja en esta oficina. La buena noticia

es, que usted es la que comete el menor número de errores.

Page 7: Portafolio ingeniería de software II

Procesos de Aseguramiento de la Calidad del Software.

Existen 2 formas de obtener software de calidad.

1. Definir la falta de calidad, definiendo normas, estándares, métodos y técnicas

apropiadas durante los procesos del ciclo de vida.

2. Detectar y corregir la falta de calidad: errores de código, en el diseño, en manuales

de usuario, mejoramiento de procesos, revisiones y testeo de software.

Principios de la calidad.

Watts Humphrey, el considerado padre de la calidad de los procesos de software, publicó

los 6 principios básicos de la calidad del software, los cuales son:

Principio 1. Si un cliente no demanda calidad, probablemente no la

conseguirá.

Principio 2. Para obtener calidad de manera constante, los desarrolladores

deben gestionarla en su trabajo.

Principio 3. Para gestionar la calidad, los desarrolladores deben medirla.

Principio 4. La calidad de un producto la determina el proceso usado para

desarrollarlo.

Principio 5. Ya que las pruebas solucionan solo una fracción de los defectos,

debes tener pruebas de calidad.

Principio 6. La calidad solo la producen profesionales motivados orgullosos

de su trabajo.

Page 8: Portafolio ingeniería de software II

La sencillez en el desarrollo

Desarrollar proyectos sencillos en la web, es difícil. Alcanzar un estado de simplicidad

operativa confiable, segura, robusta y de calidad es un objetivo al que se llega en forma

razonada, a través de un camino tecnológico y metodológico.

Integración de Objetos

Las aplicaciones de gran calidad integran objetos con propiedades de cualidades reales.

Para ello se necesitan, tecnologías de calidad y un trabajo, sencillamente exquisito.

Sitios y Aplicaciones Web con las funciones necesarias, tecnologías de calidad y un trabajo

artesanal que considere patrones de diseño de interfaces, usabilidad, arquitectura de

información, la sencillez en el desarrollo, programación acorde al desarrollo de software y

el manejo de estándares web y tecnologías semánticas para XHTML, para la máxima

disponibilidad de la información en la web, crean herramientas de notable calidad, seguras

y robustas. Son inversiones.

Ingeniería de Usabilidad y Arquitectura de información en los canales de comunicación

XHTML y XML

Los sitios web van a seguir requiriendo desarrollos que incluyan usabilidad y arquitectura

de información; pero en modos y grados diferentes. Ambos canales, XHTML y XML, tienen

estructuras y funcionalidades diferentes. Es necesario saber que las cosas han cambiado:

El canal web tradicional que incluye:

código fuente,

transmisor, protocolo HTTP,

receptor, agente de usuario

Page 9: Portafolio ingeniería de software II

Es un canal predecible, pese a todo; y ha comenzado a convivir con canales integrados en

forma diferente, desde lo estructural y funcional:

Código fuente XML,

protocolo HTTP y

de allí en más, los consumidores son diversos y numerosos;

desde navegadores web, previa transformación XSLT,

hasta terminales de procesos industriales,

datos para la navegación,

sindicación de contenidos,

web services,

APIs para distribuir contenidos,

Consultas SPARQL, etc.

Los canales XML contienen información en tiempo real para consumo en todas las áreas y

actividades inimaginables.

Usabilidad y Arquitectura de información son requeridas en grado y modo distintos, en

estructuras con canales XML.

Páginas Web XHTML + RDFa

Identificar información para que un software pueda hacer algo con ella es acercarnos a la

web semántica; ello no ocurre con HTML, es una de las razones de su caducidad. RDFa

posibilita semantizar nuestros contenidos, en el cuerpo del documento.

Cuando se utilizan los conceptos relativos al hipertexto, en el desarrollo web, junto a los

microformatos existentes, estaremos creando nuevas generaciones de páginas web, con

contenidos altamente ubicables. Quienes rastrean e indexan contenidos (Google, etc.),

pueden crear programas informáticos para recuperar, por ejemplo, los microformatos ,

puede imaginar que las bases de datos que se generan a partir de estas localizaciones,

tienen posibilidades y un quality diferentes.

Page 10: Portafolio ingeniería de software II

RDFa: Esta especificación permite a los encargados de la publicación de contenidos expresar

datos estructurados en la Web dentro del XHTML. Esto permite a las herramientas leerlo,

ofreciendo un nuevo mundo de funcionalidad al usuario, permitiendo a los usuarios

transferir datos estructurados entre aplicaciones y sitios web, y permitiendo a las

aplicaciones que realizan búsquedas mejorar su experiencia de usuario. [W3C]

Luego, el curso Integral de Tecnologías XML lo acercarán a la Web Semántica propiamente

dicha abordando tecnologías como RDF, OWL, SPARQL, etc.

El conocimiento

Hay dos posibilidades básicas de aplicar el conocimiento en los desarrollos tecnológicos, por

un lado se aplica el camino crítico y para resolver se observa lo que falla y se le da sentido

a ojos del inexperto, se sigue esto, hasta el final de la cadena de conocimiento.

Por otra parte, el conocimiento profundo simplifica el discurso y permite alcanzar el núcleo

esencial y esto soluciona. El conocimiento profundo de las tecnologías, metodologías, la

web como medio, etc., permiten alcanzar la simpleza en el desarrollo, lo que se transfiere

a la aplicación final.

Desarrollo del curso Estándares XHTML y CSS - Usabilidad - Accesibilidad

Junto con el desarrollo de XHTML se incorporan los estándares CSS (hojas de estilo en

cascada) y las consideraciones de Accesibilidad WAI AAA y Sección 508, como así también

temas relativos a Usabilidad y Arquitectura de Información.

Tecnologías utilizadas en el desarrollo de sitios web.

Herramientas: El mejor editor de código profesional; los pagos y los gratuitos.

Descarga e instalación del software. Los mejores editores gratuitos de texto (en

Windows y Linux).

Bloques de construcción XHTML. Consideraciones de diseño. Organización de

archivos.

Page 11: Portafolio ingeniería de software II

Marcas completas del standard en el formato de texto.

Marcas completas del standard para el tratamiento de imágenes web. Gráfica

relativa a imágenes. Formatos, optimización.

Diseño con imágenes y texto.

Diseño de página.

Marcas completas del standard para la creación de todos los tipos de enlaces. Mapas

de imagen.

Creación de listas.

Marcas completas del standard para la creación y diseño de tablas. Marcas

semánticas.

Marcas completas del standard para la creación de marcos. Consideraciones

especiales.

Marcas completas del standard para la creación de formularios. Comprensión de la

operación de un formulario en el lado Servidor y Cliente.

Creación de páginas web. Integración de conocimientos. Aclaración de dudas.

Durante el desarrollo del programa el alumno deberá crear numerosas páginas web

incluyendo los conocimientos de cada estadío. Recibirá como apoyo a las clases, material

teórico para consulta y ampliación de conocimientos.

Page 12: Portafolio ingeniería de software II

CSS3: Hojas de estilo en cascada

Consideraciones generales de las CSS. Razones para su uso.

Hojas de estilo internas y externas. Incrustación de estilos.

Los estilos y el conocimiento profundo de las estructuras del XHTML.

Sintaxis de los estilos. Definición de estilos locales.

Estudio detallado de Selectores. Propiedades de herencia y cascada.

Manejo de colores desde los estilos. Software.

Modelo de formato visual.

Diseño de clases y utilización de "id" con los estilos.

Estudio completo de formateo de texto con estilos.

Formateo de listas y tablas.

Formateo de imágenes y texto con estilos.

Formateo de formularios con estilos.

Diseño de página con estilos.

Estudio detallado de las cajas (Box).

Soporte al modelo de cajas

Internet Explorer y el modelo de caja

Diseños Líquidos

Diseños Congelados

Page 13: Portafolio ingeniería de software II

Diseños Elásticos

El background y los estilos.

Los estilos y las unidades.

Efectos sobre imágenes y texto, con estilos (efectos gráficos.)

Diseño de páginas web con estilos. Integración de conocimientos. Aclaración de

dudas.

Usabilidad web y Arquitectura de la información

Estos son algunos de los temas más importantes sobre usabilidad web y arquitectura de la

información, que se tratan durante el curso de Estándares Web.

Usabilidad: Conceptos generales. Su necesidad en el diseño web.

Diseño de página. Separación del contenido y el formato. Diseño líquido.

Actualización en el uso de tecnologías.

Los tiempos de respuestas en un sitio web.

Usabilidad en los enlaces web.

Las hojas de estilo.

Los marcos.

El diseño de contenido. Cómo escribir para la web.

Video y audio.

Diseño de URL.

Diseño del sitio. Página de inicio.

La simplicidad en el diseño web.

Accesibilidad de los usuarios discapacitados.

La audiencia.

Arquitectura de la información

Organización de la información

Diseño de sistemas de navegación

Sistemas de rotulación

Sistemas de búsqueda

Page 14: Portafolio ingeniería de software II

Diseño conceptual

La Interfaz de Usuario

La interfaz de usuario es la parte de una aplicación que hace que sea posible el diálogo

Hombre - Máquina. La Interfaz de Usuario se convirtió en un factor decisivo para la elección

de un software y tiene una gran influencia en sitios web. La heterogeneidad que propone

la web en el espectro de usuarios, hace que las interfaces deban desarrollarse acorde a esto.

El Desarrollo Hipermedia y Web

El desarrollo de sistemas de hipermedia debe incorporar un proceso sistemático y bien

definido, no es posible realizarlos en forma artesanal. Se deben considerar aspectos como

por ejemplo:

1. Sistemas de navegación sofisticados

2. Interacción con el usuario

3. Interfaces con aplicaciones externas (bases de datos)

Page 15: Portafolio ingeniería de software II

PATRONES DE DISEÑO

Los patrones de diseño son la base para la búsqueda de soluciones a problemas comunes en

el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.

Un patrón de diseño resulta ser una solución a un problema de diseño. Para que una solución

sea considerada un patrón debe poseer ciertas características. Una de ellas es que debe

haber comprobado su efectividad resolviendo problemas similares en ocasiones anteriores.

Otra es que debe ser reutilizable, lo que significa que es aplicable a diferentes problemas de

diseño en distintas circunstancias.

Un patrón de diseño puede considerarse como un documento que define una estructura de

clases que aborda una situación particular. Los patrones de diseño se dividen en tres grupos

principales:

Principios de Usabi l idad Web:

El contenido de Internet tiene sus propias características con respecto a otros medios y

apuesta por textos más resumidos y atractivos. El diseño debe contar con una navegación

simple y clara, unos textos precisos y una estructura “amigable” para la mayoría de los

usuarios.

Los principales conceptos en torno a la usabilidad web son los siguientes:

::. Visibilidad: Es importante que el usuario pueda reconocer los diferentes elementos de

manera sencilla, sin mayor esfuerzo.

::. Consistencia: Una información debe ser reiterada de diferentes formas pero debe ser

siempre la misma. Tiene que haber una definición en torno a los patrones de la página web

y la experiencia del usuario para no crear confusión.

::. Compatibilidad: El sitio web debe adecuarse a la forma de pensar del usuario promedio,

del cliente potencial y el público meta. En estética y funcionalidad, los procesos deben

adaptarse a las expectativas de los visitantes.

Page 16: Portafolio ingeniería de software II

::. Eficiencia: Debes reducir el trabajo del usuario en todos los niveles, facilitar el camino

para que pueda encontrar la información que desea o que pueda retroceder en caso de hallar

un resultado indeseado. Hay que predecir los posibles pasos a seguir del visitante y prevenir

los errores.

Un buen consejo es siempre tener en cuenta quiénes serán los usuarios habituales de la

página web y así enfocar el diseño en ese camino, tomando en cuenta su experiencia y nivel

de conocimiento.

Errores de usabilidad web

Sin importar la cantidad de visitas que puede tener un sitio web o las ganancias que obtenga

por determinado servicio o producto, es fácil detectar algunos problemas para el uso del

usuario promedio.

Algunas de estas fallas de usabilidad web son las siguientes:

::. Login ocultos: Es suficientemente complicado lograr interesar a un usuario para que se

registre en una página web, por lo que no tener un acceso visible para usuario y contraseña

::. Pop-ups: Prácticamente todos los navegadores tienen bloqueadores de pop-ups, por lo

que las ventanas emergentes han pasado a ser una molestia y no son la mejor manera de

presentar contenido.

::. Links invisibles: La navegación es una importante, por lo que no encontrar los enlaces

necesarios para movilizarse a través de la página web puede traer problemas importantes.

::. Sobrecarga visual: Muchas veces, más es menos. El “ruido” visual es uno de los problemas

comunes que los diseñadores provocan o deben resolver de acuerdo con la necesidad del

cliente.

::. Menú desplegable: Ocultar opciones en un menú desplegable ahorra espacio pero

complica la navegación de los usuarios, ya que requiere un esfuerzo para fijar la posición del

cursor y seleccionar esa opción.

Page 17: Portafolio ingeniería de software II

Diseño Web Líquido o Fluido.

"Diseño líquido o fluido" (Responsive Web Design) es la técnica para crear plantillas

que automáticamente se ajustan al tamaño de la pantalla en las que están

siendo navegadas, utilizando la definición de reglas de medios de destino definidas

dentro de las nuevas características del CSS3.

El ancho de la plantilla: Lo más importante es conseguir un ancho flexible, es el factor

que entorpece muchos de los diseños cuando se ven en las pantallas más pequeñas.

Crear contenedores que se extiendan o se recojan en las diferentes resoluciones. No

hay un truco, solo es cambiar la forma de crear las columnas de tu hoja de estilo.

Las imágenes: Un tema a tener en cuenta cuando se pasa de ancho fijo a diseño

fluido, son las imágenes en el HTML (los elementos <img>). Un archivo de imagen,

en su mayor parte es un archivo de tamaño fijo que no se redimensiona, esto puede

dar errores en la presentación del diseño con imágenes de gran tamaño que se

desbordan por la ventana del navegador, la solución es muy simple, solo debemos

adicionar las siguientes líneas en la hoja de estilo.

El iminar el zoom en los dispositivos móviles: Los dispositivos celulares o tablas utilizan

una función de "zoom" para mostrar sitios web muy grandes, en escala en sus

pequeñas pantallas, esto es bueno en la mayoría de casos, pero para nuestra técnica

no es funcional. Adicionando un meta tag "viewport" en el header del documento

eliminamos esta:

Page 18: Portafolio ingeniería de software II

<meta name="viewport" content="width=device-width, minimum-scale=1.0,

maximum-scale=1.0"/>

Solo debemos deshabilitar esta opción cuando estemos seguros que nuestro diseño

se ajusta y permite una navegación adecuada, de otro modo solo vamos a lograr

dificultarle las cosas.

Utilizar CSS Query @media: La característica de "Consulta de medios" en CSS permite

aplicar cambios de diseños basados en el tamaño de visualización y capacidad del

dispositivo en el que se está mostrando el contenido. Tiene respaldo en la mayoría

de navegadores móviles.

Diseño Web Híbrido:

La maquetación de una página web utilizando hojas de estilo en cascada (css) puede hacerse

mediante diseños híbridos, es decir, combinando las diferentes opciones de maquetación

con css:

- Diseños de ancho fijo (utilizan píxeles).

- Diseños de ancho variable, llamados diseños «líquidos» o «fluidos» (utilizan

porcentajes).

- Diseños elásticos (utilizan «em»).

Los diseños híbridos combinan las tres opciones anteriores y representan la mejor opción

para que nuestros diseños sean compatibles tanto con cualquier resolución (tamaño) de

pantalla como con cualquier tamaño de letra. Al utilizar «em» y «porcentajes», ambas

unidades relativas, para las medidas de fuentes y cajas, cuando aumentamos o disminuimos

el tamaño de fuente en el navegador, o el tamaño de pantalla se redimensiona

automáticamente el tamaño de todos los elementos de la página y se respeta nuestro diseño

original.

Por tanto, este diseño es el ideal si pretendemos que nuestra «web» se visualice

Page 19: Portafolio ingeniería de software II

correctamente en todo tipo de plataformas y/o dispositivos (teléfonos móviles, celulares,

ordenadores portátiles, ordenadores de sobremesa, tabletas, etc.).

Por ejemplo, en un diseño híbrido con dos columnas, una de ellas se expresará en

porcentajes (%) para que se adapte al tamaño de la ventana del navegador y la otra se

expresará en «em» para que se adapte al tamaño del texto.

Patrones creacionales.

Corresponden a patrones de diseño software que solucionan problemas de creación de

instancias. Nos ayudan a encapsular y abstraer dicha creación:

Object Pool (no pertenece a los patrones especificados por GoF): se obtienen objetos

nuevos a través de la clonación. Utilizado cuando el costo de crear una clase es mayor

que el de clonarla. Especialmente con objetos muy complejos. Se especifica un tipo de

objeto a crear y se utiliza una interfaz del prototipo para crear un nuevo objeto por

clonación. El proceso de clonación se inicia instanciando un tipo de objeto de la clase que

queremos clonar.

Abstract Factory (fábrica abstracta): permite trabajar con objetos de distintas familias de

manera que las familias no se mezclen entre sí y haciendo transparente el tipo de familia

concreta que se esté usando. El problema a solucionar por este patrón es el de crear

diferentes familias de objetos, como por ejemplo la creación de interfaces gráficas de

distintos tipos (ventana, menú, botón, etc.).

Builder (constructor virtual): abstrae el proceso de creación de un objeto complejo,

centralizando dicho proceso en un único punto.

Factory Method (método de fabricación): centraliza en una clase constructora la

creación de objetos de un subtipo de un tipo determinado, ocultando al usuario la

casuística, es decir, la diversidad de casos particulares que se pueden prever, para elegir

el subtipo que crear. Parte del principio de que las subclases determinan la clase a

implementar.

Page 20: Portafolio ingeniería de software II

Patrones de comportamiento.

Se definen como patrones de diseño software que ofrecen soluciones respecto a la

interacción y responsabilidades entre clases y objetos, así como los algoritmos que

encapsulan:

Chain of Responsibility (Cadena de responsabilidad): Permite establecer la línea que

deben llevar los mensajes para que los objetos realicen la tarea indicada.

Command (Orden): Encapsula una operación en un objeto, permitiendo ejecutar dicha

operación sin necesidad de conocer el contenido de la misma.

Interpreter (Intérprete): Dado un lenguaje, define una gramática para dicho lenguaje, así

como las herramientas necesarias para interpretarlo.

Iterator (Iterador): Permite realizar recorridos sobre objetos compuestos

independientemente de la implementación de estos.

Mediator (Mediador): Define un objeto que coordine la comunicación entre objetos de

distintas clases, pero que funcionan como un conjunto.

Memento (Recuerdo): Permite volver a estados anteriores del sistema.

Observer (Observador): Define una dependencia de uno-a-muchos entre objetos, de

forma que cuando un objeto cambie de estado se notifique y actualicen

automáticamente todos los objetos que dependen de él.

State (Estado): Permite que un objeto modifique su comportamiento cada vez que

cambie su estado interno.

Strategy (Estrategia): Permite disponer de varios métodos para resolver un problema y

elegir cuál utilizar en tiempo de ejecución.

Template Method (Método plantilla): Define en una operación el esqueleto de un

algoritmo, delegando en las subclases algunos de sus pasos, esto permite que las

subclases redefinan ciertos pasos de un algoritmo sin cambiar su estructura.

Visitor (Visitante): Permite definir nuevas operaciones sobre una jerarquía de clases sin

modificar las clases sobre las que opera.

Page 21: Portafolio ingeniería de software II

Patrones estructurales.

Son los patrones de diseño software que solucionan problemas de composición (agregación)

de clases y objetos:

Adapter o Wrapper (Adaptador o Envoltorio): Adapta una interfaz para que pueda ser

utilizada por una clase que de otro modo no podría utilizarla.

Bridge (Puente): Desacopla una abstracción de su implementación.

Composite (Objeto compuesto): Permite tratar objetos compuestos como si de uno

simple se tratase.

Decorator (Decorador): Añade funcionalidad a una clase dinámicamente.

Facade (Fachada): Provee de una interfaz unificada simple para acceder a una interfaz o

grupo de interfaces de un subsistema.

Flyweight (Peso ligero): Reduce la redundancia cuando gran cantidad de objetos poseen

idéntica información.

Proxy: Mantiene un representante de un objeto.

Módulo: Agrupa varios elementos relacionados, como clases, singletons, y métodos,

utilizados globalmente, en una entidad única.

Page 22: Portafolio ingeniería de software II

SEGURIDAD DEL SOFTWARE

Componente de la seguridad de la información definido como un conjunto de políticas y

mecanismos tecnológicos que pretenden garantizar la confidencialidad, integridad y

disponibilidad de los recursos de un sistema informático.

El activo más importante que se posee es la información y, por lo tanto, deben existir

técnicas que la aseguren, más allá de la seguridad física que se establezca sobre los equipos

en los cuales se almacena. Estas técnicas las brinda la seguridad lógica que consiste en la

aplicación de barreras y procedimientos que resguardan el acceso a los datos y solo

permiten acceder a ellos a las personas autorizadas para hacerlo.

Cada tipo de ataque y cada sistema requiere de un medio de protección o más.

A continuación se enumeran una serie de medidas que se consideran básicas para asegurar

un sistema tipo, si bien para necesidades específicas se requieren medidas extraordinarias

y de mayor profundidad:

Utilizar técnicas de desarrollo que cumplan con los criterios de seguridad al uso para

todo el software que se implante en los sistemas, partiendo de estándares y de

personal suficientemente formado y concienciado con la seguridad.

Contraseñas difíciles de averiguar que, por ejemplo, no puedan ser deducidas a

partir de los datos personales del individuo o por comparación con un diccionario,

y que se cambien con la suficiente periodicidad. Las contraseñas, además, deben

tener la suficiente complejidad como para que un atacante no pueda deducirla por

medio de programas informáticos. El uso de certificados digitales mejora la

seguridad frente al simple uso de contraseñas.

Copias de seguridad e incluso, sistemas de respaldo remoto que permiten mantener

la información en dos ubicaciones de forma asíncrona.

Controlar el acceso a la información por medio de permisos centralizados y

mantenidos. Los medios para conseguirlo son:

Page 23: Portafolio ingeniería de software II

Restringir el acceso (de personas de la organización y de las que no lo son) a los

programas y archivos.

Asegurar que los operadores puedan trabajar pero que no puedan modificar los

programas ni los archivos que no correspondan (sin una supervisión minuciosa).

Asegurar que se utilicen los datos, archivos y programas correctos en/y/por el

procedimiento elegido.

Asegurar que la información transmitida sea la misma que reciba el destinatario

al cual se ha enviado y que no le llegue a otro. y que existan sistemas y pasos de

emergencia alternativos de transmisión entre diferentes puntos.

Organizar a cada uno de los empleados por jerarquía informática, con claves

distintas y permisos bien establecidos, en todos y cada uno de los sistemas o

aplicaciones empleadas.

Actualizar constantemente las contraseñas de accesos a los sistemas de

cómputo e incluso utilizando programa que ayuden a los usuarios a la gestión

de la gran cantidad de contraseñas que tienen gestionar en los entornos

actuales, conocidos habitualmente como gestores de identidad.