Tecnologías de la Información. Software Programas



Documentos relacionados
Elementos requeridos para crearlos (ejemplo: el compilador)

CORPORACIÓN MEXICANA DE INVESTIGACIÓN EN MATERIALES, S.A. DE CV

Entre los más conocidos editores con interfaz de desarrollo tenemos:

Algoritmos y programas

Plan de estudios ISTQB: Nivel Fundamentos

Describir una metodología sistemática de análisis de los procesos organizacionales y cómo estos pueden ser apoyados por las TI.

.NET y J2EE VALORACIÓN Y COMPARACIÓN DE LOS ELEMENTOS DE LAS DOS PLATAFORMAS. Definiciones...2 C# y Java...3 Similitudes...4 Ventajas...

Software de sistema: Programas genéricos que permiten gestionar los recursos del ordenador.

La utilización de las diferentes aplicaciones o servicios de Internet se lleva a cabo respondiendo al llamado modelo cliente-servidor.

Estándares para el Uso de Herramientas de Desarrollo y Plataformas de Aplicaciones Web

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología

Capítulo 5. Cliente-Servidor.

ANEXO 26-A COMITÉ PERMANENTE DE INTERPRETACIÓN SIC N 32 ACTIVOS INTANGIBLES COSTOS DE SITIOS WEB. (Modificada en 2008) (IV Difusión)

3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON)

Ingº CIP Fabian Guerrero Medina Master Web Developer-MWD

APOLO GESTION INTEGRAL.

PRUEBAS DE SOFTWARE TECNICAS DE PRUEBA DE SOFTWARE

e-commerce, es hacer comercio utilizando la red. Es el acto de comprar y vender en y por medio de la red.

M.T.I. Arturo López Saldiña

CAPÍTULO 3 VISUAL BASIC

INTRODUCCIÓN A LA PROGRAMACIÓN WEB UNIDAD. Estructura de contenidos: cisvirtual@ucv.edu.pe. 1.

Capítulo I. Definición del problema y objetivos de la tesis. En la actualidad Internet se ha convertido en una herramienta necesaria para todas

SAP BusinessObjects Edge BI Standard Package La solución de BI preferida para. Empresas en Crecimiento

Modelo para el Aseguramiento de Calidad en el Desarrollo de Software Libre

A continuación resolveremos parte de estas dudas, las no resueltas las trataremos adelante

IMPLANTACIÓN DE QUIVIR EN ANDEL AUTOMOCIÓN

TEMA 3. EL PROCESO DE COMPILACIÓN, DEL CÓDIGO FUENTE AL CÓDIGO MÁQUINA

Enginyeria del Software III

DE VIDA PARA EL DESARROLLO DE SISTEMAS

Software Computacional y su clasificación

Arquitectura de Aplicaciones

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos

Universidad acional Experimental Del Táchira Decanato de Docencia Departamento de Ingeniería en Informática

INGENIERÍA DE SOFTWARE. Sesión 3: Tipos

Capitulo III. Diseño del Sistema.

CAPÍTULO 1 Instrumentación Virtual

CICLO DE VIDA DEL SOFTWARE

Planificación en Team Foundation Server 2010

Capítulo VI. Estudio de Caso de Aplicación del Integrador de Información Desarrollado

"Diseño, construcción e implementación de modelos matemáticos para el control automatizado de inventarios

Bloque II. Elementos del lenguaje de programación Java

pymegnu v2.0 PRESENTACIÓN DE PRODUCTOS

Sistema PYMES Ventas e Inventarios H&S

GUIA SOBRE LOS REQUISITOS DE LA DOCUMENTACION DE ISO 9000:2000

2 EL DOCUMENTO DE ESPECIFICACIONES

Modulo I. Introducción a la Programación Web. 1.1 Servidor Web.

AUDITORIA A AMBIENTES DE DESARROLLO, APLICACIONES EN PRODUCCION, SERVICIOS DE TI, CONTRATACION DE RECURSOS DE TI. VIVIANA GÓMEZ BARCO PRESENTADO A:

Traslado de Data Center

Control del Stock, aprovisionamiento y distribución a tiendas.

Workflows? Sí, cuántos quiere?

REGISTRO DE PEDIDOS DE CLIENTES MÓDULO DE TOMA DE PEDIDOS E INTEGRACIÓN CON ERP

Gestión de la Configuración

Software Útil para Todos. Desarrollado por:

FUENTES SECUNDARIAS INTERNAS

<Generador de exámenes> Visión preliminar

OpenERP - Web Es completo Es potente Es flexible Es libre Es accesible

comunidades de práctica

Sistema de marketing de proximidad

Presentación de servicios

UN ENTORNO A MEDIDA PARA EL DISEÑO Y LA SIMULACIÓN DE MAQUINARIA POR COMPUTADOR

Proceso Unificado de Rational PROCESO UNIFICADO DE RATIONAL (RUP) El proceso de desarrollo de software tiene cuatro roles importantes:

App para realizar consultas al Sistema de Información Estadística de Castilla y León

COLEGIO COMPUESTUDIO

Brindamos asesorías que involucran tecnología y personal calificado, estos hacen de DOCTUM su mejor aliado.

1. INTRODUCCIÓN Y OBJETIVOS

IMPACTO DEL DESARROLLO TECNOLOGICO EN LA AUDITORIA

ADMINISTRACIÓN DE PROYECTOS

Informática I para Bachillerato

Integración de AuraPortal con SAP

LLEVE SU NEGOCIO al SIGUIENTE NIVEL. digitalice todos sus documentos y procesos.

Estructura de Bases de datos. Leonardo Víquez Acuña

TeCS. Sistema de ayuda a la gestión del desarrollo de producto cerámico

Mantenimiento de Sistemas de Información

Modificación y parametrización del modulo de Solicitudes (Request) en el ERP/CRM Compiere.

Instituto Tecnológico de Celaya

Sistemas de Gestión de Calidad. Control documental

IAP TÉCNICAS DE AUDITORÍA APOYADAS EN ORDENADOR (TAAO)

Informática 4º ESO Tema 1: Sistemas Informáticos. Sistemas Operativos (Parte 2)

PRESENTACIÓN DEL PRODUCTO

Novedades en Q-flow 3.02

FAMILIA PROFESIONAL: Informática y Comunicación CICLO SUPERIOR DESARROLLO DE APLICACIONES MULTIMEDIA DAM 350 HORAS

1 GLOSARIO. Actor: Es un consumidor (usa) del servicio (persona, sistema o servicio).

LA LOGÍSTICA COMO FUENTE DE VENTAJAS COMPETITIVAS

Ingeniería de Software. Pruebas

1 El trabajo expuesto está subvencionado por el proyecto de la URJC PGRAL-2001/14

Tópicos Avanzados de Análisis y Diseño INGENIERIA DE SOFTWARE ING. MA. MARGARITA LABASTIDA ROLDÁN

PROCEDIMIENTO ESPECÍFICO. Código G Edición 0

Sistema de diseño y seguimiento de Procesos WT - WorkFlow.

Soporte Técnico de Software HP

PLAN DE CONVERGENCIA PROYECTO Nº 32-A

IIC Introducción a la Programación -

Uso de Visual C++ Pre-Practica No. 3

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

Presentación y Planificación del Proyecto: Administración de Calzado

Edición de Ofertas Excel Manual de Usuario

SIC 32 Activos Intangibles Costos de Sitios Web

Internet Information Server


Transcripción:

Desarrollo versus Compra Como hemos visto hay una enorme variedad de aplicaciones ya desarrolladas en el mercado y lista para ser usadas. Cuándo tiene sentido desarrollar una nueva aplicación y cuando tiene sentido comprar una aplicación ya desarrollada?. Cuáles son las ventajas e inconvenientes de cada una de estas opciones?. El software Desarrollado a Medida (también conocido como de software a medida o software hecho a medida) es un software que está especialmente desarrollado para alguna organización específica o usuario. Como tal, se puede poner en contraste con el uso de paquetes de software desarrollados para el mercado de masivo, como el uso de software comercial (COTS : Comercial Off The Shell) o el software libre existente. El Software Comercial o Commercial Off The Shelf Software (COTS) es un software preconstruido generalmente de un proveedor tercero. COTS se pueden adquirir, arrendar o incluso con licencia a el público en general.

Factores Paquete Desarrollo Duración de Proyecto (Time to Market) Desarrollo versus Compra Coste Inicial Estandarización y Buenas Practicas Ajuste a las Necesidades Especificas Infraestructura Técnica y Funciones Básicas Flexibilidad (una vez terminado) Número de Fallos Propiedad / Dependencia del Fabricante Incorporación de Mejoras Coste Fijo de Mantenimiento

Desarrollo versus Compra Desarrollo Completo Librerías y Frameworks COTS Adaptado COTS Como es Duración de Proyecto (Time to Market) Coste Inicial Estandarización y Buenas Practicas Coste Fijo de Mantenimiento

Herramientas de Desarrollo Un programa informático es un conjunto de instrucciones que una vez ejecutadas realizarán una o varias tareas en una computadora. Una herramienta de desarrollo de software es un programa informático que usa un programador para crear, depurar, gestionar o mantener un programa. Las únicas instrucciones que es capaz de ejecutar un procesador son las de su juego de instrucciones (ISA) en lenguaje maquina (binario). El lenguaje de programación más cercano al lenguaje maquina es el ensamblador, donde cada instrucción en ensamblador corresponde a una instrucción en lenguaje máquina.

Lenguaje Ensamblador El lenguaje ensamblador, o assembler (assembly language en inglés), es un lenguaje de programación de bajo nivel para los computadores, microprocesadores, microcontroladores y otros circuitos integrados programables. Implementa una representación simbólica de los códigos de máquina binarios y otras constantes necesarias para programar una arquitectura dada de una CPU y constituye la representación más directa del código máquina específico para cada arquitectura legible por un programador. Esta representación es usualmente definida por el fabricante de hardware,y está basada en los mnemónicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones de memoria y otras características del lenguaje. Un lenguaje ensamblador es por lo tanto específico de cierta arquitectura de computador física (o virtual). Esto está en contraste con la mayoría de los lenguajes de programación de alto nivel, que idealmente son portátiles. Muestra de código de máquina y lenguaje assembler. El código de máquina se resalta en rojo, el código assembler en magenta y las direcciones de memoria donde se encuentra el código, en azul.

Lenguajes de Programación de Alto Nivel Un lenguaje de programación es un lenguaje formal diseñado para expresar procesos que pueden ser llevados a cabo por máquinas como las computadoras. Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana. [1] Un lenguaje de programación de alto nivel se caracteriza por expresar los algoritmos de una manera adecuada a la capacidad cognitiva humana, en lugar de la capacidad ejecutora de las máquinas. Los lenguajes de alto nivel se crearon para que el usuario común pudiese solucionar un problema de procesamiento de datos de una manera más fácil y rápida. Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila (de ser necesario) y se mantiene el código fuente de un programa informático se le llama programación. Hay unos 2.500 lenguajes de programación registrados.

Lenguajes de Programación de Alto Nivel Estos lenguajes son los mas utilizado por los programadores. Están diseñados para que las personas escriban y entiendan los programas de un modo mucho mas fácil que los lenguajes máquina y ensamblador. Un programa escrito en lenguaje de alto nivel es independiente de la máquina (las instrucciones no dependen del diseño del hardware o de una computadora en particular), por lo que estos programas son portables o transportables. Los programas escritos en lenguaje de alto nivel pueden ser ejecutados con poca o ninguna modificación en diferentes tipos de computadoras. Son lenguajes de programación en los que las instrucciones enviadas para que el ordenador ejecute ciertas órdenes son similares al lenguaje humano. Dado que el ordenador no es capaz de reconocer estas ordenes, es necesario el uso de un mecanismo que traduzca el lenguaje de alto nivel a un lenguaje de bajo nivel que el sistema pueda entender.

Lenguajes de Programación de Alto Nivel Existen dos tipos principales de traductores de los lenguajes de programación de alto nivel: Compilador, que analiza el programa fuente y lo traduce a otro equivalente escrito en otro lenguaje (por ejemplo, en el lenguaje de la máquina). Su acción equivale a la de un traductor humano, que toma un libro y produce otro equivalente escrito en otra lengua. Intérprete, que analiza el programa fuente y lo ejecuta directamente, sin generar ningún código equivalente. Su acción equivale a la de un intérprete humano, que traduce las frases que oye sobre la marcha, sin producir ningún escrito permanente.

Lenguajes de Programación de Alto Nivel Intérpretes y compiladores tienen diversas ventajas e inconvenientes que los hacen complementarios: Un intérprete facilita la búsqueda de errores, pues la ejecución de un programa puede interrumpirse en cualquier momento para estudiar el entorno (valores de las variables, etc.). Además, el programa puede modificarse sobre la marcha, sin necesidad de volver a comenzar la ejecución. Un compilador suele generar programas más rápidos y eficientes, ya que el análisis del lenguaje fuente se hace una sola vez, durante la generación del programa equivalente. En cambio, un intérprete se ve obligado generalmente a analizar cada instrucción tantas veces como se ejecute (incluso miles o millones de veces). Un intérprete permite utilizar funciones y operadores más potentes, como por ejemplo ejecutar código contenido en una variable en forma de cadenas de caracteres. Usualmente, este tipo de instrucciones es imposible de tratar por medio de compiladores. Los lenguajes que incluyen este tipo de operadores y que, por tanto, exigen un intérprete, se llaman interpretativos. Los lenguajes compilativos, que permiten el uso de un compilador, prescinden de este tipo de operadores. Esquema Compilado Interpretado de Java

Lenguajes de Programación de Alto Nivel

Lenguajes de Programación de Alto Nivel

Lenguajes de Programación de Alto Nivel Lenguajes normalmente Interpretados Perl PHP Javascript Logo ASP Python Tcl Ruby J# Lenguajes normalmente Compilados Fortran C, C++ y Objective C Ada Pascal (y Delphi) Algol Haskell

Paradigmas de Programación Un paradigma de programación es un estilo básico de programación de ordenadores, una forma de construcción de la estructura y los elementos de los programas de ordenador. Algunos lenguajes de programación están diseñados para apoyarse en un paradigma determinado, mientras que otros lenguajes de programación admiten varios paradigmas. Los diseñadores de software y programadores deciden cómo utilizar esos elementos paradigmáticos. Existen muchos paradigmas de programación diferentes, cada uno de ellos tiene sus propias características y tratan de solucionar los problemas clásicos del desarrollo de software desde diferentes perspectivas y filosofías.

Paradigmas de Programación Los programas imperativos son un conjunto de instrucciones que le indican al ordenador cómo realizar una tarea. En muchos sentidos la programación imperativa es la programación natural para las CPUs que se basan en ese paradigma al nivel más básico. La programación declarativa describe la lógica de computación necesaria para resolver un problema sin describir un flujo de control de ningún tipo. Efectivamente, en la programación declarativa no es necesario definir algoritmos puesto que se detalla la solución del problema en lugar de como llegar a esa solución.

Paradigmas de Programación En un fichero de clientes buscar el nombre del cliente que tiene el DNI 16.111.111 Ejemplo Leer el 1º registro del FICHERO Mientras el DNI del registro leído sea diferente de 16.111.111 Leer el siguiente registro del FICHERO Fin Mientras Mostrar el NOMBRE del registro leído Imperativo Seleccionar NOMBRE del FICHERO donde DNI es igual a 16.111.1111 SQL : (Select NOMBRE from FICHERO where DNI=16111111) Declarativo

Paradigmas de Programación La programación orientada a objetos es una forma de programación imperativa puesto que al programar orientando a objetos se describe la secuencia que debe seguir el programa para resolver un problema dado. La diferencia con otras formas de programación imperativas como la programación estructurada es que en la orientación a objetos se hace uso de estructurasde datos llamadas objetos que aglutinan propiedades y métodos conjuntamentecon sus interacciones. En lugar de tener programas con estructuras como el código y los datos por separado, un sistema orientado a objetos integra los dos usando el concepto de un "objeto". Un objeto tiene estado (datos) y el comportamiento ( código). Los objetos corresponden a cosas que se encuentran en el mundo real. Así, por ejemplo, un programa de gráficos tendrá objetos como círculo, cuadrado, menú. Un sistema de compras en línea tendrá que objetos tales como el carro de compras, clientes y productos. El sistema de compra soportará conductas como realizar el pedido, hacer el pago, y ofrecer el descuento. Los objetos están diseñados como jerarquías de clases. Así, por ejemplo, con el sistema de compras que puede haber clases de alto nivel, tales como productos electrónicos, productos de la cocina, y libros. Es posible que haya más tipos de productos electrónicos : Reproductor de CD, reproductor de DVD, etc Estas clases y subclases corresponden a los conjuntos y subconjuntos en la lógica matemática. Los objetivos de la programación orientada a objetos son: Mayor comprensión Facilidad de mantenimiento Facilidad de evolución.

Lenguajes de Programación de Alto Nivel Fortran : (contracción del inglés Formula Translating System) esunlenguaje de programación alto nivel de propósito general, [2] procedimental [3] e imperativo, que está especialmente adaptado al cálculo numérico yala computación científica. Desarrollado originalmente por IBMen1957. COBOL :(acrónimo de COmmon Business Oriented Language, Lenguaje Común Orientado a Negocios) fue creado enelaño 1959conelobjetivo decrearunlenguaje de programación universalque pudiera ser usado en cualquier ordenador, ya que en los años 1960 existían numerosos modelos de ordenadores incompatibles entre sí, y que estuviera orientado principalmente a los negocios, es decir, alallamadainformática de gestión. Basic/Visual Basic :siglasdebeginner's All purpose Symbolic Instruction Code [1] (Código simbólico de instrucciones de propósito general para principiantes en español), es una familia de lenguajes de programación de alto nivel. ElBASICoriginal,elDartmouth BASIC, fue diseñado en 1964 por John George Kemeny y Thomas Eugene Kurtz en el Dartmouth College en New Hampshire, Estados Unidos, como un medio para facilitar programar computadores a estudiantes (y profesores) que no fueran de ciencias.

Lenguajes de Programación de Alto Nivel C es un lenguaje de programación creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje B,asuvezbasadoenBCPL.AligualqueB,esunlenguajeorientadoala implementación de Sistemas Operativos, concretamente Unix. C es apreciado por la eficiencia del código que produce y es el lenguaje de programación más popular para crear software de sistemas, aunque también se utiliza para crear aplicaciones. Se trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de medio nivel pero con muchas características de bajo nivel. C++ es un lenguaje de programación diseñado a mediados de los años 1980 por Bjarne Stroustrup. La intención de su creación fue el extender al exitoso lenguaje de programación C con mecanismos que permitan la manipulación de objetos. C# (pronunciado si sharp en inglés) es un lenguaje de programación orientado a objetos desarrollado y estandarizado por Microsoft comopartedesuplataforma.net, que después fue aprobado como un estándar por la ECMA (ECMA 334) e ISO (ISO/IEC 23270). C# es uno de los lenguajes de programación diseñados para la infraestructura de lenguaje común. Su sintaxis básica deriva de C/C++ y utiliza el modelo de objetos de la plataforma.net, similar al de Java, aunque incluye mejoras derivadas de otros lenguajes.

Lenguajes de Programación de Alto Nivel Java :El lenguaje de programación Java fue originalmente desarrollado por James Gosling de Sun Microsystems (la cual fue adquirida por la compañía Oracle) y publicado en 1995 como un componente fundamental de la plataforma Java de Sun Microsystems. Su sintaxis deriva mucho de C y C++, pero tiene menos facilidades de bajo nivel que cualquiera de ellos. Las aplicaciones de Java son generalmente compiladas a bytecode (clase Java) que puede ejecutarse en cualquier máquina virtual Java (JVM) sin importar la arquitectura de la computadora subyacente. Es un lenguaje de programación de propósito general, concurrente, orientado a objetos y basado en clases que fue diseñado específicamente para tener tan pocas dependencias de implementación como fuera posible. Su intención es permitir que los desarrolladores de aplicaciones escriban el programa una vez y lo ejecuten en cualquier dispositivo. JavaScript (abreviado comunmente "JS") es un lenguaje de programación interpretado, dialectodel estándar ECMAScript. Se define como orientado a objetos, [3] basado en prototipos, imperativo, débilmente tipado y dinámico. Se utiliza principalmente en su forma del lado del cliente (client side), implementado como parte de un navegador web permitiendo mejoras en la interfaz de usuario y páginas web dinámicas [4] aunque existe una forma de JavaScript del lado del servidor (Server side JavaScript o SSJS). Su uso en aplicaciones externas a la web, por ejemplo en documentos PDF, aplicaciones de escritorio (mayoritariamente widgets) es también significativo. JavaScript se diseñó con una sintaxis similar al C, aunque adopta nombres y convenciones del lenguaje de programación Java. Sin embargo Java y JavaScript no están relacionados y tienen semánticas y propósitos diferentes.

Lenguajes de Programación de Alto Nivel Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis muy limpia y que favorezca un código legible. Se trata de un lenguaje de programación multiparadigma, ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional.esunlenguaje interpretado,usatipado dinámico yesmultiplataforma. PHP es un lenguaje de programación de uso general de código del lado del servidor originalmente diseñado para el desarrollo web de contenido dinámico. Fue uno de los primeros lenguajes de programación del lado del servidor que se podían incorporar directamente en el documento HTML en lugar de llamar a un archivo externo que procese los datos. Puede ser usado en la mayoría de los servidoreswebaligualqueencasitodoslossistemas operativos y plataformas sin ningún costo. Fue creado originalmente por Rasmus Lerdorf en 1995. Ruby es un lenguaje de programación interpretado, reflexivo y orientado a objetos, creadoporel programador japonés Yukihiro "Matz" Matsumoto, quien comenzó a trabajar en Ruby en 1993, y lo presentó públicamente en 1995. Combina una sintaxis inspirada en Python y Perl con características de programación orientada a objetos similares a Smalltalk. Comparte también funcionalidad con otros lenguajes de programación como Lisp, Lua, Dylan y CLU. Rubyesunlenguajedeprogramación interpretado en una sola pasada y su implementación oficial es distribuida bajo una licencia de software libre.

Lenguajes de Programación de Alto Nivel

Fuente : The Transparent Language Popularity Index Tecnologías de la Información Lenguajes de Programación de Alto Nivel

Lenguajes de Programación de Alto Nivel

IDEs Un entorno de desarrollo integrado (IDE), también conocido como entorno de diseño integrado o entorno de depuración integrado es una aplicación de software que proporciona servicios integrales a los programadores informáticos para el desarrollo de software. Un IDE normalmente se compone de: editor de código fuente, compilador y / o intérprete, Herramientas de construcción automáticas depurador (debugger) Los IDEs están diseñados para maximizar la productividad del programador, proporcionando componentes firmemente unidos con interfaces de usuario similares. Típicamente un IDE está dedicado a un lenguaje de programación específico, a fin de proporcionar un conjunto de características que más se acerque a los paradigmas de programación del lenguaje. Ejemplos : Visual Studio de Microsoft Eclipse

Practica. Instalación y primera aplicación con MS Visual Studio http://www.visualstudio.com/products/visual studio express vs

Practica. Funciones Principales MS Visual Studio

Practica. Visual Basic Guía de programación en Visual Basic

Evaluación del Software Cómo se puede valorar el software? Cómo se puede saber si un programa es más grande o más pequeño que otro? Cómo se puede saber si un programa o aplicación es mejor que otra? Dimensión KLOC (miles de líneas de código) es una medida tradicional de lo grande que es un programa de ordenador o cuánto tiempo o cuántas personas que se necesitan para escribirlo. Se mide por lo general el código fuente. KLOC se ha utilizado como una medida aproximada de la productividad del programador, como en " Cuántas líneas de código se puede escribir un día?. Sin embargo esta medida no tiene en cuenta la eficiencia del código. Defectos por KLOC es una medida común utilizada como un objetivo o para la evaluación de la calidad del código.

Evaluación del Software

Evaluación del Software

Evaluación del Software Criterios generales para la evaluación de un programa o aplicación : Requerimientos (hardware y software) Eficiencia, uso de recursos (procesador, memoria, disco, ) Rapidez, velocidad de ejecución, rendimiento Facilidad del mantenimiento Estructura Código limpio y claro Documentación Errores (por KLOC) Facilidad y ayudas de uso Funcionalidad, funciones que realiza

Metodología de Desarrollo de Software Personas Competencias Formación Estructura Organizativa Funciones Gestión del Cambio Estrategia Objetivos Hardware Software Comunicaciones Bases de Datos Tecnología Procesos Procesos Procedimientos Políticas Normas

Metodología de Desarrollo de Software Se estima que, del total de proyectos software grandes emprendidos, un 28% fracasan, un 46% caen en severas modificaciones que lo retrasan y un 26% son totalmente exitosos. Cuando un proyecto fracasa, rara vez es debido a fallas técnicas, la principal causa de fallos y fracasos es la falta de aplicación de una buena metodología o proceso de desarrollo. Metodología de desarrollo de software en ingeniería de software es un marco de trabajo usado para estructurar, planificar y controlar el proceso de desarrollo en sistemas de información. Necesidad ETAPAS Mejora Continua Estudio de Viabilidad Requerimientos y Especificaciones Análisis Diseño Programación y Prueba Unitaria Prueba de Integración Puesta en Marcha Operación y Mantenimiento

Etapas de Desarrollo de Software Análisis de la oportunidad de aplicar las Tecnologías de la Información y Comunicaciones a algún Proceso o Sub Proceso de Negocio concreto en la organización y circunstancias dadas. Evaluación y estimación de los beneficios, ahorros y oportunidad. Estimación inicial de costes. Análisis de Coste/Beneficio Oportunidad (Bussines Case) Patrocinador/Dueño del Proceso Analista Funcional Usuario Clave

Etapas de Desarrollo de Software Se adquieren, reúnen y especifican las características funcionales y no funcionales que deberá cumplir el futuro programa o sistema a desarrollar. La obtención de especificaciones a partir del cliente es un proceso humano muy interactivo e iterativo; normalmente a medida que se captura la información, se la analiza y realimenta con el cliente, refinándola, puliéndola y corrigiendo si es necesario. Especificación de Requerimientos de Software (ERS) Requerimientos funcionales Requerimientos técnicos Requerimientos de Integración Patrocinador/Dueño del Proceso Analista Funcional Usuario Clave

Etapas de Desarrollo de Software Del análisis de los requerimientos y de la situación inicial del cliente se propone una solución (o alternativas). Se definen la arquitectura técnica sobre la que se va a desarrollar el proyecto (Tecnologías y Lenguajes). Se definen la arquitectura de la aplicación objetivo indicando módulos y programas, identificando la complejidad de cada uno. Se analizan los esfuerzos y costes necesarios para Arquitectura de la Aplicación y Componentes (Módulos y Programas) Arquitectura Técnica (Lenguaje y Plataforma) Plan del Proyecto (Tiempos y Costes) Patrocinador/Dueño del Proceso Usuario Clave Analista Funcional Jefe de Proyecto

Etapas de Desarrollo de Software EnlaetapadeDiseñodeconcretanlosdetallesdefuncionesdecada modulo y programa. Se determinan la estructura de los datos a tratar. Se definen las principales entidades de BD y sus relaciones, las clases, objetos propiedades y métodos que utilizarán los programas. Se identifican rutinas comunes. Se concretan los diseños de pantallas e informes. Diseño de BD, clases, objetos, atributos, métodos, Diseño detallado de los programas, definición de E/S Diseño de pantallas e informes Diseño de Interfaces con otros sistemas Analista Funcional Analista Técnico

Etapas de Desarrollo de Software En esta etapa se codifican las clases, rutinas y programas utilizando el lenguajes o lenguajes definidos en la arquitectura técnica y conforme a los diseños realizados en la etapa anterior. También se implementa el diseño de la BD. Se codifican así mismo los programas de interface con otros sistemas. Cada programa o módulo es probado individualmente por el Programador que lo ha desarrollado y por el Analista Técnico BD implementada Rutinas, Programas y módulos terminados y probados Documentación Técnica de los programas Analista Técnico Programador

Etapas de Desarrollo de Software Se prueban el conjunto de programas y procesos y sus integraciones. Se tratadeprobarprocesosdecompletossimulandoelfuncionamiento normal del cliente. Para ello se escogen un conjunto de datos de prueba lo más representativo posible de los datos reales (datos de prueba). Así mismo se somete al sistema a condiciones extremas (volumen grande de datos, datos anormales, ) para comprobar su comportamiento en estos casos. También se debe comprobar el rendimiento general de sistema. También se comprueba la funcionalidad del sistema. Puedeexistirfasefinalycompletadeprueba,llamadaBeta Test,durante la cual el sistema instalado en condiciones normales de operación y trabajo es probado exhaustivamente a fin de encontrar errores, inestabilidades, respuestas erróneas, etc. que hayan pasado los previos controles. Sistema y probado y estable Usuario Clave Analista Funcional Analista Técnico Programador

Etapas de Desarrollo de Software En la fase de puesta en marcha se debe concretar la fecha de instalación yelprocedimientodelcortedeoperaciónparalaintroduccióndelnuevo sistema. Así mismo se debe prever la posible migración de datos de un sistema anterior. Se debe proceder a la formación de todos los usuarios de sistema. Instalación de la aplicación en el entorno definitivo (de producción). Usuarios formados Datos migrados de sistemas anteriores Aplicación instalada y en funcionamiento Usuario Clave Usuario Final Analista Funcional Jefe de Proyecto

Etapas de Desarrollo de Software Utilización normal y operación (parada, arranque, copias de seguridad, mantenimiento de información histórica, ) del sistema. Se pueden detectar fallos, deficiencias o puede ser necesario completar el sistema por nuevos requerimientos, para lo cual se establece un marco de mantenimiento del sistema. El mantenimiento puede ser correctivo (errores) o evolutivo (mejoras y cambios). Sistema disponible con la funcionalidad requerida Usuario Clave Analista Funcional

Equipo Técnico Equipo Usuario/Cliente Tecnologías de la Información Equipos de Trabajo

Dedicación Equipos de Trabajo

Caso Practico. La Librería. Estudio de Viabilidad. Soy el dueño de una librería (tienda de libros) en el centro de la ciudad. Cuento con 4 empleados y una superficie de venta media/grande más un almacén en la trastienda. El negocio va relativamente bien, pero tengo algunos problemas y oportunidades : No me es fácil saber los libros que tengo en la librería y cuales tengo que pedir. Principalmente cuando hay un éxito de ventas, no puedo fácilmente prever un pedido a las editoriales con la suficiente antelación para que las existencias no se acaben y suelo perder esas ventas o en otro caso sobre dimensionar el stock de libros perdiendo espacio para otros títulos. Me gustaría saber cuales son los géneros/editoriales/tamaños que mejor se venden en cada parte de la tienda y altura de estantes para distribuir mejor el espacio. Actualmente el proceso de facturación es manual y tengo que dedicar a una persona a contabilizar las ventas en el sistema de contabilidad lo cual lleva mucho tiempo que tengo que dedicar a una persona a tareas administrativas. Por los comentarios de clientes y otros colegas creo que tengo una oportunidad si puedo vender libros por Internet.

Caso Practico. La Librería. Estudio de Viabilidad. Beneficios Esperados Mejorar el Control de Inventario > +10% Ventas Mejorar la Gestión del Espacio en Tienda > +5% Ventas Automatizar Procesos Contables / Facturación > 3% Costes Tienda Virtual > +30% Ventas Total Anual : 75.000 Costes Esperados Desarrollo de la Solución : 210.000 Mantenimiento y Operación Anual : 15.000

Caso Practico. La Librería. Requerimientos. Requerimientos de Sistema. Requerimientos Técnicos Software para 5 PC en una sola ubicación Plataforma Windows Desarrollo y Herramientas de software libre Requerimientos Funcionales Módulo de Inventario Inventario de libros en Almacén y Tienda Identificar la Ubicación de los libros en estantería y altura Enlazar el inventario con las ventas en tiempo real Fijar el stock objetivo de cada libro en función de las ventas reales recientes Realizar pedido en función del stock objetivo y stock actual Propuesta de recuento por muestreo y total Registro de diferencias de inventario Módulo de optimización del espacio de venta Ratios de ventas y efectividad por criterios como editorial, tamaño,

Caso Practico. La Librería. Análisis. Tecnología. Lenguaje de Programación /DB/IDE/ Base de Datos. Número de entidades, propiedades, Relaciones, Modulo de Inventario. Modulo/Elemento Nº Esfuerzo Coste Programa de Mantenimiento de Libros Módulo de Inventario 21 77d 7.700 Programa de Mantenimiento de Ubicaciones Programa Sencillo (2d) 6 12d 1.200 Programa de Movimiento de Libres entre Ubicaciones Programa Medio (4d) 8 32d 3.200 Facturación. Programa Complejo (6d) 4 24d 2.400 Programa de Mantenimiento de Clientes Informes 3 9d 900 Programa de Emisión de Facturas Modulo de Facturación 15 60d 6.000 Interfaces. Contabilización de Ventas Diarias TOTAL 324 1.296d 129.600 Emisión de Pedidos a Editoriales

Caso Practico. La Librería. Planificación.

Caso Practico. La Librería. Diseño y Desarrollo. Diseño detallado de la BD Diseño detallado y especificación de los Programas Programación y prueba Unitaria Documentación

Caso Practico. La Librería. Pruebas de Conjunto. Plan de Pruebas y Resultados Venta > Factura > Inventario > Pedido > Contabilización Venta masivas de un libro > Pedido Simulación de ventas > Propuesta de reestructuración de espacios Manual de Usuario Manual de Inventarios Manual de Ventas Gestión del Espacio Oficina Virtual Prueba Juego de Datos Probado por Resultado

Caso Practico. La Librería. Puesta en Marcha. Formación de Usuarios Finales Migración y Carga de Datos Arranque

Enfoques de Desarrollo Requerimientos Análisis Modelo en Cascada Puro Una fase no comienza hasta que no acaba completamente la anterior Diseño Modelo en Cascada Realimentado Cada fase se puede realimentar con información de las posteriores Programación y Prueba Unitaria Prueba de Integración Puesta en Marcha Inconvenientes : Cambios en fases avanzadas pueden causar graves daños en el proyecto Tiempo hasta la obtención de resultados

Enfoques de Desarrollo Modelo de Construcción de Prototipos Prototipo El prototipo debe ser construido en poco tiempo, usando los programas adecuados y no se debe utilizar muchos recursos, es evaluado por el cliente para una realimentación; gracias a ésta se refinan los requisitos del software que se desarrollará Inconvenientes : Expectativas en el cliente Decisiones de desarrollo poco adecuadas

Enfoques de Desarrollo Modelo Iterativo Incremental

Enfoques de Desarrollo Modelo en espiral

Metodología de Desarrollo Métrica v.3 MÉTRICA es una metodología de planificación, desarrollo y mantenimiento de sistemas de información, promovida por el Ministerio de Hacienda y Administraciones Públicas (antiguo Ministerio de Administraciones Públicas ) del Gobierno de España para la sistematización de actividades del ciclo de vida de los proyectos software en el ámbito de las administraciones públicas. Estametodologíapropiaestábasadaenel modelo de procesos del ciclo de vida de desarrollo ISO/IEC 12207 (Information Technology Software Life Cycle Processes) así como en la norma ISO/IEC 15504 SPICE (Software Process Improvement And Assurance Standards Capability Determination)

Metodología de Desarrollo Scrum es un marco de trabajo para la gestión y desarrollo de software basada en un proceso iterativo e incremental utilizado comúnmente en entornos basados en el desarrollo ágil de software. Define un conjunto de prácticas y roles, y que puede tomarse como punto de partida para definir el proceso de desarrollo que se ejecutará durante un proyecto Un principio clave de Scrum es el reconocimiento de que durante un proyecto los clientes pueden cambiar de idea sobre lo que quieren y necesitan (a menudo llamado requirements churn), y que los desafíos impredecibles no pueden ser fácilmente enfrentados de una forma predictiva y planificada. Por lo tanto, Scrum adopta una aproximación pragmática, aceptando que el problema no puede ser completamente entendido o definido, y centrándose en maximizar la capacidad del equipo de entregar rápidamente y responder a requisitos emergentes.

Metodología de Desarrollo

Metodología de Desarrollo ASAP es un acrónimo para la metodología Accelerated SAP, desarrollada por SAP AG para la ejecución de proyectos de implementación de sus soluciones de software. El nombre "AcceleratedSAP" pretende dar a entender la posibilidad de realizar implementaciones en tiempos cortos (por el juego de palabras con "As Soon As Possible"), a diferencia de lo que había estado sucediendo cuando las implementaciones se realizaban sin una metodología estándar, cuando se dibujaban proyectos que abarcaban años de trabajo, sin entregables definidos, dejando sin cubrir las expectativas de los clientes o empresas que adoptaban las soluciones, lo cual generaba un ambiente adverso en los proyectos en cuestión.

Herramientas CASE Las herramientas CASE (Computer Aided Software Engineering, Ingeniería de Software Asistida por Computadora) son diversas aplicaciones informáticas destinadas a aumentar la productividad en el desarrollo de software reduciendo el costo de las mismas en términos de tiempo y de dinero. Estas herramientas 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 costos, 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.

Practica.

PwC Global 100 Software Leaders

Truffle100

La lista Forbes Global 2000 es un ranking anual de las 2000 principales empresas cotizadas en el mundo de la revista Forbes, en base a una combinación de cuatro indicadores: ventas, ganancias, activos y valor de mercado. La lista de Forbes de las empresas de software no incluye fabricantes, compañías de electrónica de consumo, los conglomerados, las consultoras de TI y servicios informáticos. Las 10 mejores empresas en la lista de 2013 para el sector de "Software y Programación" son:

Los principales 5 vendedores de software en términos de ingresos en la primera parte de 2013. Fuente : "IDC Worldwide Semiannual Software Tracker," Oct. 2013.