martes, 20 de septiembre de 2022

PORTADA


Fundamentos de Ingeniería de Software 

 

ESTUDIANTE:

Marco Antonio Hernández Alonso

  

NO. DE CONTROL:

20840143

  

ASIGNATURA:

Fundamentos de Ingeniería de Software 

 

PERIODO ESCOLAR:

AGOS - DIC 2022

  

DOCENTE:

María Guadalupe Rivera García

 


lunes, 19 de septiembre de 2022

INTRODUCCIÓN



El software como tal es un conjunto de instrucciones lógicas que le permite al usuario interactuar con el computador a través de una interfaz, es lo que comúnmente se conoce como los programas del computador y van desde un editor de texto hasta aplicaciones que gestionan a otras. La industria del software avanza a pasos agigantados, un claro ejemplo de eso es la computación en la nube, que si bien antes teníamos que instalar un programa en nuestra computadora para poder acceder a todas las funcionabilidades que tenía ahora se lo puede hacer mediante un navegador donde el programa se encuentra alojado en un servidor a varios kilómetros de distancia, dejando así disponible el hardware que se utilizaría para correr esta aplicación (memoria, disto, procesador).

OBJETIVO:

Identificar la historia del software así como las características de los paradigmas estructurado y orientado a objetos. Conocer e identificar las herramientas CASE. Conocer las diferentes características que tiene el software y las metodologías que utilizan los programadores para crearlo.

domingo, 18 de septiembre de 2022

1.1 Conceptos básicos

1. 1 Conceptos básicos


Análisis

proceso de estudiar las necesidades del usuario para obtener una definición detallada de los requisitos.

Base de datos

Una base de datos o banco de datos (en ocasiones abreviada con la sigla BD o con la abreviatura b. d.) es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso.

CASE

Ayuda por Computadora a la Ingeniería de Software.

CASE multiplataforma

Estas herramientas soportan las combinaciones dominantes de diferentes plataformas físicas, sistemas operativos, interfases gráficas de usuario, sistemas de gestión de bases de datos, lenguajes de programación y protocolos de red.

Ciclo de vida

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.

Compilador

programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación 1 Usualmente el segundo lenguaje es lenguaje de máquina, pero también puede ser un código intermedio (bytecode), o simplemente texto.

Diagrama entidad relación

Es una descripción conceptual de las estructuras de datos y sus relaciones.

Diagramas

Diagramas utilizados durante el diseño de software Estos incluyen diagramas utilizados durante el diseño de software (arquitectura de software). Por lo general, se utilizan los diagramas del Lenguaje Unificado de Modelado (UML).

Hardware

se refiere a todas las partes tangibles de un sistema informático; sus componentes son: eléctricos, electrónicos, electromecánicos y mecánicos. Son cables, gabinetes o cajas, periféricos de todo tipo y cualquier otro elemento físico involucrado; contrariamente, el soporte lógico es intangible y es llamado software.

Herramientas CASE

Una herramienta del software que automatiza (por lo menos en parte) una parte del ciclo de desarrollo de software.

Herramientas de bajo nivel, L-CASE

(Lower CASE - CASE inferior) o back-end, dirigidas a las últimas fases del desarrollo: construcción e implantación.

Herramientas de gestión de prototipos

Los prototipos son utilizados ampliamente en el desarrollo de aplicaciones, para la evaluación de especificaciones de un sistema de información, o para un mejor entendimiento de cómo los requisitos de un sistema de información se ajustan a los objetivos perseguidos.

Herramientas de planificación y sistemas de gestión

Sirven para modelizar los requisitos de información estratégica de una organización.

Herramientas de prototipado

El objetivo principal de esta herramienta es poder mostrar al usuario, desde los momentos iniciales del diseño, el aspecto que tendrá la aplicación una vez desarrollada.

Herramientas de soporte

Se engloban en esta categoría las herramientas que recogen las actividades aplicables en todo el proceso de desarrollo.

Herramientas integradas, I-CASE

(Integrated CASE, CASE integrado): abarcan todas las fases del ciclo de vida del desarrollo de sistemas. Son llamadas también CASE workbench.

Herramientas de alto nivel, U-CASE

(Upper CASE - CASE superior) o front-end, orientadas a la automatización y soporte de las actividades desarrolladas durante las primeras fases del desarrollo: análisis y diseño.

Herramientas de integración y prueba

Sirven de ayuda a la adquisición, medición, simulación y prueba de los equipos lógicos desarrollados.

Herramientas de programación

Se engloban aquí los compiladores, los editores y los depuradores de los lenguajes de programación convencionales.

Ingeniería de software

es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento de software, y el estudio de estos enfoques, es decir, la aplicación de la ingeniería al software.

Juegos De Herramientas O TOOL-CASE

son el tipo más simple de herramientas CASE. Automatizan una fase dentro del ciclo de vida. Dentro de este grupo se encontrarían las herramientas de reingeniería, orientadas a la fase de mantenimiento.

Kit De Herramientas CASE

Un conjunto de herramientas CASE integradas que se han diseñado para trabajar juntas y automatizar (o proveer ayuda automatizada al ciclo de desarrollo de software, incluyendo el análisis, diseño, codificación y pruebas.

Plataforma De Hardware Para CASE

Una arquitectura de hardware con uno, dos o tres sistemas puestos en línea, que proveen una plataforma operativa para las Herramientas Case.

Proceso De Software

un proceso de desarrollo del software es el proceso de dividir el trabajo de desarrollo del software en distintas fases para mejorar el diseño, la gestión del producto, y la gestión de proyecto. Es también conocido como el ciclo de vida del desarrollo de software.

Programación

Es el proceso de diseñar, codificar, depurar y mantener el código fuente de programas computacionales. El código fuente es escrito en un lenguaje de programación.

Repositorios

Base de datos central de una herramienta CASE. El repositorio amplía el concepto de diccionario de datos para incluir toda la información que se va generando a lo largo del ciclo de vida del sistema, como, por ejemplo: componentes de análisis y diseño (diagramas de flujo de datos, diagramas entidad-relación, esquemas de bases de datos, diseños de pantallas), estructuras de programas, algoritmos, etc.

Requerimientos

Características que se desea que posea un sistema o un software.

Sistema Case

Un conjunto de herramientas CASE integradas que comparten una interfaz del usuario común y corren en un ambiente computacional común.

Software

Es el conjunto de los programas de cómputo, procedimientos, reglas, documentación y datos asociados, que forman parte de las operaciones de un sistema de computación.

Tecnología Case

Una tecnología del software que mantiene una disciplina de la ingeniería automatizada para el desarrollo de software, mantenimiento y dirección de proyecto, incluye metodologías estructuradas automatizadas y herramientas automatizadas.


fuentes bibliográficas

sistemas. (2010). En itmorelia, ingeniería de sistemas (1.a ed.). itmorelia.

https://http://itmorelia.edu.mx/201admin/extras/Sistemas2010/SCC1007.pdf

Rodríguez Tello, Dr. E. A. (2012, 5 septiembre). Conceptos básicos de ingeniería de

software (1.a ed., Vol. 01) [CINVESTAV-Tamaulipas]. CINVESTAV.

http://www.tamps.cinvestav.mx/~ertello/swe/sesion01.pdf

sábado, 17 de septiembre de 2022

1.2 El Papel Evolutivo del Software

1.2 El Papel Evolutivo del Software


Hoy en día, el software tiene un papel dual. Es producto y canal de distribución de este. Como producto, ofrece la potencia de cómputo presentada como hardware de una computadora o, de manera más global por una red de computadoras accesible mediante hardware local y de acceso físico. Sin importar el lugar en que resida el software, ya sea en un celular o dentro de una computadora central, éste es un transformador de información; realiza la producción, el manejo, la adquisición, la modificación, el despliegue o la transmisión de la información que puede ser tan simple como un solo bit o tan compleja como una presentación multimedia. En su papel de vehículo para la entrega de un producto, el software actúa como la base para el control de la computadora (Sistemas Operativos), la comunicación de información (redes), y la relación y el control de otros programas (utilerías de software y ambientes).


PRIMERA ERA  (De 1950  a 1965)

 

  • Se trabajaba con la idea de “Codificar y Corregir”.
  • No existía un planteamiento previo.
  • No existía documentación de ningún tipo.
  • Existencia de pocos métodos formales y pocos creyentes en ellos.
  • Desarrollo a base de prueba y error.




 SEGUNDA ERA (De 1965 a 1972)

 

  • Se busca simplificar código.
  • Aparición de Multiprogramación y Sistemas Multiusuarios.
  • Sistemas de Tiempo Real apoyan la toma de decisiones.
  • Aparición de Software como producto. (Casas de Software).
  • Se buscan procedimientos para el desarrollo del Software.

 




TERCERA ERA (De 1972 a 1985)

 

  • Nuevo Concepto: Sistemas Distribuidos.
  • Complejidad en los Sistemas de Información.
  • Aparecen: Redes de área local y global, y Comunicadores Digitales.
  • Amplio Uso de Microprocesadores.





CUARTA  ERA (De 1985 a 1995 )

  • Impacto Colectivo de Software.
  • Aparecen: Redes de Información, Tecnologías Orientadas a Objetos.
  • Aparecen: Redes Neuronales, Sistemas Expertos y SW de Inteligencia Artificial.
  • La información como valor preponderante dentro de las Organizaciones.

 




QUINTA ERA (De 2000 hasta hoy en día)

En esta era se utilizan los mismos requisitos de las era pasadas pero con el aumento de la web en todos lados, la reutilización de información y componentes de software 

  • Codificar: Transformar mediante las reglas de un código la formulación de un mensaje.

  • Hardware: Componente físico de la computadora. Por ejemplo: el monitor, la impresora o el disco rígido. El hardware por sí mismo no hace que una máquina funcione.
 
  • Multiprogramación: Se denomina multiprogramación a la técnica que permite que dos o más procesos ocupen la misma unidad de memoria principal y que sean ejecutados al "mismo tiempo“.



este video también explica el papel evolutivo del software 




Fuentes bibliográficas 






viernes, 16 de septiembre de 2022

1.3. Etapas del desarrollo software

 1.3 ETAPAS DE DESARROLLO DEL SOFTWARE 


Etapa de análisis: Es el proceso de investigar un problema que se quiere resolver. Definir claramente el Problema que se desea resolver o el sistema que se desea crear. Identificar los componentes principales que integrarán el producto.




Etapa de Diseño: Es el proceso de utilizar la información recolectada en la etapa de análisis al diseño del producto. La principal tarea de la etapa de diseño es desarrollar un modelo o las especificaciones para el producto o Componentes del Sistema.



Etapa de Desarrollo: Consiste en utilizar los modelos creados durante la etapa de diseño para crear los componentes del sistema.




Etapa de Pruebas o Verificación Prueba : Consiste en asegurar que los componentes individuales que integran al sistema o producto, cumplen con los requerimientos de la especificación creada durante la etapa de diseño. Se recomienda aplicar las etapas: • Análisis • Diseño • Desarrollo • Prueba A cada uno de los ejercicios de este curso.




Etapa de Implementación o Entrega Implantación: Consiste en poner a disposición del cliente el producto.


Etapa de Mantenimiento: Consiste en corregir problemas del producto y re-liberar el producto como una nueva versión o revisión (producto mejorado).


Etapa final EOL (End-of-Life): El fin del ciclo del producto consiste en realizar todas las tareas necesarias para asegurar que los clientes y los empleados están conscientes de que el producto ya no será vendido ni soportado.



Fuentes bibliográficas

jueves, 15 de septiembre de 2022

1.4. Clasificación de la tecnología en el desarrollo de software (Tecnología Estructurada y Orientada a Objetos)

 1.4 CLASIFICACIÓN DE LA TECNOLOGÍA EN EL DESARROLLO DE SOFTWARE (TECNOLOGÍA ESTRUCTURADA Y ORIENTADO A OBJETOS). 


Tecnologías de desarrollo estructurado 

Las tecnologías de desarrollo estructurado son las más convencionales de las empleadas hoy día. Han surgido de la evolución de las ideas de programación estructurada (hace más de veinticinco años) hacia las fases iniciales del ciclo de vida. En su formulación actual, las notaciones empleadas en las primeras fases del ciclo de vida (especificación de requisitos de usuario y sistema) suelen estar constituidas por lenguajes gráficos que permiten: identificar el sistema y el entorno; representar el flujo de información entre los elementos; y, describir los datos y las actividades del sistema. 

La idea base de esta tecnología es que es posible estructurar el modelo de un sistema de software en base a funciones que procesan información que reciben de otras funciones (o del exterior) y dirigen la información procesada a otros módulos funcionales (o al exterior). El enfoque seguido, por tanto, es el de pensar en las funciones del sistema necesarias (extraídas de los requisitos del sistema) y luego en los datos que requieren. 




Orientado a Objetos 

Los métodos de descomposición orientada a objetos constitúyanla tendencia más influyente observada en la ingeniería de sistemas de software en los últimos años. Con ellos nos referimos a un conjunto de métodos (aún en fase de desarrollo o evolución) que permiten al analista y diseñador concebir su sistema identificando clases de objetos, operaciones permitidas y relaciones entre ellos como base para la estructura del sistema a diseñar. 

En ellas, un objeto es un conjunto de datos y funciones de manipulación de los mismos encapsulados en una unidad que es posible tratar como un todo (crear, copiar, destruir, etc.). Un objeto posee unas operaciones visibles a otros objetos aunque éstos no conocen cómo están implementadas. El diseñador reconoce inicialmente clases de objetos de las que se derivan los objetos concretos que utilizará en el diseño. 

Un objeto puede construirse jerárquicamente empleando, a su vez, a otros objetos más simples. Una clase implica una generalización del concepto de objeto (identificando similitudes entre objetos similares) y constituye la base a partir de las cuales se construye el sistema. 

Existen varias tecnologías orientadas a objetos que, aunque similares en su potencia expresiva, ofrecen algunas diferencias que las hacen más adecuadas para algún tipo concreto de sistemas.

Podemos mencionar como una de las más representativas a OMT. OMT está soportada por muchas herramientas CASE comerciales. 

Corresponde a una notación gráfica que permite representar las clases de objetos, sus relaciones y la creación de ejemplares de los mismos. Aunque básicamente empleada para la fase de análisis de requisitos del sistema puede también emplearse para las primeras fases del diseño.



Fuentes Bibliográficas 

https://sites.google.com/site/10claudia2410/unidad-1-fundamentos-ingenieria-de-software/1-4




miércoles, 14 de septiembre de 2022

1.5. Definición e historia de las herramientas CASE

 

1.5 DEFINICION E HISTORIA DE LAS HERRAMIENTAS CASE


 La industria de computadoras ha desarrollado un soporte automatizado para el desarrollo y mantenimiento de software. Este es llamado Computer Aided Software Engineering (CASE).

Se puede definir a las Herramientas CASE como un conjunto de programas y ayudas que dan asistencia a los analistas, ingenieros de software y desarrolladores, durante todos los pasos del Ciclo de Vida de desarrollo de un Software. Como es sabido, los estados en el Ciclo de Vida de desarrollo de un Software son: Investigación Preliminar, Análisis, Diseño, Implementación e Instalación.



Historia de las Herramientas 

CASE Las Herramientas CASE tienen su inicio con el simple procesador de palabras que fue usado para crear y manipular documentación. Los setentas vieron la introducción de técnicas gráficas y diagramas de flujo de estructuras de datos. Sobre este punto, el diseño y especificaciones en forma pictórica han sido extremadamente complejos y consumían mucho tiempo para realizar cambios. 


La introducción de las herramientas CASE para ayudar en este proceso ha permitido que los diagramas puedan ser fácilmente creados y modificados, mejorando la calidad de los diseños de software. Los diccionarios de datos, un documento muy usado que mantiene los detalles de cada tipo de dato y los procesos dentro de un sistema, son el resultado directo de la llegada del diseño de flujo de datos y análisis estructural, hecho posible a través de las mejoras en las Herramientas CASE. 

Pronto se reemplazaron los paquete gráficos por paquetes especializados que habilitan la edición, actualización e impresión en múltiples versiones de diseño. Eventualmente, las herramientas gráficas integradas con diccionarios de base de datos para producir poderosos diseños y desarrollar herramientas, podrían sostener ciclos completos de diseño de documentos. 

Como un paso final, la verificación de errores y generadores de casos de pruebas fueron incluidos para validar el diseño del software. Todos estos procesos pueden saberse integrados en una simple herramienta CASE que soporta todo el ciclo de desarrollo. 

La primera herramienta comercial se remonta a 1982, aunque algunos especialistas indican que algunos ejemplos de herramientas para diagramación ya existían.  







Fuentes Bibliográficas 



martes, 13 de septiembre de 2022

1.6. Clasificación de las herramientas CASE

 

1.6 CLASIFICACION DE LAS HERRAMIENTAS CASE





  1.  Herramientas integradas, I-CASE (Integrated CASE, CASE integrado): a todas las fases del ciclo de vida del desarrollo de sistemas. Son llamadas también CASE workbench.
  2.  Herramientas de alto nivel, U-CASE (Upper CASE - CASE superior) ofront-end, orientadas a la automatización y soporte de las actividades desarrolladas durante las primeras fases del desarrollo: análisis y diseño.
  3. Herramientas de bajo nivel, L-CASE (Lower CASE - CASE inferior) oback-end, dirigidas a las últimas fases del desarrollo: construcción e implantación. 
  4. Juegos de herramientas o Tools-Case, son el tipo más simple de herramientas CASE. Automatizan una fase dentro del ciclo de vida.

Aunque no es fácil y no existe una forma única de clasificarlas, las herramientas CASE se pueden clasificar teniendo en cuenta los siguientes parámetros:

  1. Las plataformas que soportan.
  2. Las fases del ciclo de vida del desarrollo de sistemas que cubren.
  3. La arquitectura de las aplicaciones que producen.
  4. Su funcionalidad.

La siguiente clasificación es la más habitual basada en las fases del ciclo de desarrollo que cubren:

  • Upper CASE (U-CASE), herramientas que ayudan en las fases de planificación, análisis de requisitos y estrategia del desarrollo, usando, entre otros diagramas UML.

  • Middle CASE (M-CASE), herramientas para automatizar tareas en el análisis y diseño de la aplicación.

  • Lower CASE (L-CASE), herramientas que semi-automatizan la generación de código, crean programas de detección de errores, soportan la depuración de programas y pruebas. Además automatizan la documentación completa de la aplicación. Aquí pueden incluirse las herramientas de Desarrollo rápido de aplicaciones.

Existen otros nombres que se le dan a este tipo de herramientas, y que no es una clasificación excluyente entre sí, ni con la anterior:

  • Integrated CASE (I-CASE), herramientas que engloban todo el proceso de desarrollo software, desde análisis hasta implementación.

  • MetaCASE, herramientas que permiten la definición de nuestra propia técnica de modelado, los elementos permitidos del metamodelo generado se guardan en un repositorio y pueden ser usados por otros analistas, es decir, es como si definiéramos nuestro propio UML, con nuestros elementos, restricciones y relaciones posibles.

  • CAST (Computer-Aided Software Testing), herramientas de soporte a la prueba de software.

  • IPSE (Integrated Programming Support Environment), herramientas que soportan todo el ciclo de vida, incluyen componentes para la gestión de proyectos y gestión de la configuración activa.



Fuentes Bibliográficas