Está en la página 1de 5

Contenido :

Unidad 1:
Panorámica General de Ingeniería de Software 1.1. Ingeniería de Software

1.2. Cuestiones claves acerca de la ingeniería de software

1.3. Principios de la Ingeniería de Software


Tema 1: Introducción a la Ingeniería
de Software 1.4. Evolución del desarrollo de software

1.5. Responsabilidad profesional y ética

© Ing. Christian Araujo González. T1-


T1-1 © Ing. Christian Araujo González. T1-
T1-2

1.1. Ingeniería de Software 1.2. Cuestiones Claves acerca de la Ingeniería de Software


La ingeniería de software tiene que ver con las teorías, métodos y
herramientas para el desarrollo profesional de software.
¿Qué es el Software?
La ingeniería de software es el resultado de llevar la tradicional
disciplina de las ingenierías al mundo de la construcción de sistemas Muchas personas asocian el término software con programas de
software. computadora. El software no son sólo programas, sino todos los
Definiciones: documentos asociados y la configuración de datos que se necesitan
. La ingeniería de software es el estudio de los principios y metodologías para hacer que estos programas operen de manera correcta.
para el desarrollo y mantenimiento de sistemas software.
Los ingenieros de software se concentran en el desarrollo de
. Es una disciplina que comprende todos los aspectos de la producción de
productos de software, es decir, software que se vende a un
software desde las etapas iniciales de la especificación del sistema, hasta el cliente. Existen dos tipos de productos software:
mantenimiento de éste después de que se utiliza. - Productos genéricos (software empaquetado)
- Productos personalizados (software a medida)
. “La aplicación práctica del conocimiento científico y matemático en el
diseño y construcción de programas para computadoras y la
documentación asociada requerida para desarrollarlos, operarlos y
mantenerlos”.(Boehn)

. Es el conjunto de tres elementos claves (métodos, herramientas y


procedimientos) que facilitan al gestor controlar el proceso de desarrollo de
software y suministrar a los que la practican las bases para construir
software de alta calidad de una forma productiva. (Pressman)
© Ing. Christian Araujo González. T1-
T1-3 © Ing. Christian Araujo González. T1-
T1-4
¿Cuál es la diferencia entre Ingeniería de software y ¿Qué es un proceso de software?
Ciencias de la Computación (Informática)?
Un conjunto ordenado de actividades cuyo objetivo es el desarrollo
o evolución del software.
La ciencia de la computación se refiere a los fundamentos y teorías
de la informática; la ingeniería de software comprende las formas Las actividades genéricas en todos los procesos software son:
prácticas para desarrollar y entregar un software útil. - Especificación : lo que el sistema debe hacer (funcionalidad) y sus
restricciones de desarrollo.
- Desarrollo e implementación : producción de software que cumpla
con las especificaciones.
¿Cuál es la diferencia entre Ingeniería de software e - Validación : comprobar que el software entregado es lo que el cliente
Ingeniería de Sistemas? quiere.
- Evolución : cambiar el software en función de las demandas
cambiantes (cambios en las necesidades) del usuario.
La ingeniería de sistemas se refiere a todos los aspectos del
desarrollo de sistemas basados en computadoras que incluye
hardware, software e ingeniería de procesos. La Ingeniería del
software es parte de este proceso.

© Ing. Christian Araujo González. T1-


T1-5 © Ing. Christian Araujo González. T1-
T1-6

¿Qué es un modelo de proceso de software? ¿Qué son los costos en Ingeniería de Software?

Es una representación simplificada de un proceso de software Aproximadamente el 70% de los costos son costos de desarrollo y
presentado desde una perspectiva concreta. el 30% son costos de pruebas (testeo).

Las perspectivas del proceso son: Para software a medida, los costos de mantenimiento (evolutivos)
- Perspectiva de flujo de trabajo (workflow) - secuencia de actividades. a menudo sobre pasan los costos de desarrollo.
- Perspectiva de flujo de datos (data-flow) - flujo de información
- Perspectiva rol/acción – Quién hace Qué Los costos varían dependiendo del tipo de sistema a desarrollar y
de los requisitos particulares del sistema tales como rendimiento,
Modelos de procesos genéricos: fiabilidad, etc.
- Modelo en cascada
- Desarrollo evolutivos La distribución de los costos también depende del modelo de
-… proceso de desarrollo que se utilice.

© Ing. Christian Araujo González. T1-


T1-7 © Ing. Christian Araujo González. T1-
T1-8
¿Qué es CASE (Computer
(Computer-
-Aided software Engineering)?
Engineering)?
¿Qué son los métodos en Ingeniería de Software?
Sistemas software que proporcionan un soporte automatizado en
Enfoque estructurado y sistemático para el desarrollo de software
las actividades del proceso de desarrollo de software.
cuyo propósito es facilitar la producción de software de alta calidad
de una forma costeable (Ejm: análisis estructurado-De Marco-, Normalmente los sistemas CASE se utilizan para soportar un
OMT-Rambaugh-,… UML, etc). método de ingeniería de software (IS) concreto.
Incluye modelos (gráficos) del sistema, notaciones, reglas, Los CASE pueden ser básicamente :
consejos de diseño y guías en el proceso.
Upper-
Upper-CASE : herramientas que soportan las actividades iniciales
Descripciones de modelos:
del proceso, como requisitos (análisis) y diseño.
- descripciones de los modelos gráficos que se desean crear.
Lower-
Lower-CASE : herramientas que soportan las actividades finales
Reglas: delproceso, tales como programación, depuración y
- restricciones que se deben aplicar a los modelos del sistema. pruebas.

Recomendaciones:
- consejos para la práctica del buen diseño.

Guía en el proceso:
- que secuencia de actividades seguir.

© Ing. Christian Araujo González. T1-


T1-9 © Ing. Christian Araujo González. T1-
T1-10

¿Cuáles son los grandes retos a los que se enfrenta la 1.3. Principios de la Ingeniería de Software
Ingeniería de software?
Estos principios tienen que ver con el tanto con el proceso de
ingeniería de software, como con el producto final.
Hacer frente a los sistemas heredados (legacy systems), hacer
frente a la creciente diversidad y hacer frente a las demandas de En realidad se tratan de afirmaciones abstractas que describen
entrega con tiempos cada vez más reducidos. propiedades deseables de los procesos y productos software. Pero,
para aplicar principios, el ingeniero de software debería estar
Los sistemas heredados,
heredados sistemas antiguos pero valiosos, deben equipado con métodos y técnicas específicas que ayuden a incorporar
ser mantenidos y actualizados. las propiedades deseadas en los procesos y productos.
Los métodos son guías generales que gobiernas la ejecución de alguna
Heterogeneidad,
Heterogeneidad consiste en que los sistemas son distribuidos e actividad; son aproximaciones rigurosas, sistemáticas y disciplinadas.
incluyen una mezcla de diferentes hardware y software
(interoperatividad). Las técnicas son algo más mecánicas que los métodos, a menudo
tienen una aplicabilidad más restringida.
Plazos de entrega,
entrega actualmente hay una creciente presión para que A veces, los métodos y técnicas son encapsulados en conjunto para
los sistemas software sean entregados con rapidez. dar vida a una metodología.
El propósito de una metodología es promover una aproximación en la
solución de problemas, preseleccionando los métodos y técnicas a
usar.
Las herramientas, a su vez, son desarrolladas para apoyar la
aplicación de técnicas, métodos y metodologías.
© Ing. Christian Araujo González. T1-
T1-11 © Ing. Christian Araujo González. T1-
T1-12
Rigor y Formalidad
De aquí es que se puede afirmar que la elección de principios y
técnicas está determinada por las metas de calidad del software. • El desarrollo de software es una actividad creativa. Por otra parte el Rigor es un
complemento necesario a la creatividad en toda actividad de ingeniería: es sólo a
Los principios:
- Rigor y formalidad través de la aproximación rigurosa que podremos producir productos mas confiables,
- Separación de intereses controlar sus costos y aumentar nuestras aspiraciones respecto de su confiabilidad.
- Modularidad • El rigor no necesita restringir la creatividad. En lugar de eso, mejora la creatividad
- Abstracción
- Anticipación al cambio mejorando la confianza del ingeniero en los resultados creativos, una vez que ellos
- Generalidad son críticamente analizados a la luz de una planificación rigurosa.
- Incrementalidad • El grado mas alto de rigurosidad es lo que llamamos Formalidad. Así, la formalidad
es un requerimiento más restrictivo que el rigor, requiere que el proceso de software
sea dirigido y evaluado por intermedio de leyes matemáticas.
• El ingeniero debe ser capaz de entender el nivel de rigurosidad y formalidad que
debe alcanzarse, dependiendo de la dificultad conceptual de la tarea y de su
criticidad. Incluso estos niveles pueden variar entre partes de un mismo sistema.
• La ventaja de la formalidad sobre el rigor es que la formalidad puede llegar a ser la
base para la mecanización o automatización del proceso.

© Ing. Christian Araujo González. T1-


T1-13 © Ing. Christian Araujo González. T1-
T1-14

Separación de Intereses Abstracción


• Este nos permite involucrarnos con diferentes aspectos individuales de un problema, • Es un proceso mediante el cual identificamos los aspectos importantes de un
de forma que podamos concentrarnos en ellos separadamente. fenómeno e ignoramos sus detalles. Lo que debemos considerar importante o detalle
•La única manera de administrar la complejidad de un proyecto es separar los depende del propósito de la abstracción.
diferentes aspectos. • Es una herramienta poderosa utilizada por ingenieros de todas las disciplinas para
•Hay varias formas de separar los interés: por tiempo, en términos de calidades, por manejar la complejidad.
vistas.
• Este principio es la base para la división del trabajo en un problema complejo en Anticipación al Cambio
asignaciones especificas de trabajo. • El software cambia constantemente.
Modularidad • Los cambios se deben tanto a la necesidad de reparar el software- eliminando
errores que no fueron detectados antes – como a la necesidad se apoyar la evolución
• Un sistema complejo puede ser dividido en partes más simples, llamadas módulos.
de la aplicación a medida que aparecen requerimientos nuevos o cambian los
• Un sistema que está compuesto por módulos se llama Modular.
requerimientos antiguos (mantenibilidad).
• El beneficio de este es que permite que la separación de contextos se pueda aplicar
•En muchos casos, se desarrolla una aplicación de software mientras sus
en dos fases: cuando se relaciona con los detalles de cada módulo aisladamente (e
requerimientos están todavía por entenderse.
ignorando detalles de otros módulos - cohesión), y cuando se relaciona con las
• Requiere que estén disponibles las herramientas para administrar las diferentes
características globales de todos los módulos y sus relaciones con la finalidad de
versiones y revisiones del software de una manera controlada.
integrarlos en un sistema coherente (acoplamiento). Si las dos fases son ejecutadas
en el orden mencionado, decimos que el diseño se llama bottom-up; el caso inverso
caracteriza al diseño top-down.
© Ing. Christian Araujo González. T1-
T1-15 © Ing. Christian Araujo González. T1-
T1-16
Generalidad 1.4. Evolución del Desarrollo de Software
• Cada vez que se pide a uno resolver un problema, se debe tratar de enfocar en el 1960
descubrimiento de un problema más general que puede estar oculto detrás del . Lenguajes de alto nivel.
problema propuesto. . Primeros métodos de concepción de sistema
• De forma más general, la solución a un problema generalizado tiene más potencial
1970
para poder ser reutilizada. . Programación estructurada.
• La generalidad es un principio fundamental si lo que se desea es desarrollar . Primeros conceptos de la ingeniería de software.
herramientas o paquetes software para uso amplio por parte del mercado. . Intento de estandarización en el entorno de bases de datos.
1975
Incrementalidad . Modelo Entidad-Relación.
• Caracteriza a un proceso que ocurre paso-a-paso, en incrementos. . Gran importancia a los datos.
. Diseño estructurado.
• La meta buscada es alcanzada por aproximaciones sucesivas a ella, cada
aproximación es alcanzada por un incremento en la aproximación anterior. 1980
. Primeras metodologías de análisis y diseño estructurado
• Si se aplica al software, significa que la aplicación es produccida como resultado de
(YOURDON, GANE&SARSON, WARNIER, JACKSON).
un proceso evolutivo. . Primeras metodologías que parten de una visión general del
• la motivación para la incrementalidad es que en la mayoría de los casos prácticos no sistema de información global.
hay forma de tener todos los requerimientos corregidos antes del desarrollo de la . Lenguajes de cuarta generación.
aplicación. . Herramientas que facilitan la utilización y documentación de
diagramas o modelos (CASE inicial).

© Ing. Christian Araujo González. T1-


T1-17 © Ing. Christian Araujo González. T1-
T1-18

1985 1.5. Responsabilidad Profesional y Ética


. Tecnología CASE integradas.
. Aproximación entre metodologías estructurada y sistemas
(Information Engineering). Actividades :
. Lenguajes de programación orientados a objetos.
- Lectura complementaria: Preguntas frecuentes acerca de la
1990 Ingeniería de Software.
. Primer intento de estandarización de metodologías.
. Diseño orientado a objetos. - Hacer un resumen de la lectura Responsabilidad Profesional y
. Metodologías de desarrollo orientado a objetos. ética.
1995
. Estructuras arquitectónicas distribuidas.
. Utilización de componentes.
. Primer intento de estandarización de los modelos OO UML

2000
. Auge de aplicación de arquitectura en tres capas (DCOM,
CORBA,etc).
. Desarrollo sobre WEB.
. Consolidación de UML.
. Proceso Unificado de Desarrollo
Futuro
. Metodologías ágiles.
© Ing. Christian Araujo González. T1-
T1-19 © Ing. Christian Araujo González. T1-
T1-20

También podría gustarte