¿Qué debes saber para desarrollar software de forma profesional?

5 julio, 2021
Foto: Sora Shimazaki en Pexels.

(Below you can find the English version of this blog post: What do you need to know to develop software professionally?.)

En el campo de la informática, el ACM/IEEE Computing Curricula son los documentos de referencia para el diseño de grados a nivel internacional. Una de sus ramas de conocimiento es la ingeniería del software (Software Engineering 2014). Sin embargo, este currículum se inspira en un documento anterior, el Software Engineering Body of Knowlege o SWEBOK. El SWEBOK pretendía definir los conocimientos, técnicas y habilidades necesarios para desarrollar software desde una perspectiva profesional. En esta entrada hablamos sobre el SWEBOK, sus contenidos y sus perspectivas futuras. 

El auge de los «body of knowledge»

En diversos ámbitos de conocimiento, una asociación profesional o científica ha promovido la definición de un «body of knowledge» (BOK). El BOK es un conjunto de documentos que recoge la terminología, fundamentos, métodos y buenas prácticas de una disciplina. Podemos pensarlo como «lo que cualquier profesional en X debería saber». De esta forma, la comunidad que promueve el BOK ayuda a definir el perfil profesional: los requisitos mínimos y formación necesaria; qué funciones puede desempeñar; y qué se espera de los y las profesionales en este campo.

En el ámbito informático, se han definido diferentes BOKs. Por ejemplo, en gestión de proyectos se utiliza como referencia el Project Management Body of Knowledge (PMBOK) del Project Management Institute (PMI). De la misma forma, en el ámbito de ingeniería del software el IEEE Computer Society propuso el Software Engineering Body of Knowledge (SWEBOK).

Una mirada al SWEBOK 

El SWEBOK ha ido sufriendo diversas revisiones a lo largo de su historia. Así, en 2004 se publicaba la primera versión, el SWEBOK 2004 (estándar ISO/IEC TR 19759:2005). Después, en 2014 se publicó la revisión más reciente, el SWEBOK V3.0 (estándar ISO/IEC TR 19759:2015). 

A nivel de contenidos, el SWEBOK V3.0 organiza el ámbito en 15 áreas de conocimiento (Knowledge Areas o KAs). Podemos agruparlas en los siguientes temas: 

  • Requisitos (1), diseño (2), construcción (3), pruebas (4) y mantenimiento (5) del software
  • Configuración (6), gestión (7) y proceso (8) de la ingeniería del software
  • Modelos, métodos (9) y calidad (10) en ingeniería del software
  • Práctica profesional (11) y economía (12) de la ingeniería del software
  • Fundamentos de computación (13), matemáticas (14) e ingeniería (15)

Uno de los puntos fuertes del SWEBOK es que considera múltiples facetas para desarrollar software. Así pues, a nivel de programación, no solo se limita a hablar de lenguajes de programación o IDEs. También discute aspectos como pruebas unitarias, documentación del código, guías de estilo, gestión de excepciones, … 

¿Quo vadis, SWEBOK?

Ya han pasado 7 años desde el SWEBOK V3.0. Para seguir avanzando, en 2016 el IEEE Computer Society presentó una iniciativa para seguir definiendo el SWEBOK, llamada SWEBOK Evolution. Esta iniciativa planeaba la revisión periódica del SWEBOK en un formato wiki que agilizara su edición colaborativa y difusión.

Sin embargo, hasta el momento no han habido novedades en esta dirección. Y a pesar que algunos apartados siguen manteniendo su vigencia, el paso del tiempo empieza a evidenciar ciertas lagunas en algunos de sus apartados. Por ejemplo:

  • El auge de la web y los dispositivos móviles ha puesto de manifiesto la importancia de incorporar la experiencia de usuario en el proceso de desarrollo.
  • El incremento del número de usuarios y datos pone sobre la mesa consideraciones de escalabilidad masiva.
  • La disponibilidad de recursos del cloud pone sobre la mesa cuestiones económicas (coste de los servicios en la nube) o de sostenibilidad (huella ecológica).
  • La problemática creciente de la ciberseguridad hace que los errores de software cobren mayor importancia si cabe, como posible puerta de entrada a ataques informáticos.
  • El desarrollo de aplicaciones inteligentes genera nuevas consideraciones éticas, ya sea en la discriminación en procesos de decisión automatizados o un riesgo para la privacidad.  

Aunque todos estos temas aparecen de una forma u otra en el SWEBOK, su relevancia actual no se refleja en sus contenidos y referencias. Esperamos que próximas revisiones del SWEBOK y el Computing Curricula puedan servir para cubrir estas omisiones.

¿Te interesa el desarrollo de software y quieres que sea tu carrera profesional? En septiembre iniciamos el Bachelor’s degree in Techniques for Software Development (abreviado como BTSD), un programa de la UOC que forma a los profesionales expertos en desarrollo de software que solicitan las empresas hoy en día. 

What do you need to know to develop software professionally?

In the field of Computer Science, the ACM/IEEE Computing Curricula are the reference documents for the design of bachelor’s degrees at an international level. One of its sub-disciplines is software engineering (Software Engineering 2014). Nevertheless, this curriculum is inspired by a previously existing document, the Software Engineering Body of Knowlege o SWEBOK. SWEBOK aimed to define the knowledge, techniques and skills that are required in order to develop software professionally. In this blog post, we talk about SWEBOK, its contents and its future. 

The boom of the «body of knowledge»

In several fields of knowledge, a professional or scientific association has promoted the definition of a «body of knowledge» (BOK). A BOK is a set of documents that describes the terms, foundations, methods and best practices of a discipline. We can think of it as «what each professional in X should know». In this way, the community behind the BOK helps to define the professional profile:  the minimum requirements and necessary education; the services it can provide; and what can be expected from a professional in this field.

In the field of computing, several BOKs have been defined. For example, in the project management discipline the reference document is the Project Management Body of Knowledge (PMBOK) from the Project Management Institute (PMI). Similarly, in the field of software engineering the IEEE Computer Society proposed the Software Engineering Body of Knowledge (SWEBOK).

A peek at SWEBOK 

SWEBOK has gone through several iterations along its history. To begin with, in 2004 the first version was published, the SWEBOK 2004 (standard ISO/IEC TR 19759:2005). After that, in 2014 the most recent revision was published, SWEBOK V3.0 (standard ISO/IEC TR 19759:2015). 

From the point of view of its contents, SWEBOK V3.0 organizes the software engineering discipline around 15 Knowledge Areas or KAs. We can group them in the following topics: 

  • Software requirements (1), design (2), construction (3), testing (4) and maintenance (5) 
  • Software configuration management (6) and software engineering management (7) and process (8)
  • Software engineering models, methods (9) and quality (10)
  • Software engineering professional practice (11) and economics (12)
  • Foundations of computing (13), mathematics (14) and engineering (15)

One of the strengths of SWEBOK is that is considers the multiple facets of software development. For instance, when talking about programming, it goes beyond a discussion about programming languages or IDEs: it also considers aspects such as unit tests, source code documentation, style guides, exception handling , … 

Quo vadis, SWEBOK?

More than 7 years have passed since SWEBOK V3.0 was released. To continue moving forward, in 2016 the IEEE Computer Society launched an initiative to continue updating SWEBOK, called SWEBOK Evolution. This initiative planned periodic releases of SWEBOK using wiki format that would simplify and speed up both its collaborative edition and its dissemination. 

However, so far there have been no news in this direction. And even though some parts of SWEBOK are still valid, time is taking its toll and some gaps have appeared in several sections. For instance:

  • The rise of web and mobile development has highlighted the importance of considering the user experience in the development process.
  • The increase in the number of users and the rise of big data has brought attention to scalability issues.
  • The availability of cloud computing resources creates new economic issues (the cost of the cloud services) and sustainability (carbon footprint).
  • The rising cybersecurity threat makes software errors more important than ever, as a possible attack vector that can open the door to malicious actors. 
  • The development of applications based on artificial intelligence poses new ethical concerns, both as a privacy risk or a potential source of discrimination in automated decision procedures.  

Even though all these topics appear in one way or another in SWEBOK, its current relevance is not reflected in its contents and references. Thus, we look forward to new revisions of SWEBOK and the Computing Curricula that can bridge these gaps.

Are you interested in software development and do you want to start a career as a developer? In September 2021, UOC launches the Bachelor’s degree in Techniques for Software Development (abbreviated as BTSD), a programme that produces the expert software developers currently needed at companies in a sector characterized by constant growth and full employment. 

Autor / Autora
Profesor de los Estudios de Informática, Multimedia y Telecomunicación de la UOC.
Comentarios
Deja un comentario