Académique Documents
Professionnel Documents
Culture Documents
SEMANA 1
Introducción a la
Ingeniería de Software
Todos los derechos de autor son de la exclusiva propiedad de IACC o de los otorgantes de sus licencias. No está
permitido copiar, reproducir, reeditar, descargar, publicar, emitir, difundir, poner a disposición del público ni 1
ESTE
utilizarDOCUMENTO
los contenidos paraCONTIENE LAdeSEMANA
fines comerciales 1
ninguna clase.
2
ESTE DOCUMENTO CONTIENE LA SEMANA 1
ÍNDICE
3
ESTE DOCUMENTO CONTIENE LA SEMANA 1
INTRODUCCIÓN A LA INGENIERÍA DE SOFTWARE
OBJETIVOS ESPECÍFICOS
INTRODUCCIÓN
El presente curso desarrolla una visión global de lo que es la ingeniería de software hoy en día,
entendiendo que un software es una herramienta que permite facilitar y agilizar procesos de
manejo de la información de una organización, con el fin de apoyar su crecimiento y relación con
su medio ambiente. En este contexto, la asignatura se enfoca en desarrollar en los estudiantes el
dominio de las herramientas básicas que les permitan comprender el proceso general de creación
de un software, es decir, la ingeniería de software, así como también propiciar la comprensión de
los criterios y lineamientos para que este logre cumplir en eficiencia y eficacia, desarrollándolo en
un plazo determinado, con el presupuesto previsto y con la funcionalidad solicitada.
Comprender estos conocimientos hoy es muy importante ya que las soluciones que se pueden
desarrollar favorecen procesos de crecimiento en empresas así como en universidades o personas,
en áreas tan diversas como las económicas, financieras, técnicas y/o educativas. Las empresas, en
general, no solo buscan programadores que simplemente ejecuten, no importando si lo ejecutado
tiene o no sentido, las compañías buscan profesionales con la capacidad de analizar, entender y
finalmente confeccionar una solución bajo el contexto particular de la empresa.
Por lo anterior, en este curso se desarrollará un enfoque teórico-práctico, donde los procesos de
análisis necesarios de aplicar desde la perspectiva de la construcción de sistemas y del desarrollo
de software permitan sentar las bases de este proceso, comprendiendo que el ciclo de vida del
software está formada por cuatro etapas principales: concepción, elaboración, construcción y
transición, así como de la realización de las pruebas necesarias para confirmar su correcto
funcionamiento y la implementación final de un sistema. A su vez, se trabajará en procesos
generales de análisis y creación de software, así como en aquellos destinados a la creación de
software a la medida basados en el análisis de requerimientos específicos, para comprender a
cabalidad las actuales tendencias en la ingeniería de software. Alguien que pueda desarrollar un
software “a la medida” dentro de lo que son los procesos globales de estandarización de procesos
y la personalización de una solución es lo que marcará el éxito o fracaso de un software.
4
ESTE DOCUMENTO CONTIENE LA SEMANA 1
1. INGENIERÍA DE SOFTWARE
1.1. DEFINICIÓN
La ingeniería de software es una disciplina de la ingeniería que interpreta una por una las
particularidades de la elaboración del software, comenzando por la elaboración del sistema hasta
el mantenimiento posterior, es decir, interpreta las formas prácticas para desarrollar y entregar un
software de mucha utilidad (Sommerville, 2012).
La ingenería del software está dirigida a poseer una responsabilidad organizacional con la calidad;
en otras palabras, no se puede integrar la ingenería del sofware en una organización que no está
enfocada en conseguir calidad.
De acuerdo a Pressman (2005), los componentes que forman parte de la ingeniería del software
son:
Procesos: establecen una estructura de trabajo al conjunto de áreas claves de proceso, las
cuales se deben determinar para la entrega objetiva de la tecnología del sofware.
La capa de proceso establece el proceso que será utilizado para la construcción del
sofware, tareas y actividades que el jefe de proyecto tendrá que administrar.
Por consiguiente, las partes claves del proceso conformarán los cimientos del control de
gestión de proyectos del software y determinán el contexto en el cual serán aplicados los
métodos técnicos, obtenidos los productos de trabajo y establecido el hito; así se afirma la
calidad y el cambio se realiza óptimamente.
5
ESTE DOCUMENTO CONTIENE LA SEMANA 1
El proceso de la ingenería del software es el vínculo que mantiene unidas las capas de
tecnología, las cuales permiten un desarrollo oportuno y racional del la ingenería del
software.
Cualquier recurso, inclusive herramientas utilizadas para construir el software, encajan en
el proceso. La capa de proceso es el fundamento de la ingenería del software y da soporte
a las capas de métodos y herramientas.
Los enfoques de la contrucción de software poseen un proceso, aunque en varios casos
son invisibles y caóticos. La ingenería del software que podemos llamar óptima hará que el
proceso de software aumente su visibilidad, que sea predicible y por supuesto más útil
para aquellos que construyen software.
Métodos: la capa de métodos se enfoca en las actividades técnicas que se deberán llevar a
cabo para realizar las tareas de ingeniería. Los métodos cubren una gran gama de tareas,
las cuales abarcan: análisis de requisitos, construcción de programas, mantenimiento y
diseño pruebas. Los métodos de la ingeniería del software se sustentan en un grupo de
principios básicos que administran las áreas de la tecnología e incorporan actividades de
modelado y otras técnicas descriptivas.
La construcción del software compromete una amplia colección de actividades técnicas. La
capa de métodos tiene determinados los métodos para llevar a cabo esas actividades de
manera óptima. Esta se enfoca en cómo se realizarán las actividades técnicas. Las
personas implicadas usan los métodos para realizar actividades de ingeniería fundamental
que son necesarias para construir el software.
Para la mayoría de las actividades de proceso la capa de métodos posee el conjunto de
métodos técnicos óptimos para utilizar, lo cual abarca un conjunto de reglas, modos de
representaciones gráficas basados en textos y guías para evaluar la calidad de la
información representada.
6
ESTE DOCUMENTO CONTIENE LA SEMANA 1
1.2. PRINCIPIOS
El concepto “ingeniería de software” se propuso en 1969 en una conferencia de la Organización
del Tratado del Atlántico Norte (OTAN) realizada para plantear las dificultadades que presentaba
el desarrollo del software; en esos tiempos existían grandes sistemas de software que estaban
quedando absoletos, tenían un alto costo, no eran confiables y su distribución era muy lenta, no
cumpliendo con las exigencias que demandaban los usuarios (óp. cit.).
El software ha permitido la exploración del espacio y la creación de la World Wide Web, el sistema
de información más significativo en la historia de la humanidad.
1.3. IMPORTANCIA
La ingeniería de software se caracteriza porque con ella se puede analizar, diseñar, programar y
aplicar un software de manera correcta y organizada, cumpliendo con todos los requerimientos
del cliente. Es de suma importancia:
Cada día se ha visto que con mayor constancia las personas y la sociedad se apoyan en los
avanzados sistemas de software. Esto hace que se requiera producir rápida y
económicamente sistemas confiables.
A veces resulta más económico por largos periodos utilizar técnicas y métodos de
ingeniería de software para los sistemas de software que solo crear los programas como
un proyecto de programación personal.
2. MODELOS Y HERRAMIENTAS
7
ESTE DOCUMENTO CONTIENE LA SEMANA 1
La ingeniería del software se sustenta en los modelos que determinan las diferentes etapas y
estados por los que pasa el producto software desde sus inicios, desarrollo, puesta en marcha y
posterior mantenimiento. Estos modelos son conocidos como “modelos de ciclo de vida del
software”.
Los modelos de ciclo de vida del software muestran las etapas del ciclo de software, el orden en
que deben ejecutarse y los criterios de transición entre etapas.
Modelo del ciclo de vida del software (Laboratorio Nacional de Calidad del Software de Inteco,
2009):
Provee un espacio
de trabajo para la
Define las fases
definición de un
primarias que se
proceso detallado
espera se ejecuten
de desarrollo de
software.
Ayuda a
administrar el
progreso del
desarrollo.
8
ESTE DOCUMENTO CONTIENE LA SEMANA 1
Las principales diferencias entre distintos modelos de ciclo de vida están en:
Según Sommerville (óp. cit.), el modelo en cascada (waterfall) es el modelo más básico de todos;
se caracteriza porque ordena cuidadosamente las etapas del proceso para el desarrollo del
software, de manera que el inicio de cada etapa debe esperar a la finalización de la etapa anterior,
cumpliendo paso a paso las etapas de especificación, desarrollo, validación y evolución de un
proceso.
9
ESTE DOCUMENTO CONTIENE LA SEMANA 1
Modelo de desarrollo en cascada.
Ian Sommerville (2012)
10
ESTE DOCUMENTO CONTIENE LA SEMANA 1
Sistemas de corta vida.
11
ESTE DOCUMENTO CONTIENE LA SEMANA 1
No implica gestión alguna, por lo que no se ocupa mucho tiempo en la planificación,
documentación, control de calidad, entre otras actividades que no sean netamente
codificación pura. Por lo antes mencionado es que se ven con mayor rapidez los progresos.
Se necesita poca experiencia, es decir, todo individuo que ha escrito en algún programa de
computadora tendrá conocimiento del modelo codificar y corregir. Cualquiera puede
utilizarlo.
Este modelo se vuelve peligroso de usar en proyectos grandes; en otras palabras, es un modelo
para proyectos pequeños.
No requiere gestiones, pero no posee medios de calidad para evaluación del progreso ni
identificación de riesgos. En este modelo si al llevar tres cuartas partes de la codificación se
descubre que el diseño tiene errores, la única solución que habrá será desechar el trabajo
completo y volver a comenzar desde cero.
En cambio, otros modelos nos permiten detectar errores mucho antes, lo que por supuesto hace
más fácil solucionar el problema y no perder el trabajo completo.
El Proceso Unificado hace uso del Lenguaje de Modelado Unificado (UML) en la organización de los
planes del sistema. El lenguaje de modelado unificado es una parte fundamental del proceso
unificado, es más, ambos fueron desarrollados a la par.
Cabe mencionar los aspectos característicos del Proceso Unificado, los que se pueden agrupar en 3
conceptos claves: está dirigido por casos de uso (use case driven), está centrado en la arquitectura
(architecture-centric), y es iterativo e incremental.
12
ESTE DOCUMENTO CONTIENE LA SEMANA 1
Las curvas son una aproximación de hasta dónde se llevan a cabo los flujos de trabajo en cada
fase.
Más que un modelo de proceso en sí mismo, este estándar provee un proceso para crear un
Software Life Cycle Process (SLCP), proceso del ciclo de vida del software con el que el arquitecto
de procesos puede guiar su trabajo para un proyecto de software dado.
Esta metodología se inicia con la selección de un modelo de ciclo de vida de software (SLCM,
Software Life Cycle Model) apropiado para usarse en el proyecto. Continúa con la creación de un
ciclo de vida del software (SLC, Software Life Cycle), utilizando un conjunto de actividades dadas
que se proveen en el mismo estándar. La metodología finaliza con el detallado del SLC con los
Elementos del Proceso Organizacional (OPA, Organizational Process Assets) para crear el SLCP.
El estándar define, entre otros, una serie de conceptos, siendo los más relevantes:
13
ESTE DOCUMENTO CONTIENE LA SEMANA 1
Software Life Cycle (SLC) – Ciclo de vida del software: la secuencia de actividades
específicas al proyecto que se crean mediante la referencia de las actividades en el
estándar con el modelo del ciclo de vida del software (SLCM) seleccionado.
Software Life Cycle Model (SLCM) – Modelo del ciclo de vida del software: el marco de
trabajo seleccionado por cada organización que lo usa, en el que se referencian las
actividades del estándar para producir el ciclo de vida del software (SLC).
Software Life Cycle Process (SLCP) – Proceso del ciclo de vida del software: la descripción
del proceso específico al proyecto que está basado en el ciclo de vida del software (SLC) y
los recursos del proceso organizacional.
Crear un SLC. Las actividades que se mencionan en el estándar deben referenciarse dentro
del SLCM.
Verificar el mapeo.
Establecer el SLCP. Los pasos anteriores constituyen el SLC. Como paso siguiente, las OPA
disponibles deben aplicarse a las actividades del SLC, y las restricciones o colisiones deben
resolverse.
Las herramientas CASE (Computer-Aided Software Engineering) son programas utilizados para dar
soporte a las actividades de los procesos de la ingeniería de software. Estas herramientas incluyen
editores de diseño, diccionarios de datos, compiladores, depuradores (debuggers), herramientas
de construcción de sistema, etc.
14
ESTE DOCUMENTO CONTIENE LA SEMANA 1
Cuando las herramientas de software se aplican a la propia tarea de desarrollar software, se habla
entonces de herramientas CASE. Una herramienta CASE es una herramienta de software que se
utiliza en una o más fases del desarrollo de un producto de software para apoyo de alguna tarea
específica de ingeniería de software.
Se caracterizan las herramientas CASE por la diversidad de aplicaciones informáticas, las cuales
están destinadas a aumentar la productividad en el desarrollo de software, reduciendo los costes
de las mismas en términos de tiempo y de dinero, y mejorando la calidad y productividad en el
desarrollo de sistemas de información.
15
ESTE DOCUMENTO CONTIENE LA SEMANA 1
3. CARACTERÍSTICAS SISTEMÁTICAS DEL PROCESO DE
SOFTWARE
Un proceso de software corresponde a un serie de actividades que van conectadas unas a otras y
que llevan a la producción de un producto de software (Sommerville, 2012).
En la actualidad hay una gran variedad de procesos de software, pero todos deben incluir estas
cuatro actividades que son esenciales para la ingeniería de software:
Según Sommerville (óp. cit.), el ciclo de vida del software es el procedimiento que va detallando
paso a paso los movimientos que corresponde seguir para su desarrollo, partiendo desde la
necesidad de resolver un problema y terminando cuando el programa se desarrolló y cumplió con
los requerimientos solicitados.
Entre las funciones que sebe poseer un ciclo de vida, se pueden destacar:
El ciclo de vida de un proyecto está conformado por etapas continuas compuestas por tareas que
pueden ser planificadas.
16
ESTE DOCUMENTO CONTIENE LA SEMANA 1
etapa puede ser utilizada en más de una ocasión a lo largo de un proyecto, obteniendo en las
pasadas de ejecución contribuciones a los resultados intermedios que se van produciendo.
4.1. ANÁLISIS
En esta etapa se requiere comprender de forma específica la problemática a solucionar,
constatando el contexto en el que se encuentra el problema en cuestión. La idea es la obtención
de la información necesaria que es requerida para hacer frente a la respectiva solución. Esta etapa
es distinguida como la del qué se va a solucionar.
4.2. DISEÑO
Tan pronto como se ha recolectado la información necesaria acerca del problema a reparar, será
relevante establecer la estrategia que se implementará para la resolución del problema en
cuestión. A esta etapa se le distingue como la del cómo se va a solucionar.
4.3. DESARROLLO
Comenzando el análisis y diseño de la solución, se procede con el desarrollo del programa que
resuelva el problema por medio del uso de una herramienta computacional establecida.
4.4. PRUEBAS
Al momento de realizar la programación de computadores tienden a existir algunos errores
humanos, los cuales suelen aumentar considerablemente dependiendo de la complejidad del
problema. Al finalizar la escritura de un programa computacional, se deben llevar a cabo pruebas
que aseguren el óptimo funcionamiendo de dicho programa, considerando el mayor número de
variables a las que se pueda enfrentar.
17
ESTE DOCUMENTO CONTIENE LA SEMANA 1
COMENTARIO FINAL
Esta semana ha sido una introducción al mundo de la ingeniería de software, donde se han
trabajado algunos de los elementos, conceptos y herramientas claves que permiten identificar las
características y propósitos que presenta la ingeniería de software para el diseño de sistemas.
Del mismo modo, se revisaron las etapas en el ciclo de vida del software y el carácter sistémico del
proceso de desarrollo que conlleva la construcción de un software. Estos conocimientos son
necesarios y relevantes para el alumno, debido a que serán claves para la óptima comprensión del
curso y la aplicación cotidiana en su vida profesional.
La importancia de esta semana radica en que a partir de ahora el alumno podrá tener una
completa noción de lo que abarca la ingeniería de software y de lo que este curso aportará en su
formación académica.
18
ESTE DOCUMENTO CONTIENE LA SEMANA 1
REFERENCIAS
Whitten, J. & Bentley, L. (2008). Análisis de Sistemas. 7° edición. México: Editorial MacGraw-Hill
Interamericana.
Laboratorio Nacional de Calidad del Software de Inteco (2009). Ingeniería del software:
metodologías y ciclos de vida. Consultado el 25 de mayo de: https://goo.gl/Ql8hAv
Booch, G.; Jacobson, I. & Rumbaugh, J. (1998). The Unified Modeling Language User Guid.
Addison-Wesley Pub. Co. Inc.
19
ESTE DOCUMENTO CONTIENE LA SEMANA 1
20
ESTE DOCUMENTO CONTIENE LA SEMANA 1