miércoles, 22 de febrero de 2017

Cómo encarar un proyecto tecnológico?



Prototipos
  • En algunas ingenierías o en arquitectura, se arman lo que se llaman prototipos del producto que se va a construir. Esto a veces es, o una versión de menor tamaño de lo que se va a crear o una versión simplificada para mostrar como va a funcionar el objeto completo.
  • En informática, nosotros también podemos construir prototipos de nuestro proyecto ya sea para mostrarle al cliente o para nosotros poder transformar en realidad nuestras ideas e ir refinando lo que queremos construir.
  • Esto puede ser tan sencillo como programar algunas pantallas simples que permitan la navegación entre ellas, mostrando cierta información que puede no ser la real y final para poder darnos una idea de que es lo necesitamos cambiar y/o mejorar.
Prototipos y el desarrollo evolutivo
  • El Modelo de prototipos, nos permite ejecutar un desarrollo evolutivo. Qué significa esto? Que nuestro sistema lo vamos a ir construyendo de a poco, agregando cosas sobre las que programamos previamente.
  • El prototipo siempre debe ser construido en poco tiempo, usando los programas adecuados y no se debe utilizar muchos recursos.
  • La idea del prototipo es centrarnos en los aspectos del sistema que serán visibles para nuestro cliente o usuario de manera que ellos nos puedan dar su opinión; gracias a ésta se refinan los requisitos del software que se desarrollará.
  • Luego, el prototipo se ajusta para satisfacer las necesidades del cliente o usuario. Esto permite que al mismo tiempo entendamos mejor lo que tenemos que hacer y el cliente vea resultados a corto plazo.
Estimaciones
  • Lo que vamos a tener que entender también para cualquier proyecto que encaremos, es lo referido a la estimación de esfuerzo y alcance del proyecto. Esfuerzo se entiende como cuantas horas tenemos que invertir en todos los aspectos del proyecto para terminarlo, y el alcance son todas las funcionalidades, diseños y trabajos que estarán incluidos en el proyecto. El alcance es simplemente lo que va a ser parte del proyecto.
  • Para poder definir el esfuerzo, obviamente primero deberemos tener claro nuestro alcance, porque sin saber lo que estará incluido en el proyecto no podremos saber cuantas horas deberemos dedicarle de trabajo.
Definiendo el alcance
  • En computación, lo que se llama Ingeniería de requerimientos tiene que ver con todas las tareas relacionadas con entender las necesidades o las condiciones a satisfacer para un sistema nuevo o modificado, tomando en cuenta los diversos requisitos de los clientes o usuarios.
  • El propósito de esto es que entendamos de la mejor manera posible lo que hay que hacer antes de la fase de diseño en el proyecto. Los buenos requisitos deben ser medibles, comprobables, sin ambigüedades o contradicciones, etc.
Ingeniería de requerimientos
  • Las actividades que vamos a realizar para obtener los requisitos son de cinco clases.
    • Obtener requisitos: a través de entrevistas o comunicación con clientes o futuros usuarios, para saber cuáles son sus expectativas.
    • Analizar requisitos: detectar y corregir los problemas o la falta en la comunicación, transformando los requisitos obtenidos de entrevistas, en condiciones apropiadas para ser diseñadas.
    • Documentar requisitos: igual que todas las etapas, los requisitos deben estar debidamente documentados. Esto nos sirve para saber exactamente que hacer, sin que haya malos entendidos
    • Verificar los requisitos: consiste en comprobar en la aplicación el correcto funcionamiento de lo que programamos basados en un requisito.
    • Validar los requisitos: comprobar que los requisitos implementados se corresponden con lo que inicialmente se pretendía.
  • La ingeniería de requisitos puede ser un proceso largo y complejo para el que se necesitaremos de habilidades psicológicas.
  • Los analistas pueden emplear varias técnicas para obtener los requisitos del cliente. Históricamente, se usaron técnicas tales como las entrevistas, o talleres con grupos para crear listas de requisitos. En la actualidad también se incluyen el desarrollo de prototipos, y casos de uso (que no veremos ahora).
  • Los requisitos formulados por los usuarios se toman como objetivos generales, a largo plazo, y se los debe analizar una y otra vez hasta determinar los objetivos críticos para el funcionamiento.
  • Finalmente, se van a establecer formas de medir el progreso en la construcción, para evaluar en cualquier momento qué tan avanzado se encuentra el proyecto.
Estimando mi esfuerzo
  • Lo primero que tienen que pensar es que independientemente de si ustedes son sus propios clientes o si es otro usuario, tienen que saber cuanto tiempo y esfuerzo le llevará hacer su proyecto. De otra manera, ustedes se frustrarán por no saber cuando finaliza el proyecto y su cliente, si lo tuviesen, se enojará porque probablemente el proyecto se extienda mas allá de sus expectativas.
  • Aunque la estimación es más un arte que una ciencia no es aconsejable empezar un proyecto sin ella. En la informática muchos proyectos fracasan por no llevar a cabo de manera correcta esta actividad. Para un proyecto de software es necesario conocer el esfuerzo y el costo que tiene implicado.
Importancia de la estimación y la gestión
  • Veamos algunos números que nos demuestran lo importante de una buena estimación y gestión de un proyecto:
    • El proyecto medio excede en un 90% lo presupuestado y un 120% su tiempo estimado.
    • El 52.7% de los proyectos costará al menos un 189% de lo estimado.
    • El tiempo de exceso medio es del 222% del estimado.
    • Sólo el 16.2% (9% en las grandes compañías) de los proyectos se completa en el plazo y presupuesto estimados.
    • El 75% de los sistemas grandes funciona mal o es dejado de lado.
    • El 15% del esfuerzo de desarrollo se desperdicia por cancelación de los proyectos.
    • El 50% de los proyectos grandes excede el presupuesto o el cronograma (en más del 50%).
    • Un proyecto medio excede en un 50% el plazo estimado.
    • Los pequeños proyectos (en su gran mayoría) exceden su presupuesto y se retrasan un 20%.
El método Delphi
  • Como podemos ver, es crucial entonces que hagamos un buen análisis de nuestro proyecto antes de empezar a programar.
  • En muchos lugares de trabajo, lo que van a encontrar que utilizan, aún sin conocerlo formalmente, es el método Delphi de estimación.
  • El mismo consiste en un grupo de personas que se reúnen, realizan un listado de tareas a realizar y luego asignan los tiempos necesarios de acuerdo a su experiencia. Luego se realiza un intercambio entre todos donde un responsable va consolidando las listas de tareas de todos, y también se expone el razonamiento detrás de las estimaciones de cada programador, buscando el consenso entre todos en base a la discusión. De esa reunión es que surge la estimación final de esfuerzo para desarrollar el sistema que previamente relevamos con los clientes o usuarios.
Y ahora?
  • Ya sabemos lo que el cliente quiere (aunque seamos nosotros), y también tenemos una idea de los tiempos necesarios para hacer nuestro sistema, y por ende, los costos.
  • La manera de continuar es construyendo paso a paso, un prototipo que podremos ir mostrando
  • De esta manera, podremos ir mostrando nuestro desarrollo, a la vez que medimos el avance mediante los indicadores que definimos cuando realizamos nuestro análisis de requerimientos del sistema.
  • La idea del prototipo es centrarnos en los aspectos del sistema que serán visibles para nuestro cliente o usuario de manera que ellos nos puedan dar su opinión; para ir refinando los requisitos del software que estamos desarrollando.
  • Y así continuaremos hasta tener nuestro sistema completo y funcionando de acuerdo a nuestro análisis inicial.
Finalmente, implementando
  • Implementación es una palabra con la que quizás muchos no están familiarizados. La realidad es que es algo bastante sencillo. Implementar nuestro proyecto significa instalarlo en la máquina o dispositivo donde lo vamos a usar, o en el servidor donde vamos a alojar nuestro sitio web, dependiendo del tipo de proyecto que hayan hecho.
  • En el caso que desarrollemos un sistema que corra en nuestra computadora o en un dispositivo móvil, solo deberemos instalar los ejecutables
  • En el caso de instalar un sitio web en un servidor, ahí se complica un poco mas la implementación.
Implementación web
  • Como mencionamos previamente, un servidor web no es solamente la máquina que corre todos mis procesos sino el programa en sí que brinda servicios a todos aquellos que quieren acceder a mi página. Este programa, en Windows, se llama Internet InformationServer, o IIS.
  • Cuando queremos publicar contenido al que se pueda acceder a través de Internet o de una conexión de intranet, podemos agregar un sitio web al IIS para que incluya el contenido.
  • En Windows 2008 server, o en las versiones Profesionales o Ultimatede Windows de escritorio, el IIS ya viene instalado. Y se crea una configuración de sitio web predeterminada en el directorio \Inetpub\Wwwrootde nuestra máquina. Podemos utilizar este directorio predeterminado para publicar nuestro contenido web o crear un directorio en una ubicación del sistema de archivos que elijamos.
Creando un sitio en IIS

1.Abrimos el Administrador de IIS. Para hacer esto vayan al botón de inicio en la máquina donde instalarán el sistema y busquen directamente IIS o Internet InformationServer.
2.En el panel Conexiones, hagan clic con el botón secundario del mouse en el nodo Sitios del árbol y, a continuación, hagan clic en Agregar sitio web.
3.En el cuadro de diálogo Agregar sitio web, escribamos un nombre descriptivo para nuestro sitio web en el cuadro Nombre del sitio web.
4.Hagan clic en Seleccionar si desea seleccionar un grupo de aplicaciones diferente del que aparece en el cuadro Grupo de aplicaciones. En el cuadro de diálogo Seleccionar grupo de aplicaciones , seleccione un grupo de aplicaciones en la lista Grupo de aplicaciones y, a continuación, haga clic en Aceptar. (optativo)
5.En el cuadro Ruta de acceso física, escribamos la ruta de acceso física de la carpeta del sitio web o hagamos clic en el botón de exploración (...) para navegar por el sistema de archivos y buscar la carpeta.
6.Seleccionemos el protocolo para el sitio web en la lista Tipo.
7.El valor predeterminado en el cuadro Dirección IP es Todas las no asignadas. Dejémoslo así por ahora
8.Escriban un número de puerto en el cuadro de texto Puerto, por ejemplo, 80.
9.De forma opcional, escriba un nombre de encabezado del host para el sitio web en el cuadro Encabezado host. Por ejemplo: www.misitio.com.
10.Si no tienen que realizar ningún cambio en el sitio y quieren que el sitio web esté inmediatamente disponible, activen la casilla Iniciar sitio web inmediatamente.
11.Hagan clic en Aceptar.

Eso es todo?
  • Una vez que finalizamos con estos pasos, deberíamos tener nuestro sitio funcionando, y podemos corroborarlo accediendo a la dirección que definimos en el encabezado: www.misitio.com, siempre y cuando hayamos configurado nuestros servidores de nombre de dominio correctamente para que apunten a donde estamos almacenando nuestro sistema.
  • Y con esto, ya tenemos nuestro programa implementado y listo para usar!!!!
Repaso
  • En este capítulo vimos la importancia de:
    • hacer un buen análisis de requerimiento y que necesitamos entender
    • realizar una estimación de nuestro proyecto para entender el tiempo y costo asociado
    • desarrollar un prototipo que se ajuste a los requerimientos de información del cliente y a nuestra necesidad de entender lo que el cliente quiere
    • implementar nuestro desarrollo en el ambiente que corresponda a la tecnología utilizada
  • Para llevar su proyecto a buen puerto, deben prestar atención a todas estas buenas prácticas y sus sistemas podrán terminarlos de manera mucho mas sencilla y con mayor satisfacción para ustedes y sus usuarios.


Espero haber ayudado en algo. Hasta la próxima oportunidad!











  

No hay comentarios:

Publicar un comentario

       

Etiquetas

Academy (23) Accediendo a datos con ADO .NET (31) Acceso a la red (30) Algoritmo (34) Algoritmos en JAVA (2) Ampliación de clases (2) APRENDA A PROGRAMAR COMO SI ESTUVIERA EN PRIMERO - Autores : IKER AGUINAGA (3) APRENDA A PROGRAMAR COMO SI ESTUVIERA EN PRIMERO - Autores : IKER AGUINAGA (10) Aprendiendo a desarrollar en Windows 8 (5) Aprendiendo UML en 24 Horas (Autor : Joseph Schmuller ) (30) Arquitectura (29) Arquitectura del Computador (3) Arquitectura del Computador - Historia de la informática (1) Asignación de direcciones IP (23) Aspectos fundamentales de bases de datos (5) Auditoría de la dirección (2) Auditoría de Sistemas (3) Auditoría Informática - Un enfoque práctico - Mario G . Piattini y Emilio del Peso (7) Avanzado (23) Base de Datos (67) Básico (23) Bios (29) Business Productivity Online Suite - BPOS (3) Capa de Red (22) Capa de Transporte (16) Capítulo 1 - Documentos HTML5 (6) Capítulo 10. API Web Storage (2) Capítulo 11. API IndexedDB (4) Capítulo 12. API File (1) Capítulo 2. Estilos CSS y modelos de caja (7) Capítulo 3. Propiedades CSS3 (4) Capítulo 4. Javascript (6) Capítulo 5. Video y audio (6) Capítulo 6. Formularios y API Forms (8) Capítulo 7. API Canvas (5) Capítulo 8. API Drag and Drop (2) Capítulo 9. API Geolocation (2) CCNA1 v5.0 (214) CCNA1 v6.0 (23) CCNA2 v5.0 (26) CCNA3 v5.0 (25) CCNA4 v5.0 (23) CD-ROM (3) Chapter 1 How does Xamarin.Forms fit in? (7) Chapter 2 Anatomy of an app (5) Cisco (316) Cloud Computing (3) CNNA v5.0 Routing & Switching (235) CNNA v6.0 Routing & Switching (2) Codigo (2) Computadora (32) Configuración (29) Configuración de un sistema operativo de red (21) Control (29) Creación de tipos de datos y tablas (3) Creación y Administración de bases de datos (3) Creando la Interface de la Aplicación Windows (50) Creating Mobile Apps with Xamarin.Forms (13) Cuenta (29) Curso (32) Curso Aprendiendo a Programar (25) Datos (3) Desarrollando en Windows 8 - AVANZADO (2) Desarrollando en Windows 8 - BÁSICO (3) Desarrollando en Windows 8 - INTERMEDIO (2) Desarrollo (2) Desarrollo .Net (21) Desarrollo avanzado de Windows Store Apps usando C# (1) Desarrollo basado en conceptos de Ingeniería de Software para Visual Studio (2) DESARROLLO DE APLICACIONES WINDOWS CON MICROSOFT .NET (37) DESARROLLO DE APLICACIONES WINDOWS CON MICROSOFT .NET (Autor: Luis Dueñas Huaroto) (29) Desarrollo en Microsoft Visual Studio (44) Desarrollo en Microsoft Visual Studio - AVANZADO (15) Desarrollo en Microsoft Visual Studio - BÁSICO (14) Desarrollo en Microsoft Visual Studio - INTERMEDIO (18) Desarrollo en Windows Phone 8 (13) Diagnostico (4) Diagrama (3) Diagramas de actividades (2) Diagramas de colaboraciones (2) Diagramas de secuencias (2) Digital (2) Diplomado (2) Disco (29) Disco Duro (4) Diseño de aplicaciones de Windows 8 en HTML 5 (7) Dispositivos Electrónicos (11) Doctorado (2) Ejemplos (3) Ejemplos de algoritmos (27) El camino hacia el CSS3 (3) El diseño web flexible (6) El elemento de diseño Canvas (3) El enfoque de los sistemas (3) El flujo de un programa (2) El gran libro de HTML5 - CSS3 y Javascript - Autor: Juan Diego Gauchat (55) El principio de organicidad (7) Electrónica (2) Elementos de un sistema (5) Empresas (2) Entrada y salida (4) Entropía y neguentropía (7) Estrategia (2) Estructura de un programa Java (12) Estructuras de almacenamiento (10) Estructuras de control (6) Estructuras de las tablas en SQL Server (2) Estructuras fundamentales de los datos (2) Ethernet (21) Evolución y Familias de los Microprocesadores (15) Exámen (23) Exploración de la red (23) Extensión de clases (4) Facebook (4) Familia Intel (15) Forefront (8) Función (3) Funciones de una red (12) Funciones de una red informática (1) Fundamentos de C# para absolutos principiantes (17) Fundamentos de programación en Java (50) Generaciones de la computadora (5) Gestión (3) Gestión de riesgos - Auditoría de Sistemas (1) GONZALO MARTÍNEZ (1) Grupos Facebook (1) Harvard (29) Historia de las computadoras (11) HTML5 y CSS3 - Autor: Christophe Aubry (99) HTML5 y CSS3 aplicadal texto (7) HTML5 y CSS3 para los formularios (15) Imágenes (2) Implementación de Windows 7 (11) Información (31) Informática (29) Ingeniería (4) Instalar (29) Inteligencia (2) Inteligencia de Negocios con SQL Server (3) Intermedio (23) Internet (29) Internet Explorer 9 (3) Introducción a ASP.NET 5 (8) Introducción a Java (7) Introducción a jQuery (8) Introducción a la Auditoría de Sistemas (2) Introducción a la teoría general de sistemas (Oscar Johansen Bertoglio) (39) Introducción a Networking (2) Introducción a Window Forms (5) Introducción al acceso a datos con ADO .NET (9) Investigación de Operaciones (12) Java (52) Jump Start de consultas en las bases de datos de Microsoft SQL Server 2012 (8) La definición de un Sistema (6) La evolución del HTML y del CSS (3) La nueva sintaxis HTML5 (12) LA QUINTA DISCIPLINA en la práctica (Autor : Peter Senge) (28) Las animaciones en CSS3 (5) Las transformaciones CSS3 (11) Las transiciones con CSS3 (8) Licenciamiento Microsoft (3) Local Area Network (LAN) - Red de Area Local (2) Lógico (2) Los elementos de la estructura en html5 (9) Los elementos multimedia: audio y vídeo (2) Los estilos de caja en CSS3 (13) Los nuevos selectores de CSS3 (6) Maestría (2) Mantenimiento de Mouse y Teclado (2) Manual de Microsoft SQL Server - Full Transact SQL (68) Manual de soporte técnico para escuelas sobre windows 7 (42) Marco Teorico de Investigación de Operaciones (6) Medios de Almacenamiento (11) Medios de Networking (2) Mejorando la Interface de las Aplicaciones Windows (26) Memoria Tipos y Clases (5) Método (2) Metodología (1) Microsoft (324) Microsoft Lync 2010 (7) Microsoft Silverlight 4.0 (2) Microsoft Virtual Academy (356) Modelo (2) Modelo OSI y TCP-IP (2) Modelos con poco grado de dificultad de Programación Lineal - Investigación de Operaciones (13) Modelos con razonable grado de dificultad de Programación Lineal - Investigación de Operaciones (10) Modelos de desafio de Programación Lineal - Investigación de Operaciones (5) Modelos difíciles de Programación Lineal - Investigación de Operaciones (5) Modelos Fáciles de Programación Lineal - Investigación de Operaciones (13) Modelos lineales con solver (3) Modulo (23) Movimiento (2) Mozilla (29) MS SQL Server (77) MS Virtualization para Profesionales VMware - Gestión (3) MS Virtualization para Profesionales VMware- Plataforma (4) MVA (263) Negocio (2) Nivel Avanzado Desarrollo .Net (6) Nivel Básico Desarrollo .Net (11) Nivel Intermedio Desarrollo .Net (8) Normas técnicas peruanas y su evolución - Auditoría de Sistemas (1) Nube Privada - Avanzado (6) Nube Privada - Básico (6) Nube Privada - Intermedio (6) Office 365 (3) Optimización de Escritorio (10) Optimización de Escritorio - Avanzado (4) Optimización de Escritorio - Básico (3) Optimización de Escritorio - Intermedio (3) ORACLE 10g - ADMINISTRACIÓN Y ANÁLISIS (3) Oracle 10g y el Grid Computing (3) Organización aleatoria y secuencial (1) Partes principales de la Mainboard (12) Perceptron (2) Perfil (2) Periféricos de Entrada / Salida (15) Pesi (2) PHP y MySQL - Manual de aprendizaje para crear un sitio web - Autor : Olivier ROLLET (79) Plan (2) Plataforma (29) PMBOK (24) PMBOK - Guía de los fundamentos para la dirección de proyectos (24) PMBOK - INFLUENCIA DE LA ORGANIZACIÓN Y CICLO DE VIDA DEL PROYECTO (6) PMBOK - Introducción (11) PMBOK - PROCESOS DE LA DIRECCIÓN DE PROYECTOS (5) Prevención - Herramientas e Instrumentos de Medida (9) Principios básicos de enrutamiento y switching (188) Proceso (2) Proceso de auditoría de sistemas informáticos (2) Programación en Android - Auor : Salvador Gómez Oliver (46) Programación paso a paso de C# - Autor : Nacho Cabanes (16) Protocolos y comunicaciones de red (17) Proyecto (2) Qué es un sistema (4) Red de Área Local Inalámbrica (WLAN) (4) Redes (30) Redes inalámbricas - WIRELESS - Conocimiento general (15) Redes neuronales (2) Redes y Comunicaciones (45) Reparación de Fuentes - UPS - Estabilizadores (10) Reparación de Impresoras (9) Reparación de Monitores (16) Router (29) Seguridad en la Nube (3) Seminario (23) Server (24) Sharepoint 2010 - Nivel Básico (6) Sharepoint 2010 - Niveles Avanzados (18) Sharepoint 2010 - Niveles Avanzados - Básico (8) Sharepoint 2010 - Niveles Avanzados - Intermedio (9) Sinergia y recursividad (4) Sistema (33) Sistema de Cableado Estructurado (9) Software (30) SOLUCIÓN GRÁFICA DE MODELOS DE PROGRAMACIÓN LINEALES - INVOPE (8) Soporte a Infraestructura (3) SQL (38) SQL Azure - Introducción (3) Subsistemas de control (4) Tablas (4) Tarjeta Principal del Sistema (10) Tarjetas de Interfaces (7) Tecnología (31) Tecnologías LAN (1) TEORÍA GENERAL DE SISTEMAS (1) Tic (2) Tipo (2) TML5 y CSS3 - Autor: Christophe Aubry (12) Trabajando con el Formulario (7) Un diseño HTML5/CSS3: dConstruct 2011 (3) Un diseño HTML5/CSS3: FlipThru (2) Un diseño HTML5/CSS3: The Cat Template (2) Usando Controles Windows Forms (12) Usando Herramientas de Datos de Visual Studio (6) Ventas (2) Virtualización Hyper - V Nivel Básico (5) Virtualización Hyper - V Nivel Intermedio (5) What’s New in Windows 8.1 Security (4) Window (29) Windows 7 Segunda Fase - AVANZADO (4) Windows 7 Segunda Fase - BÁSICO (6) Windows 7 Segunda Fase - INTERMEDIO (4) Windows 8 - Vista Previa (4) Windows 8.1 To Go (2) Windows Azure (3) Windows Phone 7 (2) Windows Server 2008 R2 (3) Windows Server 2012 - Gestión y Automatización (3) Windows Server 2012 R2 Essentials (7) Windows Server 2012: Almacenamiento (5) Windows Server 2012: Identidad y Acceso (4) Windows Server 2012: Revisión Técnica (7) Xamarin (1)

Páginas vistas en total según Google