Universidad Tecnológica de Panamá Métodos de Estimación y Evaluación del Software Parcial # 1 EL PRODUCTO • Qué es el Software. Que diferencia hay entre construir un software y construir un hardware. El Software es un conjunto de programas, documentos, procedimientos, y rutinas asociados con la operación de un sistema de computo. Distinguiéndose de los componentes físicos llamados hardware. El software asegura que el programa o sistema cumpla por completo con sus objetivos, opera con eficiencia, esta adecuadamente documentado, y suficientemente sencillo de operar, este simplemente realiza un conjunto de instrucciones individuales que se le proporciona al microprocesador para que pueda procesar los datos y generar los resultados esperados. El hardware por si solo no puede hacer nada, pues es necesario que exista el software, que es el conjunto de instrucciones que hacen funcionar al hardware. El software no se fábrica, se desarrolla, el hardware se fábrica. Una de las diferencias que más se notan en entre el hardware y el software es que no hay piezas de repuestos para el software si hay un error hay que buscar en el diseño y corregirlo en el hardware solo se cambia la pieza. En el mundo de las PC el hardware se a convertido en un producto estándar, siendo el software suministrado con ese hardware lo que marca la diferencia. • Haga un cuadro sinóptico sobre la evolución del Software (agregue un software construido durante ese periodo). Origen Primeros Años La segunda Era Características − Diseños a medidas para cada aplicación Abarca desde los − Fabricación para uno o inicios de los años más clientes 50 hasta unos diez años después, y en la − Una sola persona cual la tecnología desarrolla, ejecuta y electrónica era a base depuraba de bulbos o tubos de vacío, y la − Programación en códigos comunicación era en binarios términos de nivel mas bajo que puede − Entrada de datos por existir, que se tarjetas perforadoras conoce como lenguaje de máquina − Procesamiento por lotes con procesos de larga duración. Mitad de los años 60 − Multiprogramación y hasta finales del 70. Multiusuario Crecía la capacidad (Hombre−Máquina) de procesamiento y utilizaban un Ejemplos − 1947 ENIAC − 1949 EDVAC − 1951 UNIVAC I − 1953 IBM 701 − Fortran Monitor System − IBSYS 1 lenguaje de alto nivel − Comercialización del o lenguaje de Software pregrabación. − Problemas de mantenimiento provoco la crisis del software. − Procesadores de Palabra (Word Star) − Hoja de cálculo (VisiCalc) − Cobol La tercera Era − Hardware Ergonomico Se inaugura con la − Redes de área local y IBM 360 en abril de global 1974 y continua por más de una década. − Hardware estándar y de menor costo Basada en circuitos integrados y − Aparecen los sistemas lenguajes de control. operativos − Cliente / servidor − OS/360 de IBM − Empieza a finales de − MS−DOS − Internet (software de los 80 apareciendo acceso Individual) los − Unix microprocesadores La cuarta Era − Interfaces Amigables con velocidades Se hacen famosos impresionantes. − Programación orientada a objetos La evolución del ``software de libre distribución'' El sistema operativo Unix fue también desarrollado sobre una base cooperativa por AT&T con el soporte activo de un gran número de universidades y centros de investigación. Muchos de los primeros contribuidores de Unix se decepcionaron cuando AT&T comenzó a finales de los años 70 y en los 80, a reforzar sus términos de derechos de autor sobre el uso y distribución de Unix. Esta eventualidad tuvo como consecuencia la larga y amarga batalla legal entre AT&T (y con posterioridad Novell quien compró los derechos de autor de Unix a AT&T en 1991) y la Universidad de California en Berkeley. En una respuesta parcial a este problema de control individual de un proyecto publico de desarrollo de software, el Massachusetts Institute of Technology (MIT) en Cambridge, MA ha apoyado, desde 1984, los esfuerzos de Richard Stallman para lanzar un movimiento dentro de la comunidad de desarrolladores de software para apoyar el desarrollo de software de libre distribución. Esto tuvo como consecuencia el establecimiento de la Free Software Foundation (FSF), y su proyecto GNU. El nombre GNU sigue una antigua tradición de Unix consistente en utilizar acronismos recursivos como nombres de programa, y quiere decir Gnu no es Unix (Gnu's Not Unix). La FSF mantiene su cuartel general en el MIT, y ha gozado de un asombroso éxito en la última década con productos como GNU C, GNU C++, Emacs, y muchos otros, la mayoría de los cuales forman los pilares basicos y fundamentales del sistema operativo Linux. Richard Stallman insiste, con algo de justificación, en que Linux debería ser correctamente conocido como un sistema GNU. Existen muchas otras licencias de "software de libre distribución" bajo las que parte del código de Red Hat Linux esta licenciado. La más popular de ellas es la Licencia BSD de la Universidad de California en Berkeley por la cual el tenedor de los derechos de autor sigue siendo el propietario registrado pero donde no se imponen restricciones en la distribución al usuario del código. También proveniente del MIT, pero no relacionado con la FSF o la GPL, tenemos el X Consortium, que es un esfuerzo patrocinado por la industria Unix para construir y mantener el sistema X Window. Como consecuencia, un grupo llamado Proyecto XFree86 ha tomado la responsabilidad de migrar el Sistema X 2 Window a la plataforma Intel. Hemos incluido copias de cada una de estas licencias en el apéndice de este manual para su comodidad. Linux progresa continuamente con mucha rapidez gracias a las contribuciones de este esfuerzo de desarrollo a nivel mundial, al cual usted y su compañía o escuela están emplazados a contribuir. • Haga un cuadro que resuma para las aplicaciones de software sus categorías. Software de Sistemas Descripción Conjunto de programas creado como herramienta para otros programas Utilización S.O., Compiladores, CASE, Editores. Adquisición de datos: recoge y formatea los datos que entran. Software de Tiempo Real Análisis: transforma la Conjunto de programa que mide, información analiza y controla sucesos del mundo a real medida que ocurren. Control/Salida: respuesta Monitorización: coordina componentes (tiempo real) Realiza tareas de procesamiento de datos y operaciones de calculo interactivo. Utiliza algoritmos de manejo de Software de Ingeniería y científico números, simulación de sistemas, utiliza software en tiempo real. Reside en memorias ROM y sirve para controlar productos y Software Empotrado sistemas de los mercados industriales. Software de Gestión Aplicaciones de gestión de empresa Astronomía, cálculo, Biología molecular, Fabricación automática. Lavadoras Microondas Procesadores de texto Software para PC Aplicaciones orientadas a usuarios individuales o multiusuarios Hojas de cálculo Juegos, Aplicaciones financieras Gestores de base de datos Sistemas Expertos Hace uso de algoritmos no Reconocimiento de Patrones numéricos para resolver complejos (OCR) Software de Inteligencia Artificial para el que no son adecuados el Prueba de teoremas cálculo o el análisis directo. Redes neuronales artificiales • Seleccione una aplicación específica e indique: a) la categoría de la aplicación del software. b) El contenido de los datos asociados con la aplicación. C) La información determinada de la aplicación. Nombre de la Aplicación: CorelDraw 8.0 3 Categoría: Software para computadoras personales. Contenido de los datos: Figuras geométricas, unidades de medidas (pulgadas, centímetros, etc.), gamas de colores, formas especiales, ClipArt, Mezcla de colores, animaciones fotográficas y videográficas, imágenes bmp, jpg, etc. Información determinada de la aplicación: menús gráficos, iconos de accesos directos, ayuda visual automática, herramientas de escritura, fuentes multiidioma, utilidades gráficas, herramientas de productividad. EL PROCESO • Qué es más importante el producto o el proceso. A nuestro criterio personal el proceso es más importante ya que el producto surge de lo eficaz y eficiente que sea el proceso de desarrollo del producto de software. El proceso se enmarca en una disciplina de desarrollo, operación y mantenimiento haciendo un software (producto) de alta calidad. • Qué es un modelo de proceso o paradigma de ingeniería del software. El proceso de ingeniería de software se define como "un conjunto de etapas parcialmente ordenadas con la intención de logra un objetivo, en este caso, la obtención de un producto de software de calidad" .El proceso de desarrollo de software "es aquel en que las necesidades del usuario son traducidas en requerimientos de software, estos requerimientos transformados en diseño y el diseño implementado en código, el código es probado, documentado y certificado para su uso operativo". Concretamente "define quién está haciendo qué, cuándo hacerlo y cómo alcanzar un cierto objetivo". • Proceso, Métodos y Herramientas es lo mismo, explique su respuesta. Los métodos nos enseñan como construir técnicamente el software; Las herramientas son el soporte automático o semiautomático de aplicación de los métodos y los procesos son la aplicación de los métodos utilizando las herramientas. Con estas definiciones nos damos cuenta de que estas forman parte de lo que abarca la ingeniería de software por lo que unidas significan los mismo y están ligadas unas con otras para poder llegar al producto final que se requiere con una alta calidad al momento de la entrega del software al cliente. • Haga un cuadro comparativo que muestre los modelos de procesos para la Ingeniería de Software. Cuadro Comparativo de Los Paradigmas Modelo CASCADA Ventajas Desventajas Los proyectos rara vez siguen un flujo secuencial Es el más utilizado Es fácil de aplicar Es difícil establecer todos los requerimientos del sistema en las primeras etapas 4 La versión final del sistema no se tendrá rápido PROTOTIPOS Permite ver un software más rápido El usuario puede evaluar el producto y mejorarlo Añade el elemento: análisis de riesgo El software que ve el usuario es débil El usuario piensa que ya se encuentra terminado el producto Difícil de administrar ESPIRAL Es muy útil en proyectos grandes Permite construir SW rápidamente CUARTA GENERACION Requiere de gran experiencia Es un modelo nuevo Su aplicación casi está limitada a sistemas administrativos Reduce el tiempo de análisis en aplicaciones pequeñas No es muy útil en aplicaciones grandes Reduce el tiempo de implementación en aplicaciones Problemas de eficiencia en algunos medianas lenguajes CONCEPTOS SOBRE GESTION DE PROYECTOS • Describa gestión de proyectos. Gestión de proyectos La gestión de un proyecto es una tarea vital para el éxito del mismo. Dentro de la gestión, la planificación juega un importante rol, debido a que es en esta etapa donde se debe hacer las asignaciones de los recursos disponibles, para lo que es necesario estimar costos y plazos para el proyecto a realizar. • Defina los siguientes términos: Ámbito: Identifica los datos primarios, funciones y comportamientos que caracterizan el problema y más importante, intenta abordar estas características de una manera cuantitativa. Coordinación: Características del software moderno (escala, incertidumbre, interoperatividad) son aspectos de la vida y para enfrentarse a ellos eficazmente se debe tener un equipo de trabajo con métodos efectivos para coordinar a la gente que realiza el trabajo. Gestión MOI: Persona que se busca para dirigir un proyecto de software con las siguientes características: Motivación, Organización e Ideas o Innovación. 5 Descomposición del problema: se asienta en el corazón del análisis de requisitos del software. Se aplica en dos áreas principales: la funcionalidad que debe entregarse y el proceso que se empleara para entregarlo. Equipo de software: personal involucrado directamente en un proyecto de software que esta dentro del ámbito del gestor de proyecto. Estructura común de proceso: adopta las siguientes actividades estructurales: Comunicación con el cliente, planificación, análisis de riesgo, ingeniería, construcción y entrega, evaluación del cliente. Estructura de Equipo: depende del estilo de gestión de una organización, el número de personas que compondrá el equipo, sus niveles de preparación y la dificultad general del problema. Existen 3 estructuras de equipo que son: descentralizado democrático, descentralizado controlado y centralizado controlado. Jefe de Equipo: persona con habilidad para motivar al personal técnico, moldear procesos existente o nuevo incentivar la creatividad incluso cuando tengan que trabajar dentro de los limites establecidos del producto. Principio w 5 HH: es un documento sobre proyectos y procesos de software creado por Barry Boehm donde sugiere una serie de preguntas que conducen a la definición de las características claves y plan de proyecto. ¿Por qué se desarrolla el sistema? ¿Qué se realizará y cuando? ¿Quién es el responsable de una función? ¿Dónde están situados organizacionalmente? ¿Cómo estará realizado el trabajo desde el punto de vista técnico y de gestión? ¿Qué cantidad de cada recurso se necesita? Toxicidad del equipo: se definen 5 factores: • Una atmósfera de trabajo frenética en los miembros del equipo, gastan energía y se desconcentran. • Alta frustración causada por factores tecnológicos del negocio. • Procedimientos coordinados pobremente • Definición confusa de los papeles a desempeñar produciendo falta de responsabilidad. • Continua y repetida exposición al fallo que conduce a la perdida de confianza. Las tres pes: estas son: personal, problema y proceso. El orden no es arbitrario. El personal debe organizarse en equipos eficaces para hacer un software de alta calidad y coordinarlos para alcanzar una comunicación efectiva. • Problema 3.7: Se le ha nombrado gestor de proyecto de una compañía de productos de software. Su trabajo consiste en construir un producto innovador que combine hardware de realidad virtual con software innovador. Como la competitividad en el mercado casero es intensa, hay cierta presion para terminar el trabajo rapidamente. ¿Qué estructura de equipo eligiria y porque? ¿Qué modelo de proceso de software eligiria y porque? La estructura de equipo que utilizaria se basaria en gente joven con mucha creatividad y que lleven la programación en la sangre, pero trabajando simultáneamente con personas maduras y responsables para evitar que se descarrile el grupo por falta de personas serias. También trabajaria con niños escuchando ideas nuevas 6 y frescas de que les gustaria tener en casa o como mejorar algo que tengan en casa. Por estas y muchas otras razones me baso en un EQUIPO DESCENTRALIZADO DEMOCRATICO. En cuanto al tipo de modelo de proceso a utilizar nos inclinamos por el de CUARTA GENERACIÓN, ya que por sus características es m{as flexible a la hora de programar, se identifican más rápidamente los errores por su sistema de SW y reduce el tiempo de análisis y de implementación del producto. Calidad Hardware Software Evolución del Hardware con respecto al Software 7