0% encontró este documento útil (0 votos)
38 vistas23 páginas

Pc3 Ingenieria Software

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 23

PC3 INGENIERIA SOFTWARE

• La “estandarización de procesos” supone la implantación de normas claras y precisas de


los métodos y formas de ejecutar un proceso concreto que puede ser un procedimiento de
trabajo, la forma de actuar de un equipo de trabajo, etc.
• Existen básicamente dos tipos de procesos en el desarrollo de software: Procesos
tradicionales o dirigidos por un plan y Procesos agiles.
• Las normas de calidad ISO (siglas), constituyen un estándar que certifica las cualidades
de un producto y/o servicio.
• El método es un procedimiento ordenado, repetible y autocorregible que garantiza la
realización de una actividad.
• Indique a que término define el siguiente párrafo: “conjunto de reglas que deben cumplir
los productos, procedimientos, servicios o investigaciones que afirmen ser compatibles
con el mismo producto y/o servicio”.
a. Estándar
b. Proceso
c. Normalización
d. Norma técnica
e. Norma
• El modelo PDCA (siglas) fue desarrollado por Walter Shewhart en los laboratorios Bell
en 1930, pero fue popularizado por W. Edwards Deming y se suele llamarse “Circulo de
Deming” o también “Espiral de Mejora Continua”.
• La Gestión de Proyectos es una disciplina que permite planear, organizar, asegurar y
coordinar recursos y personas para cumplir con los objetivos, entregables y criterios de
éxito de un proyecto.
• La Ingeniería de Sistemas se interesa por todos los aspectos del desarrollo y la evolución
de complejos sistemas computacionales, donde el software tiene primordial importancia.
• La metodología es una disciplina que estudia el conjunto de procedimientos racionales
utilizados para alcanzar un objetivo o tarea que requieran habilidades, conocimientos o
cuidados específicos.
• La no realización de alguna acción ante un error de denomina: avería
• Los estándares ofrecen beneficios reduciendo las diferencias entre los productos y/o
servicios, generando un ambiente de estabilidad, madurez y calidad en beneficio de
consumidores e inversores.
• ¿En cuál del tipo de procesos en el desarrollo de software (tradicionales o ágiles) se
genera gran documentación?
Respuesta: tradicionales
• Los procesos ágiles son aquellos donde la planeación es incremental y es más fácil
modificar el proceso para reflejar los requerimientos cambiantes del cliente.
• Es una metodología para mejorar el flujo de trabajo: Kanban
• En la etapa tres denominado “Diseño de la arquitectura” en el ciclo de vida del desarrollo
del software, generalmente se propone y documenta más de una arquitectura de diseño
para la arquitectura del software, la cual se especifica en un documento denominado ____
(siglas).
Respuesta: DDS
• Indique a que término define el siguiente párrafo: “conjunto de actividades que se llevan
a cabo para lograr un resultado recurrente”.
a. Estándar
b. Normalización
c. Norma técnica
d. Norma
e. Proceso
• La ingeniería es una disciplina que consisten en la aplicación de conocimientos y técnicas
científicas/tecnológicas para la solución de problemas y retos que enfrenta la humanidad,
en sus muy distintas áreas.
• Las Ciencias de la Computación se ocupan del estudio de sistemas de cómputo
incluyendo procesos algorítmicos y principios que involucran el diseño de software y
hardware.
• La estandarización se traduce en: Una mejora de la eficiencia como empresa, un aumento
del potencial para competir y un ahorro inmediato de los recursos económicos.
• Según la IEEE, la Ingeniería de Software se define como: “La aplicación de un enfoque
sistemático, disciplinado y cuantificable, al desarrollo, operación y evolución del
software”. El software debe ser confiable, eficiente y que cumpla con las necesidades del
cliente (eficacia).
• La administración de la cadena de suministros se denomina SCM(siglas).
• La estandarización persigue fundamentalmente tres objetivos: simplificación, unificación
y especificación
• El SDLC (siglas) es un proceso utilizado por la industria del software para diseñar,
desarrollar, probar, mantener y modificar software
• El resultado de la actividad del diseño del software es un modelo denominado
“arquitectura de software” o “arquitectura lógica
• La Ingeniería del Software tiene como objetivo mejorar el proceso de desarrollo de
software
• En cuál de los tipo de procesos en el desarrollo de software (tradicionales o ágiles) se
trabajan con prototipos?
Respuesta: ágiles
• Que un proyecto llegue o no a alcanzar los objetivos depende de varios factores: entorno,
cliente y equipo
• En la etapa dos denominado “Definición de requisitos” en el ciclo de vida del desarrollo
del software, se define y documenta claramente los requisitos del software
(especificaciones) y se debe obtenerse la aprobación del cliente, la cual se realiza
mediante un documento denominado ____ (siglas) donde consta todas las
especificaciones del software que se diseñarán y desarrollarán durante el ciclo de vida del
proyecto.
Respuesta: SRS
• Indique a que término define el siguiente párrafo: “es una regla o conjunto de reglas que
se imponen o se adoptan para dirigir la conducta o la correcta realización de una acción
o el correcto desarrollo de una actividad”.
a. Norma técnica
b. Proceso
c. Estándar
d. Normalización
e. Norma
• Un proyecto es un conjunto de actividades planificadas, ejecutadas y supervisadas que,
con recursos finitos tiene como objetivo crear un producto, servicio o resultado único”.
• La Ingeniería del Software tiene como objetivo mejorar el proceso de desarrollo de
software
• Los procesos tradicionales o dirigidos por un plan son aquellos donde todas las
actividades del proceso se planean por anticipado y el avance se mide en función de dicho
plan.
• Las etapas de un proyecto son 5 (número) y se les conoce en su conjunto como “Ciclo
de vida de un proyecto”.
Respuesta: 5
• El desarrollo mediante el ciclo de vida denominado cascada incremental se basa en la
idea de diseñar una implementación inicial (prototipo), exponer ésta a la evaluación del
cliente y luego desarrollarla en sus diversas versiones hasta producir un sistema adecuado.
• El software incluye a los productos que se generan durante el desarrollo del mismo:
programas, datos y documentación.
• Un proceso de producción es el conjunto de actividades orientadas a la transformación de
recursos o factores productivos en bienes o servicios. Su objetivo principal es la
satisfacción de la demanda.
• Un proyecto tiene las siguientes características: temporal, único y progresivo.
• Indique a que término define el siguiente párrafo: “es un documento que establece
requisitos, especificaciones, directrices o características que pueden utilizarse para
asegurar, en forma consistente, que un producto, proceso o servicio es adecuado a su uso
o propósito”.
a. Normalización
b. Proceso
c. Norma
d. Estándar
e. Norma técnica
• También conocido como “Ciclo de Deming”, es un método sistemático para la resolución
de problemas con el fin de generar una mejora continua de la calidad
• El defecto dentro de un componente de hardware o software se denomina: falla

CONCEPTOS DE LENGUAJE DE PROGRAMACION


HADWARE

Se refiere a toda la parte �sica de un equipo. Es lo que se conoce como lógica cableada.

SOFTWARE

Es el nuevo elemento que aparece con el microprocesador (uP). Para que un uP trabaje requiere
de un so�ware o programa que le indique que debe de hacer. Existen una gran variedad de
programas: Sistemas opera�vos: Windows, Linux, etc.So�ware de oficina: Word, Excel,
etc.So�ware de diseño: Corel, Autocad, etc. So�ware de programación: C, Java, Python, etc.

FIRMWARE

Es básicamente un so�ware almacenado (embebido) en un hardware (memoria �po

ROM, EPROM, EEPROM). Dicho programa es el que inicializa al equipo y le dice al procesador
que debe hacer. En las computadoras se le llama BIOS (Sistema Básico de Entrada y Salida).

Informá�ca: Se encarga del procesamiento automá�co de datos. Los sistemas informá�cos esta
formado por tres partes: Entrada: La captación de datos. Proceso: El cálculo con los datos. Salida:
Transmisión de resultados

Computadora: Es un equipo electrónico que sirven para procesar datos. Recibe datos, los
procesa y ob�ene información. Luego: Lo almacena (disco duro).Lo visualiza (pantalla de video).
Lo transmite (red de datos). Se denomina computadora a todo equipo que �ene un procesador
internamente. Al procesador se le debe decir que hacer, eso se denomina programar. Es el área
que se encarga de la aplicación de las computadoras en procesamiento de datos (solución de
problemas). La computación se aplica a diversas áreas. La computación es una parte de la
informá�ca.

Algoritmo: Es un conjunto de pasos o reglas bien definidas, ordenadas y finitas que permite
realizar una ac�vidad mediante pasos sucesivos que no generen dudas a quien debe realizar
dicha ac�vidad. Antes de elaborar un programa es recomendable realizar primero el algoritmo.
Para documentar un algoritmo tenemos dos opciones: Pseudocódigo. Diagramas de Flujo de
Datos. Los Diagramas de Flujo de Datos (DFD), son descripciones gráficas de los algoritmos; usan
símbolos conectados con flechas para indicar la secuencia de instrucciones. Un diagrama de flujo
se puede documentar mediante diversos programas como: Microso� Word y Power Point, con
la opción Insertar - Formas.Microso� Visio.Editores de DFD.

Programa: Es un archivo que con�ene un conjunto de instrucciones (órdenes) que un procesador


en�ende y ejecuta para realizar una determinada tarea. Recordar que los procesadores solo
en�enden binario. Programar en binario es muy laborioso y por eso se crearon los “Lenguajes
de Programación”.

Programación: Es el proceso de diseñar (crear), codificar (programar), depurar (corregir errores)


y mantener programas fuente. El propósito de la programación es “decirle a un equipo
computacional” que debe hacer. Específicamente se le dice al procesador lo que debe hacer. La
programación es un soporte fundamental de la ingeniería. Las matemá�cas son la base para la
programación. ¿Que “cosas” podemos programar? Cualquier cosa que tenga un procesador. La
programación se vale de la abstracción para representar objetos o fenómenos observables.

Abstracción: Construir mediante una operación mental la noción de un objeto o evento


observable extrayendo sus caracterís�cas esenciales. Ejemplos: Un sistema opera�vo es una
abstracción de una computadora. Una fórmula matemá�ca es la abstracción de un fenómeno
�sico o químico. Un programa es una abstracción de un modelo de resolución de un problema.
La abstracción generaliza al reducir la complejidad de un objeto o evento observable. Los objetos
o eventos son analógicos (�enen infinitos valores). Ejemplo: abstracción desde el punto de vista
de “funcionamiento”. Un led puede estar encendido o apagado, por lo tanto, se puede
representar como un bit. Un motor puede estar encendido o apagado, por lo tanto, se puede
representar como un bit. Motor y led no son iguales. Ejemplo: Podemos abstraer las
“caracterís�cas” de un objeto o fenómeno. Las caracterís�cas de un pájaro son: pico, alas,
plumas, patas. Las matemá�cas son una gran herramienta para abstraer. La abstracción, nos
permite: Entender cómo funciona algo. Simular el comportamiento de un objeto o evento.
Predecir su comportamiento.

Paradigma: Las matemá�cas son una gran herramienta para abstraer. La abstracción, nos
permite: Entender cómo funciona algo. Simular el comportamiento de un objeto o evento.
Predecir su comportamiento. Paradigmas de Programación: “Un paradigma de programación es
una forma de programar (realizar cómputo), de estructurar los datos (como los represento) y
organizar las tareas que debe llevar a cabo un programa “Los paradigmas de programación están
asociados a determinados modelos de cómputo (basados en transistor y cuán�co). También se
asocian a un determinado es�lo de programación (prog. estructurada y prog. Orientada a
objetos). Los lenguajes de programación suelen implementar uno o varios paradigmas. Ejemplo:
Python y JavaScript. Paradigmas Fundamentales: Los paradigmas fundamentales son:Enfoque
impera�vo: indicar el cómo se debe calcular.Enfoque declara�vo: indicar el qué se debe calcular.
Analogía: En los lenguajes impera�vos se indica la “receta”, mientras que los declara�vos, la
“foto del plato” que se quiere preparar. Paradigmas derivados: Impera�vo: Paradigma orientada
a objetos. Ejemplo: C++.Paradigma orientada a eventos. Ejemplo: Visual Basic.Paradigma
Impera�vo: Describe cómo debe realizarse el cálculo, no el porqué. Impera�vo significa mandar
o dar una orden y es exactamente lo que hace este �po de programación, dar órdenes al
computador. Describe de forma explícita qué pasos deben llevarse a cabo y en qué secuencia
(flujo explícito) para alcanzar la solución deseada.Las variables son posiciones de memoria que
con�enen datos (o referencias), pueden ser modificadas, y representan el estado del programa.
La sentencia principal es la asignación. Es el estándar “de facto”. Asociados al paradigma
impera�vo se encuentran los paradigmas: Modular Procedimental Estructurado. Lenguajes
representa�vos: Fortran, Cobol, Basic, Pascal, C, Java, C++, C#, Eiffel, JavaScript, Python, etc.
Algunos autores denominan “paradigma impera�vo” solo al “paradigma estructurado”.
Paradigma declara�vo: Describe que se debe calcular, sin explicitar el cómo. Declara�vo significa
que explica de manera clara algo dudoso, permi�endo describir los resultados esperados sin
especificar la forma en cómo se llegarán a ellos. No existe un orden de evaluación prefijado. Las
bases de datos son como los bancos: En los Bancos guardamos dinero. En las Base de Datos
guardamos datos. Los bancos y las base de datos son sistemas seguros. Ejemplo: Lenguaje SQL
Ejemplo: Especificación CSS (Cascading Style Sheets) Esta especificación es un lenguaje de diseño
gráfico que se escribe dentro del código HTML de un si�o web. Permite crear páginas de una
manera más exacta y aplicarles es�los (colores, márgenes, formas, �pos de letras, etc.) por lo
que se �ene mayor control de los resultados finales. La especificación CSS, junto con HTML y
JavaScript es una tecnología usada por muchos si�os web para crear páginas con un diseño
agradable. CSS permite “separar” el contenido de la forma de presentación de las páginas web.
Lo que genera múl�ples beneficios, como: Presentar contenido en diferentes formatos. Tener un
si�o web responsivo (adaptarse a diversas resoluciones de pantalla). Se adecua al “aspecto radio
“Definir el es�lo visual de todo un si�o web. Las variables son nombres asociados a definiciones,
y una vez instanciadas son inmutables. No existe sentencia de asignación. El control de flujo suele
estar asociado a la composición funcional, la recursividad y/o técnicas de reescritura y
unificación. Asociados al paradigma declara�vo se encuentran los siguientes paradigmas:
Funcional (Familia LISP) Lógico (Prolog)Reac�vo (Simulink, LabView) Lenguajes descrip�vos.

Lenguajes de Programación: Los lenguajes de programación son “idiomas ar�ficiales” creados


por el hombre para dar instrucciones a sistemas computacionales. Los lenguajes de
programación son “idiomas ar�ficiales” creados por el hombre para dar instrucciones a sistemas
computacionales.por su complejidad bajo nivel y alto nivel Por la forma como se
programan:Lenguajes de programación textuales:Emplean un conjunto de instrucciones
(nomenclatura) como for, while, if, etc Lenguajes de programación iconográficos:Emplean íconos
para representar cada una de sus instrucciones. Ejemplo: Labview, Ladder, etc. Por la forma como
se convierte en binario: Independientemente que sean textuales o iconográficos, estos
programas deben ser conver�dos a binario. Existen dos formas para que un programa se
convierta en binario:Ensamblado: cuando trabajamos con lenguajes de bajo nivel. Ejemplo:
Assembler.Compilado: cuando trabajamos con lenguajes de alto nivel. Ejemplo: C.
Por la forma como se ejecutan:Compilados: Cuando todo el programa fuente es traducido a
binario (lenguaje de máquina) para ser ejecutado. Depende del procesador de la computadora.
Ejemplo: C, C++, etc.Interpretados: Cuando cada instrucción del programa fuente es traducido a
binario para ser ejecutado (uno por uno). Es independiente del procesador de la computadora.
Ejemplo: Basic, Python, Javascript, PHP, Java, etc. Mixto: Cuando todo el programa fuente es
compiladoy conver�do a un formato intermedio (bytecode) y luego cada instrucción es traducido
a binario (interpretado) y ejecutado en una máquina virtual. Es independiente del procesador
de la computadora. Ejemplo: Java. Por su �pado: El �pado es una cualidad de los lenguajes de
programación con la cual establecen el �po de datos de las variables. Existen básicamente dos
�pos:Tipado está�co.Tipado dinámico

Tipado esta�co: Cuando en un lenguaje de programación, la comprobación de �pificación se


realiza durante la compilación, y no durante la ejecución. El �pado está�co permite que los
errores de �pificación sean detectados antes, y que la ejecución del programa sea más eficiente
y segura.Ejemplos: C, C++, Java, etc.

Tipado dinámico : Cuando en un lenguaje de programación, la comprobación de �pificación se


realiza durante su ejecución en vez de durante la compilación. El �pado dinámico es más flexible,
aunque se ejecutan más lento y son más propensos a contener errores de programación.
Ejemplos: Perl, Python, Lisp, etc.Nivel de Tipado También podemos hacer una clasificación
dependiendo del nivel de �pado:Tipado débil Tipado fuerte que son para definir los �pos de
datos de una variable.

Lenguaje de Programacion C: Es un lenguaje compilado, usa �pado está�co, fuertemente


�pado.Es un lenguaje de programación que trabaja con el paradigma estructurado.Es
mul�plataforma, lo cual es ventajoso para hacer ejecutable su código fuente entre varios sistema
opera�vos.Tiene un compilador para cada procesador.
Lenguaje de Programacion:LISP Es un lenguaje compilado, usa �pado está�co, fuertemente
�pado.Es un lenguaje de programación que trabaja con el paradigma estructurado.Es
mul�plataforma, lo cual es ventajoso para hacer ejecutable su código fuente entre varios sistema
opera�vos.Tiene un compilador para cada procesador.

Lenguaje de Programacion:Python: Es un lenguaje interpretado, usa �pado dinámico.Es un


lenguaje de programación mul�paradigma, el cual soporta varios paradigma de programación
como orientación a objetos, estructurada y en menor medida, programación funcional.Es
mul�plataforma, lo cual es ventajoso para hacer ejecutable su código fuente entre varios sistema
opera�vos.

Programas para hacer Programas: Los programas se crean mediante otros programas
especializados que nos permiten:Escribir o dibujar el programa: se u�liza un editor.Detección de
errores: una sentencia mal escrita, una mala definición del �po de datos para una variable, etc.
A esto se le conoce como depurador (debugger).Conver�r el programa fuente en código
máquina: llamado compilación o interpretación, dependiendo del �po de lenguaje de
programación empleado.Entorno seguro de ejecución del programa: evita que por una mala
programación la computadora se "cuelgue". A todas estas funcionalidades se les conoce como
herramientas de desarrollo o SDK(So�ware Development Kit) que son normalmente
desarrolladas por el propio fabricante del lenguaje de programación.Los SDK traen solo unas
cuantas librerías. Cuando todas estas herramientas se integran en un solo entorno de
programación se le denomina IDE (Integrated Development Environment) y es lo que
normalmente se usa para programar.Los IDE proveen un marco de trabajo amigable para los
lenguajes de programación.Los IDE incluyen algunas librerías.IDE: Existen básicamente dos
entornos de programación:Textual: Las instrucciones del lenguaje de programación se escriben.
Ejemplo: C, C++, Python, etc.Iconográfico: Las instrucciones del lenguaje están representados
por íconos. Los programas “se dibujan”. Ejemplo: Labview, Ladder, etc. Un IDE puede tener uno
o varios compiladores o intérpretes, por lo cual, se le puede usar para programar en dis�ntos
lenguajes de programación.
Direc�vas o pragma: Las direc�vas permiten realizar operaciones preliminares en el código
fuente antes de pasarlo al compilador o definir parámetros para especificar qué �po de
compilación se debe realizar. Las direc�vas son “órdenes” que le damos al compilador.La sintaxis
y el uso de las direc�vas varían significa�vamente de un lenguaje de programación a otro. Las
direc�vas no son instrucciones de un lenguaje de programación, son ordenes que le damos al
compilador.

Tipos: Existen básicamente tres �pos de lenguajes de programación:Aplicaciones Desktop


(standalone)La plataforma es la computadora personal.Aplicaciones Web (cliente/servidor)La
plataforma es una Intranet y/o Internet.Aplicaciones Móviles (cliente/servidor)La plataforma es
el smartphone e internet El navegador es considerado el cliente “universal”

Aplicaciones Desktop: , es aquella que esta instalada en el computador del usuario y que es
ejecutada directamente por el sistema opera�vo (Windows, Mac OS X, Linux, etc) y cuyo
rendimiento depende de la configuración de hardware del computador (memoria RAM, tamaño
de disco duro, memoria de video, etc)

Aplicaciones Web: son aquellas que están instaladas en un servidor y su ejecución requiere
disponer de acceso a una Intranet y/o Internet, de un navegador (Google Chrome, Internet
Explorer, Opera, etc).Trabajan bajo una arquitectura cliente/servidor.

Aplicaciones Moviles: Aplicaciones móviles son aquellas que están diseñada para ser ejecutada
en teléfonos inteligentes, tabletas y otros disposi�vos móviles (i-watch). Permiten al usuario
efectuar un variado conjunto de tareas en el ámbito profesional, ocio, educa�vas, acceso a
servicios, etc

Definicion previa : Una biblioteca es un conjunto de librerías.librería es un conjunto de


funciones.Una función es un pequeño programa que hace algo específico.

Framework: Un framework es un entorno de trabajo que �ene como obje�vo facilitar la labor
de programación ofreciendo una serie de caracterís�cas y funciones que aceleran el proceso de
desarrollo, reduce los errores, favorecen el trabajo colabora�vo, consiguiendo con ello obtener
un producto de mayor calidad. Un framework es un entorno de desarrollo completo, que facilita
herramientas tan indispensables como el compilador, el debugger y el editor de código, pero
también cuenta con un poderoso conjunto de bibliotecas, con funciones ú�les ya previamente
implementadas, que ahorran �empo y esfuerzo al desarrollador y cons�tuyen el núcleo del
entorno. Los toolkits de MathLab son bibliotecas. Con�ene librerías y herramientas que nos
permiten construir aplicaciones de una manera rápida.Garan�za la calidad del “producto”
gracias a una metodología y estructura de trabajo bien definidas. Organización predeterminada
del código. Estructura de trabajo para situar los diferentes archivos de la aplicación (recursos,
controladores, vistas, modelos, etc.). Reu�lización del código.Reduce significa�vamente el
�empo de desarrollo de una aplicación.Es más fácil probar y depurar el código incluso para
desarrolladores que no son los creadores del código.Ayuda a establecer las mejores prác�cas de
programación y el uso adecuado de patrones de diseño. Permite a los desarrolladores crear
código más seguro.La mayoría del código y funcionalidades de los frameworks han sido
extensamente probadas y cer�ficadas. Esto hace que el desarrollo de las aplicaciones sea un
proceso más confiable.Ayuda a evitar el código duplicado y redundante.Facilita el trabajo en
tecnologías sofis�cadas.Ejemplo: Inteligencia ar�ficial.

Framework para Desktop: Qt Qt es un framework de desarrollo de aplicaciones de desktop


basado en lenguaje C++. Es mul�plataforma, es decir, el so�ware creado con Qt puede
ejecutarse en Windows, OS X, Linux, Android, iOS, QNX, entre otros.Algunas de las aplicaciones
más conocidas desarrolladas con Qt son KDE, Opera, Spo�fy, Teamviewer y Skype.Se �ene dos
versiones: pago y libre.

Framework para Web: Cuando se construye un si�o web, se requiere de un conjunto de


componentes similares:Una manera de manejar la auten�cación de usuarios (registrarse, iniciar
sesión, cerrar sesión). Observar que la información debe viajar cifrada (protocolos de cifrado
SSH, SSL, Ipsec, WPA). Un panel de administración remota para el si�o web. Ejemplo: cPanel.Una
forma de subir archivos. Ejemplo: protocolo FTP.Formularios.

cPanel: (control Panel) es un programa para administrar servidores de alojamiento web y que
provee herramientas de automa�zación y una interfaz gráfica basada en páginas web. Permite:
Administración de archivos: principalmente para la instalación de aplicaciones
PHP.Configuración de los dominios.Ges�ón de cuentas de correo.Ges�ón de bases de datos
MySQL: creación y mantenimiento de bases de bases de datos.Ges�ón de los recursos: espacio
en disco, consumo de ancho de banda mensual, etc.

Framework para Web: DjangoDjango es un framework de desarrollo de aplicaciones Web de


código abierto basado en el lenguaje Python.Django facilita la creación de si�os web complejos.
Django pone énfasis en el re-uso, la conec�vidad y extensibilidad de componentes, el desarrollo
rápido y el principio DRY (Don't Repeat Yourself). Framework para Móvil: React Na�ve: React
Na�ve es un framework de JavaScriptpara crear aplicaciones na�vas para iOS y Android.Esta
basado en la librearía de React para la creación de componentes visuales.Fue creado por
Facebook. Si sabes C, ya sabes Java y también Javascript” Cambio de paradigma: en lugar de ser
ejecutados en el navegador, se ejecuta directamente sobre el sistema opera�vo (iOS y
Android).En lugar de desarrollar una aplicación web híbrida o en HTML5, lo que se �ene es una
aplicación real na�va.

Framework para Móvil: Fluter: Permite crear aplicaciones na�vas mul�plataforma.Se programa
con el lenguaje Dart (similar a C++, java y javascript).Está escrito en C++Fue creado por Google.

Resumen: SDK, IDE y frameworkSDK trae unas cuantas librerías básicas,IDE trae una mayor
can�dad de librerías.Framework trae bibliotecas, metodología y una estructura de trabajo.

Applica�on Framework: Un Applica�on Framework es una biblioteca de so�ware que


proporciona una estructura fundamental para soportar el desarrollo de aplicaciones para un
entorno específico. Actúa como el soporte estructural para construir una aplicación. La intención
de diseñar “marcos de aplicación” es disminuir los problemas generales que se enfrentan
durante el desarrollo de aplicaciones. Esto se logra mediante el uso de código que se puede
compar�r entre diferentes módulos de una aplicación. Los Applica�on Framework permiten:
Estandarizar las estructuras de las aplicaciones, eliminando así las diferencias de programación
entre los desarrolladores.Crear de forma independiente partes lógicas, pantallas y otros
componentes de la aplicación y mejorar la capacidad de mantenimiento.Separar fácilmente las
aplicaciones en componentes y mejore la reu�lización.Ocultar elementos de manejo de
comunicaciones y otros elementos secundarios mediante el uso de marcos y habilitar su
operación automá�ca. Los frameworks de aplicaciones se u�lizan no solo en el desarrollo de la
interfaz gráfica de usuario (GUI), sino también en otras áreas, como las aplicaciones basadas en
web.API : Una API (Applica�on Programming Interface) representa la capacidad de comunicación
estándar entre componentes de so�ware. Se trata del conjunto de llamadas a ciertas bibliotecas
que ofrecen acceso a ciertos servicios desde los procesos y representa un método para conseguir
abstracción en la programación. La interfaz puede considerarse como un contrato de servicio
entre dos aplicaciones. Este contrato define cómo se comunican entre sí mediante solicitudes y
respuestas. La documentación del API con�ene información sobre cómo los desarrolladores
deben programar esas solicitudes y respuestas.

CONCEPTOS DE INGENIERIA DE SOFTWARE


Norma • Una norma es una regla o conjunto de reglas que se imponen o se adoptan para
dirigir la conducta o la correcta realización de una acción o el correcto desarrollo de una
actividad. • Las normas son el fruto del consenso entre todas las partes interesadas e
involucradas en la actividad objeto de la misma. Contiene especificaciones basadas en los
resultados de la experiencia. 2 Norma técnica • Una norma técnica es
un documento que establece requisitos, especificaciones, directrices o características que
pueden utilizarse para asegurar, en forma consistente, que un producto, proceso o servicio es
adecuado a su uso o propósito. • Las normas técnicas son establecidas por consenso entre las
partes interesadas, son aprobadas por organismos de normalización reconocidos y están
disponibles al público. • Las normas técnicas también se utilizan para la evaluación de los
productos, procesos o servicios. – Ejemplo: Normas de cableado estructurado 3
Estándar • Es un conjunto de reglas que deben cumplir los productos, procedimientos,
servicios o investigaciones que afirmen ser compatibles con el mismo producto y/o servicio.
– Sirven como patrón, modelo o punto de referencia para medir o valorar cosas de la misma
especie. • Los estándares ofrecen beneficios reduciendo las diferencias entre los productos y/o
servicios, generando un ambiente de estabilidad, madurez y calidad en beneficio de
consumidores e inversores. 4 La Estandarización • La estandarización o
normalización es la creación y la aplicación de normas que son aplicadas a diversas actividades
con el fin de ordenarlas y mejorarlas. --- - 5 La
Estandarización: Objetivos • La estandarización persigue fundamentalmente tres objetivos:
– Simplificación: reducir el número de normas, para tener únicamente los más necesarios.
– Unificación: permitir los intercambios de productos y/o servicios a nivel internacional. –
Especificación: evitar errores de identificación, creando un lenguaje claro y preciso de partes,
equipos, servicios, etc.
La Estandarización: Organismos • La ISO (Internacional Organization for Standarization) es una
entidad mundial que trabaja para el establecimiento de disposiciones diseñadas para un uso
común y repetido, lo cual permite alcanzar un determinado ordenamiento que ayuda a resolver
un problema potencial o real. – Las normas de calidad ISO, constituyen un estándar que
certifica las cualidades de un producto y/o servicio. – Cuando algo tiene un estándar de calidad
ISO, los clientes tienen una garantía respecto a un cierto nivel de calidad alcanzado por
el producto y/o servicio. -- La Estandarización: Organismos
Internacionales • La IEEE (Institute of Electrical and Electronics Engineers), que es una
asociación mundial de ingenieros dedicada a la normalización y el desarrollo en áreas técnicas.
• ITU (International Telecommunication Union). • IATA (International Air Transport Association).
• Etc. --- 8 En el Perú tenemos el INACAL (Instituto Nacional de Calidad). La
Estandarización de Procesos • Existen básicamente dos razones por las que se deben de
estandarizar los procesos en una empresa u organización: – El ahorro de tiempo de trabajo.
– El ahorro de recursos económicos propios y ajenos. • La “estandarización de procesos” supone
la implantación de normas claras y precisas de los métodos y formas de ejecutar un proceso
concreto que puede ser un procedimiento de trabajo, la forma de actuar de un equipo de
trabajo, etc. • Que los implicados de un determinado proceso hagan las cosas de la misma
manera, permite detectar problemas, solucionarlos y fomenta el trabajo en equipo ya que
cualquier idea que permita mejorar es validada por el equipo y se pone en práctica
actualizando el estándar (Mejora Continua). • La estandarización se traduce en: – Una
mejora de la eficiencia como empresa. Un aumento del potencial para competir. – Un ahorro
inmediato de los recursos económicos. • Las estandarización es una herramienta que permite
asegurar que los cambios de mejora implementados, no se dejen de aplicar en el proceso.
Proceso • El proceso es un conjunto de actividades que se llevan a cabo para lograr un resultado
recurrente. – En general, un proceso es una serie de operaciones realizadas en orden
específico y con un objetivo. • Se trata de un concepto aplicado a una empresa u organización.
Nos referimos al proceso como producto de la acción humana, no se esta considerando, por
ejemplo, los procesos naturales donde no interviene el ser humano.
Proceso: Objetivos • Todos los procesos tienen un objetivo o función diferente por el cual se
desarrollan pero se pueden resumir en: – Aportar valor: al producto o servicio final. –
Minimizar costos: del producto o servicio final. – Maximizar la calidad: del producto o servicio
final. – Maximizar la eficiencia: del producto o servicio final. 17
Proceso: Estrategias y métodos • Ciclo PDCA: También conocido como “Ciclo de Deming”, es
un método sistemático para la resolución de problemas con el fin de generar una mejora
continua de la calidad.
• TQM (Total Quality Management): Gestión de la calidad total, está orientada a crear
conciencia de calidad en todos los procesos de una empresa u organización. •
Six sigma: Es una estrategia de mejora de procesos centrada en reducir o eliminar los defectos
o fallos en la entrega de un producto o servicio al cliente. Permite mejorar la rentabilidad y
productividad. • Etc. 19
Ejemplo de proceso: La Investigación Científica • La investigación científica es un
proceso ordenado y sistemático de indagación en el cual, mediante la aplicación rigurosa de
un conjunto de métodos y criterios, se persigue el estudio, análisis o indagación en torno a un
asunto o tema, con el objetivo subsecuente de aumentar, ampliar o desarrollar el
conocimiento que se tiene de este. La Investigación Científica busca la “verdad” .La
investigación científica busca la “verdad” no la aplicación de dicha verdad. – La verdad es lo
que denominamos ciencia. – La aplicación de la “verdad” lo hacen los ingenieros. – La
“verdad” se utiliza para crear tecnología. 21
Ejemplo: La Investigación Científica • El objetivo fundamental de la investigación científica es
buscar: – Explicaciones a problemas específicos o fenómenos. – Desarrollar teorías
(empleando matemáticas y ciencias). Establecer principios. – Ampliar conocimientos. –
Reformular planteamientos porque se refuta resultados (falsacionismo” .La investigación
científica se vale del método científico, que es una herramienta para proceder al análisis y la
indagación del problema planteado de forma estructurada y sistemática. 23
Ejemplo: La Investigación de Mercados • La investigación de mercados es el proceso mediante
el cual las empresas buscan hacer una recolección de datos de manera sistemática para poder
tomar mejores decisiones mediante un mejor conocimiento del consumidor. • La investigación
de mercados tiene 3 objetivos: – Administrativo: Ayudar al desarrollo de la empresa
mediante una correcta planeación, organización y control de los recursos (material y
humano), para cubrir las necesidades específicas dentro del mercado en el tiempo exacto.
– Social: Satisfacer las necesidades específicas del cliente mediante un producto o servicio
requerido. – Económico: Determinar el grado económico del éxito o fracaso que pueda
tener una empresa al ingresar a un nuevo mercado o lanzar un nuevo producto o servicio.
• Para hacer esta investigación se recurre a métodos estadísticos, analíticos y diversas
técnicas para obtener los datos o información que se requiere. Ejemplo: – Data Mining o
Minería de Datos – CRM (Customer Relationship Management). – Etc. 26
Ejemplo: Proceso de Producción • Un proceso de producción es el conjunto de actividades
orientadas a la transformación de recursos o factores productivos en bienes o servicios. • Su
objetivo principal es la satisfacción de la demanda. • Emplea diversas tecnologías como:
– SCM (Supply chain management): Administración de la cadena de suministros.
– SRM (Supplier Relationship Management): Gestión de las relaciones con los proveedores.
– Lean Manufacturing: Modelo de gestión que se enfoca en minimizar las pérdidas de los
sistemas de manufactura.
• TPM (Total Productive Maintenance): Filosofía de trabajo para eliminar perdidas. –
ISO 9001: Conjunto de normas para el control y gestión de la calidad en una empresa
orientada a la producción de bienes y/o servicios.
– Kanban: Es una metodología para mejorar el flujo de trabajo.
– 5S: Método para tener lugares de trabajo mejor organizados. – Etc.
Proyecto • Según la definición que nos proporciona PMI (Project Management Institute) en su
guía PMBOOK®: • “Un proyecto es un conjunto de actividades planificadas, ejecutadas y
supervisadas que, con recursos finitos tiene como objetivo crear un producto, servicio o
resultado único”. • Un proyecto es un plan de acción. Es un mapa de la “ruta” que se debe
seguir para alcanzar un objetivo propuesto. 29 • Que un proyecto llegue o no a alcanzar
los objetivos depende de varios factores: – Entorno: No sufre modificaciones de forma rápida
y por ende los requerimientos o necesidades del cliente permanecen con pocas
variaciones en el tiempo. – Cliente: Tiene muy claro que es lo que se necesita, sabe
comunicarlo y se entiende perfectamente sus necesidades. – Equipo: Existe un equipo de
profesionales competentes para atender las necesidades del cliente.
Proyecto: Características • Un proyecto tiene las siguientes características: – Temporal: Tiene
un tiempo de inicio y un tiempo para su final. – Único: No se repite, son singulares. –
Progresivo: Sigue una serie de etapas.
Proyecto: Tipos de usuarios • En el desarrollo de un proyecto se tienen a los siguientes tipos
de usuarios: – Cliente: Es el ente que requiere una solución para un problema específico.
– Usuario final: Son las personas que utilizarán la nueva solución. – Integrantes de equipo:
Son las personas que desarrollarán el proyecto. – Jefe de Proyecto: Persona necesaria
para la gestión de los recursos, así como la planificación del proyecto. • Para realizar una
buena interrelación de todos estos tipos de usuarios se debe tener en cuenta: – Definir la
estructura del proyecto: es la forma en que se planifica, se administra y se controla el mismo.
Es la base sobre la cual el proyecto se ejecuta según los parámetros establecidos. –
Definir las fases o etapas que componen el proyecto. – Gestionar el proyecto.
Proyecto: Etapas • Tal como lo define el libro: A Guide to the Project Management Body of
Knowledge, (PMBOOK® Guide), todos los proyectos tienen en común una serie de etapas a
nivel genérico, que luego se concretan en función de la naturaleza y de la complejidad del
proyecto en sí. • Las etapas de un proyecto son cinco y se les conoce en su conjunto como
“Ciclo de vida de un proyecto”: Inicio Planificación Ejecución Control Cierre
• Inicio: Es crucial en el ciclo de vida del proyecto, ya que se define el alcance y se procede a la
selección del equipo. Sólo con un ámbito claramente definido y un equipo especializado, se
puede garantizar el éxito. Es recomendable compartir la visión con los stakeholders y buscar
su compromiso y apoyo. • Planificación: Ésta es a menudo la etapa más difícil para un jefe de
proyecto, ya que tiene que hacer un importante esfuerzo de abstracción para calcular las
necesidades de personal, recursos y equipo que habrán de preverse para lograr la consecución
a tiempo y dentro de los parámetros previstos. 35 • Ejecución: En base a la
planificación, hay que realizar las actividades programadas, con sus tareas, y proceder a la
entrega de los productos intermedios. – Es importante velar por una buena comunicación en
esta etapa para garantizar un mayor control sobre el progreso y los plazos. – Es
indispensable monitorizar la evolución del consumo de recursos, presupuesto y tiempo, para
lo que suele resultar necesario apoyarse en alguna herramienta de gestión de proyectos.
– Se deben gestionar: el riesgo, el cambio, los eventos, los gastos, los recursos, el tiempo y
las actualizaciones y modificaciones. Por ejemplo, en los proyectos de construcción, es
esencial vigilar los plazos para evitar retrasos, un riesgo frecuente en esta etapa. •
Control: Comprende los procesos necesarios para realizar el seguimiento, revisión y
monitorización del progreso del proyecto. Se concibe como el medio de detectar desviaciones
con la máxima premura posible, para poder identificar las áreas en las que puede ser requerido
un cambio en la planificación. • Cierre: Comprende todos procesos orientados a completar
formalmente el proyecto y las obligaciones contractuales inherentes. Una vez terminado esta
etapa, se establece formalmente que el proyecto ha concluido.
Proyecto: Ciclo de Vida • Al desarrollo de las cinco etapas de un proyecto se le conoce como
Ciclo de vida de un proyecto, en donde las etapas se diseñan para un mejor control de todo el
proceso. • Dentro del Ciclo de vida de un proyecto, cada etapa se relaciona con las siguientes
de forma distinta, formando un ciclo propio. -Aunque en cada proyecto el ciclo de
vida es diferente, se pueden extraer ciertas características que suelen cumplirse de forma
genérica: – Las etapas por las que pasa un proyecto son generalmente secuenciales,
aunque en ocasiones se superponen y suceden en paralelo. – El nivel de riesgo es mayor
al inicio, también la incertidumbre, porque el proyecto todavía es inmaduro y contiene
muchos aspectos no definidos y muchas decisiones que deben tomarse. – A medida que
se avanza en el ciclo de vida del proyecto los riesgos son más difíciles de manejar. Los recursos
y el tiempo se agotan en las etapas avanzadas del proyecto, por lo cual debemos ser
capaces de prever los riesgos para solucionarlos o evitarlos cuando aún es posible hacerlo.
• Existen diversos tipos de ciclos de vida de proyectos: – Tipo predictivo: significa que desde
el principio ya está definido de forma precisa tanto el coste como la duración del proyecto.
– Tipo incremental o iterativo: donde se planifica la repetición de algunas de las etapas a
medida que el equipo gana conocimiento del producto o servicio que se está ejecutando.
– Tipo adaptativo: cuando el entorno cambia rápidamente y es necesario redefinir la
planificación inicial cada cierto tiempo. • Conocer el ciclo de vida del proyecto
es de gran ayuda para: – Prever riesgos futuros. – Reducir incertidumbre. – Entender
en qué etapas se debe poner mayor esfuerzo. – Diseñar los indicadores de seguimiento
adecuados. – Controlar mejor todas las etapas del proyecto. • En resumen, tener claro cuál
es el ciclo de vida del proyecto es clave para realizar una gestión adecuada y eficaz. 41
Gestión de Proyectos • Es una disciplina que surgió como necesidad en los años 50 en el
ámbito militar debido a diversos factores que afectaban el desarrollo de un proyecto: –
Dependencia con la tecnología, la cual es cambiante. – Nuevas necesidades o funcionalidades
de tal manera que los requerimientos iniciales sufren modificaciones a lo largo del
desarrollo del proyecto. – Proyectos de gran magnitud donde se requiere realizar
coordinaciones entre los diferentes grupos de trabajo. • A partir de este momento surgen
nuevos conceptos y herramientas que facilitan la gestión de un proyecto, como son el ciclo de
vida, descomposición en tareas, realización de gráficos, entre otros.
Gestión de Proyectos: Definición • La Gestión de Proyectos es una disciplina que permite
planear, organizar, asegurar y coordinar recursos y personas para cumplir con los objetivos,
entregables y criterios de éxito de un proyecto.
Gestión de Proyectos • Para que un proyecto finalice con éxito, el jefe de proyectos debe de
controlar y asegurar continuamente de manera equilibrada varias características o requisitos
del proyecto: – Satisfacción del cliente – Alcance – Tiempo – Coste – Riesgos
– Calidad 45
Gestión de Proyectos: Normas y Estándares • Existen diversas normas y estándares para la
realización de la Gestión de Proyectos. A continuación citados algunas:
– ISO 21500 “Directrices para la dirección y gestión de proyectos”: proporciona una guía
para la gestión de proyectos y puede ser utilizada por cualquier tipo de organización,
incluidas las organizaciones públicas, privadas u organizaciones comunitarias, y para
cualquier tipo de proyecto, independientemente de la complejidad, tamaño o duración.–
ISO 10006: Es una norma sobre sistemas de gestión de calidad en proyectos. Su objetivo es
brindar directrices adicionales, no requisitos, que clarifican a las empresas aspectos
relevantes de la gestión técnica. Hace énfasis en el sistema de gestión a través del cual se
puede gestionar la calidad en los proyectos y es una norma muy útil para empresas que
quieren adoptar por un ISO 9001 y alcanzar una certificación.
– ISO 31000: Es una norma para la gestión de riesgos en proyectos. Incluye directrices para
establecer métodos de comunicación y consultas, así como consejos para identificar,
analizar, evaluar y tratar los riesgos .
– PMBOK® Guide (Project Management Body of Knowledge): es considerado por el PMI
(Project Management Institute) como una referencia fundamental de “buenas prácticas”
en el ámbito de la dirección y gestión de proyectos. Es empleado en la práctica de la dirección
de proyectos, para la certificación de competencias en esta área y para los programas
de desarrollo profesional.
Diferencias entre Proyecto y Proceso • Recordemos que un proyecto es un esfuerzo que debe
entregarse en un plazo determinado y tiene como objetivo entregar un producto y/o servicio.
• Por otro lado, un proceso es un procedimiento realizado en una secuencia de etapas que
producirán un resultado recurrente. • En la siguiente tabla mostramos una comparación
entre estos dos términos:
Criterio Proyecto Proceso
Definicion------------------- Conjunto de actividades ----------- Conjunto de actividades que
-----------------------------para alcanzar un objetivo tiene como objetivo alcanzar
---------------------------determinado. -------------- ----- un resultado recurrente. -------
Duración :-------------------------Tiene duración ----------- Suele ser repetitivo y ----
--------------------------------------- predeterminada con inicio --- realizado regularmente----------
--------------------------------- y fin bien definidos.
Método • El método es un procedimiento ordenado, repetible y autocorregible que garantiza
la realización de una actividad. • Modo ordenado y sistemático de proceder para llegar a un
resultado o fin determinado. 51
Técnica • La técnica se refiere a los pasos prácticos y recursos que se emplean en la
implementación de un método. Es un conjunto de acciones secuenciadas que se enmarcan en
un método. • Las técnicas son las diversas formas de emplear un método. Por ejemplo: El
método de estudio tiene diversas técnicas; una para concentrarse, otra para leer más rápido,
otra para resumir, etc.
Metodología • La metodología es una disciplina que estudia el conjunto de procedimiento
racionales utilizados para alcanzar un objetivo o tarea que requieran habilidades,
conocimientos o cuidados específicos. • Las metodologías son un conjunto de métodos y
técnicas que se utilizan en una determinada actividad con el fin de formalizarla y optimizarla.
Metodología: Componentes • Fase: Se especifica las diferentes
actividades que hay que realizar por cada parte o etapa de la metodología. • Métodos: Se
identifica el modo en el que se realizará las diversas actividades. Generalmente se suele
descomponer en pequeñas tareas. • Técnicas y herramientas: Se especifica cómo se debe
realizar cada tarea y qué herramientas emplear. Existen diferentes tipos de técnicas: – De
recopilación de datos: Entrevistas, formularios, entre otros. – Técnicas gráficas: Diagramas,
organigrama, diagramas de matrices, entre otros. – Técnicas de modelado: Desarrollos
estructurados, orientados a objetos, etc. • Documentos: Se especifica qué documentación
se va a entregar durante el desarrollo de cada una de las fases. Dicha documentación se debe
de realizar de una manera exhaustiva y completa usando todos los valores de entrada y salida
que se van generando. Esto servirá para recoger los resultados y tomar decisiones de las
diferentes situaciones planteadas. • Control y evaluación: Consiste en comprobar y aceptar o
denegar todos los resultados que se vayan obteniendo y poder replantear, si es necesario, una
nueva planificación de las tareas asignadas, la meta será lograr el objetivo. El control y la
evaluación también se debe de realizar a lo largo de todo el ciclo de vida. Se suele usarse
técnicas, como PERT o los Diagramas de Gannt.
Metodología: Características • Aunque no todas las metodologías tienen las mismas
características, estas comparten las siguientes características: – Debe ser impersonal. –
El tiempo de aprendizaje debe que ser reducido. – Uso de un estándar para la
documentación. – Que cubra todo o la mayor parte del objetivo o tarea. – Que simplifique
el trabajo y que aumente la productividad.
Metodología: Ventajas en el desarrollo de proyectos • Facilitan la planificación. • Facilitan el
control y el seguimiento adecuado del proyecto. • Mejoran el uso de los recursos. • Permiten
evaluar de forma más fácil los resultados obtenidos y valorar los objetivos conseguidos. •
Mejoran la comunicación entre el cliente y las personas que van a llevar a cabo el proyecto. •
Garantizan que el producto final tendrá la calidad esperada. • Se acotan plazos para el
desarrollo del producto. • Permite definir el ciclo de vida adecuado al proyecto. 58
Metodología: Ventajas en el desarrollo de proyectos • Algunos proyectos, especialmente los
más complejos, como construir un edificio, requieren de una metodología para el desarrollo
sistemático del proyecto. • Por ejemplo, cuando aplicamos metodología a la ingeniería del
software, optimizamos el proceso asi como el propio producto software: – Proporciona
métodos que guían al ingeniero de software en la gestión, el desarrollo y el control del
proyecto. – Define qué hacer, cuándo y cómo hacerlo durante todo el desarrollo y
mantenimiento de un proyecto.
Ejemplo de metodología: Modelo PDCA • El modelo PDCA fue desarrollado por Walter
Shewhart en los laboratorios Bell en 1930, pero fue popularizado por W. Edwards Deming y se
suele llamarse “Circulo de Deming” o también “Espiral de Mejora Continua 61
Ejemplo de metodología: Lean • La metodología Lean tiene su origen en Japón, en el seno de
la cadena de producción de Toyota, el gigante constructor de automóviles. Los principios de
esta filosofía se fundamentan en la eliminación de todo gasto innecesario, para centrarse en
maximizar la creación de valor. • Para ello, hay que deshacerse de las denominadas mura,
muri y muda, es decir, la variación, la sobrecarga y el desperdicio. Con esto, la metodología
Lean pretende mantener una carga de trabajo constante y evitar las anomalías que
desestabilicen las rutinas de producción. 62
Diferencias entre proceso, ciclo de vida y metodología • El proceso únicamente nos da un
conjunto de actividades que tenemos que realizar para conseguir un fin. • El ciclo de vida va un
poco más allá, y además de identificar estas actividades o fases, define el orden en que deben
ejecutarse y los resultados intermedios y finales. • Las metodologías nos dicen, además de lo
anterior, el cómo llevar a cabo el proyecto. Para ello, nos proporciona un conjunto de métodos,
herramientas y técnicas que facilitan la tarea de las personas involucradas en el desarrollo del
proyecto y aumentan su productividad. 63 Diferencias entre proceso, ciclo de vida y
metodología Metodología >>Ciclo de vida >>Proceso 64
Ingeniería • La ingeniería es una disciplina que consisten en la aplicación de conocimientos y
técnicas científicas/tecnológicas para la solución de problemas y retos que enfrenta la
humanidad, en sus muy distintas áreas. • A diferencia de las ciencias puras cuyo objetivo es el
conocimiento por el conocimiento en sí mismo, la ingeniería busca dar solución a problemas
reales. • “La Ingeniería es la profesión en la que el conocimiento de las ciencias
matemáticas, ciencias naturales, experiencia y la práctica, se aplica con buen juicio a fin de
desarrollar las formas en que se pueden utilizar de manera económica, los materiales y las
fuerzas de la naturaleza en beneficio de la humanidad“. Ingeniería • La ingeniería emplea la
ciencia como un medio, pero está íntimamente ligada con la experimentación, y la gestión. Su
objetivo final es lograr resultados optimizando los recursos.
Ingeniería: Funciones • Investigación: Búsqueda de nuevos conocimientos y técnicas, de
estudio y en el campo laboral. • Desarrollo: Empleo de nuevos conocimientos y técnicas. •
Diseño: Especificar las soluciones. • Producción: Transformación de materias primas en
productos. • Construcción: Llevar a la realidad la solución de diseño. • Operación: Proceso de
manutención y administración para optimizar productividad. • Ventas: Ofrecer servicios,
herramientas y productos. • Administración: Participar en la resolución de problemas.
Planificar, organizar, programar, dirigir y controlar la construcción y montaje de todo tipo de
obras de ingeniería.
Ingeniería: Características • Es sistémico. • Se basa en el empleo de la ciencia. – Emplea
conocimientos verificables. – Emplea modelos matemáticos para predecir. • Sus resultados
son “repetibles”. • Se basa en el uso de métodos, técnicas, metodologías, etc.
Software • La IEEE define el software como: • “El conjunto de programas de cómputo,
procedimientos, reglas, documentación y datos asociados, que forman parte de las operaciones
de un sistema de computación”. Extraído del estándar 729 del IEEE • El
software incluye a los productos que se generan durante el desarrollo del mismo:
Software Programas Datos Documentación • El software se elabora
mediante un entorno de programación IDE (Integrated Development Environment) o
framework. • Es software: – Si evoluciona a lo largo de la vida. – Si hay
que controlar esa evolución. – Si tiene que ser mantenido. – Si lleva gestión de versiones.
Software: Analogía • Hagamos la siguiente analogía: imaginemos que queremos construir una
silla. – Para su construcción, podemos definir previamente las medidas, el color, el
material, la forma, entre otros. – Podemos dibujar un esquema que será fiel a la realidad,
puedo construirla, tocarla, probarla sentarme encima, intentando romperla, entre otros.
• Si hacemos una comparación entre la construcción de una silla y la elaboración de un software
tenemos: – No podemos ver ni tocar lo que se está desarrollando. – Tampoco lo puede ver
ni tocar el usuario final, por lo que es difícil saber, si es lo que requiere. – Posiblemente
al inicio de un proyecto de desarrollo de software, el cliente tampoco tiene claro lo que
requiere.
Software: Características • El software tiene las siguientes características: – Es un elemento
lógico y no físico, por lo que no se puede ver ni tocar. – Es inmaterial e invisible. – Es
desarrollado, no fabricado. – No tenemos una cadena de producción donde se van
incorporando piezas y los operarios se turnan. Esto quiere decir que no hay “piezas de
repuesto”. – Se deteriora, no se rompe– Se va degradando poco a poco. – Se “construye”
a medida. – El software está “vivo”, es decir, siempre está cambiando mientras se está
utilizando. – No es fácil comprender ni predecir el comportamiento que va a tener. –
Es complejo, los sistemas actuales están formados por miles de funciones con interfaces
complejas entre ellas. – Finalmente, el cliente no lo puede evaluar hasta que no haya sido
desarrollado.
Proceso de desarrollo de software • El proceso de desarrollo de software se compone de una
serie de fases. Ejemplo: proceso tradicional Planeamiento Análisis Diseño
Programación Pruebas • Cada fase se puede considerar un subproceso, puesto que es un
conjunto de actividades para conseguir un fin que sería el producto resultado de dicha fase. •
Por tanto, tenemos el producto final, que es el software, que resulta de la ejecución de todo el
proceso y los productos intermedios que son los resultados o salidas de cada una de las fases.
• Para entender el proceso de desarrollo del software, vamos hacer una analogía con la
construcción de una casa • Adicionalmente, cuando la casa ya esta construida (el software ya
esta elaborado), se pasa a las siguientes fases: Uso y mantenimiento de una
casa Desarrollo de un software Usar la casa
Entrega/Instalación/usarlo Mantenimiento de la casa
Mantenimiento •
En la fase de mantenimiento podemos encontrar actividades de tipo: – Correctivo
(solucionar problemas) – Preventivo (prevenir problemas) – Adaptativo (adaptarse a
nuevas situaciones del entorno) – Perfectivo (optimizarlo) • Existe una serie de modelos y
estándares para el desarrollo de software. Ejemplo:
– CMMI (Capability Maturity Model Integration): es un modelo para la mejora y evaluación
de procesos para el desarrollo, mantenimiento y operación de sistemas de software.
– ITIL (Information Technology Infrastructure Library)
Ciclo de vida del software • ¿Cómo definimos el esquema a seguir en el desarrollo y
mantenimiento del software?. Pues con lo que denominamos “ciclo de vida del software” que
se define como: • El ciclo de vida del software es el conjunto de fases por las que pasa el
software que se está desarrollando, desde que la idea inicial nace hasta que el software es
retirado o reemplazado.• El ciclo de vida del software determina el orden de las fases del
proceso software. También define las entradas y salidas de cada una de estas fases. En un
principio, la salida de una fase será la entrada a la siguiente. Y por último, establece los criterios
de transición para pasar de una fase a otra. El ciclo de vida del software lo podemos semejar a
la evolución de un ser humano desde que nace hasta que fallece. • Nacimiento: Nace el
proyecto a partir de una idea y/o necesidad identificada que se busca satisfacer. • Crecimiento:
Comienza a crecer y en los primeros años se asientan las bases principales de qué y cómo será.
También se va corrigiendo errores. • Madurez: Una vez ha terminado su formación y sale de
casa de sus padres, comienza su vida laboral. Durante toda esta etapa (equivalente al uso)
tendrá que hacerse controles e ir al médico cuando lo necesite para prevenir y recuperar la
salud (control de calidad, corregir fallos, entre otros). • Declive: Cuando empieza el declive, la
vejez, tendrá que ir más al médico (más actividades de mantenimiento) e incluso alguna
operación (reingeniería). • Muerte: hasta que finalmente la persona muere (el software se
retira y deja de usarse). 84
Metodologías para el proceso de desarrollo de software • Las metodologías para el proceso de
desarrollo del software son el conjunto de métodos y técnicas que utilizamos para formalizar
y optimizar tanto el proceso como el producto software. • Las metodologías definen: qué hacer,
cómo hacerlo y cuándo hacerlo durante todo el desarrollo y mantenimiento de un software.
• Las metodologías son el marco (framework) del desarrollo del software, no es su función dar
detalles específicos de las actividades involucradas en su desarrollo. Son en resumen: –
Modelos genéricos y no descripciones definitivas de los procesos de software. – Son
abstracciones del proceso que se utilizan para explicar los diferentes enfoques del desarrollo
de software • Las metodologías proporcionan un marco o estrategia global para enfrentarnos
con el proyecto y esto implica tener varios aspectos en cuenta: – Las fases por las que pasa
nuestro proyecto. – El orden en que se llevan a cabo. – Las tareas a realizar en cada fase.
• Las metodologías: – Definen cuáles son los productos intermedios, es decir entradas y
salidas de cada fase, así como nuestro producto final. – Proporcionan procedimientos y
herramientas para apoyarnos en la realización de cada tarea. – Identifican criterios de
evaluación, tanto del proceso como del producto, para saber si hemos logrado nuestros
objetivos. -La metodología a emplear en el proceso de desarrollo de software depende de
varios factores como: – El tamaño de la empresa. – Experiencia profesional y la capacidad
de innovar. – Las herramientas técnicas de las que se dispone. – El tipo de proyecto a
desarrollar, entre otros. • Estos factores se tienen que tener en cuenta, puesto que una
metodología adecuada para el desarrollo de un proyecto, no tiene por qué serlo para otro, por
muy similar que sea.
Clasificación de metodologías para el proceso de desarrollo de software • Según su
naturaleza: – Metodologías orientadas al flujo de información. – Metodologías orientadas
a objetos. – Metodologías híbridas. • Según el grado de formalismo: – Metodologías
Tradicionales. – Metodologías Ágiles.
Metodologías para el proceso de desarrollo de software • La mejor metodología para un
proceso de desarrollo de software es la que mejor se adecúe a este, dependiendo de sus
características y necesidades. • Es importante tener en cuenta que: las metodologías
habitualmente se adaptan, no se adoptan con el fin de que sean realmente eficaces para
nuestro proyecto. 91 Fin !!!

INGENIERIA DE SOFTWARE
Antecedentes de la Ingeniería del So�ware

• La demanda por el so�ware comenzó a crecer debido a la expansión del uso de computadoras
electrónicas en diversas áreas. • Cuando el so�ware empezó a desarrollarse, los primeros
programas eran pequeños y esencialmente artesanales. • Los programadores no contaban con
metodologías y herramientas que le ayudarán en el desarrollo del so�ware ni tampoco en la
ges�ón o control del proyecto. • Esto generó una produc�vidad muy baja y una mala calidad
en los so�wares que se desarrollaban. • Conceptos: – Falla: Defecto dentro de un componente
de HW o SW. – Error: Manifestación de una falla. – Avería: No realización de alguna acción
ante un error. • Gran can�dad de proyectos de so�ware tuvieron diversos problemas, causando
sobrecostos y accidentes que involucraban daños a propiedades, y en el peor de los casos, la
muerte de personas. • Ejemplos de errores de so�ware: – Muertes por el Therac-25 (1985-
1987): El Therac-25 fue una máquina de radioterapia que causó la muerte de varios
pacientes en diversos hospitales de Estados Unidos y Canadá, debido a las radiaciones
aplicadas sin control, las cuales fueron atribuidas a la falta de control de calidad del
so�ware médico. Antecedentes de la Ingeniería del So�ware – Sobrecosto, retraso
y cancelación del sistema del Bank of America (1988): El banco invir�ó inicialmente 23
millones de dólares en un sistema computarizado llamado MasterNet (contabilidad y
reportes de fideicomisos). Para que el sistema funcionará, se tuvo que inver�r 60 millones
de dólares más. Luego fue cancelado. – Desarrollo del sistema opera�vo OS/360: En la década
de 1960, IBM decidió diseñar un único sistema opera�vo para su familia de Mainframes
System/360. Lamentablemente los problemas encontrados en el desarrollo del OS/360
fueron muchos y están descritos por Fred Brooks en The Mythical Man-Month, un libro
considerado un clásico en la Ingeniería de So�ware. • Debido a las diferencias de
rendimiento en la gama de hardware y los retrasos en el desarrollo del so�ware, se
introdujo una familia completa de sistemas opera�vos en lugar de un solo OS/360.– Error
en el sistema de frenos Toyota: En el año 2010, la empresa Toyota re�ró más de 400,000 de
sus vehículos híbridos por un problema so�ware, que provocaba un retraso en el sistema
an�-bloqueo de frenos. Se es�mó que el error costó a Toyota 3 billones de dólares. •
Exis�eron múl�ples causas que originaron la crisis del so�ware: – El desarrollo de un so�ware
era un proceso rela�vamente nuevo, del cual no se tenía personal lo suficientemente
capacitado. • Muchos programadores de la época eran autodidactas. – En muchos casos,
los propios clientes, no tenía muy claro que es lo que requerían y por lo tanto era complicado
hacer un diseño detallado de requerimientos. Antecedentes de la Ingeniería del
So�ware Antecedentes de la Ingeniería del So�ware • Debido a esta situación, la
OTAN (Organización del Tratado del Atlán�co Norte) realizó una conferencia en el año 1968
sobre la “Crisis del So�ware”. • Se propuso crear una nueva disciplina llamada “Ingeniería de
so�ware”, en la cual se generaría modelos, procedimientos, técnicas y herramientas para el
desarrollo de so�ware. – Ingeniería significa adicionar las matemá�cas y ciencias a una
determinada área. Ejemplo: Ingeniería Gastronómica

La Ingeniería

Definición de la Ingeniería de So�ware

• La Ingeniería del So�ware �ene como obje�vo mejorar el proceso de desarrollo de so�ware.
– La palabra Ingeniería proporciona: métodos, herramientas, procedimientos y técnicas con el
fin de mejorar la calidad del so�ware y reducir el costo de los proyectos. • Ayuda al Ingeniero
de So�ware a desarrollar y mantener sistemas informá�cos asegurando su calidad, su
fiabilidad y su produc�vidad, entre otras caracterís�cas. Definición de la Ingeniería de So�ware
• Las ingenierías tradicionales (mecánica, eléctrica, etc) imitan, aumentan, ayudan, facilitan o
sus�tuyen capacidades �sicas humanas (capacidades procedimentales). • La Ingeniería del
So�ware ayuda a construir elementos que imitan, aumentan, ayudan, facilitan o sus�tuyen
capacidades intelectuales humanas (capacidades cogni�vas). – Por ejemplo: la capacidad de
memoria, la resolución de problemas, la rapidez decisiones o la velocidad de cálculo,entre otras
muchas. • Según la IEEE, la Ingeniería de So�ware se define como: “La aplicación de un
enfoque sistemá�co, disciplinado y cuan�ficable, al desarrollo, operación y evolución del
so�ware”. • El so�ware debe ser confiable, eficiente y que cumpla con las necesidades del
cliente (eficacia). • La palabra sistemá�co es clave ya que implica la u�lización de métodos y
procedimientos. • Al enfoque sistemá�co que se usa en la Ingeniería de So�ware se le conoce
como “proceso de so�ware”. • Un proceso de so�ware los podemos definir de las siguientes
maneras: – Es una secuencia de ac�vidades que conducen a la elaboración de un
“producto” de so�ware. – Conjunto de ac�vidades necesarias para transformar los
requisitos del usuario en un sistema de so�ware. • Otra definición de Ingeniería de So�ware es:
“Es una disciplina de ingeniería que se desarrolla en todos los aspectos de la producción de
so�ware, desde la especificación del sistema hasta el mantenimiento del mismo”. – Hace
énfasis en la “disciplina de la ingeniería”, la cual se vale de teorías, métodos y herramientas
para el desarrollo de una determinada área, incluyendo limitaciones como restricciones
organizacionales y financieras. – Hace énfasis en todos los aspectos de la producción del
so�ware, no solo en los procesos técnicos del desarrollo de so�ware, sino que incluye la
administración, desarrollo de herramientas, métodos y teorías para apoyar la producción de
so�ware. Definición de la Ingeniería de So�ware • La Ingeniería de So�ware busca desarrollar
“productos” de calidad, enmarcados en el �empo y presupuesto establecido, lo cual implica
muchas veces dejar de ser perfeccionistas y ser más prác�cos. • Los Ingenieros de So�ware
deben adoptar un enfoque sistemá�co y organizado para “producir” so�ware de calidad de
forma efec�va. • La Ingeniería de So�ware busca métodos más adecuados en función de ciertos
requerimientos para crear un entorno de desarrollo más crea�vo y menos formal. – Un
ejemplo sería el desarrollo de sistemas basados en la Web, que requieren una mezcla de
habilidades de so�ware y diseño gráfico.

El término “Ingeniería de So�ware”

• El término “Ingeniería de So�ware” fue creado por Margaret Heafield Hamilton, cien�fica
informá�ca estadounidense e ingeniera de sistemas, quien fue directora de la División de
Ingeniería de So�ware del Laboratorio de Instrumentación del MIT y que lideró el proyecto
de desarrolló del so�ware de vuelo para el programa espacial Apollo.

Ciencias de la Computación

• Las Ciencias de la Computación se ocupan del estudio de sistemas de cómputo incluyendo


procesos algorítmicos y principios que involucran el diseño de so�ware y hardware. • Las
Ciencias de la Computación se interesan por las teorías y los métodos que subyacen en las
computadoras y los sistemas de so�ware. • Los profesionales de esta área: – Se encargan del
diseño de algoritmos, lenguajes de programación, herramientas (compiladores, IDE, etc) y
sistemas de so�ware. – Diseñan y construyen so�ware, creando soluciones eficientes a
problemas del mundo real en campos como la medicina, industria, biología, negocios, etc.

La Ingeniería de So�ware

• La Ingeniería de So�ware integra las matemá�cas, las Ciencias de la Computación y las


prác�cas con origen en la ingeniería. La Ingeniería de So�ware • La Ingeniería de So�ware
integra : – Matemá�cas discretas: Teoría de la información, Lógica matemá�ca, Teoría de
conjuntos, Combinatoria, Teoría de grafos, Álgebra abstracta, Topología, Discre�zación y
otras. – Ciencias de la Computación: Algoritmos (como hacerlos, calcular cuanto �empo
se demora su ejecución, cuanto espacio en memoria ocupa, etc). También se estudia la
corrección de un programa, esto es, pruebas lógicas en donde se demuestra
(matemá�camente) que el programa cumple con lo pedido (eficacia); y finalmente la
programación en si. Modelar Simular Predecir

¿Es la Ingeniería de So�ware una Ingeniería?


• Si nos acogemos a las matemá�cas discretas y las ciencias de la computación parece que si,
pero estas dos cosas sólo se pueden aplicar a programas sencillos y no a programas de gran
envergadura que son los que se desarrollan en Ingeniería de So�ware. Es por ello que muchos
de los proyectos de so�ware se exceden en �empo y recursos. Esto es por que no hay ningún
modelo matemá�co que permita predecir esto con un margen de error pequeño. • La falta
de modelos matemá�cos que tengan capacidad predic�va y que no solamente se basen en
metodologías y buenas prác�cas, más relacionados a la administración que en las ciencias de
la computación, hacen que muchas personas piensen que el desarrollo de so�ware es más una
artesanía o un arte que una ingeniería• Se debe entender el término Ingeniería de So�ware
como una meta que debemos alcanzar. • Una verdadera Ingeniería de So�ware debe basarse
en las ciencias de la computación y tener modelos matemá�cos que nos permitan predecir la
eficacia y la efec�vidad de un desarrollo de so�ware.

Importancia de la Ingeniería de So�ware

• La Ingeniería de So�ware es importante porque su uso se ha masificado, cada vez más, las
personas y la sociedad dependen de sistemas de so�ware avanzados como Internet,
protocolos de comunicación, virtualización, redes sociales, entre otros. • Es por ello que se
requiere producir rápida y económicamente, so�ware de calidad (confiable • Actualmente
resulta más seguro y confiable en el desarrollo de so�ware, emplear métodos y técnicas de
ingeniería, las cuales nos aseguran procesos de análisis, diseño, elaboración, pruebas y
documentación, similares al método cien�fico (enfoque sistémico).

Ac�vidades del Ingeniero de So�ware

• En el proceso de desarrollo so�ware, el ingeniero de so�ware debe realizar tareas de: –


Ges�ón – Control – Operación. • Analogía: – Ing. de So�ware y programador –
Arquitecto, Ing. Civil y albañil. • Las tareas de ges�ón engloban es�mación y planificación,
seguimiento de los proyectos, dirección técnica, ges�ón de recursos, administración de
proyectos y coordinación del equipo de trabajo, entre otras. • Las tareas de control aseguran la
buena marcha del proyecto comprobando mediante métricas que las es�maciones,
planificación y calidad se cumplen. • Las tareas de operación engloba la capacitación a usuarios,
la entrega del producto, la puesta en marcha y las ac�vidades de soporte. • Un sistema en
operación es un sistema en uso, por lo que habrá que realizar todas las tareas necesarias para
asegurar la correcta u�lización del sistema so�ware que se haya implementado.

Diferencias entre Ingeniería de So�ware e ingeniería de Sistemas

• La Ingeniería de So�ware se ocupa del diseño e implementación de so�ware complejo de una


manera confiable y eficiente, aplicando los principios y prác�cas de la ingeniería. • La Ingeniería
de Sistemas se interesa por todos los aspectos del desarrollo y la evolución de complejos
sistemas computacionales, donde el so�ware �ene primordial importancia.
Diferencias entre Ciencias de la Computación e Ingeniería de So�ware

• Los Ingenieros de So�ware son aquellos que: – Combinan la experiencia en ciencias de la


computación, ingeniería y matemá�cas para diseñar, definir y organizar diversos aspectos de
un producto so�ware complejo. – Están capacitados en todos los aspectos relacionados al
ciclo de vida del so�ware, incluyendo los temas de costos. La é�ca en la Ingeniería de So�ware
• La Ingeniería de So�ware se realiza dentro de un entorno social y legal que limita la libertad
de la gente que trabaja en dicha área. • Todo Ingeniero de So�ware debe entender que su
labor implica responsabilidades que salen del contexto meramente técnico. Al ser el so�ware
un elemento de uso masivo, cualquier comportamiento no é�co o amoral puede tener
repercusiones muy grandes, que escapen inclusive al contexto de la propia persona. 38

La é�ca en la Ingeniería de So�ware

• Existen áreas donde los límites de la libertad en el desarrollo de so�ware no están acotados
por la legislación, sino por la denominada responsabilidad profesional:
Criterio Definición
Confidencialidad Se debe respetar la confidencialidad de empleadores o clientes sin
------------------------------importar si se firmó o no un acuerdo formal sobre la misma.
Competencia No se debe aceptar de manera intencional trabajo que esté fuera de
------------------------------su competencia.
Derechos de Se debe conocer la legislación local que rige el uso de la propiedad
propiedad intelectual, como las patentes y el copyright.
intelectual Se debe garan�zar que se respeta la propiedad intelectual de
----------------------------- empleadores y clientes.
Mal uso de Empleo é�co de las computadoras. El mal uso de computadoras se
computadoras puede referir desde distraerse con juegos hasta diseminación de
-----------------------------virus, publicación de información privada de personas, entre otros.
• Existes organizaciones e ins�tuciones profesionales que establecen estándares é�cos como:
– ACM (Associa�on for Compu�ng Machinery) – IEEE (Ins�tute of Electrical and Electronics
Engineers) – Bri�sh Computer Society. • Estos publican códigos de conducta profesional o
códigos de é�ca y sus miembros se comprometen a seguir dicho código cuando se afilian a las
mismas. Fin !!! Adicional • Ing. Eléctrica – Ing. Electrónica – Ing. Telecomunicaciones
– Ing. de Redes de Datos - Ing. Ciberseguridad. – Matemá�cas y Ciencias (Física, Química,
etc) • Ing. de Sistemas – Ing. de So�ware – Matemá�cas y Ciencias de la Computación

MODELOS EN EL DESARROLLO DE SOFTWARE 1


Proceso de desarrollo de software
• El proceso de desarrollo de software se refiere a un conjunto de actividades relacionadas a la
análisis, elaboración, pruebas, despliegue, actualización, modificación, integración,
mantenimiento de un “producto” de software. • Entre las actividades fundamentales para la
elaboración de un buen software tenemos: – Especificaciones del software: tienen que
definirse tanto las funcionalidades del software como las restricciones de operación. • Se toma
nota de los requerimientos del cliente y se documenta como especificaciones del software. –
Diseño e implementación del software: debe desarrollarse el software para cumplir las
especificaciones. – Validación del software: hay que validar el software para asegurarse de que
cumple con requerimientos del cliente. – Evolución del software: tiene que evolucionar para
satisfacer las requerimientos cambiantes del cliente. 3 Proceso de desarrollo de software
• En los procesos de desarrollo de software se debe tener bien claro las siguientes
descripciones: – Productos – Roles – Precondiciones y postcondiciones 4 Proceso de
desarrollo de software • Productos: son los resultados de una actividad del proceso. – Ejemplo:
el resultado de la actividad del diseño del software es un modelo denominado “arquitectura de
software” o “arquitectura lógica”. Proceso de desarrollo de software • Roles: define las
responsabilidades de los puestos que las personas que tiene en el proceso. – Ejemplos: Jefe o
líder del proyecto, arquitecto de software (diseña), administrador de base de datos (DBA),
analista programador, diseñador gráfico, entre otros • Precondiciones y postcondiciones: son
declaraciones válidas antes y después de que se realice una actividad del proceso o se cree un
producto. – Ejemplo: antes de iniciar el diseño de la arquitectura del software, una precondición
es que el cliente apruebe todos las especificaciones; después de terminar esta actividad, una
postcondición sería la revisión de los modelos UML que describen la arquitectura. UML (Unified
Modeling Language) es el lenguaje de modelado de sistemas de software. Es un lenguaje gráfico
para visualizar, especificar, construir y documentar un sistema de software. 7 Proceso de
desarrollo de software • Los procesos de desarrollo software son complejos y, como todos los
procesos intelectuales y creativos, se apoyan en personas con capacidad de juzgar y tomar
decisiones. 8
Tipos de procesos de desarrollo de software
• No hay un proceso ideal para el desarrollo de software. Muchas empresas han diseñado sus
propios procesos de desarrollo de software, los cuales los podemos dividir en dos tipos: –
Procesos tradicionales o dirigidos por un plan. – Procesos ágiles. 9 • Procesos tradicionales
o dirigidos por un plan: – Nació en el mundo de los Mainframes. – Desarrollo de grandes
sistemas: definir lo que se requiere, construirlo y usarlo. – Requieren mucho tiempo (de 1 a 2
años), debido a que son bien estructurados, formales y documentados. – Se genera gran
documentación que apoya procesos de auditorías. – Tiempos grandes para la verificación. •
Procesos ágiles: – Nació en el mundo de las PC, LAN, Internet, Cloud Computing, etc. – Se
requiere la solución en “corto tiempo” debido a que: • La tecnología cambia rápidamente. • La
competencia es muy agresiva. – Se trabaja con prototipos. – Documentación al final. – Tiempos
rápidos para verificación. • Los procesos tradicionales o dirigidos por un plan son aquellos
donde todas las actividades del proceso se planean por anticipado y el avance se mide en
función de dicho plan. – Ejemplo: para los sistemas críticos, se requiere de un proceso de
desarrollo muy estructurado. • Los procesos ágiles son aquellos donde la planeación es
incremental y es más fácil modificar el proceso para reflejar los requerimientos cambiantes del
cliente. – Ejemplo: para los sistemas empresariales con requerimientos cambiantes, es más
efectivo un proceso menos formal y flexible.• Cada proceso (tradicional o ágil) es adecuado para
diferentes tipos de software. • Para ciertas aplicaciones podemos trabajar con una combinación
de proceso tradicional y proceso ágil. Ejemplo: Los sistemas operativos – El kernel lo
desarrollamos con proceso tradicional. – El shell lo desarrollamos con proceso ágil. 14 Tipos
de procesos de desarrollo de software • Los procesos de software pueden mejorarse con la
estandarización de los procesos, lo que permite reducir la diversidad en los procesos de
software en una empresa, mejorando la comunicación, reduciendo los tiempos de capacitación
y haciendo que el soporte de los procesos automatizados sea más económico. 15
Ciclo de vida de desarrollo del software • El SDLC (Software Development Life Cycle) es un
proceso utilizado por la industria del software para diseñar, desarrollar, probar, mantener y
modificar software. • El SDLC tiene como objetivo producir software de calidad que cumpla
y/o supere las expectativas del cliente, se desarrolle dentro de los tiempos y costos estimados.
Ciclo de vida de desarrollo del software • El ciclo de vida define una metodología para mejorar
la calidad del software y el proceso general de desarrollo. – SDLC es un marco que define las
tareas realizadas en cada paso del proceso de desarrollo de software. – ISO/IEC 12207 es un
estándar internacional para los procesos del ciclo de vida del software. Pretende ser el estándar
que define todas las tareas requeridas para desarrollar y mantener software. Etapa 1 • Etapa
1: Planificación y análisis de requisitos • El análisis de requisitos es la etapa más importante en
SDLC. Lo realizan los miembros senior del equipo de desarrollo, con aportes del cliente, el
departamento de ventas, estudios de mercado y expertos en el dominio de la industria. • Esta
información se utiliza luego para planificar el enfoque básico del proyecto y para realizar un
estudio de factibilidad del software en las áreas económica, operativa y técnica. 19 Ciclo de
vida de desarrollo del software: Etapa 1 • La planificación de los requisitos de garantía de
calidad y la identificación de los riesgos potenciales asociados con el proyecto también se realiza
en la etapa de planificación. • El resultado del estudio de factibilidad técnica es definir los
diversos enfoques técnicos que se pueden seguir para implementar el proyecto exitosamente
con mínimos riesgos. Etapa 2 • Etapa 2: Definición de requisitos • En esta etapa se define
y documenta claramente los requisitos del software (especificaciones) y se debe obtenerse la
aprobación del cliente, la cual se realiza mediante un documento denominado SRS (Software
Requirement Specification) donde consta todos los especificaciones del software que se
diseñarán y desarrollarán durante el ciclo de vida del proyecto. : Etapa 3 • Etapa 3: Diseño
de la arquitectura • El SRS es la referencia para que los arquitectos de software propongan la
mejor arquitectura para el desarrollo del software. Según los requisitos especificados en SRS,
generalmente se propone y documenta más de un arquitectura de diseño para la arquitectura
del software, la cual se especifica en un documento denominado DDS (Design Document
Specification). Etapa 3 • El DDS es revisado por todas las partes interesadas importantes y,
en función de varios parámetros como la evaluación de riesgos, la solidez del software, la
modularidad del diseño, el presupuesto y las limitaciones de tiempo, se selecciona la mejor
arquitectura de diseño para el software. Etapa 3 • Una arquitectura de diseño define
claramente todos los módulos arquitectónicos del software junto con su comunicación y
representación del flujo de datos con los módulos externos y de terceros (si corresponde). • El
diseño interno de todos los módulos de la arquitectura propuesta debe estar claramente
definido con el más mínimo de los detalles en el DDS Etapa 4 • Etapa 4: Desarrollo • En esta
etapa comienza el desarrollo real y se “construye” el software. – El código de programación se
genera según el DDS en esta etapa. – Si el diseño se realiza de manera detallada y organizada,
la generación de código se puede lograrse sin muchos problemasEtapa 4 • Los desarrolladores
deben seguir las pautas de codificación definidas por la empresa y se utilizan herramientas de
programación como compiladores, intérpretes, depuradores, entre otros, para generar el
código. • Para la codificación se utilizan diferentes lenguajes de programación de alto nivel. •
El lenguaje de programación se elige en función al tipo de software que se está desarrollando.
Desarrollador = Programador Codificar = Programar Etapa 5 • Etapa 5: Prueba o verificación
• Esta etapa suele ser un subconjunto de todas las etapas, ya que en los actuales modelos SDLC,
las actividades de prueba están involucradas en todas las etapas de SDLC, sin embargo, esta
etapa se refiere a la única etapa de prueba del software donde los defectos se informan,
rastrean, reparan y vuelven a probar, hasta que el software alcance los estándares de calidad
definidos en el SRSEtapa 6 • Etapa 6: Despliegue y mantenimiento • Una vez que el software
se prueba (tester) y está listo para utilizarse, se instala (despliega) en algunos cuantos usuarios
para probarlo en el entorno empresarial real para determinar si cumplen con los
requerimientos del cliente Etapa 6 • Este tipo de prueba se denomina UAT (User Acceptance
Testing). • Luego, en función de los comentarios, el software se puede instalar en toda la
empresa tal cual o con las mejoras sugeridas.
Modelos SDLC • Hay varios modelos de ciclo de vida de desarrollo de software. Cada modelo
del proceso de desarrollo de software, sigue una serie de fases para garantizar el éxito en el
proceso de desarrollo de software. • El término “cascada” hace referencia a un procedimiento
secuencial que permite representar un proyecto en base a unas fases que se suceden entre sí.
(mgalvez@uni.edu.pe) Modelos SDLC • Los modelos SDLC más importantes son: – Cascada
simple – Cascada de refinamiento por pasos – Cascada iterativo – Cascada incremental –
Incremental-iterativo – Espiral de Boehm
Modelos SDLC: cascada simple • El desarrollo mediante el ciclo de vida cascada simple se
presenta como una sucesión de fases que producen productos intermedios. • Para que el
proyecto tenga éxito deben desarrollarse todas las fases y en el orden establecido, que es
secuencial. Análisis y definición de requisitos Diseño Desarrollo o Implementación
Pruebas o Verificación Despliegue y Mantenimiento • Fase de análisis y definición de
requisitos: planificación, análisis y especificación de los requisitos. • Fase de diseño: diseño y
especificación del sistema. • Fase de desarrollo o implementación: programación y pruebas
unitarias. • Fase de pruebas o verificación: integración del sistema, pruebas de sistema y de
integración. • Fase de despliegue y mantenimiento: entrega, mantenimiento y mejora. 33
Modelos SDLC: cascada simple • Una siguiente fase no debe comenzar hasta que termine la
fase previa. En la práctica, dichas fases se traslapan y se nutren mutuamente de información. –
Durante el diseño se identifican los problemas con los requerimientos. – En la fase de
implementación, se descubren problemas de diseño, y así sucesivamente. • El proceso de
desarrollo de software no es un simple modelo lineal, sino que implica retroalimentación de
una fase a otra. • En principio, el ciclo de vida en cascada sólo debe emplearse cuando se
tienen claros los requerimientos del cliente y sea poco probable el cambio radical durante el
desarrollo del sistema. • Este modelo presenta una gran limitación que lo hace poco empleado
hoy en día: no se permiten las iteraciones, por lo que los requisitos se tienen que “congelar” al
principio del proyecto.• Esto supone que hay que tener desde el inicio los requisitos totalmente
claros y completos sin permitir ninguna modificación durante el desarrollo, lo que es poco
práctico en la realidad actual. Para solventar este aspecto se tiene el modelo de cascada de
refinamiento por pasos.
Modelos SDLC: cascada de refinamiento por pasos • En este caso, los productos de las
diferentes etapas se van mejorando y refinando de tal manera que desde cada fase se puede
volver a cualquier fase anterior. Este ciclo de vida es muy utilizado y lo que hay que tener en
cuenta es que se debe llevar un control exhaustivo. • Si se permite iteraciones y
refinamientos continuamente se corre el riesgo que el proyecto no acabe nunca, por ello se
debe negociar qué cambios se van a aceptar y cuáles no. 38 Modelos SDLC: cascada
iterativo • El ciclo de vida iterativo es muy similar al de refinamiento por pasos pero,
normalmente, se iteran todas las fases cada vez, es decir, en cada ciclo o iteración se revisa y
mejora la calidad del producto.
Modelos SDLC: cascada incremental • En este ciclo de vida se analiza primero el problema y
se divide en subproblemas o subsistemas que se van desarrollando en cada iteración. A su vez,
al principio del proyecto se define la división de subsistemas y requisitos que se implementarán
en cada iteración. • En este ciclo de vida, el producto se desarrolla por partes que se van
integrando a medida que se completan los subsistemas. • En cada incremento hay que
finalizar con un producto que sea operativo y, a su vez, en cada incremento se agrega más
funcionalidades al sistema. • El desarrollo del ciclo de vida cascada incremental se basa en la
idea de diseñar una implementación inicial (prototipo), exponer ésta a la evaluación del cliente
y luego desarrollarla en sus diversas versiones hasta producir un sistema adecuado. • Este
concepto es usado en varias metodologías tradicionales y sobre todo en las metodologías ágiles.
Modelos SDLC: incremental-iterativo • Combina el ciclo de vida incremental y el iterativo. El
producto final se va desarrollando mediante incrementos y dentro de cada incremento, el ciclo
de vida es iterativo. • Esto tiene una gran potencia, pero hay que definir al inicio del proyecto
qué se va a desarrollar en cada incremento, por una parte y, por otra, controlar las iteraciones
dentro de cada incremento.
Modelos SDLC: espiral de Boehm • Es un ciclo de vida del proceso de software dirigido por el
“riesgo”, donde el proceso de software se representa como una espiral y no como una
secuencia de actividades con cierto retroceso de una actividad a otra.• Cada ciclo en la espiral
representa una fase del proceso de software. El ciclo más interno puede relacionarse con la
factibilidad del sistema, el siguiente ciclo con la definición de requerimientos, el ciclo que sigue
con el diseño del sistema, y así sucesivamente. • El modelo en espiral combina el evitar el
cambio con la tolerancia al cambio. Lo anterior supone que los cambios son resultado de riesgos
del proyecto e incluye actividades de gestión de riesgos explícitas para reducir tales riesgo •
Cada etapa se divide en cuatro cuadrantes: – Establecimiento de objetivos: Se definen objetivos
específicos, se identifican restricciones en el proceso y el producto, y se traza un plan de gestión
detallado. Se identifican los riesgos del proyecto y se planea estrategias alternativas, según sean
los riesgos. – Valoración y reducción del riesgo: En cada uno de los riesgos identificados del
proyecto, se realiza un análisis minucioso para definir acciones que minimicen el riesgo. –
Desarrollo y validación: Se selecciona un modelo de desarrollo para el sistema. – Planeación: El
proyecto se revisa y se toma una decisión sobre si hay que continuar con otro ciclo de la espiral.
Si se opta por continuar, se trazan los planes para la siguiente fase del proyecto • Dado que es
un ciclo de vida que consume muchos recursos, se usa únicamente en proyectos donde se
prevée riesgos importantes. Fin !!!

También podría gustarte