Вы находитесь на странице: 1из 10

M.C. Brenda Escamilla Domínguez Fundamentos de Ing.

de Software

UNIDAD 1: FUNDAMENTOS DE INGENIERÍA DE SOFTWARE.

1.1 Conceptos Básicos

a) Ingeniería

• Es la profesión en la que el conocimiento de las ciencias naturales y matemáticas obtenidas


con el estudio, la práctica y la experiencia se aplica con juicio para desarrollar formas de utilizar
de modo económico, los materiales y fuerzas de la naturaleza para beneficio de la humanidad.

b) Software

• Es el conjunto de todos los programas que existen dentro de una computadora.

• Es el producto del desarrollo que realizan los ingenieros de software resultado de


requerimientos de información

.c) La Ingeniería de Software

• Es una disciplina de la Ingeniería que comprende todos los aspectos de la producción del
software desde las etapas iníciales de la especificación del sistema hasta el mantenimiento de
éste después de que se libera.

La Ingeniería de Software incluye:

• Personas (quién lo hace)

·Proceso (la manera en que se hace)

·Proyecto (la realización)

·Producto (la aplicación de artefactos)

 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 la actividad principal a


la hora de crear un software. 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.

1
M.C. Brenda Escamilla Domínguez Fundamentos de Ing. de Software

Los Ingenieros de Software deben:

· Adoptar un enfoque sistemático para llevar a cabo su trabajo.

· Utilizar las herramientas y técnicas apropiadas para resolver el problema planteado, de


acuerdo a las restricciones de desarrollo y a los recursos disponibles.

1.2 EL PAPEL EVOLUTIVO DEL SOFTWARE

El término fue introducido a fines del 60 y comienzo del 70, tras la crisis del software que se
caracterizó por:

• Imprecisión en la planificación del proyecto y estimación de los costos.

• Baja calidad del Software.

• Dificultad de mantenimiento de programas con un diseño poco estructurado, etc.

En las décadas de 1980 y 1990 dos tendencias dominaron la ingeniería de software:

• El florecimiento explosivo de aplicaciones, incluyendo las de Internet.

• El Nacimiento de nuevas herramientas y paradigmas (formas de pensamiento, como la


orientación a objetos).

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

(1950 – 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.

SEGUNDO ERA

(1965 – 1972)

2
M.C. Brenda Escamilla Domínguez Fundamentos de Ing. de Software

· 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

(1972 – 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

(1985 - 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

(2000 hasta hoy en día)

Utiliza algunos requisitos de las eras anteriores solo que aumenta la omnipresencia de la web,
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“.

3
M.C. Brenda Escamilla Domínguez Fundamentos de Ing. de Software

MITOS:
Mitos del Software Mitos: Son las creencias acerca del software y los procesos empleados para
realizarlo.

• Mitos de la Administración ·Mitos del Cliente ·Mitos del Desarrollador

DEL CLIENTE----

 Mito.- “Una declaración superficial de los objetivos es suficiente para empezar a


escribir los programas”.

 Realidad.- La mala definición inicial es la principal causa de baja calidad. Se requiere


un conocimiento formal y detallado de los hechos y procesos y amplia comunicación
con el cliente.

DE LOS DESARROLLADORES----

 Mito.- “Terminando de escribir el programa y haciendo que funcione, nuestro trabajo


habrá terminado”.

 Realidad.- Entre el 50 y 70% del esfuerzo total dedicado a un programa se realiza


después de entregarlo al cliente por primera vez.

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.

4
M.C. Brenda Escamilla Domínguez Fundamentos de Ing. de Software

1) Investigación preliminar:
• Parte de una solicitud de requerimiento de un sistema de información, tiene tres
partes:
a) Aclaración de la Solicitud
b) Estudio de Factibilidad: Técnica, Económica, Operacional
c) Aprobación de la Solicitud
2) Análisis de requerimientos:
 Comprender todas las facetas importantes de la parte de la empresa bajo estudio:
a) ¿Qué es lo que hace?
b) ¿Cómo se hace?
c) ¿Con qué frecuencia se presenta?
d) Volumen de transacciones o decisiones
e) Grado de eficiencia de las tareas
f) ¿Existe algún problema?
g) ¿Qué tan serio y causa que lo origina?
3) Diseño del sistema:
• Plasma en un modelo los detalles que establecen la forma en la que el sistema
cumplirá con los requerimientos identificados durante la fase de análisis
4) Desarrollo de Software:
• Se puede instalar software comprado (software genérico) o escribir programas
diseñados a la medida del solicitante (software personalizado)
• La elección depende del costo, tiempo y disponibilidad de programadores.
5) Pruebas:
• En esta fase, el sistema se emplea de manera experimental para asegurarse que el
software no tenga fallas, es decir, que funcione de acuerdo a las especificaciones del
usuario y en la forma en que los usuarios esperan que lo haga.
6) Implementación: Es el proceso de: Verificar e Instalar nuevo equipo, capacitar a
usuarios, instalar la aplicación y dejar “montada” toda la infraestructura para su
aplicación
1.4 CLASIFICACIÓN DE LA TECNOLOGÍA DE DESARROLLO DEL SOFTWARE (Tecnología
Estructurada y Orientada a Objetos)

Tecnología estructurada

Programación Estructurada es una técnica en la cual la estructura de un programa, esto es, la


interpelación de sus partes realiza tan claramente como es posible mediante el uso de tres
estructuras lógicas de control:

 ·Secuencia: Sucesión simple de dos o más operaciones.

 ·Selección: bifurcación condicional de una o más operaciones.

 ·Interacción: Repetición de una operación mientras se cumple una condición.

Estos tres tipos de estructuras lógicas de control pueden ser combinados para producir
programas que manejen cualquier tarea de procesamiento de información. Un programa
estructurado está compuesto de segmentos, los cuales puedan estar constituidos por unas
pocas instrucciones o por una página o más de codificación. Cada segmento tiene solamente
una entrada y una salida, estos segmentos, asumiendo que no poseen lazos infinitos y no tienen

5
M.C. Brenda Escamilla Domínguez Fundamentos de Ing. de Software

instrucciones que jamás se ejecuten, se denominan programas propios. Cuando varios


programas propios se combinan utilizando las tres estructuras básicas de control mencionadas
anteriormente, el resultado es también un programa propio.

La programación Estructurada está basada en el Teorema de la Estructura, el cual establece que


cualquier programa propio (un programa con una entrada y una salida exclusivamente) es
equivalente a un programa que contiene solamente las estructuras lógicas mencionadas
anteriormente.

Una característica importante en un programa estructurado es que puede ser leído en


secuencia, desde el comienzo hasta el final sin perder la continuidad de la tarea que cumple el
programa, lo contrario de lo que ocurre con otros estilos de programación. Esto es importante
debido a que, es mucho más fácil comprender completamente el trabajo que realiza una función
determinada, si todas las instrucciones que influyen en su acción están físicamente contiguas y
encerradas por un bloque. La facilidad de lectura, de comienzo a fin, es una consecuencia de
utilizar solamente tres estructuras de control y de eliminar la instrucción de desvío de flujo de
control, excepto en circunstancias muy especiales tales como la simulación de una estructura
lógica de control en un lenguaje de programación que no la posea.

VENTAJAS POTENCIALES:

Un programa escrito de acuerdo a estos principios no solamente tendrá una estructura, sino
también una excelente presentación. Un programa escrito de esta forma tiende a ser mucho
más fácil de comprender que programas escritos en otros estilos. La facilidad de comprensión
del contenido de un programa puede facilitar el chequeo de la codificación y reducir el tiempo
de prueba y depuración de programas. Esto último es cierto parcialmente, debido a que la
programación estructurada concentra los errores en uno de los factores más generador de fallas
en programación: la lógica.

Un programa que es fácil para leer y el cual está compuesto de segmentos bien definidos tiende
a ser simple, rápido y menos expuesto a mantenimiento. Estos beneficios derivan en parte del
hecho que, aunque el programa tenga una extensión significativa, en documentación tiende
siempre a estar al día, esto no suele suceder con los métodos convencionales de programación.

La programación estructurada ofrece estos beneficios, pero no se la debe considerar como una
panacea ya que el desarrollo de programas es, principalmente, una tarea de dedicación,
esfuerzo y creatividad.

Tecnología Orientada a Objetos

Lenguajes de Programación Orientado a Objetos

En 1985, E. Stroustrup extendió el lenguaje de programación C a C++, es decir C con conceptos


de clases y objetos, también por esas fechas se creó desde sus bases el lenguaje EIFFEL.

En 1995 apareció el más reciente lenguaje OO, Java desarrollado por SUN, que hereda
conceptos de C++.

El lenguaje de desarrollo más extendido para aplicaciones Web, el PHP 5, trae todas las
características necesarias para desarrollar software orientado a objetos.

6
M.C. Brenda Escamilla Domínguez Fundamentos de Ing. de Software

Además de otros lenguajes que fueron evolucionando, como el Pascal a Delphi. Finalmente
también otros lenguajes script como el ActionScript que si bien no es totalmente orientado a
objetos pero sí posee las características.

La programación orientada a objetos es una de las formas más populares de programar y viene
teniendo gran acogida en el desarrollo de proyectos de software desde los últimos años. Esta
acogida se debe a sus grandes capacidades y ventajas frente a las antiguas formas de programar.

Hoy en día la tecnología orientada a objetos ya no se aplica solamente a los lenguajes de


programación, además se viene aplicando en el análisis y diseño con mucho éxito, al igual que
en las bases de datos. Es que para hacer una buena programación orientada a objetos hay que
desarrollar todo el sistema aplicando esta tecnología, de ahí la importancia del análisis y el
diseño orientado a objetos.

Ventajas:

· Fomenta la reutilización y extensión del código.

· Permite crear sistemas más complejos.

· Relacionar el sistema al mundo real.

· Facilita la creación de programas visuales.

· Construcción de prototipos

· Agiliza el desarrollo de software

· Facilita el trabajo en equipo

· Facilita el mantenimiento del software

Lo interesante de la POO es que proporciona conceptos y herramientas con las cuales se modela
y representa el mundo real tan fielmente como sea posible.

El modelo Orientado a Objetos

· Objetos

· Clases

· Herencia

· Envío de mensajes

1.4 DEFINICIÓN E HISTORIA DE LAS HERRAMIENTAS CASE

Las [[herramientas CASE]] (Computer Aided Software Engineering, Ingeniería de Software


Asistida por Ordenador) son diversas aplicaciones informáticas destinadas a aumentar la
productividad en el desarrollo de software reduciendo el coste de las mismas en términos de
tiempo y de dinero. Estas herramientas nos pueden ayudar en todos los aspectos del ciclo de
vida de desarrollo del software en tareas como el proceso de realizar un diseño del proyecto,
cálculo de costes, implementación de parte del código automáticamente con el diseño dado,
compilación automática, documentación o detección de errores entre otras.

Es un sistema de software que intenta proporcionar ayuda automatizada a las actividades del
proceso de software. Los sistemas CASE a menudo se utilizan como apoyo al método. La primera

7
M.C. Brenda Escamilla Domínguez Fundamentos de Ing. de Software

herramienta CASE como hoy la conocemos fue Exceleratoren 1984 , era para PC . Actualmente
la oferta de herramientas CASE es muy amplia y tenemos por ejemplo el EASYCASE o
WINPROJECT .

1.6. Clasificación de las herramientas CASE

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 clasificación basada en las fases del ciclo de desarrollo cubre:

· 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 meta modelo 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.

Por funcionalidad podríamos diferenciar algunas como:

· Herramientas de generación semiautomática de código.


· Editores UML.
· Herramientas de Refactorización de código.
· Herramientas de mantenimiento como los sistemas de control de versiones.

8
M.C. Brenda Escamilla Domínguez Fundamentos de Ing. de Software

1.7 OTROS CONCEPTOS

PARADIGMA:
Existe una infinidad de definiciones de lo que es un paradigma. Un paradigma es un
determinado marco desde el cual miramos el mundo, lo comprendemos, lo
interpretamos e intervenimos sobre él. Abarca desde el conjunto de conocimientos
científicos que imperan en una época determinada hasta las formas de pensar y de
sentir de la gente en un determinado lugar y momento histórico.
Adam Smith define paradigma, en su libro “Los poderes de la mente”, como “un
conjunto compartido de suposiciones. Es la manera como percibimos el mundo: agua
para el pez. El paradigma nos explica el mundo y nos ayuda a predecir su
comportamiento".

En nuestro contexto, el paradigma debe ser concebido como una forma aceptada de
resolver un problema en la ciencia, que más tarde es utilizada como modelo para la
investigación y la formación de una teoría. También, el paradigma debe ser concebido
como un conjunto de métodos, reglas y generalizaciones utilizadas conjuntamente por
aquellos entrenados para realizar el trabajo científico de investigación.
En nuestro contexto, los paradigmas de programación nos indican las diversas formas
que, a lo largo de la evolución de los lenguajes, han sido aceptadas como estilos para
programar y para resolver los problemas por medio de una computadora.
Definición de Paradigma: Para la Ingeniería de Software el paradigma es una
agrupación de métodos, herramientas y procedimientos con el fin de describir u modelo.
Un "paradigma" es un modelo para comprender la realidad, que nos permite
relacionarnos con el mundo circundante y tener un sentido de identidad dentro de lo
que percibimos que es "el mundo real".
Fases Generales del Proceso de Desarrollo de Software:
Independientemente del procedimiento de desarrollo, la aplicación del software y el
tamaño del proyecto; el desarrollo de software contiene tres fases genéricas definición,
desarrollo y mantenimiento, desde la concepción de desarrollo estructurado de
software.

Paradigmas de la Ingeniería de Software:

La ingeniería del Software define paradigmas de desarrollo estructurado como base a


seguir en un proyecto de Software. Si ninguno de estos paradigmas se adecua al
problema por resolver, entonces el desarrollador se verá obligado a combinar los
paradigmas o definir uno nuevo.

9
M.C. Brenda Escamilla Domínguez Fundamentos de Ing. de Software

Para resolver los problemas reales de una industria, un ingeniero del software o un
equipo de ingenieros deben incorporar una estrategia de desarrollo que acompañe al
proceso, métodos, capas de herramientas.
La estrategia a menudo se llama modelo de proceso o paradigma de ingeniería del
software. Se selecciona un modelo de proceso para la ingeniería del software según la
naturaleza del proyecto y de la aplicación, los métodos y las herramientas a utilizarse, y
los controles y entregas que se requieren.
Raccoon [RAC95] sugiere un << modelo del caos >> que describa el << desarrollo del
software como una extensión desde le usuario hasta el desarrollador y la tecnología >>.
Conforme progresa el trabajo hacia un sistema completo, las etapas descritas
anteriormente se aplican recursivamente a las necesidades, del usuario y a la
especificación técnica del desarrollador del software.

INGENIERIA DE SOFTWARE:
 La ingeniería de software surge de la ingeniería de sistemas y de hardware.
Abarca un conjunto de tres elementos que facilitan el control sobre el proceso de
desarrollo de software y suministran las bases para construir software de calidad
de una forma productiva:
• Métodos
• Herramientas
• Procedimientos
MÉTODO:
indican cómo construir el software técnicamente e incluyen un amplio espectro de
métodos para la planificación, la estimación, el análisis, el diseño, codificación, prueba
y mantenimiento

HERRAMIENTA:
automáticas y semiautomáticas que apoyan a la aplicación de los métodos. Cuando se integran
las herramientas de forma que la información creada por una herramienta puede ser usada por
otra, se establece un sistema para el soporte del desarrollo de software, llamado Ingeniería de
Software Asistida por Computadora ( CASE ).

PROCESO:
definen la secuencia en la que se aplican los métodos, las entregas, los controles de
calidad y guías para evaluación del progreso.

CALIDAD:
Conjunto de propiedades y de características de un producto o servicio, que le confieren aptitud
para satisfacer unas necesidades implícitas o explícitas.

10

Вам также может понравиться