7/23/2019 Fundamentos de Ingeniera de software-Unidad1
1/40
FUNDAMENTOS
DEINGENIERA DE
SOFTWARE
SEMESTREAGO-DIC 2012
M.C. Miriam Zulma SnchezHernndezJefe de Proyecto de Docencia
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
2/40
Competencias Especficas
Identificar la historia del software, as como lascaractersticas de los paradigmas estructurado y
orientado a objetos.
Aplicar modelos, tcnicas y herramientas para cada una
de las etapas del ciclo de vida de desarrollo de
software.
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
3/40
Competencias Previas
Utiliza algn lenguaje de
programacin orientado a objetos
Aplica razonamiento lgico
Identifica conceptos bsicos de Bases
de Datos
Aplica tcnicas de representacinalgortmica
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
4/40
Contenido Temtico
Fundamentos Ingeniera de software
Ingeniera de requisitos
Modelo de Anlisis
Modelo de Diseo
Modelo de Implementacin
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
5/40
Conceptos bsicos El papel evolutivo del software
Etapas del desarrollo software
Clasificacin de la tecnologa en eldesarrollo de software
(Tecnologa Estructurada yOrientada a Objetos)
Definicin e historia de lasherramientas CASE
Clasificacin de las herramientasCASE
UNIDAD I.
FundamentosIngeniera desoftware
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
6/40
Tpica apariencia del
estudiante promedio cuando
le preguntan acerca deIngeniera de Software
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
7/40
Introduccin
El trmino de Ingeniera de Softwarefue introducido a finales
de los 60 a raz de la crisis del software. Esta crisis fue el resultado
de la introduccin de la tercera generacin del hardware.
El hardware dejo de ser un impedimento para el desarrollo de
la informtica; redujo los costos y mejoro la calidad y eficiencia en el
software producido
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
8/40
Introduccin (continuacin)
La crisis se caracterizo por los siguientes problemas: Imprecisin en la planificacin del proyecto y estimacin de los
costos.
Baja calidad del software.
Dificultad de mantenimiento de programas con un diseo pocoestructurado, etc.
Por otra parte se exige que el software sea eficaz y baratotanto en el desarrollo como en la compra.
Tambin se requiere una serie de caractersticas comofiabilidad, facilidad de mantenimiento y de uso,eficiencia, etc.
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
9/40
2.1. DEFINICIN DE IS
Fritz Bauer, 1969: Ms que una disciplina o una parte delconocimiento, La Ingeniera es un verbo, una palabra de accin, un
modo de enfocar el problema.
La Ingeniera del Software es el establecimiento y uso de principios
robustos de la ingeniera a fin de obtener econmicamentesoftware
que sea fiable y que funcione eficientemente sobre maquinas reales.
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
10/40
DEFINICIN DE IS
Bohem, 1976: Ingeniera del Software es la aplicacin practica del conocimientocientfico en el diseo y construccin de programas de computadora y la
documentacin necesaria requerida para desarrollar, operar (funcionar) y
mantenerlos.
Mills, 1980: La Ingeniera de Software tiene como uno de sus principalesobjetivos la produccin de programas quecumplan las especificaciones, y que se
demuestren correctos, producidos en el plazo y costo adecuado
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
11/40
DEFINICIN DE IS
Meyer, 1988: La Ingeniera de Software es laproduccin de softwarede calidad.
IEEE 1993: La Ingeniera de Software es la aplicacin de un enfoquesistemtico, disciplinado y cuantificable hacia eldesarrollo, operacin
y mantenimiento del software; es decir, la aplicacin de Ingeniera
de Software.
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
12/40
Nuestro CONCEPTO:
La ingeniera de software es una aplicacin prctica del
conocimiento cientfico para proveer metodologas y tcnicasque ayuden a desarrollar sistemas de software a tiempo, y a su
vez que aseguren que el desarrollador cumpla con las
expectativas de calidad y permanezca dentro del presupuesto.
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
13/40
2.2. El papel evolutivo del Software
Los sistemas de software necesitan evolucionar
con las necesidades de los usuarios finales y el
ambiente de destino.
Los proyectos estn sujetos a cambios constantes.
Debido a que los requerimientos son complejos,necesitan ser actualizados cuando se descubren
errores y cuando los desarrolladores tienen una
mejor comprensin de la aplicacin.
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
14/40
2.2. El papel evolutivo del Software
El software cambia continuamente durante su periodo de vida como respuesta a los requerimientos cambiantes y
necesidades del usuario.
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
15/40
Desarrollo de SW vs ProcesoEvolutivo del Sw
El Desarrollo desoftware se considerauna actividad creativa
en la cual un sistema desoftware se desarrolladesde un conceptoinicial hasta que se
pone enfuncionamiento
El Proceso de Evolucindel software es el
proceso de cambio del
sistema una vez que seha puesto enfuncionamiento.
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
16/40
2.3. Etapas del Desarrollo de Software
Captura, anlisis y
Especificacin deRequisitos.
Diseo del Sistema
Codificacin del
software
Pruebas unitarias y
de integracin
Instalacin y paso
a produccin
Mantenimiento
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
17/40
Captura, Anlisis y Especificacin de Requisitos
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
18/40
Captura, Anlisis y Especificacin de Requisitos
Durante esta fase, se adquieren, renen y
especifican las caractersticas
funcionales y no
funcionales que deber
cumplir el futuro programa o sistema a desarrollar.
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
19/40
Captura, Anlisis y Especificacin de Requisitos
Involucra fuertemente al usuario o cliente del
sistema, por tanto tiene matices muy subjetivos y
es difcil de modelar con certeza o aplicar una
tcnica que sea la ms cercana a la adecuada(de hecho no existe la estrictamente adecuada).
El artefacto ms importante resultado de la
culminacin de esta etapa es lo que se conocecomo especificacin de requisitos software o
simplemente documento ERS.
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
20/40
Diseo del Sistema
Se basa en la especificacin de requisitosproducido por el anlisis de losrequerimientos (fase de anlisis), el diseo
define cmo estos requisitos se cumplirn, laestructura que debe darse al sistema desoftware para que se haga realidad.
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
21/40
Codificacin del Sistema
Consiste en llevar a cdigo
fuente, en el lenguaje de programacin
elegido, todo lo diseado en la fase anterior. Esta tarea la realiza el programador, siguiendo
por completo los lineamientos impuestos enel diseo y en consideracin siempre a losrequisitos funcionales y no funcionales (ERS)especificados en la primera etapa.
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
22/40
Pruebas Unitarias y de Integracin
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
23/40
Instalacin y paso a Produccin
La instalacin del software es el proceso por el cual losprogramas desarrollados son transferidosapropiadamente al computador destino, inicializados,y, eventualmente, configurados; todo ello con el
propsito de ser ya utilizados por el usuario final.
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
24/40
Mantenimiento
El mantenimiento de software es el proceso de
control, mejora y optimizacin del software yadesarrollado e instalado, que tambin incluyedepuracin de errores y defectos que puedanhaberse filtrado de la fase de pruebas de control
y beta test.
De un buen diseo y documentacin deldesarrollo depender cmo ser la fase de
mantenimiento, tanto en costo temporal comomonetario
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
25/40
2.4. Clasificacin de la tecnologaen el desarrollo de software
La ingeniera de software est compuesta poruna serie de pasos que abarcan los mtodos, lasherramientas y los procedimientos antesmencionados.
Estos pasos se denominan frecuentementeparadigmas de la ingeniera de software.
La eleccin de un paradigma para la ingeniera
de software se lleva a cabo de acuerdo con lanaturaleza del proyecto y de la aplicacin, losmtodos, herramientas a usar, los controles yentregas requeridos.
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
26/40
Paradigmas de la Ing. de Sw
Los paradigmas de la ingeniera desoftware se pueden dividir en enfoqueEstructurado y enfoque Orientado a
Objetos.
En ambos enfoques, se encuentran las
fases de Anlisis y Diseo, conteniendosus respectivas herramientas.
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
27/40
EL ENFOQUE ESTRUCTURADO
En el Enfoque Estructurado se usan losDFD(Diagrama de Flujo de Datos) comoprincipal herramienta para entender alsistema antes de plasmarlo a cdigofuente, el Diccionario de datos quecontiene las caractersticas lgicas de lossitios de almacenaje de datos del sistema,el Diseo de mdulospara simplificar elproblema, y la Descomposicin de
procesos para analizar por partes eldiseo.
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
28/40
EL ENFOQUE ORIENTADO AOBJETOS
El anlisis orientado a objetos (AOO) y el diseo orientado aobjetos (DOO) constituyen un enfoque distinto de desarrollode sistemas. Estas tcnicas se basan en los conceptos de laprogramacin orientada a objetos, que han sido codificadosen UML (Lenguaje Unificado de Modelacin), un lenguajeestandarizado de modelacin en el cual los objetosgenerados no solo incluyen cdigo referente a los datos sinotambin instrucciones acerca de las operaciones que serealizaran sobre los datos.
EL Paradigma Orientado a Objetos es una disciplina de
ingeniera de desarrollo y modelado de software que permiteconstruir ms fcilmente sistemas complejos a partir decomponentes individuales.
Objetos + Mensajes = Programa
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
29/40
Evaluacin
del clienteIngeniera
Construcc. Y
termin.
Anlisis
de
riesgosComun.
Con el
cliente
El modelo del proceso de OO
Planificacin
Identificar clases
candidatas
Buscar clases
en biblioteca
Extraer nuevas
Clases si
existen
Desarrollar las clases
Si no existenAnlisis OO
Diseo OO
Programacin OO
Pruebas OO
Aadir las
Nuevas clases
a la biblioteca
Construir n-sima
Iteracin del
sistema
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
30/40
HERRAMIENTAS CASE
Se puede definir a las Herramientas CASEcomo 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.
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
31/40
OBJETIVOSAutomatizar:
- El desarrollo del
software
- La documentacin- La generacin del
cdigo
- El chequeo deerrores
- La gestin del
proyecto
Permitir:- La reutilizacin del
software
- La portabilidad delsoftware
- La estandarizacin
de la documentacin
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
32/40
HISTORIA DE LASHERRAMIENTAS CASE
Desde el inicio de la escritura de software, ha
existido un conocimiento de la necesidad de
herramientas automatizadas para ayudar al
diseador del software.
Inicialmente, la concentracin estaba en
herramientas de apoyo a programas como
traductores, recopiladores, ensambladores,procesadores de macros, y montadores y
cargadores.
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
33/40
HISTORIA DE LASHERRAMIENTAS CASE
Este conjunto de aplicaciones que pueden
informatizarse, aument dramticamente en
un breve espacio de tiempo, causando una
gran demanda por nuevo software adesarrollar.
Esto fue reconocido como una crisis de
software. Para superar este problema en elproceso de desarrollo de software, se
introdujeron metodologas para intentar
crear estndares de desarrollo.
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
34/40
HISTORIA DE LASHERRAMIENTAS CASE
Hay tambin otra manera en la que la
industria se ha ayudado a superar las
dificultades de uso de esta tecnologa
disponible. La industria de computadorasha desarrollado un soporte automatizado
para el desarrollo y mantenimiento de
software. Este es llamado Computer AidedSoftware Engineering (CASE).
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
35/40
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
36/40
CLASIFICACIN
No existe una nica clasificacin de
herramientas CASE y, en ocasiones, es
difcil incluirlas en una clase
determinada.
Podran clasificarse atendiendo a:
- Las plataformas que soportan.
- Las fases del ciclo de vida del
desarrollo de sistemas que cubren.- La arquitectura de las aplicaciones
que producen.
- Su funcionalidad.
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
37/40
CLASIFICACIN (Amplitud)
TOOLKIT: Permiten automatizar un conjuntode tareas de algunas de las fases del ciclo devida del sistema informtico: Planificacinestratgica, Anlisis, Diseo, Generacin de
programas. WORKBENCH: Dan soporte a la
automatizacin del proceso completo dedesarrollo del sistema informtico. Permitencubrir el ciclo de vida completo. El productofinal aportado por ellas es un sistema encdigo ejecutable y su documentacin.
(
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
38/40
CLASIFICACIN (Segn fasesdel ciclo de vida que
automatizan)
UPPER CASE: Planificacin estratgica,
Requerimientos de Desarrollo Funcional de
Planes Corporativos.
MIDDLE CASE: Anlisis y Diseo.
LOWER CASE: Generacin de cdigo, test e
implantacin
http://www.monografias.com/trabajos4/proyinf/proyinf.shtmlhttp://www.monografias.com/trabajos4/proyinf/proyinf.shtml7/23/2019 Fundamentos de Ingeniera de software-Unidad1
39/40
CLASIFICACIN (Funcionalidad)
Herramientas de planificacin de Sistemas deGestin
Herramientas de Anlisis y Diseo
Herramientas de Programacin
Herramientas de integracin y pruebas
Herramientas de gestin de prototipos
Herramientas de mantenimiento
Herramientas de Gestin de proyectos
Herramientas de soporte
7/23/2019 Fundamentos de Ingeniera de software-Unidad1
40/40
Ejemplos
Top Related