0% encontró este documento útil (0 votos)
4 vistas9 páginas

Fundamentos de Ingeniería de Software

La Ingeniería de Software se originó entre 1955 y 1965 debido a la creciente demanda de computadoras, enfrentando una crisis por la entrega tardía y errores en los programas. Su objetivo es mejorar el diseño, eficiencia y organización en el desarrollo de software, utilizando métodos, herramientas y procesos que aseguran la calidad del producto final. Existen diversos modelos de desarrollo y tipos de software, así como un enfoque en la mejora continua a través de modelos de madurez como CMM y SPICE.

Cargado por

birthpregnancy1
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas9 páginas

Fundamentos de Ingeniería de Software

La Ingeniería de Software se originó entre 1955 y 1965 debido a la creciente demanda de computadoras, enfrentando una crisis por la entrega tardía y errores en los programas. Su objetivo es mejorar el diseño, eficiencia y organización en el desarrollo de software, utilizando métodos, herramientas y procesos que aseguran la calidad del producto final. Existen diversos modelos de desarrollo y tipos de software, así como un enfoque en la mejora continua a través de modelos de madurez como CMM y SPICE.

Cargado por

birthpregnancy1
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Ingeniería de Software

Orígenes de la IS como disciplina: Entre 1955 y 1965 después de la


segunda guerra mundial la demanda de computadoras personales (PCs) se
ha incrementado.
¿Por qué se produjo una crisis? Esto se produjo a raíz de que los
programas no se entregaban a tiempo o tenían numerosos errores.
Ingeniería de Software: Aplicación de conocimientos científicos al diseño y
construcción de programas computacionales y a la documentación
requerida para el desarrollo, operación y mantenimiento.
Objetivos de la Ingeniería de Software:
• Mejorar el diseño de los programas informáticos.
• Aumentar la eficiencia de los programas informáticos.
• Mejorar la organización de los equipos de trabajo.
• Detectar a través de las pruebas.
Capas de la ingeniería de Software 1/2: La ingeniería de software es una
tecnología con varias capas. El enfoque de ingeniería siempre tiene que
estar basada en el compromiso organizacional con la calidad.
Herramientas: Proporcionan un apoyo automatizado o semiautomatizado
para el proceso y los métodos.
Métodos: Los métodos de la ingeniería de software proporcionan la
experiencia técnica para elaborar el software.
Proceso: El proceso de ingeniería de software es el que une las capas e
incorpora una serie de actividades como: La comunicación, el análisis de
los requerimientos, la modelación del diseño, la construcción del
programa y las pruebas y permite el desarrollo de manera más eficaz, ya
que en esta capa se generan modelos, documentos, datos, reportes,
formatos, etc.
¿Cómo se define la calidad? Según la RAE: Es la propiedad o conjunto de
propiedades inherentes a algo, que permiten juzgar su valor.
Calidad de software: La calidad del software puede analizarse desde dos
puntos de vista:
- Cliente: Respecto a la satisfacción de sus necesidades.
- Técnico: Atributos; que se subdividen en… Atributos de calidad de

software:
- Mantenibilidad
- Estabilidad
- Velocidad
- Usabilidad
- Legibilidad
- Tamaño
- Costo
- Seguridad
- Número de fallas
Elementos de aseguramiento de calidad de software:
Estándares: Existen organizaciones como la IEEE, la ISO y otras que se
encargan de establecer estándares para ingeniería de software y las
documentaciones relacionadas a esta.
Revisiones y auditorías: Las revisiones técnicas y auditorías son
actividades del control de calidad que realizan los ingenieros de
software con el objetivo de garantizar que se están siguiendo los
lineamientos de calidad en el trabajo.
Pruebas: Las pruebas tiene un único objetivo: detectar errores.
Seguridad: El software siempre es y será un componente crucial
en los sistemas humanos, la consecuencia de defectos que no
pudieron ser detectados en tiempo de desarrollo puede ser
catastrófico. Estructura de proceso general para la ingeniería
de software:
Comunicación: En cualquier trabajo técnico es importante comunicarse
y colaborar con el cliente y con los demás participantes.
Planeación: Describe las actividades técnicas que se está por realizar,
los posibles riesgos, los recursos que se requieren y una programación
de las tareas.
Modelado: Son creados con el fin de comprender mejor los
requerimientos del software y el diseño adecuado.
Construcción: Esta tarea combina la generación de código, sea esta
manual o automatizada, incluye las pruebas para encontrar errores.
Despliegue: El software se entrega al consumidor que será quien lo
evalúa y que le da retroalimentación.
Fases básicas de desarrollo de software:
-Análisis
-Diseño
-Codificación
-Pruebas
-Mantenimiento
¿Qué son los modelos de desarrollo de software? El modelo de
proceso de desarrollo de software probablemente es una de las piezas
más importantes de todo este “engranaje” que conocemos como
ingeniería de software.
MODELO LINEAL SECUENCIAL (MLS) Llamado algunas veces “ciclo de
vida básico” o “modelo en cascada”, el modelo lineal secuencial, es un
ciclo de vida en sentido amplio, que incluye no sólo las etapas de
ingeniería sino toda la vida del producto.
PROCESO DE SOFTWARE POR PROTOTIPOS (MPP) El paradigma de
desarrollo por prototipos permite refinar sistemas complejos con base
en un sistema mínimo definido al principio del proceso de la
especificación del sistema.
PROCESO SOFTWARE EN ESPIRAL El modelo en espiral es una mirada
diferente al proceso software. Más que representar el proceso del
software como una secuencia de actividades con retrospectiva de una
actividad a otra, se representa como una espiral.

Tipos de software:
• Software de sistemas: Conjunto de programas escritos para dar
servicio a otros programas. Determinado software de sistemas (por
ejemplo, compiladores, editores y herramientas para administrar
archivos).
• Software de aplicación: Programas aislados que resuelven una
necesidad específica de negocios. Las aplicaciones en esta área
procesan datos comerciales o técnicos en una forma que facilita las
operaciones de negocios o la toma de decisiones administrativas o
técnicas.
• Software de ingeniería y ciencias: Se ha caracterizado por
algoritmos “devoradores de números”. Las aplicaciones van de la
astronomía a la vulcanología, del análisis de tensiones en
automóviles a la dinámica orbital
del transbordador espacial, y de la biología molecular a la
manufactura automatizada.
• Software incrustado: Reside dentro de un producto o sistema y se
usa para implementar y controlar características y funciones para el
usuario final y para el sistema en sí. El software incrustado ejecuta
funciones limitadas y particulares (por ejemplo, control del tablero
de un horno de microondas) o provee una capacidad significativa de
funcionamiento y control.
• Software de línea de productos: Es diseñado para proporcionar una
capacidad específica para uso de muchos consumidores diferentes.
• Aplicaciones web: Llamadas “webapps”, esta categoría de software
centrado en redes agrupa una amplia gama de aplicaciones.
• Software de inteligencia artificial: Hace uso de algoritmos no
numéricos para resolver problemas complejos que no son fáciles de
tratar computacionalmente o con el análisis directo.
• Modelo de Capacidad y Madurez: El CMM (Capability Maturity
Model), Modelo de Capacidad y Madurez en español. Es un modelo
de evaluación de procesos de una organización, especialmente de
desarrollo de software.
• Elementos estructurales de CMM
CMM fue creado con una estructura dividida en dos elementos:
- Áreas claves de proceso (KPA, Key Process Area en inglés)
- Niveles de madurez (5)

Áreas Claves de Proceso


- Las ACP se caracterizan por ser un conjunto de actividades que están
relacionadas una con otra.
- Que, cuando son realizadas colectivamente, se logra llega a lograr
los objetivos considerados importantes para aumentar la capacidad
del proceso.
Clasificacion de las ACP
Las ACP se pueden clasificar en tres categorías, independiente de su
nivel de madurez:
 Procesos de administración: Contiene las actividades de
administración de proyectos.
 Procesos organizacionales: Contiene las responsabilidades de la
organización por el proceso de software.
 Procesos ingenieriles: Contiene las actividades propias de la
ingeniería de software, tales como análisis de requerimientos,
diseño, codificación y prueba, que se realizan en todos los niveles
pero que evolucionan según el nivel de madurez en que se
encuentran.
Niveles de madurez
Los niveles de madurez son:
• Nivel 1: Inicial (Nivel de madurez): En este nivel no existen ACP, ya
que las organizaciones no implementan ninguna práctica que les
permita controlar y mejorar su proceso de software. El éxito del
proyecto radica casi exclusivamente en la capacidad del equipo de
trabajo que opera en la organización, para tener una idea:
- Los presupuestos se disparan
- No es posible entregar el proyecto en la fecha acordada con el

cliente - No existe control alguno sobre el avance del proyecto.


- Nivel 2: Repetible (Nivel de madurez): Este nivel apunta a
establecer los controles básicos que permitan implantar una eficaz y
eficiente administración de proyectos.
• Nivel 3: Definido (Nivel de madurez): La característica principal de
este nivel es que se cuenta con un proceso de software estándar
para desarrollar y mantener el software.
• Nivel 4: Administrado (Nivel de madurez): En el nivel administrado,
la organización fija metas de calidad cuantitativas para el proceso y
los productos de software. La productividad y la calidad son medidas
para las actividades importantes del proceso en todos los proyectos,
como parte de un programa de control organizacional.
• Nivel 5: Optimizado (Nivel de madurez): En el nivel optimizando, la
organización entera se enfoca en una continua mejora del proceso.
La organización tiene los medios para identificar las debilidades y
fortalezas del proceso, con la meta de prevenir la ocurrencia de
fallas.
De CMM a CMMI: CMMI Institute permite a las organizaciones elevar y
comparar el rendimiento en una amplia gama de capacidades
comerciales críticas, incluido el desarrollo de productos, la excelencia
en el servicio, la gestión de la fuerza laboral, la gestión de datos, la
gestión de proveedores y la ciberseguridad.
Niveles del modelo SPICE
Nivel de madurez 2 Organización Gestionada: Este nivel adopta los
mismos procesos del nivel de madurez 1, con la diferencia que “en el nivel
2 la organización además de implementar los objetivos de los procesos,
demuestra una planificación, seguimiento y control tanto de los procesos
como de sus productos de trabajo asociados” (Mayer & Bunge Informática
LTDA, 2004, p. 97).
Nivel de madurez 3: Organización Establecida: “En este nivel de madurez
los procesos se estandarizan para toda la organización” (Mayer & Bunge
Informática LTDA, 2004, p. 97). Para alcanzar este nivel de madurez es
necesario implementar los procesos y requisitos exigidos en los dos
niveles anteriores.
Nivel de madurez 4 Organización Predecible: El nivel de madurez 4,
requiere del cumplimiento de los procesos de los anteriores niveles para
poder ser alcanzado. En el nivel 4 la organización gestiona
cuantitativamente los procesos, es decir, se mide y se analiza el tiempo de
su realización. La principal diferencia con el nivel 3 es que ahora el proceso
se lleva a término de manera consistente dentro de unos límites
predefinidos.
Nivel de madurez 5 Organización Optimizada: El nivel 5 corresponde a la
adaptación de todos los procesos trabajados en los primeros cuatro
niveles, pero busca que éstos tengan una mejora continua de tal manera
que contribuyan al alcance de los objetivos de negocio de la empresa.
Fases de certificación en ISO/IEC 15504
• Fase 0: Lanzamiento del proyecto.
• Fase 1: Diagnóstico previo y definición de plan de mejoras.
• Fase 2: Definición de la solución.
• Fase 3: Implantación de los procesos de calidad internos (consta de
3 hitos de auditoría)
• Fase 4: Proceso de certificación.
Trillium model: Es un modelo para la evaluación de la capacidad de
desarrollo y mantenimiento de sistemas de software de
telecomunicaciones.
Niveles de madurez:
1. No estructurada: Los proyectos a menudo no pueden cumplir con
los atributos de calidad o de calendario. El éxito, aunque es posible,
se basa en las personas y no en la infraestructura de la organización.
(Riesgo - Mayor)
2. Repetible y proyecto orientado : El éxito individual proyecto se
logra a través de una fuerte planificación y control de gestión de
proyectos, con énfasis en la gestión de requisitos (Riesgo - Medio)
3. Definido y orientado a los procesos : Los procesos se definen y
utilizan a nivel de organización, aunque la personalización proyecto
aún está permitido. Procesos son controlados y mejorados.
Implementa la ISO 9001 (Riesgo - Menor)
4. Administrado e Integrado: Se introduce mejoras en los procesos
como la gestión del cambio y se integran herramientas CASE en los
procesos. (Riesgo - Bajo)
5. Totalmente integrado: Se implementa las mejores prácticas y se
integra el modelo CMMI en los procesos (Riesgo - Menor)
Definiciones CASE Las siglas CASE provienen del inglés Compute Aaided
Software Engineering, que en español significa “ingeniería de software asistida
por computadora”, y abarca el uso de un método asistido por computadora
para organizar y controlar el desarrollo de software en sus diferentes fases.
Tipos de herramientas CASE
• Herramientas de análisis y diseño: Permiten crear y modificar diagramas
Entidad-Relación, de flujo de datos, de clases, etc.
• Generación de código y documentación: Generan código a partir de las
especificaciones de diseño. Además, soportan la generación
automatizada de documentación a partir de la información
almacenada.
• Herramientas de ingeniería inversa
➢ Ingeniería inversa de datos: Extraen información de código fuente y
construye diagramas orientados a objetos o Entidad-Relación.
➢ Redocumentación: permiten generar diagramas para mejorar la
comprensión del código.
➢ Análisis de código: generan, por ejemplo, la indentación automática.
¿Qué esperamos de una herramienta CASE? Lo primero que podemos
esperar de una herramienta es que facilite la tarea de dibujar diagramas,
su corrección sintáctica, y la coherencia entre los distintos diagramas.

Ventajas de su utilización
• Permite generar código a partir del modelado gráfico
• Soporte para desarrollar prototipos
• Mayor independencia entre análisis y diseño
Desventajas de las CASE
• Alcance limitado
• Función limitada
• Diagrama no utilizado para el desarrollo (simplemente para documentación)
Texto vs Imagen: La percepción del mundo está orientada en gran medida
biológicamente de un modo visual, según algunos estudios procesamos 60.000
veces mas rápido una imagen que un texto.
Diagramas: Los diagramas han sido creados en el modelado de sistemas para
ilustrar mejor en una visión general de la arquitectura de un sistema o parte de
ella.
Diseño de un sistema: Para diseñar un sistema siempre es fundamental tener
presente las necesidades (o los problemas a los que se le quiere dar una
solución con un software)
Lenguaje Unificado de Modelado: UML es un lenguaje gráfico de modelado
que consta de varios diagramas. Utiliza una sintaxis y semántica estandarizada
para la construcción de una arquitectura, diseño e implementación de
sistemas, tanto en estructura como en comportamiento.
Diagrama de Casos de Uso: El diagrama de casos de uso permite visualizar el
comportamiento de un sistema. Es una secuencia de interacciones entre un
sistema y alguien o algo que usa alguno de sus servicios.
Diagrama de Clases: Describe la estructura de un sistema a través de clases y
los atributos que contienen estas, al igual que las operaciones y las relaciones
que pueden tener los objetos entre sí.
Diagrama de Clases - asociaciones
• Agregación: Es un tipo de asociación que indica que una clase es parte de
otra clase. La agregación se representa mediante un rombo de color blanco
colocado en el extremo en el que está la clase que representa el “todo”.
• Composición: Al igual que la agregación, indica que una clase es parte de
otra clase y es representada mediante un rombo de color negro colocado
en el extremo en el que está la clase que representa el “todo”. La diferencia
está en dependencia de “vida” del objeto.
• Herencia: La herencia o también llamado generalización es una técnica
cotidiana que se usa para gestionar la complejidad.
Diagrama Entidad-Relación: Se basa en una percepción del mundo real que
consiste en una colección de objetos básicos, denominados entidades
Diagrama de Actividades: El diagrama de actividad enriquece el caso de
uso al proporcionar una representación gráfica del flujo de interacción
dentro de un escenario específico.
Diagrama de Secuencias: Los diagramas de secuencia en el UML se usan
principalmente para modelar las interacciones entre los actores y los
objetos en un sistema, así como las interacciones entre los objetos en sí.

También podría gustarte