Módulo 1 - Lectura 1
Módulo 1 - Lectura 1
Cuando hablamos de ingeniería de software, debemos tener en claro algunos conceptos que constituyen el desarrollo del software.
Debemos comprender la definición de ingeniería y la definición de software para llegar a la definición de ingeniería de software.
También, es necesario comprender las relaciones de la ingeniería, las diferentes crisis que afrontó el software y descubrir la estructura
del código de ética.
Referencias
Lección 1 de 2
Juan es el dueño del hipermercado MercadoSuper, y se plantea muchos interrogantes para los cuales no tiene
respuesta por la falta de conocimientos y la amplia variedad de información que existe.
Se encuentra encarando muchos proyectos de desarrollo de facturación, cobranzas, control de clientes y necesita
interiorizarse en lo que comprende la ingeniería de software, cómo fue la evolución del software y si existe alguna
ley o código de ética que comprenda la ingeniería de software.
Ante la situación planteada, debemos informar a Juan sobre algunos conceptos para que los tenga en cuenta:
D E FI N I C I Ó N D E I N G E N I E RÍ A D E FI N I C I Ó N D E S O FT W A RE
La RAE define a la ingeniería como (Real Academia Española, s. f., https://bit.ly/2RDRgEO): Conjunto de
conocimientos y técnicas que permiten aplicar el saber científico a la utilización de la materia y de las fuentes
de energía.
D E FI N I C I Ó N D E I N G E N I E RÍ A D E FI N I C I Ó N D E S O FT W A RE
El IEEE (Institute of Electrical and Electronics Engineers, 1990, p. 66) define al software como: colección de
programas, procedimientos, la documentación y datos asociados que determinan la operación de un sistema
de computación.
Se debe tener en claro que la ingeniería informática no es una ciencia, debido a que cada ingeniero tiene su
propia técnica para obtener un desarrollo. Cada ingeniero informático aplica su propia metodología.
Se entiende por ciencia un conocimiento racional, sistemático, verificable, exacto y, por consiguiente, fiable.
Para explicarle a Juan la evolución del software, veremos las crisis que atravesó a lo largo del tiempo y los tópicos
que componen la ingeniería del software.
Podemos explicarle a Juan la presencia de la ingeniería de software en la web, donde pueda identificar los aspectos
que cubre, los pasos que debe respetar, los atributos de las aplicaciones web y los métodos de la IWeb.
La ingeniería del software en la web se debe al crecimiento desenfrenado que está teniendo la web, lo que ocasionó
un impacto en la sociedad y generó un nuevo manejo de la información en las diferentes áreas en que se presenta,
ya que ha hecho que las personas tiendan a realizar todas sus actividades por esta vía.
Uno de los aspectos más tenidos en cuenta en el desarrollo es, sin duda alguna, el diseño gráfico en la organización
estructural del contenido. En la actualidad, la web está sufriendo grandes cambios que han obligado a expertos en el
tema a utilizar herramientas y técnicas basadas en la ingeniería del software para poder garantizar el buen
funcionamiento y administración de los sitios web.
Para garantizar el buen funcionamiento y mantenimiento de los sitios web, este debe contar con ciertos atributos y
características que, en conjunto, forman un concepto muy importante para alcanzar el éxito en cualquier
organización, herramienta y todo aquello que se pueda considerar como servicio. Dicho concepto es la calidad, que,
con atributos como la usabilidad, la navegabilidad, la seguridad y la mantenibilidad, entre otros, hace posible la
eficiencia del artefacto web y, por ende, alcanza la satisfacción del usuario final.
Pero para tener artefactos de calidad, se debe primero planificar, programar y controlar, es decir, la calidad no podrá
ser agregada a un artefacto web o a cualquier otro producto al final del proceso de desarrollo, sino que se deberá
implementar durante todo el ciclo de vida del desarrollo.
Para finalizar, el resultado de un proceso de calidad podría arrojar recomendaciones para introducir mejoras y la
decisión final podría consistir en lanzar una nueva versión del sitio web o en modificar algunos atributos ausentes o
pobremente diseñados.
Cabe destacar que la ingeniería de la web hace una diferencia entre un sitio web y un aplicativo, ya que la ingeniería
de la web no se dedica a la construcción de sitios web, sino que a la construcción de aplicativos web. La principal
característica que distingue a los aplicativos de los sitios web es que los sitios web son sitios en la web en donde se
publica contenido generalmente estático o con un muy bajo nivel de interactividad con el usuario, mientras que los
aplicativos tienen un alto contenido de interactividad y funcionalidades que bien podrían ser de un software
convencional, el aplicativo web más sencillo sería uno que contenga formularios y, en los de mayor complejidad,
encontramos los que realizan conexión con bases de datos remotas y administradores de contenidos entre otras.
En este sentido, la ingeniería de la web hace referencia a las metodologías, técnicas y herramientas que se utilizan
en el desarrollo de aplicaciones web complejas y de gran dimensión en las que se apoya la evaluación, el diseño, el
desarrollo, la implementación y la evolución de dichas aplicaciones.
Los principales aspectos de la ingeniería del software en la web incluyen, entre otros, los siguientes temas:
Se debe tener en cuenta que, para la efectiva comunicación en la web, se tienen protocolos, que constituyen el
lenguaje para que se haga efectivo el intercambio de comunicación. Entonces, vale la pena preguntarse si para
poder acceder a toda la información que nos puede suministrar internet, solo debemos poseer un servicio de algún
proveedor de internet y un navegador como elemento fundamental.
La ingeniería del software incluye nuevas metodologías de desarrollo esenciales para la administración de
proyectos. Actualmente, la ingeniería web ha adoptado también metodologías de la ingeniería del software y ha
creado muchas nuevas. Debido a que la información es publicada para conocimiento de todo el mundo, hay que
tener muy en cuenta los aspectos sociales, jurídicos y éticos que pueden influir a la hora de la publicación.
Usualmente, las aplicaciones web son multidisciplinares, ya que son construidas en un medio constantemente
cambiante, donde los requerimientos son inestables, los equipos de desarrollo, generalmente, son pequeños, las
comunidades de usuarios son más amplias que antes y la competencia ahora es mundial. En general, las
aplicaciones web necesitan ser funcionales, mantenibles, escalables y seguras.
Según Pressman (2006), los sistemas y aplicaciones basados en la web (WebApps) ofrecen una funcionalidad a una
amplia población de usuarios finales.
La ingeniería web (IWeb) es el proceso con el que se crean WebApps de alta calidad.
¿Cuáles son los pasos?
El proceso IWeb comienza con la formulación del problema que se resolverá con la WebApp.
Entonces, se entrega a los usuarios finales y se evalúa mediante criterios técnicos como empresariales.
Debido a que las WebApps evolucionan continuamente, se deben establecer mecanismos para el control de
configuraciones, el aseguramiento de la calidad y el soporte continuo.
Intensidad en la red:
–
Debe satisfacer las necesidades de una variada comunidad de clientes.
Concurrencia:
–
Un gran número de usuarios puede tener acceso a la WebApp al mismo tiempo.
Desempeño:
–
El usuario no debe esperar mucho tiempo para el procesamiento de la información.
Disponibilidad:
–
Se debe tener acceso cada vez que el usuario lo requiera.
Calidad:
–
La calidad en el diseño debe estar presente en la WebApp.
Evolución continúa:
–
Una WebApp, debido a la evolución, se debe actualizar en forma permanente.
Seguridad:
–
Debe proteger la información confidencial.
Métodos de comunicación:
–
Definen el enfoque que facilita la comunicación los ingenieros web y los participantes de la WebApp. Por ejemplo, usuarios finales,
expertos en problemas de dominio, diseñadores, etc.
Métodos de prueba:
–
Estos comprenden las pruebas de navegación, las pruebas de facilidad de uso, las pruebas de configuración y las pruebas de
seguridad.
Se le puede sugerir a Juan que lea artículos relacionados con la industria del software.
En la euforia creada por la promesa de un paradigma económico nuevo, los inversores de Wall Street dieron a las
pequeñas las puntocoms estimaciones en billones de dólares antes de que estas comenzasen a producir un dólar
en ventas (Pressman, 2006).
Han surgido nuevas industrias dirigidas por software y las antiguas que no se han adaptado a esta nueva tendencia
están ahora amenazadas y podrían extinguirse.
El gobierno de Estados Unidos ha mantenido un contencioso frente a la mayor compañía de la industria del software,
como lo mantuvo hace poco tiempo cuando se movilizó para detener las actividades monopolísticas en las
industrias del acero y del aceite (Pressman, 2006).
Noticias y números
Con ventas estimadas en 2972 millones de dólares, la Cámara de Empresas de Software y Servicios Informáticos
(CESSI) publicó las cifras del sector, que ya cuenta con un mercado laboral compuesto por 64.300 trabajadores.
delsoftware-nacional-mantiene-su-crecimiento
Con la venta de WhatsApp por USD 19.000 millones, la pareja de amigos supera a otros jóvenes emprendedores
convertidos en millonarios como Janus Friis (38), fundador de Skype, quien vendió Skype a Microsoft por USD 6000
millones o Kevin Systrom (31) y Mike Krieger (28) que recibieron USD 1000 de Facebook por Instagram.
Fuente: BBC Mundo. (2014). ¿Quiénes son los nuevos multimillonarios por la venta de WhatsApp? En BBC News. Recuperado de
http://www.bbc.co.uk/mundo/noticias/2014/02/140220_tecnologia_fundadores_whatsapp_aa.shtml
Le podemos informar de la existencia del código de ética de la ingeniería de software, que se encuentra compuesto
por 8 principios fundamentales.
Introducción
Las computadoras tienen un papel central cada vez mayor en el comercio, la industria, el gobierno, la medicina, la
educación, el entretenimiento y la sociedad. Los ingenieros de software son aquellos que contribuyen, mediante la
participación directa o enseñanza, al análisis, la especificación, el diseño, el desarrollo, la certificación, el
mantenimiento y las pruebas de sistemas de software. Debido a sus funciones en el desarrollo de sistemas de
software, los ingenieros de esta área tienen suficientes oportunidades para causar beneficio o generar daño y para
habilitar o influenciar a otros a causar daño o beneficio.
Para asegurar, en la medida de lo posible, que sus esfuerzos se utilizarán para hacer el bien, los ingenieros de
software deben comprometerse a hacer de la ingeniería del software una profesión benéfica y respetada. De
acuerdo con tal compromiso, los ingenieros de software deberán adherirse al siguiente código de ética y práctica
profesional.
El código contiene ocho principios relacionados con la conducta y las decisiones tomadas por los ingenieros de
software profesionales, bien sean profesionales en ejercicio, educadores, administradores, supervisores y directivos,
así como educandos y estudiantes de la profesión.
Los principios identifican las relaciones éticamente responsables en las que los individuos, grupos y organizaciones
participan y las principales obligaciones de tales relaciones.
Las cláusulas de cada principio son ejemplos de algunas de las obligaciones incluidas en estas relaciones.
Estas obligaciones se fundamentan en las características humanas del ingeniero de software, en los deberes hacia
las personas que se ven afectadas por el trabajo del ingeniero de software y en los elementos peculiares de la
práctica de la ingeniería del software.
El código prescribe estas como obligaciones de cualquiera que se identifique como ingeniero de software o que
aspire a serlo.
El código no está simplemente orientado a identificar la naturaleza de los actos cuestionables, sino que también
tiene una función educativa importante. Puesto que este código representa el consenso de la profesión en
cuestiones éticas, es un medio para educar tanto a la sociedad como a los futuros profesionales acerca de las
obligaciones éticas de todos los ingenieros de software.
Los ingenieros de software debieran obligarse a hacer del análisis, especificación, diseño, desarrollo, pruebas y
mantenimiento del software una profesión respetada y beneficiosa. En concordancia con la obligación con el
bienestar, salud y seguridad de la sociedad, los ingenieros del software debieran adherirse a los ocho principios
siguientes:
1. Sociedad. Los ingenieros de software actuarán en forma congruente con el interés social.
2. Cliente y empresario. Los ingenieros de software actuarán de manera que se concilien los mejores intereses de
sus clientes y empresarios, congruentemente con el interés social.
3. Producto. Los ingenieros de software asegurarán que sus productos y modificaciones correspondientes cumplan
los estándares profesionales más altos posibles.
5. Administración. Los ingenieros de software gerentes y líderes promoverán y se suscribirán a un enfoque ético en
la administración del desarrollo y mantenimiento de software.
7. Colegas. Los ingenieros de software apoyarán y serán justos con sus colegas.
8. Personal. Los ingenieros de software participarán toda su vida en el aprendizaje relacionado con la práctica de su
profesión y promoverán un enfoque ético en la práctica de la profesión.
Principios
1 Principio 1. Sociedad
1.1. Los ingenieros de software actuarán de forma congruente con el interés social.
Particularmente, los ingenieros de software deberán, cuando sea apropiado:
1.3. Moderar los intereses del ingeniero de software, el empresario, el cliente y los usuarios con el
bienestar social.
1.4. Aprobar software solo si se tiene una creencia bien fundamentada de que es seguro, cumple
las especificaciones, pasa las pruebas apropiadas y no reduce la calidad de vida, la privacidad o daña
el medioambiente. El efecto último del trabajo deberá ser el bien social.
1.5. Exponer a las personas o autoridades apropiadas cualquier daño real o potencial al usuario, a la
sociedad o al medioambiente, que razonablemente se cree que está asociado con el software o
documentos relacionados.
1.6. Cooperar en los esfuerzos para solucionar asuntos importantes de interés social causados por
el software, su instalación, mantenimiento, soporte o documentación.
1.7. Ser justo y veraz en todas las afirmaciones, particularmente las públicas, relativas al software o
documentos asociados, métodos y herramientas.
Considerar incapacidad física, distribución de recursos, desventajas económicas y otros factores que
pueden reducir el acceso a los beneficios del software.
1.8. Estar motivado a ofrecer voluntariamente asistencia técnica a buenas causas y contribuir a la
educación pública relacionada con esta profesión.
Los ingenieros de software actuarán de manera que se concilien los mejores intereses de sus clientes
y empresarios, congruentemente con el interés social. Particularmente, los ingenieros de software
deberán, cuando sea apropiado:
2.01 Prestar servicios en sus áreas de competencia, siendo honestos y francos acerca de sus
limitaciones en su experiencia y educación.
2.02 No usar conscientemente software que se obtiene o retiene ya sea ilegalmente o sin ética.
2.03 Usar la propiedad de un cliente o empresario solo en forma propiamente autorizada y con el
conocimiento y consentimiento del cliente o empresario.
2.04 Cuando se requiera, asegurar que cualquier documento en el que se confía ha sido aprobado por
alguien autorizado para aprobarlo.
2.05 Mantener secreta cualquier información confidencial obtenida en su labor profesional, donde tal
confidencialidad es congruente con el interés social y congruente con la ley.
2.06 Identificar, documentar, reunir evidencia y reportar oportunamente al cliente o al empresario si,
en su opinión, un proyecto tiene probabilidades de fracasar, de ser muy costoso, de violar la ley de
propiedad intelectual o ser problemático de cualquier otro modo.
2.07 Identificar, documentar y reportar al cliente o empresario asuntos significativos de interés social,
de los cuales se tiene conocimiento, acerca del software o documentos relacionados.
2.08 Rechazar trabajos externos que vayan en detrimento del trabajo que se realiza para su patrón
primario.
Los ingenieros de software asegurarán que sus productos y sus modificaciones correspondientes
cumplan los estándares profesionales más altos posibles. Particularmente, los ingenieros de
software deberán, cuando sea apropiado:
3.01 Procurar la alta calidad, costos aceptables y una agenda razonable asegurando que los costos y
beneficios significativos son claros y aceptados por el empresario y el cliente, y están disponibles
para consideración del usuario y de la sociedad.
3.02 Asegurar que las metas y objetivos para cualquier proyecto que se propone o en el que se
trabaja sean adecuados y alcanzables.
3.03 Identificar, definir y atender asuntos éticos, económicos, culturales, legales y ambientales
relacionados a los proyectos de trabajo.
3.04 Asegurar que se está calificado, con una combinación apropiada de educación, adiestramiento y
experiencia para cualquier proyecto en que se trabaje o que se proponga trabajar.
3.05 Asegurar que se usan los métodos apropiados en cualquier proyecto en el que se trabaja o se
propone trabajar.
3.06 Tratar de seguir los estándares profesionales más adecuados, siempre que estén disponibles,
para el proyecto en que se trabaja. Solo en caso de que hubiera una justificación ética o técnica
mayor, se permitirá alterar dichos estándares.
3.07 Esforzarse por entender completamente las especificaciones del software en el que se trabaja.
3.08 Asegurar que las especificaciones del software en el que se trabaja están bien documentadas,
satisfacen los requerimientos del usuario y cuentan con las aprobaciones adecuadas.
3.09 Asegurar estimaciones cuantitativas realistas de costos, agenda, personal, calidad y resultados
de cualquier proyecto en el que se trabaja o se propone trabajar, proporcionando una evaluación de la
incertidumbre de esas estimaciones.
3.10 Asegurar que las pruebas, depuración, revisión del software y documentos relacionados con los
que se trabaja sean adecuados
3.11 Asegurar que la documentación sea adecuada y que incluya los problemas significativos
encontrados y las soluciones adoptadas, para cualquier proyecto en el que se trabaja.
3.12. Trabajar para desarrollar software y documentos relacionados que respeten la privacidad de
aquellos a quienes está dirigido este software.
3.13 Ser cuidadoso para usar solo datos precisos derivados por medios éticos y legales, y usarlos solo
de las maneras propiamente autorizadas.
3.14 Mantener la integridad de los datos siendo sensible a aquellos inexactos u obsoletos.
3.15 Tratar todas las formas de mantenimiento de software con el mismo profesionalismo que los
desarrollos nuevos.
4 Principio 4. Juicio
4.01 Moderar todos los juicios técnicos por la necesidad de apoyar y mantener los valores humanos.
4.02 Endosar documentos únicamente cuando han sido preparados bajo su supervisión o dentro de
sus áreas de competencia y con los cuales se está de acuerdo.
4.03 Mantener objetividad profesional con respecto a cualquier software o documento relacionado
del cual se le pidió una evaluación.
4.04 No involucrarse en prácticas financieras fraudulentas tal como corrupción, facturación doble u
otras prácticas financieras impropias.
4.05 Exponer a todas las partes involucradas aquellos conflictos de interés que no puedan evitarse o
evadirse razonablemente.
5 Principio 5. Administración
5.01 Asegurar una buena administración para cualquier proyecto en el cual trabaje, en los que se
incluyen los procedimientos efectivos para promover la calidad y reducir riesgos.
5.02 Asegurar que los ingenieros de software estén informados de los estándares antes de sujetarse
a ellos.
5.03 Asegurar que los ingenieros de software conozcan las políticas y procedimientos del empresario
para proteger las contraseñas, archivos e información que es confidencial al empresario o
confidencial a otros.
5.04 Asignar trabajo solo después de tomar en cuenta contribuciones adecuadas de educación y
experiencia moderadas con un deseo de continuar esa educación y experiencia.
5.06 Atraer ingenieros de software potenciales solo bajo una descripción completa y precisa de las
condiciones del empleo.
5.08 No impedir injustamente que alguna persona ocupe una posición para la cual está
perfectamente calificada.
5.09 Asegurar que exista un acuerdo equitativo en lo referente a la propiedad de cualquier software,
proceso, investigación, documentación u otra propiedad intelectual a la cual el ingeniero de software
ha contribuido.
5.11 No pedirle a un ingeniero de software hacer algo incongruente con este código.
5.12 No castigar a nadie por expresar temas éticos relativos a cualquier proyecto.
6 Principio 6. Profesión
6.04 Apoyar, como miembros de una profesión, a otros ingenieros de software que se esfuercen por
seguir este código.
6.06 Obedecer todas las leyes que gobiernan su trabajo, salvo en circunstancias excepcionales,
donde tal obediencia es incongruente con el interés social.
6.07 Ser preciso en la descripción de las características del software en el que trabaja, para evitar no
solo declaraciones falsas, sino también declaraciones que podrían ser razonablemente asumidas
como especulativas, vacías, fraudulentas, engañosas o dudosas.
6.09 Asegurar que los clientes, empresarios y supervisores conozcan el compromiso de los
ingenieros de software con este código de ética, y las subsecuentes ramificaciones de tal
compromiso.
6.10 Evitar asociaciones con negocios y organizaciones que estén en conflicto con este código.
6.11 Reconocer que las violaciones de este código son incongruentes con ser un ingeniero de
software profesional.
6.12 Hablar seriamente con la gente involucrada cuando se detecten violaciones significativas de
este código, a menos que sea imposible, contraproductivo o peligroso.
6.13 Reportar las violaciones significativas de este código a las autoridades correspondientes
cuando está claro que consultar con la gente involucrada en estas violaciones es imposible,
contraproductivo o peligroso.
7 Principio 7. Colegas
Los ingenieros de software apoyarán y serán justos con sus colegas. Particularmente, los ingenieros
de software deberán, cuando sea apropiado:
7.06 Ayudar a sus colegas a que estén totalmente alertas a los actuales estándares en los que se incluyen
las políticas y los procedimientos de protección de contraseñas, archivos, información confidencial y las
medidas de seguridad en general.
7.07 No intervenir injustamente en la carrera de algún colega; sin embargo, el interés del empresario, del
cliente o el interés social puede conducir a ingenieros de software, de buena fe, a cuestionar la
competencia de un colega.
7.08 En situaciones fuera de sus propias áreas de competencia, solicitar las opiniones de otros
profesionales que tengan competencia en esa área.
8 Principio 8. Personal
Los ingenieros de software participarán toda su vida en el aprendizaje relacionado con la práctica de
su profesión y promoverán un enfoque ético en la práctica de la profesión. Particularmente, los
ingenieros de software deberán, cuando sea apropiado:
8.02 Mejorar su habilidad para crear software seguro, confiable, útil y de calidad a costos razonables y
en un tiempo razonable.
8.03 Mejorar su habilidad para producir documentación precisa, informativa y bien redactada.
8.04 Mejorar su comprensión del software de los documentos con que se trabaja y del
medioambiente donde serán usados.
8.05 Mejorar su conocimiento de los estándares relevantes y de las leyes que gobiernan el software y
los documentos con que se trabaja.
8.08 No influenciar a otros a emprender alguna acción que involucre una violación de este código.
8.09 Reconocer que las violaciones personales de este código son incongruentes con ser un ingeniero
de software profesional.
Verdadero.
Falso.
SUBMIT
La fase de los albores se caracteriza por la noción de que programar es algo sencillo.
Verdadero.
Falso.
SUBMIT
Usabilidad.
Navegabilidad.
Seguridad.
Confidencialidad.
Disponibilidad.
SUBMIT
Uno de los principios del código de ética sostiene que los ingenieros de software incrementarán la integridad y reputación de la
Profesión.
Colegas.
Personal.
Sociedad.
SUBMIT
C O NT I NU A R
Lección 2 de 2
Referencias
BBC Mundo. (2014). ¿Quiénes son los nuevos multimillonarios por la venta de WhatsApp? En BBC News.
Recuperado de
http://www.bbc.co.uk/mundo/noticias/2014/02/140220_tecnologia_fundadores_whatsapp_aa.shtml
Conde, S.; Marcovecchio, O. (2018). El Conocimiento Organizacional. Buenos Aires, Argentina: Aplicación Tributaria
S. A.
Institute of Electrical and Electronics Engineers. (1990). IEEE Standard Glossary of Software Engineering
Terminology. Recuperado de http://www.mit.jyu.fi/ope/kurssit/TIES462/Materiaalit/IEEE_SoftwareEngGlossary.pdf
La Nación. (2012). La industria del software nacional mantiene su crecimiento. En La Nación. Recuperado de
http://www.lanacion.com.ar/1489817-la-industria-delsoftware-nacional-mantiene-su-crecimiento
Pressman, R. S. (2006). Ingeniería De Software: Un Enfoque Práctico. México: Editorial McGraw Hill.
C O NT I NU A R