Universidad Tecnológica de Panamá Métodos de Estimación y Evaluación del Software

Anuncio
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
Descargar