martes, 12 de marzo de 2013

MÉTODO:


  • Palabra que proviene del término griego methodos (camino o vía) y se refiere al medio utilizado para llegar a un fin. Su significado original señala el camino que conduce a un lugar.
  • Proceso o camino sistemático establecido para realizar una tarea o trabajo con el fin de alcanzar un objetivo predeterminado.
  • Modo de decir o hacer algo con orden.  Procedimiento científico seguido en la ciencia para hallar la verdad.
  • Un  procedimiento que se usa para realizar una tarea específica en la clase o módulo.
  • Conjunto de reglas y ejercicios destinados a enseñar una actividad, un arte o una ciencia.
PROCEDIMIENTO:
  • Un procedimiento es un conjunto de acciones u operaciones que tienen que realizarse de la misma forma, para obtener siempre el mismo resultado bajo las mismas circunstancias.
  • En programación estructurada, sub programa o parte de un programa principal.
  • Definición, paso a paso, del método de resolución de un problema.
  • Método de ejecutar algunas cosas.
  • Sucesión cronológica de operaciones concatenadas entre sí, que se constituyen en una unidad de función para la realización de una actividad o tarea específica dentro de un ámbito predeterminado de aplicación. Todo procedimiento involucra actividades y tareas del personal, determinación de tiempos de métodos de trabajo y de control para lograr el cabal, oportuno y eficiente desarrollo de las operaciones.
  • Un método, función o propiedad de una clase o módulo.
  • Procedimiento es un término que hace referencia a la acción que consiste en proceder, que significa actuar de una forma determinada. El concepto, por otra parte, está vinculado a un método o una manera de ejecutar algo.
    Un procedimiento, en este sentido, consiste en seguir ciertos pasos predefinidos para desarrollar una labor de manera eficaz. Su objetivo debería ser único y de fácil identificación, aunque es posible que existan diversos procedimientos que persigan el mismo fin, cada uno con estructuras y etapas diferentes, y que ofrezcan más o menos eficiencia.
FRAMEWORK:

  • En el desarrollo de software, un framework o infraestructura digital, es una estructura conceptual y tecnológica de soporte definido, normalmente con artefactos o módulos de software concretos, con base a la cual otro proyecto de software puede ser más fácilmente organizado y desarrollado. Típicamente, puede incluir soporte de programas, bibliotecas, y un lenguaje interpretado, entre otras herramientas, para así ayudar a desarrollar y unir los diferentes componentes de un proyecto.Representa una arquitectura de software que modela las relaciones generales de las entidades del dominio, y provee una estructura y una especial metodología de trabajo, la cual extiende o utiliza las aplicaciones del dominio.
  •  (plataforma, entorno, marco de trabajo). Desde el punto de vista del desarrollo de software, un framework es una estructura de soporte definida, en la cual otro proyecto de software puede ser organizado y desarrollado.
Los frameworks suelen incluir:
* Soporte de programas.
* Bibliotecas.
* Lenguaje de scripting.
* Software para desarrollar y unir diferentes componentes de un proyecto de desarrollo de programas.

Los frameworks permiten:
* Facilitar el desarrollo de software.
* Evitar los detalles de bajo nivel, permitiendo concentrar más esfuerzo y tiempo en identificar los requerimientos de software.


Ventajas

Las principales ventajas de la utilización de un framework son:
1. El desarrollo rápido de aplicaciones. Los componentes incluidos en un framework constituyen una capa que libera al programador de la escritura de código de bajo nivel.
2. La reutilización de componentes software al por mayor. Los frameworks son los paradigmas de la reutilización.
3. El uso y la programación de componentes que siguen una política de diseño uniforme. Un framework orientado a objetos logra que los componentes sean clases que pertenezcan a una gran jerarquía de clases, lo que resulta en bibliotecas más fáciles de aprender a usar.

Desventajas:

Las desventajas de los frameworks son:
1. La dependencia del código fuente de una aplicación con respecto al framework. Si se desea cambiar de framework, la mayor parte del código debe reescribirse.
2. La demanda de grandes cantidades de recursos computacionales debido a que la característica de reutilización de los frameworks tiende a generalizar la funcionalidad de los componentes. El resultado es que se incluyen características que están "de más", provocando una sobrecarga de recursos que se hace más grande en cuanto más amplio es el campo de reutilización.


FUENTES:http://es.wikipedia.org
http://es.thefreedictionary.com
http://www.definicion.org
http://www.alegsa.com.ar/Dic/framework.php
http://espanol.answers.yahoo.com/question/index?qid=20070817175348AAgSFgE

sábado, 9 de marzo de 2013

Ciclos de vida del software

Ciclos de vida del software

Es la forma mediante la cual se describen los diferentes pasos que se deben seguir para el desarrollo de un software, partiendo desde una necesidad hasta llegar a la puesta en marcha de una solución y su apropiado mantenimiento. El ciclo de vida para un software comienza cuando se tiene la necesidad de resolver un problema, y termina cuando el programa que se desarrolló para cumplir con los requerimientos, deja de ser utilizado.
Existen varias versiones del ciclo de vida del software entre las cuales se destacan: el ciclo de vida clásico o en cascada, el modelo en espiral, el desarrollo de prototipos, el modelo por incrementos y el modelo extremo 
El término ciclo de vida del software describe el desarrollo de software, desde la fase inicial hasta la fase final. El propósito de este programa es definir las distintas fases intermedias que se requieren para validar el desarrollo de la aplicación, es decir, para garantizar que el software cumpla los requisitos para la aplicación y verificación de los procedimientos de desarrollo: se asegura de que los métodos utilizados son apropiados.
Estos programas se originan en el hecho de que es muy costoso rectificar los errores que se detectan tarde dentro de la fase de implementación. El ciclo de vida permite que los errores se detecten lo antes posible y por lo tanto, permite a los desarrolladores concentrarse en la calidad del software, en los plazos de implementación y en los costos asociados.
El ciclo de vida básico de un software consta de los siguientes procedimientos:
  •  Definición de objetivos: definir el resultado del proyecto y su papel en la estrategia global.
  •  Análisis de los requisitos y su viabilidad: recopilar, examinar y formular los requisitos del cliente y examinar cualquier restricción que se pueda aplicar.
  •  Diseño general: requisitos generales de la arquitectura de la aplicación.  
  • Diseño en detalle: definición precisa de cada subconjunto de la aplicación.
  •   Programación (programación e implementación): es la implementación de un lenguaje de programación para crear las funciones definidas durante la etapa de diseño.
  • Prueba de unidad: prueba individual de cada subconjunto de la aplicación para garantizar que se implementaron de acuerdo con las especificaciones.
  • Integración: para garantizar que los diferentes módulos se integren con la aplicación. Éste es el propósito de la prueba de integración que está cuidadosamente documentada.
  • Prueba beta (o validación), para garantizar que el software cumple con las especificaciones originales.
  • Documentación: sirve para documentar información necesaria para los usuarios del software y para desarrollos futuros.
  • Implementación
  •  Mantenimiento: para todos los procedimientos correctivos (mantenimiento correctivo) y las actualizaciones secundarias del software (mantenimiento continuo).

El orden y la presencia de cada uno de estos procedimientos en el ciclo de vida de una aplicación dependen del tipo de modelo de ciclo de vida acordado entre el cliente y el equipo de desarrolladores.
Métodos de Ciclo de Vida del Software
Para cada una de las fases o etapas listadas en el ítem anterior, existen sub-etapas (o tareas). El modelo de proceso o modelo de ciclo de vida utilizado para el desarrollo, define el orden de las tareas o actividades involucradas, también define la coordinación entre ellas, y su enlace y re alimentación  Entre los más conocidos se puede mencionar: modelo en cascada o secuencial, espiral, modelo. De los antedichos hay a su vez algunas variantes o alternativas, más o menos atractivas según sea la aplicación requerida y sus requisitos.
Modelo en cascada:
En Ingeniería de software el desarrollo en cascada, también llamado modelo en cascada, es el enfoque metodológico que ordena rigurosamente las etapas del proceso para el desarrollo de software, de tal forma que el inicio de cada etapa debe esperar a la finalización de la etapa anterior.
Un ejemplo de una metodología de desarrollo en cascada es:
1.  Análisis de requisitos.
2.  Diseño del Sistema.
3.  Diseño del Programa.
4.  Codificación.
5.  Pruebas.
6.  Implantación.
7.  Mantenimiento.
De esta forma, cualquier error de diseño detectado en la etapa de prueba conduce necesariamente al re-diseño y nueva programación del código afectado, aumentando los costos del desarrollo. La palabra cascada sugiere, mediante la metáfora de la fuerza de la gravedad, el esfuerzo necesario para introducir un cambio en las fases más avanzadas de un proyecto.

El modelo de ciclo de vida en cascada comenzó a diseñarse en 1966 y se terminó alrededor de 1970. Se define como una secuencia de fases en la que al final de cada una de ellas se reúne la documentación para garantizar que cumple las especificaciones y los requisitos antes de pasar a la fase siguiente:

Fases del modelo

        Análisis de requisitos

En esta fase se analizan las necesidades de los usuarios finales del software para determinar qué objetivos debe cubrir. De esta fase surge una memoria llamada SRD (documento de especificación de requisitos), que contiene la especificación completa de lo que debe hacer el sistema sin entrar en detalles internos.

Es importante señalar que en esta etapa se debe consensuar todo lo que se requiere del sistema y será aquello lo que seguirá en las siguientes etapas, no pudiéndose requerir nuevos resultados a mitad del proceso de elaboración del software.

        Diseño del Sistema

Descompone y organiza el sistema en elementos que puedan elaborarse por separado, aprovechando las ventajas del desarrollo en equipo. Como resultado surge el SDD (Documento de Diseño del Software), que contiene la descripción de la estructura relacional global del sistema y la especificación de lo que debe hacer cada una de sus partes, así como la manera en que se combinan unas con otras.
Es conveniente distinguir entre diseño de alto nivel o arquitectónico y diseño detallado. El primero de ellos tiene como objetivo definir la estructura de la solución (una vez que la fase de análisis ha descrito el problema) identificando grandes módulos (conjuntos de funciones que van a estar asociadas) y sus relaciones. Con ello se define la arquitectura de la solución elegida. El segundo define los algoritmos empleados y la organización del código para comenzar la implementación.

Diseño del Programa
Es la fase en donde se realizan los algoritmos necesarios para el cumplimiento de los requerimientos del usuario así como también los análisis necesarios para saber que herramientas usar en la etapa de Codificación.

         Codificación
Es la fase en donde se implementa el código fuente, haciendo uso de prototipos así como de pruebas y ensayos para corregir errores.

Pruebas
Los elementos, ya programados, se ensamblan para componer el sistema y se comprueba que funciona correctamente y que cumple con los requisitos, antes de ser entregado al usuario final.
          
         Verificación
         Es la fase en donde el usuario final ejecuta el sistema, para ello el o los      
         programadores ya realizaron exhaustivas pruebas para comprobar que 
         el    sistema no falle.
En la creación de desarrollo de cascada se implementa los códigos de investigación y pruebas del mismo.

Mantenimiento
Una de las etapas más críticas, ya que se destina un 75% de los recursos, es el mantenimiento del Software ya que al utilizarlo como usuario final puede ser que no cumpla con todas nuestras expectativas.

Características

  •     Es lineal
  •     Las actividades están relacionadas secuencial mente
  •     Cada etapa tiene una entrada y una salida
  •    Es rígido y sistemático: La entrada de una actividad es la salida de la         etapa anterior, por lo cual no se puede dar inicio a la siguiente fase.
  •     Es monolítico: Existe una única fecha de entrega.
  •   La implementación se pospone hasta que no se comprendan los objetivos.
  •     Los documentos a entregar rigen el proceso de software

Ventajas

  • Impone  la necesidad de mucha disciplina planificación y administración, en el proceso de desarrollo de software, venciendo así la filosofía de los procesos de codificar y probar
  • Impone  la necesidad de que la realización del producto debe ser pospuesta hasta que los objetivos sean bien entendidos. 

Desventajas

  • Retrasa la detección de errores hasta el final por lo cual es muy difícil realizar cambios cuando el proceso está en las últimas fases.
  • Toma mucho tiempo ver los resultados
  • Es difícil mantener la trazabilidad entre los requerimientos iniciales y el código final.
  • Cuando los requerimientos no están bien definidos no es posible aplicar éste modelo pues ello incrementaría los riesgos y retrasaría el proceso.
  • Si los requerimientos del usuario varían es muy difícil satisfacerlo si el proceso se encuentra en las últimas fases.
  •  El costo de detectar errores en etapas avanzadas es muy alto dado que ello modificaría todo lo que se ha desarrollado.


 

Modelo en Espiral:
La meta del modelo espiral del proceso de producción del software es proporcionar un marco para diseñar tales procesos, dirigido por los niveles de riesgo en el proyecto actual. En comparación con los actuales modelos, el modelo espiral se puede ver como meta modelo, porque puede acomodar cualquier modelo de proceso del desarrollo. Usándolo como referencia, se puede elegir el modelo de desarrollo más apropiado (e.g., evolutivo con la cascada).
Los riesgos son las circunstancias potencialmente adversas que pueden deteriorar el proceso del desarrollo y la calidad del producto. Boehm [1989] define la gerencia de riesgo como "disciplina cuyo objetivos es identificar, tratar, y eliminar artículos del riesgo del software antes de que se conviertan en las amenazas al adecuado funcionamiento del software o la fuente importante de la reanudación costosa del software." El modelo de espiral  se enfoca  en identificar y eliminar los  problemas de alto riesgo  con el  diseño de un proceso cuidadoso, más que tratar problemas triviales.
La característica principal del modelo espiral es que es cíclico y no lineal como el modelo de la cascada. Cada ciclo del espiral consiste en cuatro etapas, y cada etapa es representada por un cuadrante del plano cartesiano. El radio del espiral representa el coste acumulado hasta ahora en el proceso; la dimensión angular representa el progreso en el proceso.
La etapa 1 identifica los objetivos de la porción del producto bajo consideración, en términos de calidades ha alcanzar. Además, identifica alternativas -tales como si comprar, diseñar, o reutilizar cualesquier software- y restricciones en el uso de las alternativas. Las alternativas entonces se evalúan en la etapa 2 y se identifican y se tratan las áreas potenciales del riesgo. La estimación del riesgo puede requerir la planificación de diversas clases de actividades, por ejemplo Prototipaje o la simulación. La etapa 3 consiste en el desarrollo y verificación del próximo nivel del producto; otra vez, la estrategia seguida por el proceso es dictada por el análisis del riesgo.
Cuando los requerimientos están bien definidos, se puede elegir como opción un modelo convencional como el de la cascada, que conduce a una simple vuelta a la espiral. Cuando los requerimientos  no están claramente definidos, se puede seleccionar un modelo de naturaleza evolutiva; en este caso se necesitarían varias vueltas a la espiral  para alcanzar los resultados deseados. También  puede realizarse  cualquier combinación con los modelos  vistos anteriormente.
Finalmente, la etapa 4 consiste en  repasar los resultados de las etapas transitadas hasta ahora y el planear la iteración siguiente del espiral, si la hay.
El modelo espiral permite obtener mayor robustez en el proceso de desarrollo del software.


Ciclos e Iteraciones
En cada vuelta o iteración hay que tener en cuenta:
  •    Los Objetivos: qué necesidad debe cubrir el producto.
  •   Alternativas: las diferentes formas de conseguir los objetivos de forma exitosa, desde diferentes puntos de vista como pueden ser:

   1. Características: experiencia del personal, requisitos a cumplir, etc.
   2. Formas de gestión del sistema
   3. Riesgo asumido con cada alternativa.

  • Desarrollar y Verificar: Programar y probar el software.
  • Si el resultado no es el adecuado o se necesita implementar mejoras o funcionalidades:
  • Se planificaran los siguientes pasos y se comienza un nuevo ciclo de la espiral. La espiral tiene una forma de caracola y se dice que mantiene dos dimensiones, la radial y la angular:
1.   Angular: Indica el avance del proyecto del software dentro de un ciclo.
2.   Radial: Indica el aumento del coste del proyecto, ya que con cada nueva iteración se pasa más tiempo desarrollando.
Este sistema es muy utilizado en proyectos grandes y complejos como puede ser, por ejemplo, la creación de un Sistema Operativo.
Al ser un modelo de Ciclo de Vida orientado a la gestión de riesgo se dice que uno de los aspectos fundamentales de su éxito radica en que el equipo que lo aplique tenga la necesaria experiencia y habilidad para detectar y catalogar correctamente los riesgos.

Características:
  •    Es un modelo que puede combinarse con otros modelos de procesos de desarrollo.
  •    Es el mejor modelo que se utiliza para desarrollar grandes sistemas.
  •   El análisis de  riesgo requiere la participación de personal con experiencia.


Ventajas
  •     Modelo de proceso adaptable.
  •   El modelo de espiral puede aplicarse a lo largo de la vida del software.
  •     Es apropiado para desarrollar Sistemas Operativos.

Desventajas
  •     No se ha utilizado mucho ya que es un modelo nuevo.
  •   Debido a la complejidad no se recomienda utilizarlo en sistemas pequeños.
  •     Es un modelo costoso.






https://www.google.com.co/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&cad=rja&ved=0CD4QFjAC&url=http%3A%2F%2Fwww.uruak.com%2Fubv%2FModelos.doc&ei=wgo8UaHZPJTe8wSQw4HQAQ&usg=AFQjCNHc8RH53XM8EaGDRQbhBrZ9gYd1PQ&sig2=i5qTGxEye4Yyxo9v0quT7A&bvm=bv.43287494,d.eWU
http://es.wikipedia.org



Crisis del Software


LA CRISIS DEL SOFTWARE

La crisis del software se refiere a un conjunto de problemas encontrados en el desarrollo del software de computadoras. Los problemas no están limitados al software que “no funciona adecuadamente”. Sino que la crisis del software abarca los problemas asociados con cómo desarrollar el software, cómo mantener un volumen creciente de software existente y cómo podemos esperar satisfacer la demanda creciente de software. Aunque la referencia a una “crisis del software” puede ser criticada por ser algo melodramático, la frase sirve como un propósito útil para alumbrar los problemas reales encontrados en todas las áreas de desarrollo del software.
Básicamente, la crisis del software se refiere a la dificultad en escribir programas libres de defectos, fácilmente comprensibles, y que sean verificables. Las causas son, entre otras, la complejidad que supone la tarea de programar, y los cambios a los que se tiene que ver sometido un programa para ser continuamente adaptado a las necesidades de los usuarios.
Además, no existen todavía herramientas que permitan estimar de una manera exacta, antes de comenzar el proyecto, cuál es el esfuerzo que se necesitará para desarrollar un programa. Este hecho provoca que la mayoría de las veces no sea posible estimar cuánto tiempo llevará un proyecto, ni cuánto personal será necesario. Cuando se fijan plazos normalmente no se cumplen por este hecho. Del mismo modo, en muchas ocasiones el personal asignado a un proyecto se incrementa con la esperanza de disminuir el plazo de ejecución.
Englobó a una serie de sucesos que se venían observando en los proyectos de desarrollo de software:
·         Los proyectos no terminaban en plazo.
·         Los proyectos no se ajustaban al presupuesto inicial.
·         Baja calidad del software generado.
·         Software que no cumplía las especificaciones.
·         Código inmantenible que dificultaba la gestión y evolución del proyecto.
Aunque se han propuesto diversas metodologías para intentar subsanar los problemas mencionados, lo cierto es que todavía hoy no existe ningún método que haya permitido estimar de manera fiable el coste y duración de un proyecto antes de su comienzo.


Problemas

La crisis del software se caracteriza por muchos problemas, pero los responsables del desarrollo del software se concentran sobre los aspectos de “fondo”: (1) la planificación y estimación de coste es frecuentemente muy imprecisa; (2) la “productividad” de la gente del software no se corresponde con la demanda de sus servicios, y (3) la calidad del software no llega a ser a veces ni adecuada. Se ha sufrido el sobrepasar los costes en un orden de magnitud. Se ha errado en la planificación en meses o años. Se ha hecho muy poco para mejorar la productividad de los trabajadores en software. Los errores en los nuevos programas producen en los clientes insatisfacción y falta de confianza. Tales problemas son sólo las manifestaciones más visibles de otras dificultades del software:

•  No tenemos tiempo de recoger datos sobre el proceso de desarrollo del software. Sin datos históricos como guía, la estimación no ha sido buena y los resultados predichos muy pobres. Sin una indicación sólida de productividad, no podemos evaluar con precisión la eficacia de las nuevas herramientas, técnicas o estándares.

• La insatisfacción del cliente con el sistema “terminado” se produce demasiado frecuentemente. Los proyectos de desarrollo del software se acometen frecuentemente con sólo una vaga indicación de los requerimientos del cliente. Normalmente la comunicación entre el cliente y el que desarrolla el software es muy escasa.

•  La calidad del software es normalmente cuestionable. Hemos empezado a comprender recientemente la importancia de la prueba sistemática y técnicamente completa del software. Están comenzando a emerger conceptos cuantitativos sólidos sobre la fiabilidad del software y garantías de calidad [IAN84].

•  El software existente puede ser muy difícil de mantener. La tarea de mantenimiento del software se lleva la mayor parte de todos los dólares invertidos en software. El mantenimiento no se ha considerado un criterio importante en la aceptación del software.

Hemos presentado primero las malas noticias. Ahora las buenas: todos los problemas descritos anteriormente pueden corregirse. La clave está en dar un enfoque de ingeniería al desarrollo del software, junto con la mejora continua de técnicas y herramientas.

Permanecerá un problema (podríamos llamarlo un hecho de la vida). El software absorberá mayores y mayores porcentajes del coste de desarrollo global de los sistemas basados en computadoras. En los Estados Unidos gastamos cerca de 50 billones de dólares cada año en el desarrollo, compra y mantenimiento de software de computadora. Nos hemos tomado más en serio los problemas asociados con el desarrollo del software.

https://www.google.com.co/url?sa=t&rct=j&q=&esrc=s&source=web&cd=7&cad=rja&ved=0CE0QFjAG&url=http%3A%2F%2Fwww.sites.upiicsa.ipn.mx%2Fpolilibros%2Fportal%2FPolilibros%2FP_terminados%2FIngenieria_de_software%2Fpolilibro%2Fa_fondo%2Fcrisis2_1.doc&ei=xPo7UfH7OInm9ASp_YD4BQ&usg=AFQjCNFhjifeFNF1XRhpnXdyx_tAlLB6Fw&sig2=SDPVIF58UrYizZyhdXzWxg

Mitos de Software


Mitos del Software
Muchas de las causas de las crisis del software se pueden encontrar en una mitología que surge durante los primeros años del desarrollo del software. Hoy, la mayoría de los profesionales competentes consideran a los mitos por lo que son actitudes erróneas que han causado serios problemas, tanto a los gestores como a los técnicos. Sin embargo, las viejas actitudes y hábitos son difíciles de modificar, y todavía se cree en algunos restos de los mitos del software.

Mitos de gestión.
Los gestores con responsabilidad sobre el software, como los gestores en la mayoría de las disciplinas, están normalmente bajo la presión de cumplir los presupuestos, hacer que no se retrase el proyecto y mejorar la calidad.

Mito.
Tenemos ya un libro que está lleno de estándares y procedimientos para construir software. ¿No le proporciona ya a mi gente todo lo que necesita saber?
Realidad.
Esta muy bien que el libro exista, pero ¿se usa?, ¿conocen los trabajadores su existencia?, ¿refleja las prácticas modernas de desarrollo de software?, ¿es completo? En muchos casos, la respuesta a todas estas preguntas es "no".
Mito.
Mi gente dispone de las herramientas de desarrollo de software más avanzadas, después de todo, les compramos las computadoras más modernas.
Realidad.
Se necesita mucho más que el último modelo de computadora grande (o de PC) para hacer desarrollo de software de gran calidad. Las herramientas de ingeniería del software asistida por computadora (CASE), aunque la mayoría todavía no se usen, son más importantes que el hardware para conseguir buena calidad y productividad.
Mito.
Si fallamos en la planificación, podemos añadir más programadores y adelantar el tiempo perdido (el llamado algunas veces "concepto de la horda mongoliana").
Realidad.
El desarrollo de software no es un proceso mecánico como la fabricación. En palabras de Brooks [BRO75]: << ... añadir gente a un proyecto de software retrasado lo retrasa aún más>>. Al principio, esta declaración puede parecer un contra sentido. Sin embargo, cuando se añaden nuevas personas, le necesidad de aprender y comunicarse con el equipo puede y hace que se reduzca la cantidad de tiempo gastado en el desarrollo productivo. Puede añadirse gente, pero sólo de una manera planificada y bien coordinada.

Mitos del cliente.
Un cliente que solicita una aplicación de software puede ser una persona del despacho de al lado, un grupo técnico de la sala de abajo, el departamento de ventas o una compañía exterior que solicita un software bajo contrato. Los mitos conducen a que el cliente se cree una falsa expectativa y finalmente, quede insatisfecho con el que desarrolla el software.

Mito.
Una declaración general de los objetivos es suficiente para comenzar a escribir los programes; podemos dar los detalles más adelante.
Realidad.
Una mala definición inicial es la principal causa del trabajo baldío en software. Es esencial una descripción formal y detallada del ámbito de la información, funciones, rendimiento, interfaces, ligaduras del diseño y criterios de validación. Estas características pueden determinarse sólo después de una exhaustiva comunicación entre el cliente y el analista.
Mito.
Los requisitos del proyecto cambian continuamente, pero os cambios pueden acomodarse fácilmente, ya que el software es flexible.
Realidad.
Es verdad que los requisitos del software cambian, pero el impacto del cambio varía según el momento en que se introduzca. La Figura 1.5 ilustra el impacto de los cambios. Si se pone cuidado al dar la definición inicial, los cambios solicitados al principio pueden acomodarse fácilmente. El cliente puede revisar los requisitos y recomendar las modificaciones con relativamente poco impacto en el costo. Cuando los cambios se solicitan durante el diseño del software, el impacto en el costo crece rápidamente. Ya se han acordado los recursos a utilizar y se ha establecido un esqueleto del diseño. Los cambios pueden producir trastornos que requieran recursos adicionales e importantes modificaciones del diseño; es decir, costo adicional. Los cambios en la función, rendimiento, interfaces u otras características, impacto importante sobre el costo. Cuando se solicitan al final de un proyecto, los cambios pueden producir un orden de magnitud más caro que el mismo cambio pedido al principio.

Mitos de los desarrolladores.
Los mitos en los que aún creen muchos desarrolladores se han ido fomentando durante cuatro décadas de cultura informática. Durante los primeros días del desarrollo del software, la programación se veía como un arte. Las viejas formas y actitudes tardan en morir.

Mito.
Una vez que escribimos el programa y hacemos que funcione, nuestro trabajo ha terminado. Realidad. Alguien dijo una vez: << cuanto más pronto se comience a escribir código, tardara en terminarlo >>. Los datos industriales indican que entre el cincuenta y el sesenta por ciento de todo el esfuerzo dedicado a un programa se realizará después de que se le haya entregado al cliente por primera vez.
Mito.
Hasta que no tengo el programa << ejecutándose >> realmente no tengo forma de comprobar su calidad.
Realidad.
Desde el principio del proyecto se puede aplicar uno de los mecanismos más efectivos para garantizar la calidad del software: la revisión técnica formal. La revisión del software es un << filtro de calidad >> que se ha comprobado que es más efectivo que la prueba, para encontrar ciertas clases de defectos en el software.
Mito.
Lo único que se entrega al terminar el proyecto es el programa funcionando.
Realidad.
Un programa funcionando es sólo parte de una configuración del software que incluye programas, documentos, y datos. La documentación es la base de un buen desarrollo y, lo que es más importante, proporciona guías para la tarea de mantenimiento del software.
Muchos profesionales del software reconocen la falacia de los mitos descritos anteriormente. Lamentablemente, las actitudes y métodos habituales, fomentan una pobre gestión y malas prácticas técnicas, incluso cuando la realidad dicta un método mejor. El reconocimiento de la s realidades del software es el primer paso hacia la formulación de soluciones prácticas para su desarrollo.

FUENTE:http://www.sites.upiicsa.ipn.mx/polilibros/portal/Polilibros/P_proceso/ANALISIS_Y_DISEnO_DE_SISTEMAS/IngenieriaDeSoftware/CIS/UNIDAD%20I/1.3.htm.


Mitos de la Ingeniería de Sistemas


Algunos mitos de la Ingeniería de Sistemas
Todo profesional habrá escuchado alguna vez conceptos erróneos sobre su profesión y los ingenieros informáticos no son la salvedad. Algunos de estos son:

El ingeniero de sistemas trabaja con computadoras:
A pesar de que las computadoras son hoy el principal componente de muchos sistemas informáticos, existen dispositivos nuevos que no pueden considerarse computadoras pero que igualmente cumplen funciones importantes en ellos: PDAs, dispositivos de red, escáner, impresoras autónomas.
Pero la realidad es que pueden diseñarse sistemas informáticos sin componentes electrónicos, aunque no es muy común. Por ejemplo, muchísimas empresas (especialmente PYMES) utilizan sistemas de facturación basados completamente en papel y todavía dependen de sistemas contables basados en libros y ajenos a toda automatización electrónica. Las desventajas de tales sistemas, especialmente cuando la empresa crece, son evidentes pero no por ello se desechan o dejan de ser funcionales.
Lo más común, aun en diseños realizados por profesionales, es una mezcla de dispositivos electrónicos y puntos de entrada tradicionales. Por ejemplo, el control de asistencia de una empresa puede manejarse en una computadora, pero la captura del dato sobre la asistencia del empleado puede hacerse en una tarjeta convencional, porque lo central es la información y los procesos de manipulación de la misma, no la naturaleza de los canales y medios que se usen para obtenerla o llevarla de un lugar a otro.

El ingeniero de sistemas es un hábil programador:
Programar es una habilidad importante para el ingeniero de sistemas y no solo para él, en realidad para todos los profesionales, pero, dependiendo del campo en el que se desenvuelva, puede ser que ya no la realice o no la requiera. Seguramente existen profesionales hábiles para el diseño, la evaluación o para la construcción de sistemas que solo requieren integración de componentes, ellos no necesitan ser buenos programadores.
Tampoco es una habilidad indispensable (o requerida en alto grado) para quienes administran tecnologías de información o diseñan y construyen redes de datos, por poner un par de ejemplos.

Los ingenieros de sistemas saben mucho de Windows:
 O de Linux, o de Mac OS™, o de cualquier otro sistema operativo comercial. Usualmente suele ser cierto, pero no es necesario ni imprescindible sino puramente circunstancial.
Los sistemas pueden diseñarse con independencia de la plataforma (el sistema operativo o el hardware) que se vaya a utilizar, por lo que el ingeniero no necesita forzosamente saber mucho sobre un sistema particular.


FUENTES: http://ing-integral.blogspot.com/2009/02/algunos-mitos-de-la-ingenieria-de.html