La ingeniería de software es una disciplina que utiliza métodos y herramientas para desarrollar software de manera organizada y eficiente. Incluye actividades como el análisis de requisitos, diseño, desarrollo, pruebas e implementación. Existen varios modelos de desarrollo como la cascada, incremental, prototipos y espiral. El ciclo de vida del software define las etapas del proceso de desarrollo.
1. INGENIERÍA DE SOFTWARE II
Definiciones en la
Ingeniería de Software
Cortés Jamaica Miguel Ángel
Grupo TIC SI 5-2
2014
ACTIVIDAD 1
2. INTRODUCCIÓN:
A continuación, en éste trabajo, se verán los conceptos
de lo que es Ingeniería de Software, su definición, sus inicios,
porque es importante, así como su utilidad, etc.
Así mismo, vendrán algunos ejemplos de modelos de
desarrollo, como sus características, de igual forma, lo que
es World Wide Web (W3C) y Software Engineering Institute
(SEI).
3. DEFINICIÓN:
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 los programas
informáticos (software).
Esta disciplina trasciende la actividad de programación, que es el pilar
fundamental a la hora de crear una aplicación. El ingeniero de software se encarga
de toda la gestión del proyecto para que éste se pueda desarrollar en un plazo
determinado y con el presupuesto previsto.
La ingeniería de software, por lo tanto, incluye el análisis previo de la
situación, el diseño del proyecto, el desarrollo del software, las pruebas necesarias
para confirmar su correcto funcionamiento y la implementación del sistema.
INICIOS:
El concepto de ingeniería del software surgió en 1968, tras una conferencia
en Garmisch (Alemania) que tuvo como objetivo resolver los problemas de la crisis
del software. El término crisis del software se usó desde finales de 1960 hasta
mediados de 1980 para describir los frecuentes problemas que aparecían durante
el proceso de desarrollo de nuevo software.
IMPORTANCIA:
La ingeniería de software es muy importante ya que con ella se puede
analizar, diseñar, programar y aplicar un software de manera correcta y
organizada, cumpliendo con todas las especificaciones del cliente y el usuario
final.
UTILIDAD:
Facilitar el control en el proceso de desarrollo de software.
Suministrar a los desarrolladores las bases para construir software de alta
calidad en una forma eficiente.
Definir una disciplina que garantice la producción y el mantenimiento de los
productos software desarrollados en el plazo fijado y dentro del costo
estimado.
4. CLASIFICACIÓN DE LOS TIPOS DE APLICACIONES:
Software de información para trabajadores como Aplicaciones para la
gestión del tiempo, gestión de datos, documentación, software de análisis,
software de ayuda, recursos del sistema y software financiero.
Software acceso a contenidos como navegadores web, aplicaciones
multimedia, programas de presentación,...
Software de entretenimiento como: mascotas digitales, salvapantallas,
videojuegos,...
Software educativo como aplicaciones para la gestión de clases, software de
aprendizaje y entrenamiento, software de referencia, aplicaciones de preparación
de ventas, gestión de encuestas,...
Software para empresas como software de flujos de trabajo, sistemas de
gestión de bases de datos (DBMS), software Gestión de activos digitales (DAM),
software de gestión de documentos o sistemas de Información Geográfica (SIG)
Software de simulación como simuladores científicos, sociales o de guerra, de
emergencia, de vehículos o de vuelo.
Software de desarrollo multimedia para la gestión de imagenes, vídeos o
música. También de animación de gráficos imágenes o vídeos, editores
vectoriales, secuenciadores musicales e Hipermedia.
Software de ingeniería de producto como asistido por ordenador (CAD),
análisis de elementos finitos, editor de idiomas compiladores de Entornos de
Desarrollo Integrados o depuradores de programas.
Software Engineering Institute (SEI)
El Instituto de Ingeniería de Software (SEI) es un centro de investigación,
desarrollo y formación involucrados en la computadora de software y de red de
seguridad. El SEI trabaja con la industria, las instituciones académicas y el
gobierno de Estados Unidos para mejorar el rendimiento y la fiabilidad de los
sistemas informáticos de gestión de los programas piloto, la realización de
pruebas, la oferta de cursos y la prestación de servicios para la concesión de
licencias y la publicación.
W3C
World Wide Web (W3C) es un consorcio internacional donde la
organización miembro, personal a tiempo completo y el público en general, trabaja
conjuntamente para desarrollar estándares Web. La misión del W3C es:
Guiar la Web hacia su máximo potencial a través del desarrollo de
protocolos y pautas que aseguren el crecimiento futuro de la Web.
MODELOS Y FILOSOFÍAS DE DESARROLLO DE
SOFTWARE
5. MODELO
CARACTERÍSTICAS
VENTAJAS
DESVENTAJAS
Modelos Convencionales
Modelo de
cascada
Rápido De
Aplicaciones
Modelo
Incremental
Modelo de
prototipo
Modelo Espiral
.- Es el más utilizado.
.- Deben desarrollarse todas
sus fases.
.- Las fases continúan hasta
que se cumplió el objetivo.
.- La planificación es
sencilla.
.- Calidad del producto
alta.
.- Permite trabajar con
personal poco
cualificado.
.- Tarda tiempo en
pasar por todo el ciclo.
.- Las revisiones del
proyecto son difíciles.
.- No refleja el proceso
de desarrollo de
software.
.- Con el tiempo, las
aplicaciones fueron siendo
cada vez más exigentes.
.- Es una metodología de
desarrollo ágil.
.- Se adapta al
desarrollo de sistemas
pequeños y grandes.
.- optimiza el tiempo de
desarrollo.
.- permite realizar el
desarrollo del sistema en
.- Se tiene la
definición del costo y
el tiempo de
desarrollo.
.- Se necesita de la
presencia constante
del usuario.
.- Se evita proyectos largos.
.- El usuario se involucra
más.
.- Requiere gestores
experimentados.
.- El resultado puede ser
muy positivo.
.- Permite entregar al
cliente un producto más
rápido.
.- Es versátil.
.- Sencillo al acomodar
cambios.
.- No recomendable
para sistemas en
tiempo real.
.- Requiere de mucha
planeación.
.- Requiere de metas
claras.
.- Incorpora componentes
del producto real.
.- Su objetivo es centrarse a
los aspectos del software.
.- Reduce los costos de
especificaciones erróneas.
.- Es útil cuando el
cliente conoce los
objetivos para el
software.
.- Ofrece un mejor
enfoque al desarrollo del
software.
.- Puede adaptarse al
software.
.- Permite aplicar el
enfoque de construcción
de prototipos.
.- En grandes sistemas
ha doblado la
productividad.
.- Se suele desatender
la calidad y el
mantenimiento.
.- El usuario crea
expectativas cuando
ve el prototipo final.
.- Puede combinarse con
otros modelos.
.- Elimina errores al
comienzo.
.- En cada giro se construye
un nuevo modelo del
sistema.
.- Incorpora objetivos de
calidad.
.- Incorpora gestión de
riesgos.
.- Modelo costoso.
.- Genera mucho
tiempo en el desarrollo
del sistema.
.- No se aconseja para
proyectos pequeños.
6. Modelos de desarrollo ágil
.- Muy exitosa en
tiempos recientes.
.- Conjunto de pasos de
otras metodologías.
.- Desarrollo más
agradable y sencillo.
.- Se adapta al
desarrollo de sistemas
grandes y pequeños.
.- Optimiza el tiempo
de desarrollo.
.- Permite realizar el
desarrollo de sistemas
en parejas.
.- Código es sencillo y
entendible.
.- Requiere poca
documentación.
.- No tiene la
definición de costos
ni de tiempos.
.- El sistema va
creciendo después
de cada entrega.
.- Necesita presencia
constante del
usuario.
.- Problemas
personales debido a
los celos del código.
.- Puede utilizarse en
diversas profesiones y
áreas.
.- Es especial para
sistemas pequeños.
.- Cubre la necesidad de
rapidez, calidad y
reducción de costos.
.- Trata al desarrollo de
software como una “caja
negra” controlable.
.- No trata el proceso de
software como un
proceso lineal.
.- Evita la burocracia.
.- Se puede comenzar
a trabajar desde el
primer momento.
.- Tiene un contenido
de uso común que se
puede utilizar sin
saber a ciencia cierta
lo que es.
.- Evita pérdidas de
tiempo y de dinero.
.- Permite un ambiente
familiar entre los
miembros de los
equipos.
.- Equipos máximos
de 5 personas.
.- Dificultad de
aplicación en
proyectos y equipos
grandes.
.- Requiere un “agile
champion”
.- Presenta diversos
problemas si se
restringe con una
fecha y un costo
cerrados por
contratos.
Programación
Extrema
Scrum
7. CICLO DE VIDA DEL DESARROLLO DE SOFTWARE
El término ciclo de vida del software describe el desarrollo de software, desde la
fase inicial hasta la fase final. El propósito de este programa es definir las distintas
fases intermedias que se requieren para validar el desarrollo de la aplicación, es
decir, para garantizar que el software cumpla los requisitos para la aplicación
y verificación de los procedimientos de desarrollo: se asegura de que los métodos
utilizados son apropiados.
Estos programas se originan en el hecho de que es muy costoso rectificar los
errores que se detectan tarde dentro de la fase de implementación. El ciclo de vida
permite que los errores se detecten lo antes posible y por lo tanto, permite a los
desarrolladores concentrarse en la calidad del software, en los plazos de
implementación y en los costos asociados.
El ciclo de vida básico de un software consta de los siguientes procedimientos:
Definición de objetivos: definir el resultado del proyecto y su papel en la
estrategia global.
Análisis de los requisitos y su viabilidad: recopilar, examinar y formular los
requisitos del cliente y examinar cualquier restricción que se pueda aplicar.
Diseño general: requisitos generales de la arquitectura de la aplicación.
Diseño en detalle: definición precisa de cada subconjunto de la aplicación.
Programación (programación e implementación): es la implementación de
un lenguaje de programación para crear las funciones definidas durante la
etapa de diseño.
Prueba de unidad: prueba individual de cada subconjunto de la aplicación
para garantizar que se implementaron de acuerdo con las especificaciones.
Integración: para garantizar que los diferentes módulos se integren con la
aplicación. Éste es el propósito de la prueba de integración que está
cuidadosamente documentada.
Prueba beta (o validación), para garantizar que el software cumple con las
especificaciones originales.
Documentación: sirve para documentar información necesaria para los
usuarios del software y para desarrollos futuros.
Mantenimiento: para todos los procedimientos correctivos (mantenimiento
correctivo) y las actualizaciones secundarias del software (mantenimiento
continuo).
8. El orden y la presencia de cada uno de estos procedimientos en el ciclo de vida de
una aplicación dependen del tipo de modelo de ciclo de vida acordado entre el
cliente y el equipo de desarrolladores.
ARQUITECTURA DE SOFTWARE
La arquitectura de software es un conjunto de patrones que proporcionan un
marco de referencia necesario para guiar la construcción de un software,
permitiendo a los programadores, analistas y todo el conjunto de desarrolladores
del software compartir una misma línea de trabajo y cubrir todos los objetivos y
restricciones de la aplicación.
Es considerada el nivel más alto en el diseño de la arquitectura de un sistema
puesto que establecen la estructura, funcionamiento e interacción entre las partes
del software.
9. CONCLUSIÓN
La ingeniería de software es una disciplina de la ingeniería
que nos ayuda a desarrollar sistemas de software a tiempo y
a la vez que se cumpla con las expectativas de calidad y que
permanezca dentro del presupuesto.
El proyecto de software cumple con un ciclo de vida, para
todo proyecto de software se debe elegir el modelo en el que
se trabaja, es muy importante realizar prototipos de los
productos de software para el mejor diseño y entendimiento
de lo que requiere el cliente.