fundamentos de ingeniería de software-unidad1

Upload: ranock-sanchez

Post on 11-Feb-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

  • 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.shtml
  • 7/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