1. Manual del Primer Parcial
Camargo avilés Jessica Guadalupe 10421
En este primer parcial pudimos obtener como conocimiento la introducción sobre
ingeniería en software, en este manual podremos ejemplificar algunos de los
temas vistos del parcial.
¿Qué es la ingeniería en software?
La ingeniería de software es una disciplina formada por un conjunto de
métodos, herramientas y técnicas que se utilizan en el desarrollo de programas
informáticos, más conocidos como softwares. La ingeniería de software engloba
toda la gestión de un proyecto. Podríamos decir que la ingeniería del software es el
continente donde se aloja el contenido, que sería el software en sí.
¿En que ciclos consiste la ingeniería de software?
Dentro de la ingeniería de software entendemos que también se encuentra todo el
proceso de elaboración del software, que se denomina ciclo de vida. Está formado
por cuatro etapas:
Concepción. En esta primera fase se desarrolla el modelo de negocio. Es
decir, conocemos las necesidades que debe de tener un software y
empezamos a buscar las herramientas para cubrirlas.
Elaboración. Se detalla las características de la estructura del software.
Construcción. Tal y como su nombre indica en este paso empezamos a
elaborar de forma tangible todo aquello que, de momento, solo hemos
plasmado en forma de ideas.
Transición. Es el momento de la implementación y el desarrollo para los
clientes o usuarios. Deben tener tiempo para familiarizarse con el nuevo
software.
2. Una vez se realiza todo este ciclo, entramos en otra fase conocida como
mantenimiento. Es una de las etapas más importantes ya que se solucionan los
problemas o errores que puedan surgir durante su implementación y también su
posterior puesta en marcha. Además, se incorporan actualizaciones teniendo en
cuenta los requisitos del cliente con el objetivo de que puedan cumplir la mayor
cantidad de tareas.
Relacionado con la ingeniería de software también se encuentra la arquitectura de
sistemas. El objetivo de conocer el esqueleto del software es tener la capacidad
de señalar y conocer cuáles son los componentes que son necesarios para llevar
a cabo el desarrollo. Se trata de un tipo de software que se desarrolla para el uso
exclusivo de un cliente. Se diseña a su imagen y semejanza, por lo que es lógico
que solamente sirve para esa empresa, ya que se adapta a las necesidades y
características de la compañía que ha solicitado diseñarlo. A pesar de estas
diferencias clave todos los softwares presentan tres elementos que lo
caracterizan:
Programas y/o algoritmos.
Estructura de datos
Documentos.
¿Cuál es la importancia de la ingeniería de software?
La ingeniería de software tiene como objetivo, construir una solución de software
eficiente que satisfaga las necesidades requeridas por un cliente. Es difícil de
conseguir si no se tienen los procedimientos, las metodologías y las herramientas
adecuadas. El conseguir este objetivo implica una serie de conceptos, criterios y
habilidades las cuales deben ser tomadas en cuenta, ya que podrían no ser
adaptables debido a factores ambientales y de los mismos profesionales.
Parámetros deseables de un software
3. Compatibilidad: Es la facilidad por la cual el software puede ser
combinado con otro software.
Correctitud: Es el grado en que el software cumple con los
requerimientos específicos, y que dichos requerimientos cumplan con
las necesidades asociadas.
Corrección: Facilidad con la cual los errores latentes pueden ser
encontrados y corregidos en el software.
Eficiencia: Grado en el que el software utiliza los recursos de
hardware de manera efectiva. A menudo la eficiencia se sobre-
enfatiza a expensas de otras metas.
Flexibilidad: Facilidad con la que el software puede ser modificado
para cumplir con cambios requeridos.
Mantenible: Es una combinación de correcciones y flexibilidad.
Portabilidad: Es la facilidad con la cual un software puede ser
transformado de una plataforma de hardware o de software distinta.
Confiabilidad: Grado en el que el software funciona correctamente a
través del tiempo.
Reusabilidad: El software puede ser usado para propósitos distintos
del origen.
Robustez: Grado con que el software funciona correcta mente en
condiciones anormales.
Salvedad: Grado con el que el software funciona sin daños
accidentales.
Seguridad: El software se protege así mismo de accesos o
modificaciones no autorizadas.
Examinabilidad: Facilidad por la cual el software puede ser
examinado para su corrección, eficiencia, confiabilidad y robustez.
Comprensión: Facilidad con la cual los humanos pueden
comprender el software y su documentación.
Uso-amigable: Facilidad con que los humanos pueden usar u operar
e; software.
Validez: Es la facilidad por la cual el software puede demostrar ser
correcto.
Verificación: El software puede demostrar cumplir el estándar de
desarrollo de procedimientos.
¿Cuáles son las áreas de aplicación en ingeniería de
software?
Un ingeniero en sistemas, puede desempeñarse en diversos campos de aplicación
y en múltiples disciplinas, dependiendo de donde se especialice.
A continuación, podrás conocer los campos en los que un ingeniero en sistemas
puede desempeñarse:
4. Sistemas Distribuidos
Sistemas cuyos componentes hardware y software, que están en computadoras
conectadas en red, se comunican y coordinan sus acciones mediante el paso de
mensajes, para el logro de un objetivo. Se establece la comunicación mediante un
protocolo preestablecido
Características:
Concurrencia. - Esta característica de los sistemas distribuidos permite
que los recursos disponibles en la red puedan ser utilizados
simultáneamente por los usuarios y/o agentes que interactúan en la red.
Carencia de reloj global. - Las coordinaciones para la transferencia de
mensajes entre los diferentes componentes para la realización de una
tarea, no tienen una temporización general, está más bien distribuida en los
componentes.
Fallos independientes de los componentes. - Cada componente del
sistema pudiera fallar de manera independientemente, y los demás
continuar ejecutando sus acciones. Esto permite el logro de las tareas con
mayor efectividad, pues el sistema en su conjunto continúa trabajando.
Sistemas Embebidos
Los sistemas embebidos, también llamados sistemas empotrados, son sistemas
operativos creados con el fin de ser
controlados por microprocesadores o
microcontroladores, de igual manera a los
sistemas normales, pero llevados a un fin
completamente sistematizado y sin
llevar a tantas tareas, son, mejor
5. dicho, sistemas que cumplen con una tarea en específico.
Tal es el caso de un creador de sistemas embebidos de open source llamado
arduino, esté por lo regular, las tareas que se quieren llevar a cabo se crean en un
archivo. ino el cual esta creado con base en c++, esto con el fin de mencionar uno
de los sistemas de Hardware más populares en estos tiempos.
Características
Estos son algunas de las características que identifiquemos a los sistemas
embebidos:
Se pueden encontrar actuadores, sensores, y módulos de entrada y de
salida.
Incluyen dentro de las principales funciones de los mismos regular el
funcionamiento de los dispositivos.
Tienen como función de satisfacer necesidades específicas en los equipos
como los celulares, routers, reproductores multimedia, sistemas satelitales,
entre otros.
La mayoría de los componentes se encuentran incluidos en la placa base.
Están programados en lenguajes nativos.
Se destaca por cumplir las necesidades de eficacia, excelencia y rápida
respuesta.
Diseñado para realizar distintas funciones en un sistema de las
computadoras en tiempo real.
Cubre un amplio rango de necesidades específicas.
La mayoría de los componentes se encuentras incluidos en la placa base.
Generalmente actúan en un tiempo prácticamente real.
6. Computo Móvil
La computación móvil como una disciplina emergente en la computación marca una
tendencia futura hacia el "Teletrabajo" o "e-trabajo", que es la actividad a distancia
con el uso de dispositivos móviles, sistemas computacionales e Internet. Los
usuarios de dispositivos móviles se incrementan anualmente, dando pie a que el
servicio móvil evolucione rápidamente, y que requiera nuevas tecnologías tanto de
hardware con bajos recursos y alta eficiencia como de software.
Características
Se refiere al atributode estardisponible encualquierlugarencualquiermomento.
Un terminal móvil enlaformade un teléfonointeligenteounPDA ofrece la ubicuidad.
Es muy conveniente paralosusuariosoperarenel entornoinalámbrico.
Todo loque necesitanesun dispositivode Internetmóvil,comounteléfono
inteligente.
Los dispositivosmóvilespermitenalosusuariosconectarse de manerasencillayrápidaa
la Internete intranets,de otrosdispositivosmóvilesybasesde datos.
Se refiere ala personalizaciónde lainformaciónparalosconsumidoresindividuales.
Conocerla ubicaciónfísicade losusuariosencualquiermomentoesclave paraofrecer
productosy servicios.
Seguridad Informática
La seguridad informática es una disciplina que se encarga de proteger la
integridad y la privacidad de la información almacenada en un sistema informático.
De todas formas, no existe ninguna técnica que permita asegurar la inviolabilidad
de un sistema.
Características
Los sistemas informáticos seguros cumplen estas características:
Integridad
Confidencialidad
Disponibilidad
Autenticación
7. Irretutabilidad (No-Rechazo o No Repudio)
Redes de Computadoras
Una red informática, una red de comunicaciones de datos o una red
de computadoras es la interconexión de distinto número de sistemas
informáticos a través de una serie de dispositivos de telecomunicaciones y un
medio físico (alámbrico o inalámbrico).
Características
Velocidad
Seguridad de la red
Confiabilidad
Escalabilidad
Disponibilidad
Modelos y Métodos de Ingeniería de Software
Modelo de cascada
El desarrollo en cascada (en inglés, waterfall model) es un procedimiento
lineal que se caracteriza por dividir los procesos de desarrollo en sucesivas fases
de proyecto. Al contrario que en los modelos iterativos, cada una de estas fases se
ejecuta tan solo una vez. Los resultados de cada una de las fases sirven como
hipótesis de partida para la siguiente. El waterfall model se utiliza, especialmente,
en el desarrollo de software.
8. ¿Cómo funciona el modelo en cascada?
El desarrollo del modelo se atribuye al teórico de la informática Winston W. Royce.
Sin embargo, Royce no es el inventor de este modelo. Muy al contrario, en su
ensayo de 1970 titulado Managing the Development of Large Software Systems, el
teórico presenta una reflexión crítica acerca de los procedimientos lineales. A
modo de alternativa, Royce presenta un modelo iterativo incremental en el que
cada una de las fases se basa en la anterior y verifica los resultados de esta.
Royce propone un modelo compuesto por siete fases que se ha de ejecutar en
diversas vueltas (iteraciones):
Requisitos de sistema
Requisitos de software
Análisis
Diseño
Implementación
Prueba
Servicio
Modelos de Prototipos
El Modelo de prototipos, en Ingeniería de software, pertenece a los modelos de
desarrollo evolutivo. El prototipo debe ser construido en poco tiempo, usando los
programas adecuados y no se debe utilizar muchos recursos.
9. ¿Cómo se lleva a cabo?
Se comienza elaborando un prototipo del producto final: qué aspecto tendrá, cómo
funcionará. Para muchas interfaces de usuario, este modelo puede resultar tan
simple como unos dibujos con lápiz y papel o tan complejo como el propio código
operativo final. Para interfaces de hardware o estaciones de trabajo, el modelo
puede consistir en maquetas de espuma, caucho, cartón o cartulina. Cuanto más
próximo se encuentre el prototipo al producto real, mejor será la evaluación, si
bien se pueden obtener magníficos resultados con prototipos de baja fidelidad.
Modelo de Espiral
El modelo de desarrollo en Espiral es una combinación entre el modelo waterfall y
un modelo por iteraciones.
El proceso pasa por distintas etapas, desde la de conceptualización, siguiendo el
desarrollo, luego una fase de mejoras, para finalizar con el mantenimiento.
¿Cómo se lleva a cabo?
Dentro de cada etapa, tendremos una serie de fases que transcurren desde la
planificación, pasando por el análisis de riesgos, el desarrollo y finalizando en la
evaluación de lo realizado. Se incorpora también una fase de enlace entre etapas,
para facilitar la transición entre las mismas.
10. En definitiva, el equipo de desarrollo en este modelo de desarrollo en espiral
comienza con un pequeño conjunto de requisitos y pasa por cada fase de
desarrollo para ese conjunto de requisitos. El equipo de desarrollo agrega la
funcionalidad para el requerimiento adicional en espirales cada vez mayores,
hasta que la aplicación está lista para la fase de producción.
Modelo de ProcesoUnificado
El Proceso Unificado es un marco de desarrollo iterativo e incremental compuesto
de cuatro fases denominadas Inicio, Elaboración, Construcción y Transición. Cada
una de estas fases es a su vez dividida en una serie de iteraciones (la de inicio
puede incluir varias iteraciones en proyectos grandes). Estas iteraciones ofrecen
como resultado un incremento del producto desarrollado que añade o mejora las
funcionalidades del sistema en desarrollo.
¿Cómo se lleva acabo?
En el Proceso Unificado los casos de uso se utilizan para capturar los requisitos
funcionales y para definir los contenidos de las iteraciones. La idea es que cada
iteración tome un conjunto de casos de uso o escenarios y desarrolle todo el
camino a través de las distintas disciplinas: diseño, implementación, prueba, etc.
El proceso dirigido por casos de uso es el rup. Nota: en UP se está Dirigido por
requisitos y riesgos de acuerdo con el Libro UML 2 de ARLOW, Jim que
menciona el tema.