Professional Documents
Culture Documents
México
Instituto Tecnológico de Acapulco
Integrantes de equipo:
Flores Carmona Diana Arlett (15321057)
Morales Flores Jose Manuel (15321136)
Valenzuela Barrientos Carlos Jair (15321214)
pág. 1
incluyen los requisitos del cliente generados externamente, los requisitos organizativos
internos, los planes de marcado y los planes de misión de la organización. La mayoría de
las organizaciones de desarrollo de software son muy selectivas al decidir qué productos
desarrollar; No todos los objetivos de oportunidad son explotados. La decisión de proceder
se basa generalmente en el resultado de un estudio de viabilidad.
El primer paso para planificar un software es preparar, en la terminología del cliente, una
declaración concisa del problema a resolver y las restricciones que existen para su solución.
La declaración del problema definitivo debe incluir una descripción de la situación actual y
los objetivos que debe alcanzar el nuevo sistema.
Tenga en cuenta que el problema del cliente, desde el punto de vista del cliente, es quizás
un problema de nómina, un problema de inventario. o un problema de control de tráfico
aéreo, y no un problema de canales DMA (Direct Memory Access o Acceso Directo a
Memoria), algoritmos de clasificación o bases de datos relacionales.
La definición del problema requiere una comprensión profunda del dominio del problema y
del entorno del problema. Las técnicas para obtener este conocimiento incluyen entrevistas
con los clientes, observación de tareas problemáticas y el desempeño real de las tareas por
parte del planificador. El planificador debe ser altamente experto en las técnicas de
definición de problemas, ya que los diferentes representantes de los clientes pueden no
estar familiarizados con las capacidades que puede ofrecer una computadora en su
situación, y los representantes más pequeños rara vez son capaces de formular sus
problemas de una manera que resulte lógica.
A veces, los sistemas informáticos se crean para remediar un síntoma en lugar de la causa
raíz de un problema. Esto ocurre cuando se comprende el verdadero problema, pero no se
puede resolver debido a circunstancias económicas, políticas o sociales, o cuando el cliente
no puede comunicar el verdadero problema, o cuando el planificador no entiende la
explicación del problema del cliente.
Se deben identificar las funciones que debe realizar cada subsistema principal, se debe
establecer la interacción entre los subsistemas y se deben determinar las limitaciones
operativas y de desarrollo para cada subsistema principal. Las restricciones especifican
números y tipos de equipos, números y niveles de habilidades del personal, y
características del software tales como rendimiento, precisión y nivel de confiabilidad. La
asignación precisa de funciones entre hardware, software y personas puede ser un análisis
detallado. Sin embargo, debe intentarse la definición preliminar de las funciones principales
del subsistema.
Dada una declaración concisa del problema y una indicación de las restricciones que
existen para su solución, se pueden formular objetivos preliminares y requisitos. Las metas
son objetivos para el logro y sirven para establecer el marco para un proyecto de desarrollo
de software. Los objetivos se aplican tanto al proceso de desarrollo como a los productos
de trabajo, y los objetivos pueden ser cualitativos o cuantitativos:
Algunos objetivos se aplican a cada proyecto y cada producto. Por ejemplo, cada producto
de software debe ser útil, confiable, comprensible y rentable. Cada proceso de desarrollo
debe entregar los productos de trabajo a tiempo y dentro de las estimaciones de costos, y
debe proporcionar al personal con oportunidad de aprender nuevas habilidades. Otros
objetivos, como la facilidad de transporte, la entrega temprana de las capacidades de los
subconjuntos y la facilidad de uso por parte de los no programadores, dependen de la
situación particular.
Los requisitos especifican las capacidades que un sistema debe proporcionar para resolver
un problema. Los requisitos incluyen requisitos funcionales, requisitos de rendimiento y
requisitos para el hardware, firmware, software e interfaces de usuario. Los requisitos
también pueden especificar estándares de desarrollo y estándares de garantía de calidad
tanto para el proyecto como para el producto. Los requisitos deben ser cuantificados
siempre que sea posible.
Los requisitos cuantificados pueden utilizarse como base para las pruebas de aceptación
del sistema entregado. Los requisitos cualitativos a menudo carecen de significado y
pueden dar lugar a malentendidos y desacuerdos entre los desarrolladores y los clientes.
Es difícil cuantificar los requisitos en la fase de planificación porque, por lo general, no está
claro qué se necesita para resolver el problema o qué se puede lograr dentro de las
restricciones de la solución. Sin embargo, se debe hacer todo lo posible para formular
requisitos significativos y para establecer los métodos que se utilizarán para verificar cada
requisito.
pág. 3
Los objetivos y requisitos de alto nivel a menudo se pueden expresar en términos de
atributos de calidad que el sistema debe poseer. Estos atributos de calidad de alto nivel
pueden a su vez expresarse en términos de atributos que pueden integrarse en los
productos de trabajo. Por ejemplo, la confiabilidad se puede expresar en términos de
precisión, robustez, integridad y consistencia del código fuente. Cada uno de estos términos
se puede definir cuidadosamente en términos de atributos más específicos del código
fuente. Por ejemplo, la precisión se puede definir como la medida en que los resultados
producidos por el código son lo suficientemente precisos para satisfacer su uso previsto.
Esto puede traducirse en requisitos específicos para cualquier problema particular.
Para poder planificar para alcanzar cada hito en la fecha prevista, se deben responder
preguntas como las siguientes:
Los objetivos expresan los fines o los propósitos que se esperan alcanzar con el estudio
del problema planteado. Por tal razón, se dice que los objetivos constituyen la finalidad de
la investigación. Estos deben responder a la pregunta: ¿qué se pretende alcanzar con la
investigación?
Los objetivos son las guías de estudio durante el proceso de la investigación, son la razón
de ser y hacer en la misma y deben mostrar una relación clara y consistente con la
pág. 4
descripción del problema, y específicamente con las preguntas, hipótesis o ambas
cuestiones, que se quieren resolver.
Características de los objetivos: deben ser precisos, concisos, medibles y alcanzables.
Precisos: significa que se deben expresar de forma clara, con lenguaje sencillo,
evitando ambigüedades.
Concisos: se deben formular de la manera más resumida posible, sin rodeos,
utilizando solo las palabras necesarias.
Medibles: deben expresarse de modo tal que permitan medir las cualidades o
características que caracterizan el objeto de investigación.
Alcanzables: deben existir posibilidades reales de lograr los objetivos planteados.
Con frecuencia se cometen errores al formular los objetivos, entre los que podemos citar el
confundir los objetivos con el método o incluir un procedimiento como parte de este.
El proyecto surge como respuesta a una “idea” que busca la solución de un problema
(reemplazo de tecnología obsoleta, abandono de una línea de productos) o la manera de
aprovechar una oportunidad de negocio. Ésta por lo general corresponde a la solución de
un problema de terceros, por ejemplo, la demanda insatisfecha de algún producto, o la
sustitución de importaciones de productos que se encarecen por el flete y los costos de
distribución en el país.
pág. 6
esfuerzo, duración y fecha de inicio para cada tarea. Además, las tareas pueden asignarse
a individuos específicos.
El control lo emplea un gerente de proyecto de software para administrar los recursos del
proyecto, enfrentar los problemas y dirigir al personal del proyecto. Si las cosas van bien
(es decir, si el proyecto avanza conforme el calendario y dentro de presupuesto, las
revisiones indican que se realiza progreso real y que se alcanzan los hitos), el control es
ligero. Pero cuando ocurren problemas, debe ejercerse el control para reconciliar los
elementos discordantes tan rápidamente como sea posible. Después de diagnosticar un
problema pueden enfocarse recursos adicionales sobre el área problemática: puede
reasignarse al personal o redefinirse el calendario del proyecto.
Cuando se enfrentan a severa presión debido a la fecha límite, los gerentes experimentados
en ocasiones usan un calendario de proyecto y técnica de control llamado time-boxing
(encuadre temporal). La estrategia time-boxing reconoce que el producto completo no
puede entregarse en la fecha límite preestablecida. Por tanto, se elige un paradigma de
software incremental y se establece un calendario para cada entrega incremental.
Las tareas asociadas con cada incremento se encuadran en el tiempo. Esto significa que el
calendario para cada tarea se ajusta trabajando en reversa desde la fecha de entrega hasta
el momento del incremento. Alrededor de cada tarea se pone un “recuadro”. Cuando una
tarea llega a la frontera de su encuadre temporal (más o menos 10 por ciento), el trabajo
se detiene y comienza la siguiente tarea.
Con frecuencia, la reacción inicial ante el enfoque time-boxing es negativa: “Si el trabajo no
se termina, ¿cómo puedo avanzar?”. La respuesta se encuentra en la forma en la que se
logra el trabajo. Para cuando se llega a la frontera del encuadre temporal, es probable que
90 por ciento de la tarea esté completa. El restante 10 por ciento, aunque importante, puede:
pág. 7
con los métodos de estimación y análisis de riesgos, establece un mapa de caminos para
el gerente del proyecto.
El esfuerzo total del proyecto es sensible al tiempo del calendario disponible para la
finalización del proyecto. Varios investigadores han estudiado la cuestión del tiempo de
desarrollo óptimo, y la mayoría de ellos coinciden en que los proyectos de software
requieren un esfuerzo más total si el tiempo de desarrollo es comprimido o expandido desde
el momento óptimo.
Los clientes a veces financian la fase de análisis y el diseño preliminar a veces es otorgado
a múltiples organizaciones de desarrollo de software por parte del cliente, quien luego elige
una organización para desarrollar el producto de software sobre la base de las
competencias de análisis y diseño preliminar.
Hay muchos factores que influyen en el costo de un producto de software. Los efectos de
la mayoría de estos factores, y por lo tanto el costo de un esfuerzo de desarrollo o
mantenimiento, son difíciles de estimar. Los principales factores de costo son las
habilidades individuales del personal del proyecto y su familiaridad con el área de
aplicación; la complejidad del producto; el tamaño del producto; el tiempo disponible el nivel
pág. 8
requerido de confiabilidad; el nivel de tecnología utilizado; y la disponibilidad, la familiaridad
y la estabilidad del sistema utilizado para desarrollar el producto.
La estimación de costos Bottom-Up primero estima el costo para desarrollar cada módulo
o subsistema. Esos costos se combinan para llegar a una estimación general. La estimacion
de Top-Down tiene la ventaja de enfocarse en el costo del sistema, pero puede pasar por
alto varios factores técnicos en algunos de los módulos que se desarrollarán. La estimación
Botton-Up enfatiza el costo asociado con el desarrollo de componentes individuales del
sistema, pero puede no dar cuenta de los costos de nivel del sistema, como la
pág. 9
administración de configuración y el control de calidad. En la práctica, ambas estimaciones
deben ser desarrolladas, comparadas, e iteradas para eliminar diferencias.
La mayor ventaja de la opinión experta, es decir, la experiencia, también puede ser una
responsabilidad. El experto puede estar seguro de que el proyecto es similar a uno anterior,
pero puede haber sobrecargado algunos factores que hacen que el nuevo proyecto sea
significativamente diferente. O, el experto que hace la estimación puede no tener
experiencia con un proyecto similar al actual.
Para compensar estos factores, los grupos de expertos a veces preparan un presupuesto
de consenso. Esto tiende a minimizar los descuidos individuales y la falta de familiaridad
con proyectos particulares, y neutraliza los sesgos personales y el deseo (quizás
subconsciente) de ganar el contrato a través de una estimación excesivamente optimista.
La desventaja principal de la estimación del grupo es el efecto que la dinámica interpersonal
del grupo puede tener en los individuos en el grupo. Los miembros del grupo pueden ser
menos que francos debido a las consideraciones políticas, la presencia de figuras de la
autoridad en el grupo, o la dominación de un miembro demasiado asertivo del grupo. La
técnica de Estimación de Costo Delphi se puede utilizar para superar estas desventajas.
La técnica Delphi fue desarrollada por Rand Corporation en 1948 para ganar el consenso
experto sin introducir los efectos secundarios adversos de la reunión del grupo. La técnica
de Delphi se puede adaptar a la estimación del coste de software de la manera siguiente:
pág. 10
El coordinador proporciona a cada estimador una "definición del sistema" y un
formulario de estimación.
Los estimadores estudian la definición, y el coordinador llama a una reunión de grupo
para que los estimadores puedan discutir asuntos con el coordinador uno con el otro.
Estimaciones completan sus estimaciones anónimamente.
El coordinador prepara un resumen de las estimaciones, pero no reconoce ningún
fundamento.
El coordinador convoca a una reunión de grupo para centrarse en cuestiones en las
que las estimaciones varían ampliamente.
Los estimadores completan otra estimación, de forma anónima. El proceso es iterado
por tantas veces como sea necesario.
La jerarquía del producto identifica los componentes del producto e indica la manera en que
los componentes están interconectados. Una tabla WBS de procesos jerárquica identifica
las actividades de trabajo y las relaciones entre dichas actividades.
Algunos planificadores utilizan tanto la estructura de desglose del trabajo del producto como
del proceso para la estimación de costos. Las principales ventajas de la técnica WBS se
encuentran en la identificación y la contabilidad de diversos factores de procesos y
productos, y en la explicación explícita de los costos que se incluyen en la estimación.
El juicio de expertos, el consenso de grupo y las estructuras de desglose del trabajo (WBS)
son las técnicas de estimación de costos más utilizadas. Muchas organizaciones utilizan
los tres enfoques y repiten las estimaciones hasta que se hayan resuelto las diferencias.
El mantenimiento del software normalmente requiere del 40 al 60 por ciento del esfuerzo
total del ciclo de vida dedicado a un producto de software. Las actividades de
mantenimiento incluyen agregar mejoras al producto, adaptar el producto a nuevos
entornos de procesamiento y corregir problemas.
pág. 11
Las mayores preocupaciones sobre el mantenimiento durante la fase de planificación de un
proyecto de software son estimar el número de programadores de mantenimiento que serán
necesarios y especificar las instalaciones necesarias para el mantenimiento.
Cuando se presenta una licitación para obtener un contrato, hay que calcular el precio que
se propondrá al cliente para el desarrollo del software. Como punto de partida para calcular
este precio, se requiere presentar una estimación de los costos para completar el trabajo
del proyecto. La estimación incluye calcular cuánto esfuerzo se requiere para terminar cada
actividad y, a partir de ello, calcular el costo total de las actividades. Siempre habrá que
calcular los costos del software de manera objetiva, con la finalidad de predecir con
precisión el costo para el desarrollo del software. Una vez que se tiene una estimación
razonable de los probables costos, entonces es posible calcular el precio que se cotizará al
cliente.
Al estimar los costos del esfuerzo de un proyecto de software, no sólo se multiplican los
sueldos del personal involucrado por el tiempo invertido en el proyecto, sino que también
hay que tener en cuenta todos los costos generales de la organización (espacio de oficinas,
administración, etcétera) que deben cubrirse con el ingreso del proyecto. Los costos se
estiman al calcular dichos costos generales y sumar una proporción a los costos de cada
ingeniero que trabaja en un proyecto.
Existen tres principales parámetros que se deben usar al calcular los costos de un proyecto
de desarrollo de software:
pág. 12
riesgos asociados con el proyecto y el tipo de contrato que se firmará. Esto puede hacer
que el precio se ajuste al alza o baja. Dadas las precisiones organizacionales implicadas,
decidir sobre un precio de proyecto debe ser una actividad grupal que incluya al personal
de marketing y ventas, así como altos ejecutivos y administradores de proyecto.
Como el costo de un proyecto sólo está débilmente relacionado con el precio cotizado a un
cliente, “cotizar para ganar” es una estrategia usada comúnmente. Cotizar para ganar
significa que una compañía tiene alguna idea del precio que el cliente espera pagar y hace
una apuesta por el contrato con base en el precio esperado por el cliente. Esto puede
parecer no ético y poco práctico en los negocios, pero tiene ventajas tanto para el cliente
como para el proveedor del sistema.
Las personas que trabajan en una organización de software son los activos más
importantes. Cuesta mucho dinero reclutar y retener al buen personal, así que depende de
los administradores de software garantizar que la organización obtenga el mejor
aprovechamiento posible por su inversión. En las compañías y economías exitosas, esto se
logra cuando la organización respeta a las personas y les asigna responsabilidades que
reflejan sus habilidades y experiencia.
pág. 13
Existen cuatro factores críticos en la gestión de personal:
Como administrador de proyecto, usted necesitará motivar a las personas con quienes
trabaja, de manera que éstas contribuyan con lo mejor de sus habilidades. Motivación
significa organizar el trabajo y el ambiente laboral para alentar a los individuos a
desempeñarse tan efectivamente como sea posible. Si las personas no están motivadas,
no estarán interesadas en la actividad que realizan. Así que trabajarán con lentitud, y será
más probable que cometan errores y que no contribuyan con las metas más amplias del
equipo o la organización.
El planificador comienza por evaluar el ámbito del software y seleccionando las habilidades
requeridas para completar el desarrollo. Se especifican tanto la posición organizacional (por
ejemplo, gerente, ingeniero de software ejecutivo) como la especialidad (por ejemplo,
telecomunicaciones, base de datos, cliente-servidor). Para proyectos relativamente
pequeños (algunos persona-meses), un solo individuo puede realizar todas las tareas de
ingeniería de software y consultar especialistas según lo requiera. Para proyectos más
grandes, el equipo de software puede dispersarse geográficamente a través de algunas
ubicaciones diferentes. Por tanto, se debe especificar la ubicación de cada recurso humano.
El número de personas requeridas para un proyecto de software puede determinarse sólo
después de hacer una estimación del esfuerzo de desarrollo (por ejemplo, persona-meses).
Una diferencia estricta entre riesgo e incertidumbre identifica al riesgo como la dispersión
de la distribución de probabilidades del elemento en estudio o los resultados calculados,
mientras que la incertidumbre es el grado de falta de confianza respecto a que la distribución
de probabilidades estimadas sea la correcta.
pág. 15
Es extremadamente importante observar que la categorización simple de riesgos no
siempre funciona. Algunos de ellos son simplemente impredecibles por adelantado.
La intención de estos pasos es considerar los riesgos de manera que conduzcan a una
priorización. Ningún equipo de software tiene los recursos para abordar todo riesgo posible
con el mismo grado de rigor. Al priorizar los riesgos es posible asignar recursos donde
tendrán más impacto.
La exposición al riesgo puede calcularse para cada riesgo en la tabla de riesgo, una vez
hecha la estimación del costo del riesgo. La exposición al riesgo total para todos los riesgos
puede proporcionar los medios para ajustar la estimación del costo final para un proyecto.
También puede usarse para predecir el aumento probable en recursos de personal
requeridos en varios puntos durante el calendario del proyecto.
El equipo del proyecto debe revisar la tabla de riesgos a intervalos regulares, reevaluar
cada riesgo para determinar cuándo nuevas circunstancias cambian su probabilidad e
impacto. Como consecuencia de esta actividad, acaso sea necesario agregar nuevos
riesgos a la tabla, eliminar algunos riesgos que ya no son relevantes e incluso cambiar las
posiciones relativas de otros.
pág. 17
El criterio subjetivo es uno de los métodos comúnmente utilizados. Se basa en
consideraciones de carácter informal de quien toma la decisión, sin incorporar
específicamente el riesgo del proyecto, salvo en su apreciación personal. Se ha intentado
mejorar este método sugiriendo que se tengan en cuenta la expectativa media y la
desviación estándar del VAN (Valor Absoluto Neto), lo cual, aunque otorga un carácter más
objetivo a la inclusión del riesgo, no logra incorporarlo en toda su magnitud. De igual
manera, el análisis de fluctuaciones de los valores optimistas, más probables y pesimistas
del rendimiento del proyecto, sólo disminuye el grado de subjetividad de la evaluación del
riesgo, sin eliminarla.
Los métodos basados en mediciones estadísticas son quizá los que logran superar de mejor
manera, aunque no definitivamente, el riesgo asociado con cada proyecto. Para ello,
analizan la distribución de probabilidades de los flujos futuros de caja para presentar a quien
tome la decisión de aprobación o rechazo los valores probables de los rendimientos y de la
dispersión de su distribución de probabilidad.
Frente a las desventajas respecto del método del ajuste a la tasa de descuento y con
similares beneficios de orden práctico, está el método de la equivalencia a certidumbre.
Según este criterio, quien decide está en condiciones de determinar su punto de indiferencia
entre flujos de caja por percibir con certeza y otros, obviamente mayores, sujetos a riesgo.
Otro de los criterios que debe evaluarse es el de los valores esperados. Este método,
conocido comúnmente como análisis del árbol de decisiones, combina las probabilidades
de ocurrencia de los resultados parciales y finales para calcular el valor esperado de su
rendimiento. Aunque no incluye directamente la variabilidad de los flujos de caja del
proyecto, ajusta los flujos al riesgo en función de la asignación de probabilidades.
pág. 18
Los objetivos de las actividades de verificación y validación son evaluar y mejorar la calidad
de los productos generados durante el desarrollo y la modificación del software. Los
atributos de calidad de interés incluyen corrección, integridad, consistencia, confiabilidad,
utilidad, facilidad de uso, eficiencia, conformidad con los estándares y rentabilidad general.
Hay dos tipos de verificación: la verificación del ciclo de vida y la verificación formal. La
verificación del ciclo de vida es el proceso de determinar el grado en que los productos de
trabajo de una fase determinada del ciclo de desarrollo cumplen con las especificaciones
establecidas durante las fases anteriores. La verificación formal es una demostración
matemática rigurosa de que el código fuente cumple con sus especificaciones. La validación
es el proceso para determinar el cumplimiento de los requisitos.
pág. 19
Los errores se producen cuando cualquier aspecto de un producto de software es
incompleto, incoherente o incorrecto. Tres categorías principales de errores de software
son errores de requisitos, errores de diseño y errores de implementación. Los errores en
los requisitos se deben a una declaración incorrecta de las necesidades del usuario, al no
especificar completamente los requisitos funcionales y de rendimiento, a las inconsistencias
entre los requisitos y a los requisitos inviables.
Más específicamente, un grupo de control de calidad del software puede realizar las
siguientes funciones:
pág. 21
Durante la evolución del producto, las Auditorías En Proceso se realizan para
verificar la consistencia y la integridad de los productos de trabajo. Los artículos a
auditar para la consistencia incluyen especificaciones de interfaz para hardware,
software y personas; diseño interno versus especificaciones funcionales; código
fuente versus documentación de diseño; y requerimientos funcionales versus
descripciones de prueba. En la práctica, sólo ciertas porciones críticas del sistema
pueden ser sometidas a auditorías intensivas.
Antes de la entrega del producto, se realizan una Auditoría Funcional y una Auditoría
Física. La Auditoría Funcional reconfirma que todos los requisitos han sido
cumplidos. La Auditoría Física verifica que el código fuente y todos los documentos
asociados son completos, consistentes internamente, consistentes entre sí, y listos
para la entrega. Un Resumen de Verificación del Software está preparado para
describir los resultados de todas las revisiones, auditorías y pruebas realizadas por
personal de garantía de calidad durante todo el ciclo de desarrollo.
Hay cuatro tipos de pruebas que el código fuente debe satisfacer: pruebas de función,
pruebas de rendimiento, pruebas de estrés y pruebas de estructura. Las pruebas de función
y pruebas de rendimiento están basadas en las especificaciones de requisitos; están
diseñadas para demostrar que el sistema satisface sus requerimientos. Por lo tanto, el plan
de prueba puede ser tan bueno como los requisitos, que a su vez deben ser frases en
términos cuantificados y comprobables.
Las pruebas de rendimiento están diseñadas para verificar el tiempo de respuesta bajo
diversas cargas, porcentaje del tiempo de ejecución invertido en varios segmentos del
programa, rendimiento de procesamiento, utilización de memoria primaria y secundaria, y
tasas de tráfico en los canales de datos y enlaces de comunicación.
Las pruebas de estrés están diseñadas para sobrecargar un sistema de varias maneras.
Ejemplos de pruebas de estrés incluyen intentar firmar más que el número máximo de
terminales permitidos, procesar más que el número permitido de identificadores o niveles
estáticos, o desconectar un vínculo de comunicación.
Un enfoque típico para las pruebas de estructura es aumentar las pruebas funcionales, de
rendimiento y de estrés con casos de prueba adicionales para lograr el nivel deseado de
cobertura de prueba. Por lo tanto, las pruebas de estructura no se pueden diseñar hasta
que el sistema sea implementado y sometido al plan de pruebas predefinido.
En algunos casos, el personal de garantía de calidad trabajará con el desarrollo para derivar
el Plan de Pruebas de Código Fuente. En otros casos, el grupo de garantía de calidad sólo
verificará la adecuación del plan de prueba para el código fuente. En cualquier caso, el plan
de prueba es un importante producto de trabajo del proceso de diseño, y como todos los
productos de trabajo, debe ser desarrollado de una manera sistemática y evaluado por el
grupo de garantía de calidad.
Los miembros de un equipo de guía (walkthrough) pueden incluir al líder del proyecto, otros
miembros del equipo del proyecto, un representante del grupo de garantía de calidad, un
escritor técnico, y otro personal técnico que tenga un interés en el proyecto. Los clientes y
los usuarios deben ser incluidos en las guías durante los requisitos y las fases preliminares
de diseño, pero por lo general se excluyen de las siguientes sesiones de guía (walkthrough).
Los administradores de nivel superior no deben asistir a las guías. Las sesiones de
caminatas deben estar en una atmósfera abierta y no defensiva. La presencia de un
vicepresidente o gerente de departamento puede inhibir el proceso de revisión.
El objetivo de una guía es descubrir y hacer notar las áreas problemáticas. Los problemas
no se resuelven durante la sesión de guía. Se resuelven por el revisor después de la sesión
de guía. Se debe utilizar una reunión de seguimiento o memorando de seguimiento para
informar a los revisores de las acciones tomadas. El revisor puede trabajar con uno o más
revisores para resolver problemas, pero es la responsabilidad del revisor asegurar que los
problemas anotados durante la guía estén resueltos.
Se deben observar varias directrices para obtener el máximo beneficio de las guías:
El trabajo de todos debe ser revisado sobre una base programada. Este enfoque
asegura que todos los productos de trabajo sean revisados, proporcione un vehículo
de comunicación entre los miembros del equipo y disminuya la amenaza a los
revisores individuales. En particular, se debe revisar el trabajo técnico del líder del
proyecto. Una actitud abierta y no defensiva del líder del proyecto puede establecer
un ambiente saludable para las revisiones.
Se debe poner énfasis en detectar errores. No se debe utilizar una sesión de guía
para corregir errores. El revisor debe tener en cuenta los errores para la resolución
subsecuente. Para este fin, un miembro del equipo de revisión debe ser designado
secretaria de registro para la sesión.
Deberían abordarse cuestiones importantes. Aunque a veces es difícil distinguir
entre temas importantes y menores, las sesiones de guía no deberían degenerarse
pág. 24
en discusiones detalladas de problemas menores. Por ejemplo, se podrían abordar
cuestiones importantes de la eficiencia del código, pero deberían evitarse cuestiones
de menor importancia del estilo de codificación. Algunos asuntos se discuten mejor
en privado después del guía. Un revisor debe ser designado como moderador para
mantener una atmósfera positiva y mantener el guía enfocado en asuntos
importantes.
Las sesiones de guía deben estar limitadas a 2 horas. Un plazo de tiempo definido
asegura que la reunión no se arrastrará durante varias horas. Esto ayuda a limitar el
alcance del material a examinar, refuerza el énfasis en temas importantes, y
proporciona incentivo para la participación activa de los revisores.
El uso satisfactorio de las guías depende fuertemente de establecer una atmósfera positiva
y no amenazante para las sesiones de guía. El líder del proyecto, los programadores senior,
y el moderador de guía deben recibir entrenamiento especial en técnicas de guía y
dinámicas de grupo para asegurar el ajuste psicológico correcto. Otros factores que
contribuyen al éxito de las guías incluyen enfatizar la detección de problemas importantes,
limitar la duración de cada guía y programar las guías para cada miembro del equipo de
forma regular.
El tiempo suficiente para las guías se debe asignar en el horario del proyecto. Sesiones de
guía deben considerarse como parte de la carga de trabajo normal de cada participante, en
lugar de como un compromiso de sobrecarga. El tiempo que se gasta en las guías es
ampliamente pagado por numerosos beneficios: los errores se capturan en el momento más
temprano posible, cuando son más fáciles y menos costosos de arreglar; se mejora la
comunicación del equipo de proyecto; el personal del proyecto aprende nuevas técnicas
unas de otras y el personal nuevo aprende rápidamente los detalles del proyecto; la
motivación es mejorada; los productos de trabajo se ven como documentos públicos; y los
miembros del equipo obtienen una mayor satisfacción del trabajo de su trabajo.
No se deben usar guías como vehículos para la evaluación de los empleados. Durante un
período de tiempo, el líder del proyecto observará fortalezas y debilidades en el miembro
del equipo. En muchos casos, las asignaciones de proyectos pueden ser ajustadas para
aprovechar las habilidades de cada individuo. En algunos casos, los miembros del equipo
aprenderán de sus colegas y superarán las debilidades iniciales. En algunos casos, puede
ser necesario reasignar o despido de personal no apto. En cualquier caso, estas acciones
deben basarse en observaciones de numerosos factores durante un período de tiempo, y
no en el desempeño de una persona en una o dos sesiones de caminata.
Las inspecciones, como las guías, se pueden utilizar a lo largo del ciclo de vida del software
para evaluar y mejorar la calidad de los diversos productos de trabajo. Los equipos de
inspección constan de uno a cuatro miembros capacitados para sus tareas. Los inspectores
trabajan desde las listas de comprobación de los elementos de inspección. Las
inspecciones se realizan de manera similar a los tutoriales, pero se impone más estructura
en las sesiones, y cada participante tiene un papel definido que desempeñar.
pág. 25
El diseño y las inspecciones de código fueron descritos por primera vez por Fagan (FAG76).
En el experimento de Fagan, se realizaron tres inspecciones separadas: un diseño
siguiente, pero antes de la implementación; una implementación siguiente, pero antes de la
prueba unitario; y una prueba de unidad siguiente. La inspección después de la prueba
unitario no se consideró rentable para descubrir errores; por lo tanto, no se recomienda.
¿Están de acuerdo los números de los parámetros reales y los parámetros formales?
¿coinciden los atributos de tipo de los parámetros reales y formales?
¿La unidad dimensional de los parámetros actuales y formales coinciden?
¿Son correctos los números, los atributos y el orden de los argumentos a las
funciones incorporadas?
¿Se pasan las constantes como argumentos modificables?
¿Son coherentes las definiciones y uso de variables globales entre los módulos?
El análisis estático es una técnica para evaluar las características estructurales del código
fuente, las especificaciones del diseño, o cualquier representación notacional que se ajusta
a reglas sintácticas bien definidas. La discusión actual está restringida al análisis estático
del código fuente. En análisis estático se refiere a la estructura del programa, pero el código
no se ejecuta. Debido a que el análisis estático se refiere a la estructura del programa, es
particularmente útil descubrir prácticas de codificación cuestionables y salidas de normas
de codificación, además de detectar errores estructurales como variables no inicializadas y
desajustes entre parámetros reales y formales.
El análisis estático puede realizarse manualmente utilizando técnicas de inspección o guía;
sin embargo, el término "análisis estático" se utiliza con mayor frecuencia para indicar el
examen de la estructura del programa por una herramienta automatizada. Un analizador
estático normalmente construirá una tabla de símbolos y un gráfico de flujo de control para
cada subprograma, así como un gráfico de llamadas para todo el programa. La tabla de
símbolos contiene información sobre cada variable: sus atributos de tipo, la instrucción
donde se declara, las instrucciones que se establecen en un nuevo valor, las instrucciones
donde se utilizan para proporcionar valores.
pág. 26
Dado un gráfico de flujo de control y una tabla de símbolos que contiene, para cada variable
en un subprograma, el número de instrucción donde se declaran, establecen y se utilizan
las variables, un analizador estático puede determinar la información de flujo de datos,
como variables no inicializadas (en algunas rutas de control o en todas las rutas), variables
que se declaran, pero nunca se utilizan, y variables que se establecen, pero no se utilizan
posteriormente.
pág. 27
los cuales es posible el análisis; De lo contrario, el problema de detención para las máquinas
de Turing sería solucionable.
Al restringir los programas para que tengan solo condiciones de ruta lineal, el problema de
derivar automáticamente datos de prueba para conducir programas a lo largo de rutas de
ejecución particulares puede resolverse mediante análisis estático, ejecución simbólica y
técnicas de programación lineal. Sin embargo, el requisito para condiciones de trayectoria
lineal es una restricción severa para colocar en programas y programadores.
El análisis estático se utiliza para investigar las propiedades estructurales del código fuente.
Los casos de prueba dinámicos se utilizan para investigar el comportamiento del código
fuente ejecutando el programa en los datos de prueba. Como antes, usamos el término
"unidad de programa" para denotar una rutina o una colección de rutinas implementadas
por un programador individual. En un sistema de pozo, una unidad de programa es un
programa independiente o una unidad funcional de un sistema más grande.
Hay cuatro categorías de pruebas que un programador normalmente realiza en una unidad
de programa:
Pruebas funcionales.
Pruebas de rendimiento.
Pruebas de estrés.
Pruebas de estructura.
Los casos de prueba funcionales implican ejercer el código con valores de entrada
nominales para los que se conocen los resultados esperados, así como valores de límite
(valores mínimos, valores máximos y valores dentro y fuera de los límites funcionales) y
valores especiales, como entradas relacionadas lógicamente, matrices 1 x 1, la matriz de
identidad, archivos de elementos idénticos y archivos vacíos.
Las pruebas de estrés son aquellas pruebas diseñadas para romper intencionalmente la
unidad. Se puede aprender mucho sobre las fortalezas y limitaciones de un programa al
examinar la manera en que se rompe una unidad de programa.
Las pruebas de estructura están relacionadas con el ejercicio de la lógica interna de un
programa y el paso por caminos de ejecución particulares. Algunos autores se refieren
colectivamente a las pruebas funcionales, de rendimiento y de estrés como pruebas de
"caja negra", mientras que las pruebas de estructura se conocen como pruebas de "caja
blanca" o "caja de vidrio". Las principales actividades en las pruebas estructurales son
decidir qué rutas realizar, derivar datos de prueba para ejercer esas rutas, determinar el
criterio de cobertura de prueba que se utilizará, ejecutar los casos de prueba y medir la
cobertura de prueba lograda cuando se ejercen los casos de prueba.
Incluso si fuera posible probar con éxito todas las rutas a través de un programa, la prueba
de ruta no garantizaría la corrección, ya que el programa puede tener rutas faltantes y
pág. 29
errores de cálculo que no se detectaron en los casos de prueba específicos elegidos. Un
error de ruta faltante ocurre cuando una declaración de bifurcación y los cálculos asociados
se omiten accidentalmente. Los errores de ruta faltantes solo pueden ser detectados por
casos de prueba funcionales derivados de las especificaciones de requisitos. Por lo tanto,
las pruebas basadas únicamente en la estructura del programa no pueden detectar todos
los errores potenciales en un programa fuente. La corrección accidental ocurre cuando un
caso no detecta un error computacional.
La depuración por retroceso implica trabajar hacia atrás en el código fuente desde el punto
en que se observó el error en un intento de identificar el punto exacto donde ocurrió el error.
Puede ser necesario ejecutar casos adicionales para recopilar más información. Las
técnicas para recopilar la información necesaria se describen en los párrafos siguientes.
pág. 31
rastreo utiliza el historial de ejecución para rastrear el flujo de control y el flujo de datos tanto
hacia adelante como hacia atrás en el tiempo de ejecución. Las dependencias del flujo de
control y del flujo de datos se pueden rastrear hacia adelante o hacia atrás en el tiempo de
ejecución desde la posición actual en el historial de ejecución. La interpretación del historial
de ejecución en orden inverso proporciona la ilusión de que el programa se está ejecutando
hacia atrás en el tiempo de ejecución. Esto permite el análisis de cómo un cómputo en
particular estuvo influenciado por eventos previos. Esta capacidad es extremadamente
valiosa para depurar y probar condiciones de error no repetibles como las que surgen en el
procesamiento en tiempo real de eventos externos.
El esquema ISMS utiliza un preprocesador para realizar un análisis estático del programa
fuente e instrumentar el código fuente con llamadas de subrutinas que recopilan el historial.
El analizador estático crea un modelo de programa y lo almacena en la base de datos del
programa. El modelo del programa contiene una copia del texto de origen no documentado,
una tabla de símbolos para los identificadores del programa, un modelo de ejecución del
programa y una tabla de referencia cruzada para interconectar el modelo de ejecución con
el texto de origen. El historial de ejecución está interconectado con el modelo de ejecución,
que a su vez se refiere al texto de origen. De esta manera, el comportamiento del programa
se puede presentar al usuario en términos de nivel de fuente.
pág. 32
Los méritos relativos de los intérpretes y las historias de ejecución son evidentes. Un
historial de ejecución contiene un conjunto completo de estados de ejecución en forma
incremental. Por lo tanto, se puede recopilar información de resumen, los cambios en los
estados de ejecución se pueden rastrear hacia adelante o hacia atrás en el tiempo de
ejecución, se pueden verificar aserciones arbitrariamente complejas sin planificación previa,
y se puede proporcionar un análisis de flujo de retorno.
Por otro lado, el usuario no puede detener la ejecución en un punto arbitrario, cambiar el
estado de ejecución de varias maneras y continuar la ejecución como sea posible en un
sistema interpretativo como ALADDIN. Sin embargo, los intérpretes sufren la desventaja de
no mantener información histórica. Cuando se utiliza un intérprete, puede ser necesario
volver a ejecutar todo el programa para verificar una afirmación que involucre múltiples
estados del programa, recopilar estadísticas de resumen o determinar el flujo de control y
las dependencias del flujo de datos. Muchos sistemas interpretativos, incluido ALADDIN,
mantienen un registro histórico de los últimos 10 o 20 estados de ejecución, lo que alivia
parcialmente, pero no resuelve totalmente, este problema.
Las pruebas del sistema implican dos tipos de actividades: pruebas de integración y
pruebas de aceptación. Las estrategias para integrar componentes de software en un
producto funcional incluyen la estrategia de abajo hacia arriba, la estrategia de arriba hacia
abajo y la estrategia de sándwich. Se requiere una planificación y planificación cuidadosas
para garantizar que los módulos estarán disponibles para la integración en el producto de
software en evolución cuando sea necesario. La estrategia de integración determina el
orden en que los módulos deben estar disponibles y, por lo tanto, ejerce una gran influencia
en el orden en que se escriben, depuran y prueban los módulos.
pág. 33
Un subsistema consta de varios módulos que se comunican entre sí a través de interfaces
bien definidas. Normalmente, un subsistema implementa un segmento importante del
sistema total. El propósito principal de las pruebas de subsistemas es verificar el
funcionamiento de las interfaces entre los módulos en el subsistema. Se deben probar las
interfaces de control y de datos. Los sistemas de software grandes pueden requerir varios
niveles de pruebas de subsistemas; Los subsistemas de nivel inferior se combinan
sucesivamente para formar subsistemas de nivel superior. En la mayoría de los sistemas
de software, las pruebas exhaustivas de las capacidades de los subsistemas no son
factibles debido a la complejidad combinatoria de las interfaces del módulo; por lo tanto, los
casos de prueba deben ser elegidos cuidadosamente para ejercer las interfaces de la
manera deseada.
La prueba del sistema se refiere a las sutilezas en las interfaces, la lógica de decisión, el
flujo de control, los procedimientos de recuperación, el rendimiento, la capacidad y las
características de temporización de todo el sistema. Se requiere una planificación
cuidadosa de las pruebas para determinar el alcance y la naturaleza de las pruebas del
sistema que se realizarán y para establecer los criterios según los cuales se evaluarán los
resultados.
Las desventajas de las pruebas de abajo hacia arriba (Bottom-Up) incluyen la necesidad de
escribir y depurar los arneses de prueba para los módulos y subsistemas, y el nivel de
complejidad que resulta de la combinación de módulos y subsistemas en unidades más
grandes y más grandes. El caso extremo de complejidad resulta cuando cada módulo se
prueba de forma aislada y todos los módulos se vinculan y ejecutan en una única ejecución
de integración. Este es el enfoque "big bang" para las pruebas de integración. El principal
problema con la integración “Big Bang” es la dificultad de aislar las fuentes de errores.
La integración descendente (Top-Down) comienza con la rutina principal y una o dos rutinas
inmediatamente subordinadas en la estructura del sistema. Después de que este
"esqueleto" de nivel superior se haya probado a fondo, se convierte en el arnés de prueba
para sus rutinas inmediatamente subordinadas. La integración de arriba a abajo requiere el
uso de apéndices de programa para simular el efecto de las rutinas de nivel inferior a las
que llaman quienes están siendo probados.
La integración descendente ofrece varias ventajas:
pág. 34
Las rutinas de nivel superior proporcionan un arnés de prueba natural para rutinas
de nivel inferior.
Los errores se localizan en los nuevos módulos e interfaces que se están agregando.
Si bien puede parecer que la integración de arriba a abajo es siempre preferible, hay
muchas situaciones en las que no es posible adherirse a una estrategia de integración y
codificación de arriba a abajo. Por ejemplo, puede ser difícil encontrar datos de entrada de
nivel superior que ejerzan un módulo de nivel inferior de una manera particular deseada.
Además, el sistema en evolución puede ser muy costoso de ejecutar como un arnés de
prueba para nuevas rutinas; puede que no sea rentable volver a vincular y volver a ejecutar
un sistema de 50 o 100 rutinas cada vez que se agregue una nueva rutina. Con frecuencia,
se pueden ahorrar cantidades importantes de tiempo de máquina probando los subsistemas
en forma aislada antes de insertarlos en la estructura descendente en evolución. En algunos
casos, puede que no sea posible usar apéndices de programas para simular módulos por
debajo del nivel actual (por ejemplo, controladores de dispositivos, controladores de
interrupciones), puede ser necesario probar primero ciertos módulos críticos de nivel bajo.
La estrategia de prueba de sándwich puede ser preferida en estas situaciones.
pág. 35
Por lo general, las pruebas de aceptación incorporarán casos de prueba durante las
pruebas unitarias y las pruebas de integración. Se agregan casos de prueba adicionales al
nivel deseado de pruebas funcionales, de rendimiento y de estrés de todo el sistema. Las
herramientas de temporización de importancia especial durante las pruebas de aceptación
incluyen un analizador de cobertura de prueba, un analizador de temporización y un
verificador de estándares de codificación.
Un analizador de cobertura de prueba registra las rutas de control seguidas para cada caso
de prueba. El registro acumulativo se utiliza para establecer el alcance de la cobertura de
prueba obtenida durante las pruebas de aceptación. Sin esta herramienta, es imposible
establecer el alcance de la cobertura de prueba obtenida. En sistemas grandes, el
analizador de cobertura puede registrar solo las rutinas llamadas y no las declaraciones
individuales ejecutadas.
Un analizador de tiempo informa el tiempo pasado en varias regiones del código fuente en
diferentes casos de prueba. No es inusual que un programa gaste del 80 al 90 por ciento
del tiempo de ejecución en 20 por ciento o menos del código. Estas regiones del código son
áreas en las que se debe concentrarse para mejorar el rendimiento del sistema.
Las pruebas de la fiabilidad son un proceso de pruebas cuya meta consiste precisamente
en medir la fiabilidad de un sistema. Existen muchas métricas de fiabilidad, como POFOD,
probabilidad de falla a pedido, y ROCOF, tasa de ocurrencia de falla. Dichas métricas
permiten especificar cuantitativamente la fiabilidad requerida del software. Durante el
proceso de pruebas de fiabilidad es posible comprobar si el sistema logró el nivel de
fiabilidad requerido.
En la figura siguiente se ilustra el proceso para medir la fiabilidad de un sistema.
pág. 36
Se inicia con el estudio de los sistemas existentes del mismo tipo para entender
cómo se usan en la práctica. Esto es importante, pues se trata de medir la fiabilidad
como la ve un usuario del sistema. Su meta es definir un perfil operativo. Este último
identifica clases de entradas del sistema y la probabilidad de que dichas entradas
ocurran en uso normal.
Luego se construye un conjunto de datos de prueba que reflejan el perfil operativo,
lo que significa que se crean datos de prueba con la misma distribución de
probabilidad que los datos de prueba para los sistemas que ya se estudiaron.
Normalmente, se usará un generador de datos de prueba para apoyar este proceso.
El sistema se prueba usando estos datos y el número de cuenta, así como el tipo de
fallas que ocurren. También se registran los tiempos de dichas fallas. Las unidades
de tiempo elegidas deben ser adecuadas para la métrica de fiabilidad que se usa.
Después de observar un número estadísticamente significativo de fallas, es posible
calcular la fiabilidad del software y trabajar con el valor adecuado de métrica de
fiabilidad.
Este proceso de cuatro pasos en ocasiones se conoce como “prueba estadística”. La meta
de la prueba estadística es valorar la fiabilidad del sistema.
Es necesario registrar los resultados del análisis del riesgo en el plan del proyecto, junto
con un análisis de consecuencias, que establece las consecuencias del riesgo para el
proyecto, el producto y la empresa. La gestión de riesgos efectiva facilita hacer frente a los
problemas y asegurar que éstos no conduzcan a un presupuesto inaceptable o a retrasos
en el calendario.
Los riesgos específicos que podrían afectar un proyecto dependen del proyecto y el entorno
de la organización donde se desarrolla el software. Sin embargo, también existen riesgos
comunes que no se relacionan con el tipo de software a desarrollar y que pueden ocurrir en
cualquier proyecto.
Una de las tareas en la planificación es la estimación de los recursos requeridos para lograr
el esfuerzo de desarrollo del software. Las tres principales categorías de los recursos de la
ingeniería de software son:
Personal.
Componentes de software reutilizables.
Entorno de desarrollo (herramientas de hardware y software).
Cada recurso se especifica con cuatro características:
pág. 37
Las últimas dos características pueden verse como una ventana temporal. La disponibilidad
del recurso para una ventana específica debe establecerse en el tiempo práctico más
temprano.
Los proyectos de software se planean y controlan debido a una razón principal: es la única
forma conocida para manejar la complejidad. E incluso así, los equipos de software todavía
batallan. En un estudio de 250 grandes proyectos de software desarrollados entre 1998 y
2004, Capers Jones encontró que “alrededor de 25 se consideraron exitosos por haber
logrado sus objetivos de calendario, costo y calidad. Aproximadamente 50 tuvieron demoras
o excesos por abajo de 35 por ciento, mientras que más o menos 175 experimentaron
grandes demoras y excesos, o se dieron por concluidos sin completarse”. Aunque
actualmente la tasa de éxito para los proyectos de software puede haber mejorado un poco,
la tasa de falla de proyecto sigue siendo mucho más alta de lo que debiera.
Para evitar el fracaso del proyecto, un gerente de proyecto de software y los ingenieros de
software que construyan el producto deben evitar un conjunto de señales de advertencia
comunes, entender los factores de éxito cruciales que conducen a una buena
administración del proyecto y desarrollar un enfoque de sentido común para planificar,
monitorear y controlar el proyecto.
Para administrar un proyecto de software exitoso, se debe comprender qué puede salir mal,
de modo que los problemas puedan evitarse. En un excelente ensayo acerca de los
proyectos de software, John Reel define 10 señales que indican que un proyecto de
sistemas de información está en peligro:
Conclusiones
Flores Carmona Diana Arlett
pág. 38
Gracias a lo que vimos en clase y las investigaciones que se realizaron tenemos una
manera más clara de la importancia que conlleva realizar un proyecto de software, ya que
es muy diferente a los proyectos productivos.
Se realizó una investigación para ver cuáles son las principales características y tener un
mínimo margen de error al momento de la creación de este, ya que para comenzarlo
debemos tener muy en claro cuáles serán los objetivos del proyecto ya que sino planteamos
bien los objetivos tendremos problemas al momento de comenzar con las estimaciones de
tiempo y de costo, en la estimación de tiempo es más como calendario o cronograma dónde
deben seguirse al pie de la letra cada una de las actividades a realizar.
Al reclutar personal es cuando comienza el reto para cumplir con las estimaciones del
tiempo ya que al momento de contratarlo de cierta manera deben formar parte del proyecto
e involucrarlo a tal grado que solo conozca su parte del trabajo, sin omitir lo que son sus
honorarios.
Entendimos que hay varias maneras para evitar que ocurran riesgos y como ya se sabe
que en cualquier proyecto siempre hay un margen de error se deben plantear estrategias
para estar preparados ante algunos de los sucesos o contingencias.
Sabemos que la viabilidad del proyecto depende mucho de todo lo anterior y que debe
realizarse de tal manera que se cubran todos los puntos para evitar pérdidas, ya sean
económicos o de personal, ya que para tener un buen proyecto es necesario tener un
equipo unido.
Morales Flores Jose Manuel
En base a lo que hemos investigado de esta unidad, puedo decir que la planificación del
proyecto tiene una amplia importancia al momento de iniciar el desarrollo de un software o
cualquier proyecto, especifica todos los puntos que debemos contemplar para poder cumplir
el objetivo que se ha plateado.
Primeramente, nos habla del objetivo del mismo, que no es más que la etapa en la que
debemos analizar qué es lo que se tiene o debe lograr, para así conocer exactamente el
rumbo del proyecto y que las demás personas envueltas en él también sepan y se realicen
las tareas necesarias para ello. Después de esto, pasaríamos al punto de establecer una
calendarización, para ello debemos analizar todas las actividades, recursos, personal para
poder repartir tareas de un mismo tamaño a cada uno de los que forman parte con una
estructura en la cual estas mismas tareas no se crucen o alteren otras.
Analizando todas las partes de las cuales habla esta unidad, nos damos cuenta que todas
las fases llevan un orden y cada una de ellas van enlazadas, por ejemplo, no podemos
estimar los tiempos, si todavía no sabemos de lo que se tratará el proyecto cómo también
no podemos estimar los costos de todo el proyecto si todavía no hemos hecho un calendario
de las actividades a realizar más los recursos a utilizar.
pág. 39
Otro punto muy importante que nos dice es que, aunque nosotros seamos ingenieros en
sistemas, cuando queramos iniciar un proyecto aun así sea de desarrollo de software o no,
debemos tener en cuenta que también debemos saber organizar y administrar tiempo,
personal y recursos. Algo que algunos ingenieros no se enfocan tanto, pero es muy
importante. Entonces esto nos enseña a tener una idea de cómo podemos administrar un
proyecto para que este se concluya exitosamente como también cuando haya problemas,
podamos saber resolverlos o convertirlos en una ventaja.
Valenzuela Barrientos Carlos Jair
El personal es el activo más importante con el que contaremos, por esta razón es el recurso
más costoso, puesto que es difícil reclutar al mejor personal, además de retenerlo (esto se
refleja en dinero). Pero que, de realizar bien esta selección, se reflejara en la calidad de
nuestro producto.
Otro de los puntos a tomar en cuenta es la de calcular que tanto nos costará la realización
del proyecto, tomando en cuenta factores como el pago al equipo de trabajo, compra de
hardware (equipos) y software (licencias) para trabajar, costos de capacitaciones, así como
también el precio que se le propondrá al cliente por nuestro trabajo.
Bibliografía
Ingeniería de software. Ian Sommerville.
Ingeniería de software. Un enfoque práctico. Roger S. Pressmam.
Preparación y evaluación de proyectos. Nassir Sapag Chain. Reinaldo Sapag Chain.
Software Engineering Concepts. Richard E. Fairley.
Contandriopoulos AP, Champagne F, Potvin L, Denis JL, Boyle P. Preparar un
proyecto de investigación. Barcelona: SG ed; 1991.
pág. 40