Post

Fundamentos de la Ingeniería del Software

¿Por qué ingeniería?

La palabra ingeniería procede del término “ingenio”, que son las habilidades, destrezas y capacidades que tiene un individuo o conjunto de individuos para resolver un problema.

La Ingeniería del Software es una disciplina de la Ingeniería Informática y esta tiene una gran variedad de metodologías, estándares, organizaciones, tecnologías, herramientas, métricas y métodos que la hacen que sea una ingeniería y, por lo tanto, se aplican procesos de ingeniera antes, durante y después del desarrollo de un producto o servicio.

El Software

La definición formal de software es la logica o soporte lógico al sistema formal de un sistema informaticao que comprende el conjut de lso compoenentes logicos necesarios que hace posible la realizacion de tareas específicas, en contraposicion a los ompoennetes fisitos que son llamoadso hargware. Pero en terminos coloquiels lo podriamos describir como el conjutno de instrucciones o progama que indican a un ordenaodr lo que debe hacer.

Dentro del desarrollo de software es comun cuando se incia un proyecto ya sea perosnal o prfesional en un entorno pequeño seguir las propiar paustas o reglas que desarrolla el propio programador o equipo de programadores, esto para un proyecto pequeño puede ser beneficioso ya que estos no nocesitan de un gran despliegue de docuemtnoacion, estructuracion, orquestacion, etc, pero cuando hablamos de proyectos grandes o incluso medianos es necesario seguir un enfoque orquestado, que cumpla una seria de caracteticas como pueden ser:

  • Metódico o Sistemático: Las actividades de desarrollo de este siguien unas pautas prestablecidos, siguiento una metodología concreta

  • Disciplinado: El software esta sujeto al control de estándares durante su desarrollo y a unas pautas de comportamiento del grupo establecidas y conocidas por sus miembros

  • Cuantitativo: Tanto el desarrollo como el resultado que se produce si puede medir, con el proposioto de mejorar la calidad de los procesos ysandos en su desarrollo.

Por lo tanto el software se caracteriza porque debe ser: Metódico, basado en estándares y medible.

Herramientas y tecnoloǵias de la ingeniera del software.

Organizaciones en ingenierái del software

  • IEEE Computer Society: https://www.computer.org/
    • La IEEE Computer Society es una de las organizaciones más importantes en el campo de la informática y la ingeniería del software. Proporciona recursos, publicaciones y conferencias para profesionales del sector.
  • ACM (Association for Computing Machinery): https://www.acm.org/
    • ACM es una de las asociaciones más antiguas y grandes del mundo en el área de la informática, incluyendo la ingeniería del software. Ofrece publicaciones académicas, conferencias y acceso a una comunidad de profesionales.
  • ISO/IEC (International Organization for Standardization / International Electrotechnical Commission): https://www.iso.org/
    • ISO/IEC desarrolla y publica estándares internacionales, incluyendo los relacionados con la ingeniería del software como el estándar ISO/IEC 12207 para el ciclo de vida del software.
  • CMMI Institute: https://cmmiinstitute.com/
    • El CMMI Institute proporciona un marco de referencia para la mejora de procesos en el desarrollo de software. CMMI (Capability Maturity Model Integration) es ampliamente utilizado para mejorar la calidad y eficiencia de los procesos de ingeniería del software.
  • SWEBOK (Software Engineering Body of Knowledge): https://www.computer.org/education/bodies-of-knowledge/software-engineering
    • SWEBOK es un esfuerzo conjunto para definir y estandarizar el conocimiento esencial que los profesionales deben dominar en el campo de la ingeniería del software. Es un documento de referencia ampliamente utilizado.
  • SEI (Software Engineering Institute): https://www.sei.cmu.edu/
    • El SEI es un instituto de investigación que promueve la mejora de los procesos de software. Fue fundado por el Departamento de Defensa de los EE. UU. y se dedica a la investigación en áreas como la seguridad del software, la gestión de proyectos y la mejora de procesos.
  • Agile Alliance: https://www.agilealliance.org/
    • La Agile Alliance es una organización global dedicada a promover el desarrollo ágil de software. Ofrecen recursos, conferencias y una comunidad activa que sigue el enfoque ágil.
  • International Association for Software Architects (IASA): https://www.iasa-global.org/
    • IASA es una organización internacional que se centra en la formación y el desarrollo profesional de arquitectos de software, ofreciendo recursos educativos y de networking.
  • Open Source Initiative (OSI): https://opensource.org/
    • OSI es una organización sin fines de lucro que promueve el uso de software de código abierto y la adopción de licencias abiertas en el desarrollo de software.
  • DevOps Institute: https://devopsinstitute.com/
    • El DevOps Institute es una organización que promueve las mejores prácticas en la integración de operaciones y desarrollo de software. Ofrecen certificaciones y recursos educativos en el campo de DevOps.

Organizaciones en Ingeniería del Software en España

  • UNE (Asociación Española de Normalización): https://www.une.org/
    • UNE es la entidad encargada de desarrollar y promover las normas técnicas en España. Establece las bases para la estandarización en diversas áreas, incluyendo la ingeniería del software, a través de la creación de normas que ayudan a asegurar la calidad, seguridad y eficiencia en el desarrollo de software y sistemas tecnológicos.
  • Asociación Española de Ingenieros de Telecomunicación (AEIT): https://www.aeit.es/
    • AEIT es una organización profesional que agrupa a ingenieros de telecomunicación en España. Ofrecen formación, eventos y actividades relacionadas con el desarrollo de software y telecomunicaciones.
  • Asociación Española de Software Libre (AESOL): https://www.aesol.es/
    • AESOL es una organización sin ánimo de lucro dedicada a la promoción del software libre en España. Se enfoca en el desarrollo, fomento y apoyo de proyectos de código abierto.
  • Fundación CENATIC: https://www.cenatic.es/
    • CENATIC es una fundación que fomenta el uso y la adopción del software libre en España. Ofrecen formación, asesoramiento y recursos sobre el uso de herramientas y tecnologías de código abierto.
  • Red Española de Tecnología y Sociedad de la Información (Red.es): https://www.red.es/
    • Red.es es una entidad pública empresarial dependiente del Ministerio de Asuntos Económicos y Transformación Digital, dedicada a promover la digitalización y la innovación tecnológica en España.
  • Asociación Profesional de Peritos Judiciales en Informática (APPI): https://www.appi.es/
    • APPI es una asociación profesional que agrupa a expertos en informática y tecnología, incluyendo ingenieros de software, para actuar como peritos judiciales en casos legales relacionados con la tecnología.
  • Fundación TIC: https://fundaciontic.org/
    • Fundación TIC es una entidad española que trabaja para promover la innovación tecnológica y la capacitación digital en empresas, tanto en el ámbito público como privado.
  • Asociación de Empresas de Software y Tecnología (ASESOFT): https://www.asesoft.es/
    • ASESOFT es una asociación que agrupa a empresas del sector del software y la tecnología en España, promoviendo la colaboración y el desarrollo de mejores prácticas dentro del sector.
  • Sociedad de Ingeniería del Software y de los Sistemas (SIIS): https://www.siis.es/
    • SIIS es una sociedad española dedicada a la promoción de la ingeniería del software y los sistemas. Se enfoca en el desarrollo profesional de los ingenieros del software, organizando eventos y formando a nuevos profesionales.
  • La Fundación para el Software Libre (FSL): https://www.fundacionsoftwarelibre.org/
    • La Fundación Software Libre tiene como objetivo la promoción y defensa del software libre, brindando recursos educativos y organizando eventos y actividades.
  • Club de Innovación y Desarrollo Tecnológico (CIDT): https://www.cidt.es/
    • CIDT es una organización que agrupa a empresas y profesionales en el campo de la innovación y la tecnología en España, con especial enfoque en el desarrollo de soluciones tecnológicas, incluida la ingeniería del software.

W3C https://www.w3.org/

El W3C es la principal organización internacional encargada de establecer los estándares y directrices para la evolución de la web. A través de sus especificaciones, promueve la interoperabilidad y accesibilidad de la web, incluyendo estándares cruciales para la ingeniería del software, como HTML, CSS, y las APIs web.

Normas, Estándares y Recomendaciones

Norma / Normalización / Estándar / Estandarizacion significan lo mismo, ajustar varias cosas semejantes a un tipo o norma común. En cambio las recomendaciones es algo pareciddo a una norma o estandar, normaltemnte emitida por las organizaciones como W3C y estas son gratutiras mientras que las nomras o etandares son de pago.

Las normas son emitidas generalmente por la ISO y por otras como IEC, ITU-T, etc.

Recomendación vs Norma

COmo hemos dicho antes una norma no es lo mismo que una recomendacion, las recomendaciones osn docuemtnos de especificaicon similar a una norma para tardan menos en liberarse y normalmente son emitidos por la W3C, en cambio las normas o estandares tene un periodo de maduresz mas largo que las recomentaciones y tarnda e asentarse en la indurectira pero duran en el tiepo y grantizan la constieten da de los productos desarrollado a parti de ellos.

La realidad

Si vemos la realidad en la gran mayoria de proyectos se siguen las recomendaciones ya que estas tratan temas mas actuales gracisas a ese peridoro de publicaion menos tardio y es por eso que se siguen mas que las normas o estandares pero esto apica a la hora de desarrolalr en si un producto o producirlo pero en cambio a la hroa de establecer las metodologias de trabajo y organizar al equipo se siguen mas las normas o estandares ya que estos estan más madures han pasado por muchos años de experiencia y se sabe bien que funciona y que no a la hora de establecer esta metodologias, si lo piensas bien no tendria mucho sentido aplicar a un nuevo proyecto una recomensadion de organizacion por jempl ya que esta no sabemos a cientica cierta si es eficiente, por ejemplo.

Código Ético y las Buenas Practicas

Todo buen ingeniero de software (ing.software) debe saberse estos 8 mandamientos

  • Socidad: Los ing.sofrware actuarán en forma congruente con el interás social
  • Cliente y Empresario: Los ing.sotware actuarán de manera que se concilien los mejoores intereses de sus clientes y empresarios, cogruentemente con el interes social
  • Producto: Los ing.software aseguraran que sus productos y modificaiones correspondeitens cumplen los estandares profesionals mas altos posuibles
  • Juicio Los ing.software mantenrdaran inrtegridad e indepenciedna en su juico profesial
  • Administración Los ing.software gerentes y lideres poroimeovera y se suscribgira a un enfique ético en la adminsitracion del desarrollo y mantenimieinto de sfrtware
  • Profesión Los ing.software incrementaran la intefrida y reputacion de la profesion congruentemente con el interes socuial
  • Compañeros Los ing.software aprotaran y seran justos con compañeros, conocidos y demas mienbros del gremio
  • Personal Lso ing.software perticapra tod su vida en el aprendizaje relacionad con la practiuca de su profesion y promoveran un enfoque etico en la practia de la profesion

Modelos curriculares

Los modelos curriculares en la ing.software son esquemas o guías diseñadas para estructura y defirnio lso contenidos, habilidades y competencias que deben adquirirse en este dispciploica.

Áreas principales:

  • Requisitos Técnicas para el análisis, especifiación y validacion de requsitos.
    • Fundamentos de ing.requisitos
    • Recogida de requisitos
    • Analisis de requisitos
    • Especificación de requisitos
    • Validación de requisitos
  • Diseño Principios, patrones y arquitectura de software.
    • Patrones de Diseño
    • Diseño de interfaces de usuario
    • Tecnicas de evaliuacion de calidad del software
    • Notaciones de Diseño
    • Diseños estructurados orientados a funciones
    • Diseños orientados a objetots
    • Métodos formales
    • Diseño basado en componentes
  • Construcción Herramientas, lenguajes y paradigmas
    • Metodos de construcción
    • Diseño de construcción
    • Codificación y calidad
    • Pruebas (testing)
    • Técnicas de pruebas
  • Mantenimiento
    • Evolución del software
    • Estimación de costes (mantenimiento)
    • Procesos de mantenimiento
    • Reingenieria
    • Ingenieria inversa
  • Gestión Planificación, estimación y seguimiento
    • Identificación de configuraciones
    • Control de configuraciones
    • Control de versiones (CVS - Control Versiones Software)
  • Procesos Modelos (agiles, itertivos, cascada, etc)
    • Planificación
    • Gestión de riesgos
    • Organización
    • Gestión económica
  • Calidad
    • Calidad de producto
    • Calidad de procesos
    • Metricas de calidad del software
    • Verificación y validacion (V&V)

Se podri decir que estos son los puntos que veremos más en detalle dentro del apartado de teoría de la ingerineia del softeware que veremos en la web.

This post is licensed under CC BY 4.0 by the author.