Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Las etapas generales del proceso de Por ejemplo, al construir casas, se parte de ver qué tipo de vivienda
software es la que quieren las personas que vayan a vivir en ella. Luego de
desarrollan los planos necesarios, que incluyen todos los detalles
Especificación del software necesarios para edificarla, por ejemplo, la medida de las puertas
ventanas. Finalmente se comienza la construcción, siguiendo esos
Diseño e implementación del software planos. Si no se siguieran los pasos de construcción en determinado
orden y, por ejemplo, si se colocaran las ventanas al inicio,
seguramente los vidrios se romperían durante la construcción.
Validación del software
Los mismo pasa para construir software. Hay que seguir
Actividades protectoras de la calidad
determinados pasos que comienzan con la comunicación con el
cliente para ver lo que necesita, la elaboración de planos (Diseño)
y finalmente el desarrollo (Construcción) propiamente dicho. Por
supuesto hay además pruebas y controles de calidad, que aseguran
BIBLIOGRAFÍA el proceso.
Una propuesta integral: Se Sabemos que para construir una casa hay procedimientos
complementa el enfoque tradicional al formales, pasos que deben cumplirse. Todos sabemos que primero
que refieren diversos autores con una hay que hacer un plano, luego un estudio del suelo, más tarde
serie de etapas previas y posteriores comenzar por los cimientos, que, aunque no los veamos son
al proceso propiamente dicho pero decisivos para la estabilidad de la casa. Luego se construye la
que son parte integrante fundamental estructura con vigas y hormigón, más tarde se levantan las paredes
en un desarrollo de software. y el techo. Todos sabemos que los vidrios son lo último que se pone
(para evitar que se rompan durante la construcción) y por supuesto
Los diferentes problemas y como cada la pintura será el último paso antes de que vayamos a vivir en ella.
modelo resulta más apropiado para ¿Se pueden construir casas alterando las etapas? Si. Pero durante
resolverlo los miles de años en las que lo hacemos hemos acumulado
suficiente experiencia como para saber que si pintamos al
comienzo cuando entremos, esa pintura estará dañada.
Diferentes Modelos: Sus etapas, sus
ventajas y desventajas, para que tipo
Todo este conocimiento se fue formalizando en una disciplina que
de proyectos conviene usarlo y sus
llamamos Ingeniería Civil (que obviamente comprende muchas
particularidades
más cosas que las enunciadas).
Pero también sabemos que no todas las casas son iguales. Que en
el polo norte no tenemos cemento, pero sí hielo y que es posible
construir iglúes. Es las zonas de bosques la madera abunda y esta
BIBLIOGRAFÍA
también es buena para construir casas. Los grandes rascacielos
están sometidos a fuertes vientos y son sensibles a los movimientos
Libro de Sommerville: Capítulo 2 terrestres y, por lo tanto, necesitan estructuras especiales. En
zonas sísmicas, por ejemplo, se usan vigas más grandes y acero
para que se aumente la resistencia. En muchos casos la
Libro de C. Briano: Apunte 2
construcción en seco (Durlok) tiene ventajas significativas en
cuanto a la velocidad y costo de la obra. Diversos problemas,
El libro de apuntes NO reemplaza, sino que
diversas respuestas. La ingeniería no tiene un único modelo de
complementa a Sommerville. Ambos son
lectura obligatoria.
construcción, sino que propone diversas respuestas frente a los
problemas que debamos enfrentar.
Libro de Sommerville: Capítulo 3 En estos casos desarrollar software siguiendo el modelo ágil es la
solución. El software no se piensa completo al comienzo, sino que
Libro de C. Briano: Apunte 3 se va desarrollado en iteraciones sucesivas que van a agregando
nuevas funcionalidades a medida que se va utilizando el software.
El usuario participa activamente del equipo de desarrollo y va
Manifiesto Ágil de Software
sugiriendo las nuevas necesidades.
http://agilemanifesto.org/iso/es/manif
esto.html
Estas imágenes ayudan a estos conceptos:
El libro de apuntes NO reemplaza, sino que
complementa a Sommerville. Ambos son
lectura obligatoria.
VIDEO
https://bit.ly/3lvEUZd
Metodologías Tradicionales Metodologías Ágiles
Requisitos definidos al inicio. No existe una especificación inicial detallada
del sistema.
Cierta resistencia a los cambios. Especialmente preparados para cambios
durante el proyecto.
El cliente interactúa con el equipo de desarrollo El cliente es parte del equipo de desarrollo.
mediante reuniones.
Útiles para organizaciones que operan en Útiles para organizaciones que operan en
entornos estables. entornos cambiantes
Con normas y procesos definidos de antemano Con procesos flexibles
Para software con funcionalidades críticas Donde los cambios del software son
bienvenidos
Claro que, para trabajar en este tipo de desarrollos, deben relajarse algunos procesos. La
documentación, por ejemplo, no es tan exhaustiva y no suele cumplir con requerimientos de
manuales detallados. La seguridad, otro ejemplo, a veces es menor, y no porque no pueda construirse
software seguro de este modo, sino porque el hecho de que el sistema este en constante cambio
necesariamente lo hace más vulnerable. Esto hace que las metodologías ágiles sean inviables de
aplicar en determinados escenarios o donde deban cumplirse rigurosas normas externas.
Como resumen les dejo una frase extraída del libro de Sommerville: “La decisión acerca de si se usa
un enfoque de desarrollo ágil o uno basado en un plan depende del tipo de software que se va a
elaborar, las capacidades del equipo de desarrollo y la cultura de la compañía que diseña el
sistema.”
5
Requerimientos funcionales y no
funcionales
El proceso de adquisición de
requerimientos y su análisis
Validación de requerimientos
2. El nombre Ingeniería de Requerimientos es más apropiado para esta etapa que como se lo
conoce habitualmente: Análisis o Relevamiento. ¿Por qué? Porque los requerimientos hay
que construirlos. No basta con relevar o analizar “solo lo que me muestran” …. Hay que
indagar, ir más allá de lo superficial. Deben ser completos y debemos asegurarnos de que
todas las partes del futuro sistema fueron alcanzadas y que no hay dudas, ambigüedades ni
agujeros. Y si algo falta o el usuario desconoce, debo encontrar fuentes alternativas para
resolver mis dudas.
3. No caer en la tentación de empezar a construir pensando en que las cosas se aclaran mejor
mientras se desarrolla la aplicación. Lo que no se releva finalmente terminan resolviendo
los programadores como ellos creen, y no necesariamente del modo correcto. Se puede
avanzar rápido en la generación de código que finalmente habrá que rehacer o descartar.
4. Esta tarea debe adaptarse a las necesidades del proyecto. A veces se elige un enfoque
abreviado, a veces se lleva a cabo con mayor rigurosidad. Hay organizaciones y usuarios que
están acostumbrados a ser relevados, otros no. A veces es necesario complementar lo que
ellos dicen con documentación, normativa u otras experiencias. Incluso a veces cuando se
diseñan sistemas genéricos, no hay usuarios para relevar (ej. Cuando se lanzan una nueva
App al mercado)
También es necesario tener en cuenta que hay requerimientos funcionales (son los que describen
los servicios que proveerá el software) y no funcionales (aquellas limitaciones, estándares y
restricciones que el sistema debe cumplir). No siempre se presta atención a estos últimos y son tan
importantes como los primeros. Una organización puede requerir que se desarrolle el software
usando alguna base de datos especifica o algún lenguaje de programación particular. También puede
pedirnos que utilicemos determinados colores para las pantallas porque es el color institucional y no
otros porque es el de la competencia. A este tipo de cosas no se le suele prestar atención, pero a
ninguno se le ocurriría instalar un software con pantallas azules y amarillas en River. (Y viceversa)
Respecto de las estrategias de obtención hay muchas (entrevistas, cuestionarios, escenarios, casos
de uso) algunas más efectivas que otras. Pero de nuevo… siempre será más efectivo usar aquellas a
las que los usuarios estén más acostumbrados en la organización. Y no debe olvidarse tampoco el
análisis de la documentación existente. El modo que funciona hoy la organización es válido y es un
excelente punto de partida.
Finalmente, todo esto termina en un documento de requerimientos del software. Este documento
debe contener todo el detalle necesario para que los diseñadores comprendan las necesidades del
usuario de modo que puedan la mejor solución para ellas. El documento final debe contener:
1. Que hayamos comprendido bien lo que el usuario quiere y que no está faltando nada.
2. Más adelante servirá para zanjar diferencias y que evitar cuestiones del tipo “Al sistema le
falta tal cosa… ¿te acordad que lo hablamos?” Nada de recuerdos o cosas orales… lo que se
necesita tiene que estar explícitamente detallado. Si algo nos olvidamos, ahora si ya pasará
a ser responsabilidad compartida con el usuario.
6
Toda la parte metodológica, es decir cómo es la codificación para utilizar, forma parte de la materia
Metodología. Nosotros vamos a ver en esta parte las generalidades de la etapa y comprender de
modo global que tareas deben llevarse a cabo.
En el apunte de clase podrán ver cómo es la etapa de diseño, que cosas deben diseñarse y de qué
modo debe construirse. (entendiendo que la explicación técnica la verán después). Prestaremos
especial atención a algunos temas como las cosas que deben tenerse en cuenta a la hora de diseñar
una interfaz de usuario eficiente y cómo funcionan los patrones de diseño, que permiten reutilizar
componentes y facilitar la programación.
Por último, no podemos olvidar que la interfaz de usuario representa un punto crítico del software,
no solamente porque permite un adecuado uso de la aplicación sino porque la buena o mala
experiencia de uso de un software depende en buena parte del diseño de su interfaz. En tal sendido,
Ben Shneiderman, en su trabajo “Designing the User Interface: Strategies for Effective Human-
Computer Interaction” recomienda 8 reglas a seguir:
Del mismo modo, los patrones arquitectónicos que, por ejemplo, Google, Microsoft y Apple proveen
para diseñar aplicaciones para sus respectivos sistemas operativos, permiten a los desarrolladores
independientes general aplicaciones consistentes con todo el ecosistema.
8
Libro de C. Briano: Apunte 6 Durante el transcurso de la Carrera irán viendo con mayor detalle
en qué consiste la programación. Por ejemplo, tanto “Teoría de los
Lenguajes y Algoritmos” como “Construcción de Aplicaciones
informáticas” tienen práctica de programación que les abordar el
tema conocer cómo de codifica un software.
El mejor ejemplo son las pruebas a las que se someten los autos
Pruebas de Versión
antes de salir al mercado. En las pruebas de choque literalmente se
destruye el vehículo para encontrar componentes defectuosos o
Pruebas de Usuario
fallas de diseño. Lo mismo pasa con un electrodoméstico… a las
heladeras se la someten a la apertura de puerta, miles de veces,
Depuración
hasta que se rompa, determinando de este modo si la puerta
funcionaría bien en un uso normal.
BIBLIOGRAFÍA
En el software hay que hacer lo mismo. Someterlo a todo tipo de
situaciones buscando que el software falle. Con una ventaja
Libro de Sommerville: Capítulo 8 adicional… a diferencia de estos productos, el software no se
destruye con la prueba, puede ser corregido. Lo que se entrega es
Libro de C. Briano: Apunte 7 la misma copia funcionando, no otro producto similar.
El libro de apuntes NO reemplaza, sino que Algunas consideraciones sobre el producto de prueba:
complementa a Sommerville. Ambos son
lectura obligatoria. • Es un elemento crítico para asegurar la calidad de software
(Software Quality Assurance), pero no son sinónimos. La
calidad es un proceso amplio que involucra a todas las
actividades del proceso de desarrollo. Incluso la prueba
debe ser sometida a controles de calidad
VIDEO
• La prueba busca ejecutar un programa forzándolo con el
https://bit.ly/32S9QM4 objetivo de encontrar un error. Es una “actividad
destructiva”, destruye lo construido buscando que falle.
• “Es la única etapa optativa”. Esto que suena horroroso, es cierto. Un software no
puede construirse sin un análisis y diseño. Por supuesto no puede existir si no se
programa, y desde luego la puesta en marcha también debe ocurrir… pero la prueba…
es posible entregar un software con nula o muy poca prueba. Y esta etapa se termina
convirtiendo en la variable de ajuste cuando los tiempos del proyecto fueron mal
calculados y están excedidos: Como debo entregar el software si o si el lunes, hago
algunas pruebas (busco que funcione, no busco encontrar errores) durante el fin de
semana y lo entrego. Obviamente las consecuencias pueden ser gravísimas.
Para realizar una prueba es necesario armar un equipo, conformado tanto por miembros del equipo
de desarrollo, como por testers independientes. Este equipo irá ejecutando diferentes tipos de
pruebas para encontrar diferentes tipos de errores. Recién cuando el sistema sorteó con éxito las
mismas, estará listo para ser puesto en funcionamiento.
El proceso de evolución del software. A partir de ese momento se necesita, por un lado, implementar el
nuevo software y por el otro, ir modificándolo de modo que
Despliegue del Software. acompañe la evolución del entorno y la organización. El software
evolucionará constantemente hasta que el mismo pasa a una etapa
Alternativas de implementación y de fin del servicio y retiro gradual.
preservación de los datos.
Administración de Sistemas Heredados: Un tema particular a considerar son los sistemas heredados.
Sistemas que ya no reciben nuevos cambios ni a los que se agregan funcionalidades, pero es necesario
mantener ya que prestan algún servicio a la organización. También debemos incluir en este caso a
los sistemas desarrollados por terceros que debamos administrar (incluso continuar con su
mantenimiento, por ejemplo, corrigiendo errores si los hubiera.)
Por supuesto, en algunos casos la reutilización será directa y completa (ej. rutina el cálculo del cuit)
y en otras servirá como base o experiencia para el nuevo desarrollo (ej. manuales)
A este tipo de sistemas se los denomina COTS (por las siglas de Comercial-Off-The-Shelf ) es un
sistema de software que se compra listo (Comercial-Off-The-Shelf significa literalmente que el cliente
lo toma de la estantería, como si fuera un producto del supermercado; por supuesto hoy en día se
descarga de Internet) y luego puede adaptarlo a sus necesidades sin cambiar el código fuente del
sistema.
Por lo general se busca un estadío intermedio: El desarrollador tiene un entorno o framework base,
el cual personaliza conforme los requerimientos específicos del cliente. Incluso muchas veces el
software corre en los propios servidores del desarrollador, y el cliente los utiliza como un servicio.
Los grandes softwares empresariales (por ejemplo, SAP) son ejemplos de software estándar ya
desarrollado que se personalizan para cada cliente específico.
El equipo QA debe ser independiente del equipo de desarrollo para que pueda tener una perspectiva
objetiva del software. Esto les permite reportar la calidad del software sin estar influidos por los
conflictos de desarrollo del software. Debe reportarse ante la gerencia ubicada sobre el nivel del
administrador del proyecto. La razón es que los administradores de proyecto tienen que mantener
el presupuesto y el calendario del proyecto y, a veces, una prueba fallida implica volver atrás el
proceso y demorar la entrega. Aunque por supuesto, en empresas pequeñas la gestión de calidad y
el desarrollo de software están inevitablemente vinculados con las personas que cumplen ambos
roles.
Durante el desarrollo de software deben una serie de momentos en donde se somete al producto a
diversos controles:
• Inspecciones: Son “revisiones de pares” en las que los miembros del equipo colaboran entre
sí para encontrar bugs en el programa en desarrollo. Miembros del equipo con diferentes
antecedentes que realizan una cuidadosa revisión, línea por línea, del código fuente del
programa.
• Revisiones: Son auditorias donde un grupo de personas examinan el software y
su documentación asociada en busca de problemas potenciales, omisiones en la
documentación y la falta de conformidad con los estándares.
MEDICIONES Y METICAS
La medición del software se ocupa de derivar un valor numérico o perfil para un atributo de un
componente, sistema o proceso de software. Sin embargo, las medidas no siempre nos permiten
comparar o sacar conclusiones. Que una persona mida 1.60 no nos dice demasiado. Necesitamos
saber su edad y su sexo para luego poder usar una tabla de pesos y medidas estándares y determinar
si es una persona alta o baja.
Las métricas de software se desarrollan a partir de las medidas, para obtener valores que puedan
ser comparables.
Ejemplos de métricas: errores cada 1K líneas código, Hs. trabajadas por día, cantidad de líneas
programadas por mes.
Que un desarrollo de software tenga 5 errores no me dice mucho. Que tenga 5 errores cada 1000
líneas de código programadas me permite comparar con desarrollos pasados o estándares y ver si
mi proceso se mantiene dentro de parámetros normales o debo ajustarlo.
Algunas consideraciones sobre métricas:
ESTANDARES DE SOFTWARE
• Los estándares auxilian la continuidad cuando una persona retoma el trabajo iniciado por
alguien más, se reduce el esfuerzo de aprendizaje requerido al iniciarse un nuevo trabajo.
• Los estándares reflejan la sabiduría que es de valor para la organización. Con frecuencia,
este conocimiento se adquiere sólo después de gran cantidad de ensayo y error.
Configurarla dentro de un estándar, ayuda a reutilizar esta experiencia y a evitar errores del
pasado.
• Como se dijo, la calidad del software es subjetiva, y al usar estándares se establece una base
para decidir si se logró un nivel de calidad requerido.
Las Normas ISO/IEC 25000, conocida como SQuaRE (System and Software Quality Requirements and
Evaluation), es una familia de normas que tiene por objetivo la creación de un marco de trabajo
común para evaluar la calidad del producto software. No se ocupan de ver si el software es bueno,
rápido o libre de fallas, sino que se ocupan de evaluar como fue el proceso de construcción en una
serie muy amplia de ítems. Por ejemplo, evalúan que tan fácil de operar es un software o que tan
sencillo es de corregir o que tantas habilidades requiere para ser operado correctamente.
En el siguiente gráfico podremos observar a modo de resumen el modelo de calidad planteado por
las normas ISO 2500. Puede encontrarse información adicional en el siguiente enlace:
https://iso25000.com
EL MODELO CMM/CMMI
El Departamento de Estado de los Estados Unidos necesitó, en su momento, evaluar a las empresas
a las que les encargaba los desarrollos vinculados con sus sistemas militares. El interés principal era
saber si una determinada empresa tenía procesos lo suficientemente maduros y estandarizados de
modo que pudieran repetir con los nuevos desarrollos lo bueno que habían hecho en software
pasados.
Por esta razón hacia 1986 encargó a la Universidad Carnegie-Mellon que elaborara un estándar que
permitiera clasificar a las empresas según el grado de madurez de sus procesos.
El modelo cuenta con una serie de niveles que describen que tan maduros son los procesos de una
organización, entendiendo que, si siguen procesos bien definidos y estandarizados, sus productos
tendrán una mejor calidad y un menor número problemas.
Si bien se requiere una revisión formal por parte de una entidad habilitada para certificar los
procesos, técnicamente todas las empresas del mucho pueden ser ubicadas en alguna de estas 5
categorías:
Cuando se inicia un proceso formal de certificación, las empresas someten sus procesos a revisión
de modo de obtener un certificado que acredite formalmente su nivel. El nivel deseable a alcanzar
es 3. La mayoría de las organizaciones desarrollan software sin seguir procesos definidos y por lo
tanto estarían en un nivel 1 ó 2. Por supuesto ninguna de estas empresas se sometería a los procesos
de evaluación ya que, entre otras cosas, son pagos. Es posible que para participar de algunas
licitaciones o para obtener determinados beneficios impositivos se requiera que la organización este
certificada en el modelo CMM, nivel 3
Son muy pocas las empresas que llegan a nivel 4 ó 5, que por otra parte suelen alcanzarse en forma
conjunta. Solamente algunos softwares puntuales o algunos procesos de unas porcas organizaciones
alcanza esta categoría.
Nota: El modelo CMM y el CMMI son equivalentes. Ocasionalmente la escala varía y comienza en 0,
siendo el 4 el máximo nivel a alcanzar
Todo proyecto en el que nos embarquemos, sea del tema que sea,
tiene riesgos. Es posible que existan proyectos de muy bajo riesgo,
pero seguramente también tendrán bajos beneficios. Levantarnos
de la cama e iniciar una jornada diaria es riesgoso, pero
PUNTOS CLAVES seguramente enfrentar ese riesgo traerá cosas buenas. Riesgo y
beneficio son conceptos que van de la mano.
• EL concepto de riesgo
La Real Academia Española define a Riesgo como la “contingencia o
• Tipos de Riesgo proximidad de un daño”. Y esto nos lleva a analizarlo desde 2
magnitudes:
• El proceso de gestión de riesgo
1. No existe riesgo sin incertidumbre. La probabilidad de que
• Tablas de Riesgo el daño ocurra siempre es mayor que 0 y menor que 1. Es
decir que nunca tenemos certeza de que vaya a ocurrir, ni
tampoco de que no vaya a pasar.
• Plan de Contingencia
2. El evento que se desencadene debe producir un daño. Si la
ocurrencia de un evento no puede dañarme, entonces deja
de ser un riesgo para mi.
BIBLIOGRAFÍA
Y analizar estas dos dimensiones del riesgo son fundamentales
porque en ellas está la clave. Para administrar adecuadamente los
Libro de Sommerville: Cap. 22 riesgos debemos preguntarnos:
1. Identificación del riesgo: Hay que identificar posibles riesgos para el proyecto, para el
producto y para la organización.
2. Análisis de riesgos: Se debe valorar la probabilidad y las consecuencias de dichos riesgos.
3. Planeación del riesgo: Es indispensable elaborar planes para enfrentar el riesgo, evitarlo
o minimizar sus efectos en el proyecto.
4. Monitorización del riesgo: Como los riesgos mutan en el tiempo, es
necesario monitorearlos permanentemente, verificar si los planes para atenuarlo sigen
vigentes y, si en la medida que se aprenda más sobre el riesgo, es recomendable alguna
variación.
Como no es posible ocuparse de todos los posibles riesgos, las “tablas de riesgo” son herramientas muy
útiles a la hora de gestionar el riesgo. En ellas se agrupan los riesgos según su probabilidad de ocurrencia
y su impacto, de manera que puedan asignarse más recursos prevenir y mitigar a aquellos riesgos que
tienen una alta probabilidad de ocurrir o que producirían un daño mayor.
La pandemia nos proporciona un escenario real para comprender mejor estos temas.
Supongamos que, parados en Mayo de 2019, las organizaciones hubieran tenido en sus planes de
riesgo, la posibilidad de que, por una pandemia, deba cerrarse la empresa y comenzar con el trabajo
remoto. Casi con seguridad todos le hubieran puesto 0 a dicha posibilidad (certeza de que no iba a ocurrir).
Hubiera sido aventurado asignar recursos a mitigar una posible situación que, si bien podría ser imaginada,
no era posible que ocurriera.
De igual modo que en la Ciudad de Buenos Aires, por ejemplo, no se plantean medidas que protejan los
centros de cómputos de terremoto. En las zomas sísmicas de Chile, por el contrario, esto es obligatorio
En enero de 2020 si podemos comenzar a tomar la pandemia como un riesgo. Posiblemente un riesgo que
comenzó en la zona verde (alejados de China esto podría tener bajo impacto y probabilidad de ocurrencia)
pero rápidamente escaló a la zona roja. Y es con eso que surge otra cuestión: Los riesgos deben ser
monitoreados permanentemente, para ver su evolución. De nuevo, no todos (las probabilidades de
terremoto no cambian) pero otros, cuando los identificamos, tenemos que identificar su volatilidad para
seguir su curso. Algunos pasaran de verde a rojo en pocas semanas y otros, quizá, hagan el camino
inverso.
Dos años tarde, en mayo 2021 la pandemia, lamentablemente, ya no es un riesgo sino una certeza.
Dejamos de tratarlo como tal, ya no hay políticas de mitigación por si ocurre, y pasamos a tratarlo como
una certeza: implementamos protocolos de trabajo. Por supuesto aparecen otro riesgos y escenarios de
los que habrá que ocuparse, por ejemplo, los trabajadores de grupos de riesgo.
Es importante este ejemplo ya que cualquier política de mitigación de riesgos tiene sus costos (los
matafuegos cuestan plata). Entonces, por un lado, su costo tiene que ser acorde y proporcional al riesgo
que evitan. Por el otro, es imposible afrontar estrategias de mitigación para todos los riesgos. Es por
eso que se solemos ocuparnos de aquellos riesgos de la zona amarilla y roja (alto impacto y alto daño) y
el resto pueden dejarse en un segundo plano. Hubiera sido muy caro pensar en una política de teletrabajo
por pandemia hace dos años, para un riesgo que tenía bajísimas probabilidades de ocurrencia. Nadie
castigaría a un líder de proyecto por no haber atendido a esos riesgos en aquel momento, así como nadie
cuestiona los gastos en protocolos anti-covid actuales ya que dejo de ser un riesgo, es una certeza y por
lo tanto ya dejo de ser algo que hay que mitigar, sino que hay que atacar.
Finalmente se elaborará un “Plan de Contingencia” en el cual se plantean las alternativas con las que
cuenta la organización para garantizar la continuidad del negocio y las operaciones de una compañía, ante
una situación de peligro concreto. Por ejemplo, ante la falla de un servidor la compañía podrá operar
utilizando otro equipamiento, o ante la caída de un proveedor de Internet, podrá contar con una vía de
conexión alternativa.
Todo esto se plasma en un documento denominado “Plan de Gestión de Riesgos”. En este documento se
incluirá un estudio de los riesgos que enfrenta el proyecto, un análisis de dichos riesgos e información de
cómo se gestionará el riesgo cuando es probable que se convierta en un problema; qué medidas se
tomarán en cada caso para disminuir la probabilidad de que se manifieste, que se hará para disminuir su
impacto y que alternativas de contingencia se plantearán para asegurar la continuidad operativa del
negocio.
Una falla del software del servidor en una empresa de comercio
electrónico podría conducir a dicha compañía hacia una gran
pérdida de ingresos y, posiblemente, también de clientes.
PUNTOS CLAVES
Un error de software en un sistema de control embebido en un
• Confiabilidad automóvil provocaría costosas devoluciones de ese modelo por
reparación y, en los peores casos, sería un factor que contribuya a
• Disponibilidad y Fiabilidad los accidentes.
Tolerancia para el error: Esta propiedad se considera como parte de la usabilidad y refleja la medida
en que el sistema se diseñó de modo que se eviten y toleren los errores de entrada de usuario.
Para mejorar la seguridad de un sistema pueden implementarse algunos controles como por
ejemplo:
Es necesario que la organización establezca una serie de políticas respecto de la seguridad de los
sistemas y sus datos. Y que estas políticas sean coherentes con el tipo de datos que se estén
resguardando. No será lo mismo la seguridad que hay que brindarle a este documento, que si accede
a ver su contenido alguien que no es alumno del curso la verdad es que poco importa, que datos más
sensibles como historias clínica o claves de acceso a cuentas bancarias. Por ejemplo, en los bancos,
es habitual que existan todas o varias de estas políticas de seguridad:
Es importante también contemplar al eslabón más débil que tiene cualquier esquema de acceso y
de contraseñas: El usuario. Muchas veces se plantean contraseñas hiper seguras, de muchos
caracteres que no solo son muy seguras, sino que también son muy difíciles de recordar para el
usuario. Lo mismo pasa cuando me impiden repetir contraseñas… cuando se agotan las fechas claves
o los nombres de las hijos o mascotas, no queda otra que inventar claves más sofisticadas que luego
olvidaremos. Lamentablemente es frecuenta encontrar contraseñas anotadas en post-it pegados al
monitor.
La siguiente imagen pertenece a la Agencia de Manejo de Emergencias de Hawai que, entre otras
cosas, alerta al sistema de defensa de EE.UU sobre misiles que ataquen al país. La imagen fue enviada
al público para alertar sobre una falsa alarma de un misil. El problema es que al agrandar la imagen
se podía ver pegada la contraseña de acceso al sistema.
14
Elegir una metodología adecuada, ágil o tradicional, y un modelo
de proceso que se adapte al tipo de construcción que debo realizar,
PUNTOS CLAVES es sin duda una decisión importante, pero no garantizan por sí solos
el éxito del proyecto. En realidad, los procesos deben ser
• Trabajo en equipo gestionados adecuadamente para que todo funcione del modo en
el que fu previsto y se eviten riesgos e imprevistos.
• Plan del proyecto
El proceso de construcción de software en, por lo general, parte de
• Técnicas de estimación un proceso mayor de implementación de un sistema e involucra
decisiones de múltiples niveles, por ejemplo, la compra de un
determinado hardware. En la Carrera, la gestión de proyectos es
• Gestión del Personal
abarcada por varias materias con distintos enfoques (Metodología/
Gestión de Recursos Informáticos). En Ingeniería de Software nos
• Calendarización
centraremos exclusivamente en gestión de la etapa de codificación
propiamente dicha.
• Fijación del precio del software
Somerville en el libro comienza aclarando que “La gestión de
proyectos de software es una parte esencial de la ingeniería de
BIBLIOGRAFÍA software. Los proyectos necesitan administrarse porque la
ingeniería de software profesional está sujeta siempre a
restricciones organizacionales de presupuesto y fecha. El trabajo
Libro de Sommerville: Cap. 22
del administrador del proyecto es asegurarse de que el proyecto de
software cumpla y supere tales restricciones, además de que
Libro de C. Briano: Apuntes 10 y 11 entregue software de alta calidad. La buena gestión no puede
garantizar el éxito del proyecto. Sin embargo, la mala gestión, por
lo general, da como resultado una falla del proyecto: el software
puede entregarse tarde, costar más de lo estimado originalmente
o no cumplir las expectativas de los clientes.”
VIDEO
PLANEAMIENTO
https://bit.ly/3hDFYb3 El planeamiento de proyectos es una de las tareas más importantes
de un administrador de proyectos de software. Como
administrador, debe dividir el trabajo en partes y asignarlas para
que las realicen los miembros del equipo del proyecto. También
deberá analizar los riesgos y anticipar los problemas que pudieran
surgir, preparando eventuales soluciones de contingencia. Es
necesario considerar:
ESTIMACIÓN
Una vez trazado el plan general que guiará el proyecto, será necesario estimar los recursos que se
necesitarán, en que cantidad, en qué momento temporal y cuál será su costo. Por supuesto también
será necesario contemplar las restricciones sobre los mismos. Es necesario estimar:
Dado que es extremadamente complejo hacer adecuadamente una estimación completa y detallada
de desarrollos grandes, una estrategia que puede aplicarse es dividir el proyecto es partes. Es posible
descomponer un proyecto según:
• Los problemas que resuelvan: Agrupar y estimar por un lado todo Programas de ABM
(Altas, bajas y modificaciones de datos) que sean necesarios, por el otro los listados, las
pantallas de carga, etc.
Existen varias dificultades a la hora de conseguir los recursos humanos necesarios. El personal de IT
(Tecnología de la información) es altamente demandado a nivel mundial y suele ser una traba
importante porque la gran mayoría de los programadores ya se encuentran trabajando:
• Es difícil disponer recursos en tiempo y forma. Muchas veces los retrasos en proyectos
anteriores hacen que los programadores que se suponían ya deberían estar a disposición
del proyecto actual, todavía estén con tareas pendientes.
El trabajo en equipo es fundamental. Somerville hace hincapié en las ventajas de trabajar en grupo,
así como también da varias recomendaciones vinculadas a la gestión del mismo. En este sentido:
• El conocimiento se comparte.
Entre los temas que debemos prestar atención respecto del manejo y organización interna del grupo
aparecen las siguientes preguntas:
• ¿El administrador del proyecto debe ser el líder técnico del grupo? ¿Tiene la suficiente
habilidad y experiencia para tomar decisiones críticas vinculadas al desarrollo?
• ¿Cómo se manejarán las interacciones con los participantes externos y los altos directivos
de la compañía? Por lo general administrador del proyecto será el responsable de dichas
interacciones, pero puede ser necesario una persona con habilidades políticas y de
interacción adecuadas.
• ¿Cómo es posible que los grupos logren integrar a personas que no se localizan en el mismo
lugar? ¿Cómo se tomas las decisiones en esos casos?
CALENDARIZACION
La calendarización de proyectos es el proceso de decidir cómo se organizará el trabajo en un
proyecto como tareas separadas, para luego prever cuándo y cómo se ejecutará cada tarea. Se
estima el tiempo calendario para completar cada tarea, el esfuerzo requerido y quién trabajará en
las tareas identificadas. Esta tarea puede presentar una serie de dificultades:
• Fechas irreales, arbitrarias o establecidas externamente (el sistema debe estar terminado
para tal fecha)
• Riesgos varios
La habilidad y experiencia de quien lleva adelante el proyecto son decisivas a la hora de cumplir en
tiempo y forma con lo pautado. La utilización de diagramas de Pert y Gant y de software de
calendarización de tareas (ej. Microsoft Project) pueden colaborar en la tarea.
• Cuando se calcula un precio, hay que hacer consideraciones más amplias de índole
organizacional, económica, política y empresarial
• Con frecuencia, las estimaciones del proyecto se autosatisfacen. La estimación se utiliza para
definir el presupuesto del proyecto, y el producto se ajusta para que se cumpla la cifra del
presupuesto. Un proyecto que está dentro de presupuesto puede lograr esto a
expensas de las características en el software a desarrollar.
• Debe pensarse en los intereses de la empresa, los riesgos asociados con el proyecto y el tipo
de contrato que se firmará.