1_1 Introduccion
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
768
On Slideshare
691
From Embeds
77
Number of Embeds
1

Actions

Shares
Downloads
14
Comments
0
Likes
0

Embeds 77

http://eventos.utn.edu.ec 77

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. UNIVERSIDAD TECNICA DEL NORTE FACULTAD DE INGENIERIA EN CIENCIAS APLICADAS CARRERA DE INGENIERIA EN SISTEMAS COMPUTACIONALES Ing. Pablo Landeta López
  • 2. INTRODUCCION Y DEFINICIONES Cómo desarrollamos sistemas? • Se detecta la necesidad de iniciar un proyecto.- Varias restricciones son originadas en esta fase • Se reúnen los requerimientos del usuario .- El centro de atención es la Funcionalidad. • Se planea el proyecto.- Repartiendo la funcionalidad deseada el el tiempo y presupuesto disponibles. • Se diseña la aplicación.- De acuerdo a la especificación técnica de los requerimientos funcionales • Se desarrolla y se prueba el software.- La prioridad es cubrir la funcionalidad acordada. • Se libera y se pone en operación al nuevo sistema.- Todos conocen por fin el nuevo sistema y..
  • 3. INTRODUCCION Y DEFINICIONES Resultados típicos: • Los usuarios: Sienten lento el sistema, lo encuentran difícil de usar, experimentan interrupciones en el servicio. • Los operadores: Tienen dificultad para ponerlo en ejecución y para diagnosticar y detectar fallos. Se dan cuenta de que no soporta la carga real. • Los programadores: Se encuentran con problemas al agregar nueva funcionalidad. • El área de pruebas: encuentra un sistema difícil de probar • Los gerentes y áreas de negocio: No sienten que el sistema esté obteniendo resultados con la eficiencia esperada. • Los promotores: No sienten que el sistema se atractivo, encuentran rechazo por parte de los usuarios / clientes. • Los directivos: No sienten que la inversión haya dado los resultados que esperaban.
  • 4. INTRODUCCION Y DEFINICIONES Significado: El sistema no tiene la calidad esperada La razón: • Nunca se pudo atención en la calidad del sistema en las fases de desarrollo. • Muchas veces las expectativas de calidad no eran ni siquiera conocidas al comenzar el desarrollo.
  • 5. INTRODUCCION Y DEFINICIONES La culpa? El negocio dice: Esto es responsabilidad de sistemas … y con muchas razón Sistemas dice: Nada de esto venía en los requerimientos!! … y también con mucha razón.
  • 6. INTRODUCCION Y DEFINICIONES Problemas: • Relacionados con requerimientos no funcionales: rendimiento, disponibilidad, confiabilidad, etc. • No se puede identificar al responsable (culpable) • No son defectos de programación, sino malas decisiones: protocolos, seguridad, escalabilidad, rendimiento, etc. • Existe un brecha natural de comunicación entre las áreas de negocio y los desarrolladores. • Hay decisiones que ninguno de ellos puede tomar de manera independiente. Origen del problema:
  • 7. INTRODUCCION Y DEFINICIONES Necesidad: • Darle a la calidad del software la misma importancia que a la funcionalidad • El análisis y diseño basados únicamente en la funcionalidad no nos permiten expresar correctamente las necesidades de calidad del software Análisis y diseño tienen distinto enfoque: Contexto del problema Contexto de la solución
  • 8. INTRODUCCION Y DEFINICIONES Solución: • La disciplina de la Arquitectura del software • Funciona como enlace entre el Análisis y Diseño. Contexto del problema Contexto de la solución • Introduce al proceso de desarrollo la atención hacia la calidad del software. Análisis de requerimientos Diseño de software Arquitectura de software
  • 9. INTRODUCCION Y DEFINICIONES Por qué la Arquitectura?: • Analogía: Arquitectos, ingenieros, y constructores. Diversos perfiles, pero complementarios • La Arquitectura de Software no es sobre objetos o páginas o pantallas o algoritmos. • La Arquitectura de Software no es sobre como construir software, sino que software construir (o reutilizar o comprar).
  • 10. INTRODUCCION Y DEFINICIONES Arquitectura en una construcción es una estructura física. Pero tenemos muchos atributos (forma en que se adapta al ambiente y se integra a otros edificios, el grado en que cumple su propósito y satisface al propietario, la estética, el efecto visual interno y externo). También son las miles de decisiones (grandes y pequeñas). Algunas se toman en la etapa inicial del diseño y tienen efecto en las demás acciones. Otras se toman más adelante Es importante porque no es posible construir una casa sin un plano. Tampoco se empieza los planos con el dibujo de la plomería. Antes de los detalles es necesario tener un panorama general. Eso hace el diseño arquitectónico: da el panorama y asegura que sea el correcto.
  • 11. INTRODUCCION Y DEFINICIONES En el Software Engineering Institute se agrupan muchas definiciones http://www.sei.cmu.edu/architecture/definitions.html - lugar en el ciclo de vida - configuración o topología estática - vista del sistema con sus componentes principales - estructura global de control: protocolos, sincronización, funcionalidad a elementos de diseño, distribución física, escalabilidad, performance. - puente entre requerimiento y código Ingeniería del software IEEE 610.12.1990: La aplicación de una estrategia sistemática, disciplinada y cuantificable al desarrollo, aplicación y mantenimiento del software; esto es, la aplicación de la ingeniería al software. Definición oficial: IEEE Std 1471-2000 La Arquitectura de Software es la organización fundamental de un sistema encarnada en sus componentes, las relaciones entre ellos y el ambiente y los principios que orientan su diseño y evolución.
  • 12. INTRODUCCION Y DEFINICIONES Al hablar de componentes de software puede ser un módulo de programa, una clase orientada a objetos, puede incluir bases de datos y middleware, etc. Las propiedades de los componentes son las características necesarias para entender comp interactuan unos componentes con otros. Las relaciones entre componentes pueden ser una invocación de procedimientos de un módulo a otro o protocolos de acceso a base de datos. La arquitectura permite:  Analizar la efectividad del diseño pra cumplir los requerimientos establecidos  Considerar alternativas arquitectonicas en un etapa en la que hacer cambios de diseño es todavía relativamente fácil  Reducir los riesgos asociados en la construcción de software
  • 13. INTRODUCCION Y DEFINICIONES La diferencia entre AS e IS: la noción clave de la AS es la organización (un concepto cualitativo o estructural), mientras que la IS tiene fundamentalmente que ver con una sistematicidad susceptible de cuantificarse. El énfasis de la solución del ingeniero de software se encuentra en los aspectos técnicos. La del arquitecto en el contexto del negocio. La razón principal de la Arquitectura de Software reside en el que el análisis y diseño no son suficientes para resolver el problema. En la mayoría de los sistemas empresariales es muy importante tomar en cuenta los requerimientos no funcionales conocidos también como Atributos de Calidad.
  • 14. INTRODUCCION Y DEFINICIONES Beneficios de la arquitectura del software: • Aumenta la predictibilidad de la calidad del producto final • Abre la oportunidad de detectar riesgos en una fase temprana del ciclo de desarrollo. • Las representaciones de la arquitectura del software fomentan una comunicación eficiente y oportuna entre interesados y desarrolladores. • La arquitectura resalta las primeras decisiones que tendrán un efecto profundo en todo el trabajo de ingeniería de software siguiente y en el éxito del sistema • La arquitectura se constituye en un modelo pequeño y asequible sobre como esta estructurado el sistema.
  • 15. INTRODUCCION Y DEFINICIONES Como se logra todo esto? • Al reconocer que no es suficiente con identificar los requerimientos funcionales sino que también hay otras influencias que determinan el éxito de un sistema. La arquitectura las identifica y trabaja con ellas • El diseño de la arquitectura comienza con el diseño de los datos y continua con la obtención de una o más representaciones de la estructura arquitectónica del sistema. • Se analizan alternativas de estilos o patrones arquitectónicos para llegar a la estructura más adecuada para los requerimientos del usuario y para los atributos de calidad. • Seleccionada la alternativa se elabora la arquitectura usando un método de diseño. • Se crea un modelo de la arquitectura que incluye la arquitectura de los datos y la estructura del programa. Se describen las relaciones entre componentes.
  • 16. INTRODUCCION Y DEFINICIONES Influencias de la Arquitectura del software: • Los Involucrados o interesados en el sistema (stakeholders) • La organización misma • El ambiente tecnológico • La experiencia de los arquitectos • El contexto gubernamental y legal Influencia: Stakeholders • La gente que ideó el proyecto • La que la va a financiar • La que la va a usar • La que recibirá los beneficios • La que lo va a diseñar • La que lo va a desarrollar • La que lo va a probar • La que lo va a operar • La que lo va a promocionar • La que lo va a dar soporte técnico.
  • 17. INTRODUCCION Y DEFINICIONES Influencia: la organización: • Procesos y políticas del negocio • Infraestructura tecnológica • Tiempos y presupuestos • Recursos humanos y materiales • Nivel de experiencia del equipo de desarrollo Influencia: el ambiente tecnológico: • Tecnologías de moda • Hardware disponible • Patrones arquitectónicos • Disponibilidad de productos de terceros • Tendencias de la industria • Expertos y consultores • Servicios de outsourcing existentes Influencia: experiencia de arquitectos: • Con todo constante, dos arquitectos trabajando por separado nunca diseñarían una arquitectura idéntica. Cada quien utilizaría las técnicas y herramientas que le han sido útiles en el pasado
  • 18. INTRODUCCION Y DEFINICIONES Requerimientos funcionales: Lo que el sistema debe proveer. Estos definen que es lo que el usuario necesita y no el como lo hace. Es el conjunto de características y capacidades del programa. Estos requerimientos se desprenden del Diagrama de Contexto del sistema a través de Procesos del negocio (persiste en el tiempo) y Casos de Uso (interacción particular del usuario)
  • 19. INTRODUCCION Y DEFINICIONES Atributos de calidad (requerimientos no funcionales): La funcionalidad puede ser la misma, pero las características de calidad no. • Desempeño o rendimiento: Se mide con base a la velocidad de procesamiento, el tiempo de respuesta. El grado en que el sistema responde a un cierto evento es decir la eficiencia. • Disponibilidad: grado de operabilidad del sistema. Recuperación en eventos. • Seguridad: que no produce consecuencias fatales. • Escalabilidad: propiedad de un sistema que indica su habilidad para reaccionar y adaptarse, o bien manejar el crecimiento continuo de trabajo de manera fluida, o para estar preparado para hacerse más grande sin perder calidad.
  • 20. INTRODUCCION Y DEFINICIONES Atributos de calidad (requerimientos no funcionales): • Usabilidad: que tan fácil es la operación del sistema, es decir se toma en cuenta factores humanos, la estética, la consistencia. • Fiabilidad o Confiabilidad: Propiedad de un sistema tal que se puede confiar justificablemente en los servicios que este presta. Se evalúa con la medición de la frecuencia y gravedad de la fallas, exactitud de resultados, capacidad de recuperación. • Mantenibilidad: la capacidad del programa para ser ampliable (extensibilidad), adaptable y servicial; además que pueda probarse, ser compatible y configurable. No todo atributo de calidad de software se pondera por igual al diseñarlo. Una aplicación tal vez aborde a lo funcional con énfasis en la seguridad. Otra quizá busque el rendimiento enfocándose en la velocidad de procesamiento.
  • 21. INTRODUCCION Y DEFINICIONES Drivers de arquitectura: Son los escenarios (funcionales + atributos de calidad) críticos y significativos que nos permiten modelar, comunicar y evaluar la arquitectura: generalmente estos son los requerimientos más prioritarios de los stakeholders.
  • 22. INTRODUCCION Y DEFINICIONES Calidad La calidad es un concepto complejo y de facetas múltiples que puede describirse desde cinco puntos de vista: o Punto de vista trascendental: La calidad es algo que se reconoce de inmediato, pero que no es posible definir explícitamente. o Punto de vista del usuario: concibe la calidad en términos de sus metas específicas o Punto de vista del fabricante: la define en términos de las especificaciones originales del producto. Si las cumple tiene calidad. o Punto de vista del producto: la calidad tiene que ver con las características inherentes (funciones y características) de un producto. o Punto de vista del valor: Mide de acuerdo con lo que un cliente esta dispuesto a pagar por un producto.
  • 23. INTRODUCCION Y DEFINICIONES Calidad En el desarrollo de software la calidad del diseño incluye el grado en que el diseño cumple las funciones y características especificadas en el modelo de requerimientos. La calidad de la conformidad se centra en el grado en el que la implementación se apega al diseño y en el que el sistema resultante cumple sus metas de requerimientos y desempeño. Se puede plantear una relación más intuitiva: Satisfacción del usuario = producto que funciona + buena calidad + entrega dentro del presupuesto y plazo Si el usuario esta satisfecho nada más importa, es decir este punto de vista de la calidad afirma que si un producto de software beneficia mucho a los usuarios finales, estos podrían estar dispuestos a tolerar problemas ocasionales de confiabilidad y desempeño.
  • 24. INTRODUCCION Y DEFINICIONES Calidad Se puede definir a la calidad del software como un proceso eficaz que se aplica de manera que crea un producto útil que proporciona valor medible a quienes lo producen y a quienes lo utilizan.  Proceso eficaz: administración del proceso, prácticas de ingeniería del software, la administración del cambio y revisiones técnicas.  Producto útil: funciones y características de forma confiable y sin errores. Satisface los requerimientos establecidos  Agregar valor: la organización que elabora el software obtiene valor agregado porque el software de calidad requiere menos esfuerzo de mantenimiento, menos errores que corregir, menos asistencia. Para el usuario final significa mayores utilidades, más rentabilidad y mejor disponibilidad.
  • 25. INTRODUCCION Y DEFINICIONES Factores de la Calidad ISO 9126 Este estandar se desarrollo con la intención de identificar los atributos clave del software. Identifica 6 atributos clave de calidad:  Funcionalidad: grado en que el software satisface las necesidades planteadas  Confiabilidad: Cantidad de tiempo que el software se encuentra disponible.  Usabilidad: Grado en que el software es fácil de usar  Eficiencia: Grado en que el software emplea óptimamente los recursos  Facilidad de mantenimiento: facilidad con la que pueden realizarse reparaciones al software (analizable, cambiable, estable, fácil para pruebas)  Portabilidad: Facilidad con la que un software puede llevarse de un ambiente a otro (adaptable, instalable, conformidad y sustituible)
  • 26. INTRODUCCION Y DEFINICIONES Ejemplo: Factores de la Calidad que se persiguen en la interfaz Para hacer una evaluación se necesita determinar atributos específicos y medibles de la interfaz: Intuitiva: Grado en que la interfaz sigue patrones de uso esperados, de modo que hasta un novato lo pueda usar sin mucha capacitación. Eficiencia: Grado en que es posible localizar o iniciar las operaciones y la información. Robustez: Grado en que el software maneja entradas erróneas de datos o en el que se presenta interacción inapropiada por parte del usuario Riqueza: Grado en que la interfaz provee un conjunto abundante de características.
  • 27. INTRODUCCION Y DEFINICIONES Dilema de la calidad del software Si produce un software de mala calidad, usted pierde porque nadie lo querrá comprar. Si dedica un esfuerzo infinito (tiempo y dinero) para generar un elemento perfecto de software, entonces tomará tanto tiempo terminarlo y será tan caro que de igual manera terminará fuera del negocio. En cualquier caso habrá perdido la ventana del mercado, o habrá agotado sus recursos. Las personas tratan de situarse en es punto medio donde el producto es suficientemente bueno para para no ser rechazado de inmediato, pero tampoco un objeto perfeccionista.
  • 28. INTRODUCCION Y DEFINICIONES Software lo suficientemente bueno Es aceptable producir software lo suficientemente bueno?.. La pregunta debe ser que sí, de hecho las principales compañías de software lo hacen a diario. Crean software con errores detectados y lo distribuyen a una gran población de usuarios finales. Reconocen que algunas funciones de la versión 1.0 tal vez no sean de la calidad más alta y planean hacer mejoras en la versión 2.0. El software lo suficientemente bueno contiene las funciones y características de alta calidad que desean los usuarios, pero al mismo tiempo contiene errores conocidos. El vendedor espera que la mayoría de usuarios finales perdone los errores gracias que están muy contentos con la funcionalidad de la aplicación.
  • 29. INTRODUCCION Y DEFINICIONES Software lo suficientemente bueno Esto puede funcionar para ciertos dominios de aplicación y para algunas compañías grandes de software. Pero en una compañía pequeña hay que tener cuidado. Al entregar un producto bueno (pero defectuoso) corre el riesgo de causar un daño permanente re reputación a su compañía. Tal vez no llegue a entregar una versión 2.0 porque la empresa se puede derrumbar antes de lograrlo. En casos como software automotriz o de telecomunicaciones, entregar software con errores conocidos se convierte en una negligencia y puede crear litigios legales o incluso puede ser un delito.
  • 30. INTRODUCCION Y DEFINICIONES Costo de la calidad No hay dudad que la calidad tiene un costo, pero la mala calidad también lo tiene. El costo de la calidad puede dividirse en los costos asociados con la prevención, la evaluación y la falla. • Prevención: costo de actividades de administración para planear y coordinar las actividades de control, costo de actividades técnicas agregadas para desarrollar modelos completos de los requerimientos y del diseño, costos de capacitación • Evaluación: costo de efectuar revisiones técnicas, costo de recopilar datos y unidades de medida, costo de hacer pruebas y depurar • De falla: costo por repeticiones, costos por efectos colaterales, costo de unidades de medida de calidad, costos por solución de quejas, devoluciones, sustitución de productos, garantía.
  • 31. INTRODUCCION Y DEFINICIONES Riesgos de la mala calidad Lo perjudicial de la aplicaciones mal diseñadas e implementadas no siempre se mide en dólares y tiempo. Ejemplo: En noviembre del 2000, en un hospital de Panamá, 28 pacientes recibieron dosis masivas de rayos gama durante un tratamiento contra cáncer. Meses después 5 pacientes murieron por envenenamiento radiactivo 15 quedaron con complicaciones serias. Que ocasionó la tragedia?: Un paquete de software desarrollado por una compañía estadounidense, que fue modificado por técnicos del hospital para calcular la dosis de radiación para cada paciente. Los tres médicos panameños que modificaron el software fueron acusados de asesinato en segundo grado. La empresa desarrolladora enfrentó litigios legales en dos países.
  • 32. INTRODUCCION Y DEFINICIONES Calidad y seguridad El software que no tiene calidad es fácil de penetrar por parte de intrusos, en consecuencia el software de mala calidad aumenta indirectamente el riesgo de seguridad con los costos y problemas que conlleva. Para construir un sistema seguro hay que centrarse en la calidad, y eso debe comenzar durante el diseño. Al eliminar las fallas de arquitectura (con lo que mejora la calidad del software) será más difícil que intrusos penetren en el software.
  • 33. INTRODUCCION Y DEFINICIONES Lograr la calidad del software La calidad del software no solo se ve, es el resultado de una buena administración del proyecto y de una correcta práctica de ingeniería de software. Se pueden considerar 4 actividades para lograr una alta calidad.  Métodos de la arquitectura del software: Se debe entender el problema que se quiere resolver. Para esto se debe lograr un buen diseño que esté de acuerdo con el problema.  Técnicas de administración de proyectos: usar estimaciones para verificar que las fechas pueden cumplirse, la planeación del riesgo es fundamental.  Control de calidad: revisión de modelos para garantizar consistencia, inspeccionar el código para descubrir y corregir errores antes de las pruebas, etc.  Aseguramiento de la calidad: funciones de auditoría y reportes para evaluar la eficacia de las acciones de control de calidad.
  • 34. INTRODUCCION Y DEFINICIONES En conclusión la AS es: - Vista estructural de alto nivel - Define estilo o combinación de estilos para una solución - Se concentra en requerimientos no funcionales (los funcionales requieren modelado y diseño de la aplicación) - Escencial para el éxito o fracaso de un proyecto Lo hace: Un Ingeniero de software puede diseñar tanto los datos como la arquitectura pero en sistemas grandes y complejos es necesario un especialista. El Arquitecto del software selecciona un estilo arquitectónico a partir de los requerimientos obtenidos durante el análisis de los datos Se ocupa de: - Diseño preliminar de alto nivel y su efectividad - Organización a alto nivel del sistema: descrición y análisis de propiedades, de estructura y control global, protocolos de comunicación y sincronización, distribución física, componentes, etc. - Aspectos del desarrollo, evolución y adaptación: composición, reutilización, escalabilidad, mantenimiento.