El ingeniero en software es un profesionista que
desarrolla soluciones de software, mediante la aplicación de procesos, modelos
y estándares de calidad de la industria del software, las cuales contribuyen al
crecimiento y progreso de su sociedad, en un ambiente que provee vida sustentable
y oportunidades a sus habitantes.
¿Cuáles son
los retos fundamentales que afronta la ingeniería del software?
El reto de la heterogeneidad. Desarrollar técnicas
para construir software confiable que sea lo suficientemente flexible para
adecuarse a esta heterogeneidad.
El reto de la entrega. Reducir los tiempos de entrega
para sistemas grandes y complejos sin comprometer la calidad del sistema.
El reto de la confianza. Desarrollar técnicas que
demuestren que los usuarios pueden confiar en el software.
Los retos no son independientes. Es necesario desarrollar nuevas herramientas y
técnicas, así como formas innovadoras de combinación y uso de métodos de
ingeniería del software existentes.
Responsabilidad Profesional y Ética
La ingeniería del software se lleva a cabo dentro
de un marco legal y social que limita la libertad de los ingenieros.
Los ISW deben aceptar que su trabajo comprende
responsabilidades más amplias que simplemente la aplicación de habilidades
técnicas.
Deben comportarse de una forma ética y moral
responsable.
No basta con poseer estándares normales de
honestidad e integridad.
No debería utilizar su capacidad y sus
habilidades para comportarse de forma deshonesta o de forma que deshonre
la profesión de la ingeniería del software.
Existen áreas donde los estándares de
comportamiento aceptable no están acotados por las leyes, sino por la
responsabilidad profesional.
Algunas de éstas son:
Confidencialidad. Respetar la confidencialidad de sus empleadores
o clientes, independientemente de que se haya firmado un acuerdo formal de
confidencialidad.
Competencia. No debe falsificar su nivel de competencia,
ni aceptar conscientemente trabajos que están fuera de su capacidad.
Derechos de propiedad intelectual. Debe ser consciente de
las leyes locales que gobiernan el uso de la propiedad intelectual, como las
patentes y el copyright. Debe asegurarse de que la propiedad intelectual
de los empleadores y clientes está protegida.
Uso inapropiado de las computadoras. No debe emplear sus
habilidades técnicas para utilizar de forma inapropiada las computadoras de
otras personas. Desde los relativamente triviales (utilizar juegos en la
máquina de un empleado, por ejemplo) hasta los extremadamente serios (difusión de
virus).
Las sociedades e instituciones profesionales desempeñan
un papel importante en el establecimiento de estándares éticos.
Organizaciones como la ACM (Association for Computing
Machinery), el IEEE (Instituto de Ingenieros Eléctricos y Electrónicos) y la
British Computer Society publican un código de conducta profesional o de ética.
Los miembros de estas organizaciones se comprometen a
cumplir ese código cuando se inscriben en ellas.
ACM y el IEEE
El código contiene ocho
principios relacionados con el comportamiento y con las decisiones hechas por
ingenieros de software profesionales, incluyendo practicantes, educadores,
administradores, supervisores y creadores de políticas, así coma aprendices y
estudiantes de la profesión.
Los principios identifican las
relaciones éticas en las que los individuos, grupos y organizaciones
participan, y las obligaciones primarias dentro de estas relaciones.
Las cláusulas de cada
principio son ilustraciones de algunas de las obligaciones incluidas en estas
relaciones. Estas obligaciones se fundamentan en la humanidad del ingeniero de
software, con especial cuidado en la gente afectada por el trabajo de los
ingenieros de software, y los elementos únicos de la práctica.
Código de Ética (ACM/IEEE)
Los ingenieros de software deberán comprometerse consigo
mismos en convertir el análisis, especificación, diseño, desarrollo, prueba y
mantenimiento de software en una profesión respetable y beneficiosa. De acuerdo
con su compromiso con la salud, seguridad y bienestar del público, los
Ingenieros de Software deberán apegarse a Ocho Principios
Principios del código
Público. Los Ingenieros de Software deberán actuar
consistentemente con el interés público.
Cliente y Empleador. Los Ingenieros de Software deberán
actuar de una forma determinada que esté en los mejores intereses de su cliente
y empleador consistente con el interés público.
Producto. Los Ingenieros de Software deberán asegurar que
sus productos y modificaciones relacionadas logren el más alto estándar
profesional posible.
Juicio. Los Ingenieros de Software deberán mantener
integridad e independencia al emitir su juicio profesional.
Gerencia. Los gerentes y líderes de Ingeniería de
Software deberán suscribirse y promocionar un enfoque ético para la gerencia de
desarrollo y mantenimiento de software.
Profesión. Los Ingenieros de Software deberán fomentar
la integridad y reputación de la profesión consistente con el interés público.
Colegas. Los Ingenieros de Software deberán ser justos y
comprensivos con sus colegas.
Interés Propio. Los Ingenieros de Software deberán
participar en el aprendizaje de por vida del ejercicio de su profesión y
deberán promover un enfoque ético para el ejercicio de la misma.
Problemas Éticos
Los Problemas Éticos son situaciones en las que diferentes personas tienen
distintos puntos de vista y objetivos.
Ejemplos:
Si usted está en desacuerdo, en principio, con las
políticas de un directivo de categoría superior en la compañía, ¿cómo debería
reaccionar?... Esto depende de cada individuo y de la naturaleza de la
discordancia. ¿Es mejor argumentar a favor de su posición dentro de la
organización o renunciar de acuerdo con sus principios?
Si piensa que existen problemas con un proyecto de
software, ¿cuándo se deben comunicar éstos al gerente? .... Si éstos se discuten cuando son sólo una sospecha, puede
ser una sobre-reacción a la situación, si lo deja para más tarde, puede ser
imposible resolver las dificultades.Tales problemas éticos aparecen en nuestra vida
profesional y, afortunadamente, en muchos casos son relativamente menores o se
pueden resolver sin mucha dificultad.
Cuando no se puedan resolver, los ingenieros se
enfrentaran, quizás, con otro problema. La acción con base en sus principios
podría ser renunciar a su trabajo, pero esto puede afectar a otros, por
ejemplo, a sus colaboradores o sus familias.
Una situación particularmente difícil para los ingenieros
profesionales surge cuando su empleador actúa de una forma no ética. Por ejemplo, una compañía es responsable de desarrollar
un sistema crítico de seguridad y, debido a las presiones de tiempo, falsifica
la validación de protección de los registros. ¿Es responsabilidad del ingeniero mantener la
confidencialidad o alertar al cliente o hacer público, de alguna forma, que el
sistema entregado es inseguro? La posición ética apropiada depende enteramente del punto
de vista de los individuos que están involucrados. En este caso, el
potencial para el daño, el grado del daño y la gente afectada por el deben
influir en la decisión. Si la situación es muy peligrosa, se justifica su
publicación en la prensa nacional (por ejemplo). Se debe tratar de resolver la situación respetando los
derechos del empleador.
Participación en el desarrollo de sistemas militares y
nucleares. Algunas personas tienen una opinión firme sobre estos
temas y no desean participar en ningún desarrollo de sistemas asociados con
sistemas militares. Otros trabajarán en sistemas militares, pero no en
sistemas de armamento. Algunos otros sentirán que la defensa de la nación es un
principio fundamental y no tienen objeciones éticas para trabajar en sistemas
de armamento. En esta situación, es importante que tanto empleadores
como empleados se hagan saber con anticipación sus puntos de vista.
El área de ética y responsabilidad profesional ha
recibido creciente atención en los pasados años.
Los principios de ética se pueden considerar desde un
punto de vista filosófico, y la ética de la ingeniería del software se debe
tratar con referencia a estos principios básicos.
..............................
Ahora, intenta probar cuánto aprendiste respecto a la Responsabilidad y Ética en la Profesión.
Es un proceso de ingeniería de software, que hace una
propuesta orientada por disciplinas para lograr las tareas y responsabilidades
de una organización que desarrolla software. Su meta principal es asegurar la
producción de software de alta calidad que cumpla con las necesidades de los
usuarios con una planeación y presupuesto predecible.
Diagrama General de RUP
○En el eje horizontal se representa el tiempo y muestra
los aspectos del ciclo de vida del proceso. Representa el aspecto dinámico del
proceso a través de las fases, iteraciones y productos intermedios.
○El eje vertical representa las disciplinas que agrupan
actividades por su naturaleza. Representa el aspecto estático del proceso a
través de componentes, disciplinas, actividades, flujos de trabajo, artefactos
y roles.
Ciclo de Vida de RUP
En cuanto a tiempo el ciclo de vida de RUP se
descompone en 4 FASES secuenciales, cada cual concluye con un producto
intermedio.
Al terminar cada fase se realiza una evaluación para
determinar si se ha cumplido o no con los objetivos de la misma.
Las fases son:
Inicio (Inception)
Elaboración
Construcción
Transición
Fases de Ciclo de Vida
Inicio (Inception)
El objetivo general de esta fase es establecer un
acuerdo entre todos los interesados acerca de los objetivos del proyecto. Esta
fase es significativamente primaria para el desarrollo de nuevo software, ya
que se asegura de identificar los riesgos relacionados con el negocio y
requerimientos. Para proyectos de mejora de software existente esta fase es más
breve y se centra en asegurar que vale la pena y es posible, desarrollar el
proyecto.
Elaboración
El objetivo en esta fase es establecer la arquitectura
base del sistema para proveer bases estables para el esfuerzo de diseño e
implementación en la siguiente fase. La arquitectura debe abarcar todos las
consideraciones de mayor importancia de los requerimientos y una evaluación del
riesgo.
Construcción
El objetivo de la fase de construcción es clarificar
los requerimientos faltantes y completar el desarrollo del sistema basados en
la arquitectura base. Vista de cierta forma esta fase es un proceso de
manufactura, en el cual el énfasis se torna hacia la administración de recursos
y control de la operaciones para optimizar costos, tiempo y calidad.
Transición
Esta fase se enfoca en asegurar que el software este
disponible para sus usuarios. Esta fase se puede subdividir en varias
iteraciones, además incluye pruebas del producto para poder hacer el entregable
del mismo, así como realizar ajuste menores de acuerdo a ajuste menores
propuestos por el usuario. En este punto, la retroalimentación de los usuarios
se centra en depurar el producto, configuraciones, instalación y aspectos sobre
utilización.
Disciplinas
Una disciplina es una colección de actividades
relacionadas con un área de atención dentro de todo el proyecto. El grupo de
actividades que se encuentran dentro de una disciplina principalmente son una ayuda
para entender el proyecto desde la perspectiva clásica de cascada.
Las disciplinas son:
Modelado de Negocios
Requerimientos
Análisis y
Diseño
Implementación
Pruebas
Transición
Configuración y Administración del
Cambio
Administración de Proyectos
Ambiente.
Modelado de Negocios
Los propósitos que tiene el Modelo de Negocios son:
Entender los problemas que la organización desea
solucionar e identificar mejoras potenciales.
Medir el impacto del cambio organizacional.
Asegurar que clientes, usuarios finales,
desarrolladores y los otros participantes tengan un entendimiento
compartido del problema.
Derivar los requerimientos del sistema de
software, necesarios para dar soporte a los objetivos de la organización.
Entender como el sistema a ser desarrollado entra
dentro de la organización.
Requerimientos
Esta disciplina tiene el propósito de:
Establecer y mantener un acuerdo con los clientes y
los otros interesados acerca de que debe hacer el sistema.
Proveer a los desarrolladores del sistema de un mejor
entendimiento de los requerimientos del sistema.
Definir los límites (o delimitar) del sistema.
Proveer una base para la planeación de los contenidos
técnicos de las iteraciones.
Proveer una base para la estimación de costo y tiempo
necesarios para desarrollar el sistema.
Definir una interfaz de usuario para el sistema,
enfocada en las necesidades y objetivos del usuario.
Análisis y Diseño
El propósito del Análisis y Diseño es:
Transformar los requerimientos a diseños del sistema.
Desarrollaruna
arquitectura robusta para el sistema.
Adaptar el diseño para hacerlo corresponder con el
ambiente de implementación y ajustarla para un desempeño esperado.
Implementación
El propósito de la implementación es:
Definir la organización del código, en términos de la
implementación de los subsistemas organizados en capas.
Implementar el diseño de elementos en términos de los
elementos (archivos fuente, binarios, ejecutables y otros)
Probar los componentes desarrollados como unidades.
Integrar los resultados de los implementadores
individuales en un sistema ejecutable.
La disciplina de implementación limita su alcance a
como las clases individuales serán probadas. Las pruebas del sistema son
descritas en futuras disciplinas.
Pruebas
Esta disciplina actúa como un proveedor de servicios a
las otras disciplinas en muchos aspectos.
Pruebas se enfoca principalmente en
la evaluación y aseguramiento de la calidad del producto, desarrollado a través
de las siguientes prácticas:
Encontrar fallas de calidad en el software y
documentarlas.
Recomendar sobre la calidad percibida en el software.
Validar y probar las suposiciones hechas durante el
diseño y la especificación de requerimientos de forma concreta.
Validar que el software trabaja como fue diseñado.
Validar que los requerimientos son implementados apropiadamente.
Transición
Esta disciplina describe las actividades asociadas con
el aseguramiento de la entrega y disponibilidad del producto de software hacia
el usuario final.
Existe un énfasis en probar el software en el sitio de
desarrollo, realización de pruebas beta del sistema antes de su entrega final
al cliente.
Administración y Configuración
del Cambio
Consiste en controlar los cambios y mantener la
integridad de los productos que incluye el proyecto.
Incluye:
Identificar los elementos configurables.
Restringir los cambios en los elementos configurables.
Auditar los cambios hechos a estos elementos.
Definir y mantener las configuraciones de estos
elementos.
Los métodos, procesos y herramientas usadas para
proveer la administración y configuración del cambio pueden ser consideradas
como el sistema de administración de la configuración.
Administración de Proyectos
El propósito de la Administración de Proyectos es:
Proveer un marco de trabajo para administrar los
proyectos intensivos de software.
Proveer guías prácticas para la planeación, soporte,
ejecución y monitoreo de proyectos.
Proveer un marco de trabajo para la administración del
riesgo.
Ambiente
Se enfoca en las actividades necesarias para
configurar el proceso al proyecto.
Describe las actividades requeridas para desarrollar
las líneas guías de apoyo al proyecto.
El propósito de las actividades de ambiente es proveer
a las organizaciones de desarrollo de software del ambiente necesario
(herramientas y procesos) que den soporte al equipo de desarrollo.
Ahora para poner a prueba lo que aprendiste... visita el siguiente link: