sábado, 26 de abril de 2014

Visión general del Proceso de desarrollo de software.

El papel del usuario dentro del proceso de desarrollo de software. 
El rol que el usuario desempeña dentro del desarrollo de un Sistema de Información es de suma importancia, ya que los sistemas se construyen para satisfacer las necesidades particulares del usuario, en función de los objetivos estratégicos de la organización y ninguna otra persona, incluyendo al analista del sistema, conoce mejor que el usuario mismo, sus propios requerimientos; razón por la cual se dice que el usuario es el “Dueño del Sistema”. Sin embargo, éste no es su único papel, ya que existen una serie de funciones que el usuario debe asumir durante todo el desarrollo del proyecto, las cuales van exigiendo una determinada categorización del usuario de acuerdo a la responsabilidad que tendrá dentro del proyecto.


Responsabilidad ética y profesional en Ingeniería del software. 
La ingeniería del software se lleva a cabo dentro de un marco legal y social que limita la libertad de los ingenieros. Los ISW deben aceptar que su trabajo comprende responsabilidades más amplias que simplemente la aplicación de habilidades técnicas. Deben comportarse de una forma ética y moral responsable, no basta con poseer estándares normales de honestidad e integridad. No debería utilizar su capacidad y sus habilidades para comportarse de forma deshonesta o de forma que deshonre la profesión de la ingeniería del software.

Existen áreas donde los estándares de comportamiento aceptable no están acotados por las leyes, sino por la responsabilidad profesional, algunas de estas son:

  1. Confidencialidad. Respetar la confidencialidad de sus empleadores o clientes, independientemente de que se haya firmado un acuerdo formal de confidencialidad.
  2. Competencia. No debe falsificar su nivel de competencia, ni aceptar conscientemente trabajos que están fuera de su capacidad.
  3. Derechos de propiedad intelectual. Debe ser consciente de las leyes locales que gobiernan el uso de la propiedad intelectual, como las patentes el el copyright. Debe asegurarse de que la propiedad intelectual de los empleadores y clientes está protegida.

Uso inapropiado de las computadoras. No debe emplear sus habilidades técnicas para utilizar de forma inapropiada las computadoras de otras personas. Desde los relativamente triviales (utilizar juegos en las maquina de un empleado, por ejemplo) hasta los extremadamente serios (difusión de virus).

Ciclo de vida del software. 
Al igual que en otros sistemas de ingeniería, los sistemas de software requieren un tiempo y esfuerzo considerable para su desarrollo y deben permanecer en uso por un periodo mucho mayor. Durante este tiempo de desarrollo y uso, desde que se detecta la necesidad de construir un sistema de software hasta que este es retirado, se identifican varias etapas que en conjunto se denominan el ciclo de vida del software y en cada caso, en función de cuales sean las características del proyecto, se configurará el ciclo de vida de forma diferente. Usualmente se consideran las etapas: especificación y análisis de requisitos, diseño del sistema, implementación del software, aplicación y pruebas, entrega y mantenimiento. Un aspecto esencial dentro de las tareas del desarrollo del software es la documentación de todos los elementos y especificaciones en cada fase. Dado que esta tarea siempre estará influida por la fase del desarrollo en curso, se explicará de forma distribuida a lo largo de las diferentes fases como un apartado especial para recalcar su importancia en el conjunto del desarrollo del software.
Tal como ya hemos mencionado, las etapas principales a realizar en cualquier ciclo de vida son:

  1. Análisis: Construye un modelo de los requisitos
  2. Diseño: A partir del modelo de análisis se deducen las estructuras de datos, la estructura en la que descompone el sistema y la interfaz de usuario.
  3. Codificación: Construye el sistema. La salida de esta fase es código ejecutable.
  4. Pruebas: Se comprueba que se cumplen criterios de corrección y calidad.
  5. Validación: es el proceso de comprobar que lo que se ha especificado es lo que el usuario realmente quería.
  6. Mantenimiento: En esta fase, que tiene lugar después de la entrega se asegura que el sistema siga funcionando y adaptándose a nuevos requisitos.


Principios, modelos, métodos, metodologías técnicas, actividades y herramientas en el proceso de desarrollo de software.
MÉTODOS  EN EL PROCESO DE DESARROLLO DE UN SOFTWARE
Los métodos formales son soluciones matemáticas para resolver problemas de software y hardware a nivel de requisitos, especificación y diseño. Ejemplos de métodos formales incluyen el Método B, la red de Petri, la demostración automática de teoremas, RAISE y el VDM. Hay varias notaciones de especificaciones formales, tales como el lenguaje Z. Más generalmente, se puede utilizar la teoría de autómatas para aumentar y validar el comportamiento de la aplicación diseñando un sistema de autómata finito.
Las metodologías basadas en los autómatas finitos permiten especificación de software ejecutable y evitar la creación convencional de código.
Los métodos formales se suelen aplicar en software de aviación, especialmente si es software de seguridad crítico. Los estándares de aseguramiento del software de seguridad, tales como DO178B demandan métodos formales en el nivel más alto de categorización (Nivel A).
La formalización del desarrollo de software está ganando en fuerza poco a poco, en otros ámbitos, con la aplicación del lenguaje de especificación OCL2.0 (y especializaciones tales como Java Modeling Language) y particularmente con Model-driven Architecture, que permite la ejecución de diseños, incluso especificaciones.

Otra tendencia que está surgiendo en el desarrollo de software es la redacción de especificaciones en algún tipo de lógica (normalmente una variación de FOL), para acto seguido ejecutar esa lógica como si se tratase de un programa. El lenguaje OWL, basado en lógica descriptiva, es un buen ejemplo. También se está trabajando en enlazar un idioma natural de forma automática con lógica, lógica que puede ejecutarse. Ejemplo en este campo es el Attempto Controlled English, una lógica de negocios de Internet, que no busca controlar el vocabulario o la sintaxis. Una características de los sistemas que apoyan el vínculo bidireccional inglés-lógica y ejecución directa de la lógica es que pueden explicar sus resultados en inglés en un nivel de negocios o científico.

METODOLOGÍAS PARA EL DESARROLLO DEL SOFTWARE
Un proceso de software detallado y completo suele denominarse “Metodología”. Las metodologías se basan en una combinación de los modelos de proceso genéricos (cascada, evolutivo, incremental, etc.). Adicionalmente una metodología debería definir con precisión los artefactos, roles y actividades involucrados, junto con prácticas y técnicas recomendadas, guías de adaptación de la metodología al proyecto, guías para uso de herramientas de apoyo, etc. Habitualmente se utiliza el término “método” para referirse a técnicas, notaciones y guías asociadas, que son aplicables a una (o algunas) actividades del proceso de desarrollo, por ejemplo, suele hablarse de métodos de análisis y/o diseño.

La comparación y/o clasificación de metodologías no es una tarea sencilla debido a la diversidad de propuestas y diferencias en el grado de detalle, información disponible y alcance de cada una de ellas. A grandes rasgos, si tomamos como criterio las notaciones utilizadas para especificar artefactos producidos en actividades de análisis y diseño, podemos clasificar las metodologías en dos grupos: Metodologías Estructuradas y Metodologías Orientadas a Objetos. Por otra parte, considerando su filosofía de desarrollo, aquellas metodologías con mayor énfasis en la planificación y control del proyecto, en especificación precisa de requisitos y modelado, reciben el apelativo de Metodologías Tradicionales (o peyorativamente denominada Metodologías Pesadas, o Peso Pesado). Otras metodologías, denominadas Metodologías Ágiles, están más orientadas a la generación de código con ciclos muy cortos de desarrollo, se dirigen a equipos de desarrollo pequeños, hacen especial hincapié en aspectos humanos asociados al trabajo en equipo e involucran activamente al cliente en el proceso.
1395293257321-images_3_.jpg
ACTIVIDADES EN EL PROCESO DEL DESARROLLO DEL SOFTWARE

Planificación.
Implementación.
Pruebas del software.
Documentación.
Entrenamiento.
Despliegue
Mantenimiento del software.

HERRAMIENTAS PARA EL DESARROLLO DE SOFTWARE

Las Herramientas de Ayuda al Desarrollo de Sistemas de Información, surgieron para intentar dar solución a los problemas inherentes a los proyectos de generación de aplicaciones informáticas: plazos y presupuestos incumplidos, insatisfacción del usuario, escasa productividad y baja calidad de los desarrollos. Algunas de estas herramientas se dirigen principalmente a mejorar la calidad, como es el caso de las herramientas CASE (Computer Aided Software Engineering-Ingeniería de Software Asistida por Ordenador). Otras van dirigidas a mejorar la productividad durante la fase de construcción, como es el caso de los lenguajes de cuarta generación (4GL-Fourth Generation Language).

Herramientas para diseñar software

• Existe al menos 20 herramientas libres para diseñar software totalmente libres.
• Todas utilizan la notación UML
• El nivel de avance entre una y otra es notable, casi todas ofrecen como funcionalidad:
Diagramas de caso de uso.
Diagramas de clases.
Diagramas de secuencia.
• Generación de código en java, c++, python y php.
• Algunas entidad-relación (pero ninguna lo suficientemente avanzada)
• Pocas herramientas permiten ingeniería reversa, y si lo hacen solo es de lenguajes tipo java o c++.
1395293286185-image001.jpg

TÉCNICAS PARA EL DESARROLLO DE SOFTWARE
 La recolección de datos es una técnicas y herramientas que pueden ser utilizadas por el analista para desarrollar los sistemas de información, los cuales pueden ser la entrevistas, la encuesta, el cuestionario, la observación, el diagrama de flujo y el diccionario de datos.

El análisis de costo-beneficio es una técnica analítica que enumera y compara el costo neto de una intervención con los beneficios que surgen como consecuencia de aplicar dicha intervención. Para esta técnica, los costos y los beneficios de la intervención se expresan en unidades monetarias.

Selección del modelo apropiado según las características de los proyectos de software

Hay varios modelos a seguir para el establecimiento de un proceso para el desarrollo de software, cada uno de los cuales describe un enfoque diferente para diferentes actividades que tienen lugar durante el proceso. Algunos autores consideran un modelo de ciclo de vida un término más general que un determinado proceso para el desarrollo de software. Por ejemplo, hay varios procesos de desarrollo de software específicos que se ajustan a un modelo de ciclo de vida de espiral.

Modelos de Desarrollo de Software
Para el desarrollo de cualquier producto de software se realizan una serie de tareas entre la idea inicial y el producto final, un modelo de desarrollo establece el orden en el que se harán las cosas en el proyecto, provee de requisitos de entrada y de salida para cada una de las actividades, por ello es necesario el modelo de desarrollo.

Dado que cada proyecto es único, no existe un modelo que se aplique al 100% a todos los proyectos de una organización. Una organización puede contar con uno o más modelos de desarrollo para ser utilizados dependiendo del tipo de proyecto.

Los modelos de desarrollo de software son una representación abstracta de una manera en particular. Realmente no representa cómo se debe desarrollar el software, sino de un enfoque común. Puede ser modificado y adaptado de acuerdo a las necesidades del software en proceso de desarrollo. 1 Hay varios modelos para perfilar el proceso de desarrollo, cada uno de las cuales cuenta con pros y contras. El proyecto debería escoger el más apropiado para sus necesidades. En ocasiones puede que una combinación de varios modelos sea apropiado. Existen tres paradigmas de los modelos de desarrollo de software:

1. Paradigma Tradicional: Es uno de los paradigmas más antiguo, se inventó durante la creación del método estructurado. Si se elige un proyecto,el método varia en etapas.2 Como todo modelo, existen sus pros y contras al usar este paradigmas:

Si se aplica este paradigma, unos de los principales problemas , es que las etapas realizadas deben ser autónoma a la que le sigue, ya que con eso se atrasaría el proyecto. Se tiene que tener pautas bien definidas, y que no se incurra a modificación porque implicaría en que el software no cumpla con su ciclo de vida. Tener en cuenta que el cliente no se vea afectado por la impaciencia. 3

2. Paradigma Orientado a Objetos: Estos modelos se basan en la Programación orientada a objetos; por lo tanto, se refiere al concepto de clase, el análisis de requisitos y el diseño. El modelo o paradigma orientado a objetos posee dos características principales, las cuales son:
  • Permite la re-utilización de software.
  • Facilita el desarrollo de herramientas informáticas de apoyo al desarrollo, el cual es simple al implementarla en una notación orientado a objetos llamado UML.4
3. Paradigma de Desarrollo Ágil: Es un paradigma de las Metodologías De Desarrollo basado en procesos ágiles. Estos intentan evitar los tediosos caminos de las metodologías tradicionales enfocándose en las personas y los resultados. Usa un enfoque basado en el Valor para construir software, colaborando con el cliente e incorporando los cambios continuamente.

La ingeniería de software tiene varios modelos o paradigmas para el desarrollo de aplicaciones.

Ejemplos:
  1. Modelo en cascada
  2. Modelo en espiral (modelo evolutivo)
  3. Modelo de prototipos
  4. Desarrollo iterativo e incremental

Cada uno de estos modelos tiene ventajas y desventajas que se deben considerar a la hora de seleccionar un modelo.

El modelo en cascada

En Ingeniería de software el desarrollo en cascada, también llamado modelo en cascada (denominado así por la posición de las fases en el desarrollo de esta, que parecen caer en cascada “por gravedad” hacia las siguientes fases), 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.1 Al final de cada etapa, el modelo está diseñado para llevar a cabo una revisión final, que se encarga de determinar si el proyecto está listo para avanzar a la siguiente fase. Este modelo fue el primero en originarse y es la base de todos los demás modelos de ciclo de vida.

La versión original fue propuesta por Winston W. Royce en 1970 y posteriormente revisada por Barry Boehm en 1980 e Ian Sommerville en 1985.2

Un ejemplo de una metodología de desarrollo en cascada es la metodología de Kendall & Kendall:
  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.

El modelo incremental

  1. Aplica elementos del modelo en cascada aplicados en forma iterativa.
  2. Se enfoca en la entrega de un producto operacional con cada incremento.
  3. Es útil cuando no se cuenta con todo el personal necesario para desarrollar el proyecto o para habilitar líneas paralelas de desarrollo.
El modelo en espiral
El Modelo en Espiral (Ian Sommerville, 2000), es un modelo de proceso de software evolutivo donde se conjuga la naturaleza de construcción de prototipos con los aspectos controlados y sistemáticos del modelo lineal y secuencial 

El modelo de prototipos

El Modelo de prototipos, en Ingeniería de software, pertenece a los modelos de desarrollo evolutivo. El prototipo debe ser construido en poco tiempo, usando los programas adecuados y no se debe utilizar muchos recursos.

El diseño rápido se centra en una representación de aquellos aspectos del software que serán visibles para el cliente o el usuario final. Este diseño conduce a la construcción de un prototipo, el cual es evaluado por el cliente para una retroalimentación; gracias a ésta se refinan los requisitos del software que se desarrollará. La interacción ocurre cuando el prototipo se ajusta para satisfacer las necesidades del cliente. Esto permite que al mismo tiempo el desarrollador entienda mejor lo que se debe hacer y el cliente vea resultados a corto plazo.

lunes, 21 de abril de 2014

El software.

Conceptos:
Software: El software es un ingrediente indispensable para el funcionamiento del computador. Está formado por una serie de instrucciones y datos, que permiten aprovechar todos los recursos que el computador tiene, de manera que pueda resolver gran cantidad de problemas. Un computador en si, es sólo un conglomerado de componentes electrónicos; el software le da vida al computador, haciendo que sus componentes funcionen de forma ordenada.

Ingeniería.
1. f. Estudio y aplicación, por especialistas, de las diversas ramas de la tecnología.



Cualidades del software.

Correctitud (Correctness):
Un programa es funcionalmente correcto si se comporta de acuerdo a la especificación de las funciones (especificación de requerimientos funcionales) que debería proveer. Esta definición de correctitud asume que existe una especificación de requerimientos funcionales del sistema y que es posible determinar en forma no ambigua si las cumple o no.

 Confiabilidad (Reliability):
Informalmente el software es confiable si el usuario puede tenerle confianza. Formalmente la confiabilidad
se define en términos del comportamiento estadístico: la probabilidad de que el software opere como es
esperado en un intervalo de tiempo especificado. Contrariamente a la correctitud que es una cualidad
absoluta, la confiabilidad es relativa. Cualquier desviación de los requerimientos hace que el sistema sea
incorrecto, por otro lado, si la consecuencia de un error en el software no es seria, el software incorrecto
aún puede ser confiable.

Robustez (Robustness):
Un progama es robusto si se comporta en forma razonable aún en circunstancias que no fueron anticipadas 
en la especificación de requerimientos; por ejemplo cuando encuentra datos de entrada incorrectos o algún 
malfuncionamiento del hardware como rotura de disco. Un programa que genere un error no recuperable en 
tiempo de ejecución tan pronto como el usuario ingrese inadvertidamente un comando incorrecto no será 
robusto, aunque podría ser correcto si en la especificación de requerimientos no se establece la acción a 
tomar si se ingresa un comando incorrecto.

Performance (también Eficciency):
En la Ingeniería de Software generalmente performance equivale a eficiencia. Un sistema de software es 
eficiente si utiliza los recursos computacionales en forma económica. La performance de un sistema es 
importante porque afecta su usabilidad, por ejemplo, si es muy lento reduce la productividad de los 
usuarios, si usa demasiado espacio de disco puede ser muy caro de ejecutar, si utiliza demasiada memoria 
puede afectar al resto de las aplicaciones que se están ejecutando o ejecutarse demasiado lentamente 
mientras el sistema operativo intenta balancear el uso de la memoria por parte de las distintas aplicaciones. 

Amigabilidad (Friendliness):
Un sistema de software es amigable si un usuario humano lo encuentra fácil de utilizar. Esta definición 
refleja la naturaleza subjetiva de la amigabilidad: una aplicación utilizada por usuarios no experientes califica 
como amigable por varias propiedades distintas a las de una aplicación utilizada por programadores 
expertos, por ejemplo, los primeros apreciarían el uso de menúes mientras los segundos se sentirían más 
cómodos ingresando comandos.

Verificabilidad (Verifiability):
Un sistema de software es verificable si sus propiedades pueden ser verificadas fácilmente. Por ejemplo, la 
correctitud o la performance de un sistema son propiedades que interesa verificar. El diseño modular, 
prácticas de codificación disciplinadas, y la utilización de lenguajes de programación adecuados contribuyen 
a la verificabilidad de un sistema. La verificabilidad es en general una cualidad interna pero a veces también puede ser externa, por ejemplo, en muchas aplicaciones de seguridad crítica, el cliente requiere la verificación de ciertas propiedades.

 Mantenibilidad (Maintainability):
El término mantenimiento del software es utilizado generalmente para referirse a las modificaciones que se
realizan a un sistema de software luego de su liberación inicial, siendo visto simplemente como “corrección
de bugs”. Algunos estudios han mostrado sin embargo, que la mayor parte del tiempo utilizado en
mantenimiento es para agregarle al producto características que no estaban en las especificaciones
originales o estaban definidas incorrectamente.

 Reparabilidad (Reparability):
Un sistema de software es reparable si permite la corrección de sus defectos con una carga limitada de
trabajo. En otros campos de la ingeniería puede ser más barato cambiar un producto entero o una buena
parte del mismo que repararlo, por ejemplo televisores, y una técnica muy utilizada para lograr reparabilidad
es usar partes estándares que puedan ser cambiadas fácilmente. Sin embargo, en el software las partes no
se deterioran, y aunque el uso de partes estándares puede reducir el costo de producción del software, el
concepto de partes reemplazables pareciera no aplicar a la reparabilidad del software. Otra diferencia es que el costo del software está determinado, no por partes tangibles sino por actividades humanas de diseño.

 Evolucionabilidad (Evolvability):
Un sistema es evolucionable si acepta cambios que le permitan satisfacer nuevos requerimientos. En otros
productos de ingeniería las modificaciones van precedidas de actividades como estudios de factibilidad,
diseño asociado, aprobaciones, evaluaciones y finalmente la introducción de la modificación. En el caso del
software, en general la implementación del cambio se comienza sin realizar ningún estudio de factibilidad,
dejando únicamente el diseño original y sin documentación a posteriori, esto es sin actualizar las
especificaciones para reflejarlo, lo que hace que cambios futuros sean cada vez más difíciles de aplicar.

Reusabilidad (Reusability):
La reusabilidad es similar a la evolucionabilidad: en la segunda se modifica un producto para construir una 
nueva versión del mismo producto, en la primera se utiliza un producto, posiblemente con modificaciones 
menores, para construir otro producto. Un ejemplo de un producto reusable es el shell de UNIX que además de aceptar comandos de usuario y ejecutarlos, puede ser iniciado mediante un archivo que contenga una lista de comandos del shell, lo que permite escribir programas (scripts) en el lenguaje de comandos del 
shell, por lo que puede verse el programa como un nuevo producto que utiliza el shell como componente. 
Puede parecer más apropiado aplicar este término a componentes del software que a productos completos, 
pero es ciertamente posible construir productos que sean reusables. Aunque es una herramienta importante 
para reducir los costos de producción del software, los ejemplos de reusabilidad son raros.

 Portabilidad (Portability):
El software es portable si puede ser ejecutado en distintos ambientes, refiriéndose este último tanto a
plataformas de hardware como a ambientes de software como puede ser determinado sistema operativo. Si
bien se ha transformado en un tema importante debido a la proliferación de procesadores y sistemas
operativos distintos, puede ser importante incluso en una misma familia de procesadores debido a las
variaciones de capacidad de memoria e instrucciones adicionales, por lo que una forma de lograr
portabilidad es asumir una configuración mínima y utilizar un subconjunto de las facilidades provistas que se
garantiza estarán disponibles en todos los modelos de la arquitectura, como instrucciones de máquina y
facilidades del sistema operativo. También es necesario utilizar técnicas que permitan al software determinar
las capacidades del hardware y adaptarse a éstas.

Comprensibilidad (Understandability):
Algunos sistemas de software son más fáciles de comprender que otros, algunas tareas son inherentemente 
más complejas que otras. Por ejemplo, un sistema que realiza predicción del clima, sin importar lo bien que 
esté escrito, será más difícil de comprender que uno que imprime una lista de correo. Dadas dos tareas con 
dificultad similar, se pueden seguir ciertas guías para producir diseños y escribir programas más 
comprensibles. 

Interoperabilidad (Interoperability):
La interoperabilidad se refiere a la habilidad de un sistema de coexistir y cooperar con otros sistemas, por 
ejemplo, la habilidad de un procesador de texto de incluir gráficas producidas por un paquete de gráficos. 
Aunque rara en los productos de software, la interoperabilidad abunda en otros productos de la ingeniería, 
por ejemplo, estéreos de distinta marca pueden conectarse juntos y también a televisiones y 
videograbadores, de hecho equipos producidos hace décadas se adaptan a nuevas tecnologías como discos 
compactos, mientras que casi todos los sistemas operativos tuvieron que ser modificados – en algunos casos significativamente – antes de que pudieran trabajar con los nuevos discos ópticos.

 Productividad (Productivity):
La productividad es una cualidad del proceso de producción de software, mide la eficiencia del proceso y
como se vio antes, es la cualidad de performance aplicada al proceso. Un proceso eficiente resulta en una
entrega más rápida del producto.

Oportunidad (Timeliness)
La oportunidad es una cualidad del proceso que se refiere a la habilidad de entregar un producto a tiempo.
Históricamente los procesos de producción de software no han tenido esta cualidad lo que llevó a la llamada “crisis del software” que a su vez trajo aparejada la necesidad y el nacimiento de la ingeniería de software.
Incluso actualmente muchos procesos fracasan en lograr sus resultados a tiempo.

Visibilidad (Visibility):
Un proceso de desarrollo de software es visible si todos sus pasos y su estado actual son claramente 
documentados. Otros términos utilizados son transparencia y apertura. La idea es que los pasos y el estado 
del proyecto están disponibles y fácilmente accesibles para ser examinados externamente.

A partir de: Fundamentals of Software Engineering – Carlo Ghezzi, Mehdi Jazayeri, Dino Mandrioli.

Factores de calidad del software. 

En los factores que podemos nombrar para que el cliente sienta satisfacción en todas sus necesidades en la presencia del software ya desarrollado serian;

  1. Corrección.
  2. Fiabilidad
  3. Eficiencia
  4. Seguridad
  5. Facilidad


Ingeniería del software.


Es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento de software o podemos citar a Zelkovitz, el cual dice que es el estudio de los principios y metodologías para el desarrollo y mantenimiento de sistemas software. Pero en fin solo se busca el desarrollo de un software rentable y estable para coda uso en el área de trabajo.

lunes, 7 de abril de 2014

El Enfoque Sistemico

Sistemas y tecnologías de la información para la gestión.
Las tecnologías de la información permiten a las empresas obtener, procesar, almacenar e intercambiar información. En el contexto de la gestión del conocimiento, el rol de la tecnología de la información es extender la capacidad humana de creación de conocimiento a través de las facilidades de rapidez, extensión de la memoria y comunicacion


Planificación de la Información en la Gestión.

La planificación cumple dos propósitos principales en las organizaciones: el protector y el afirmativo. El propósito protector consiste en minimizar el riesgo reduciendo la incertidumbre que rodea al mundo de los negocios y definiendo las consecuencias de una acción administrativa determinada. El propósito afirmativo de la planificación consiste en elevar el nivel de éxito organizacional.

Leer más: http://www.monografias.com/trabajos34/planificacion/planificacion.shtml#ixzz2yCbLm96H

Una planificación de sistemas informáticos, también conocido como Plan Director de Sistemas, Plan de Sistemas de información o Plan Estratégico de Sistemas, facilita a una organización una correcta determinación del estado actual de los sistemas informáticos, de los requisitos que la organización les demanda para identificar un estado futuro de dichos sistemas alineados con los objetivos de la organización.

A partir de esta determinación del estado actual y futuro de los sistemas de la organización, se realiza un Gap Analysis (análisis de diferencias) que permite identificar las acciones a tomar para alcanzar dicho estado futuro, a nivel de organización, sistemas, procesos, personal y proyectos. Posteriormente los planes tácticos (p.e. de carácter anual) programarán dichas acciones.

http://es.wikipedia.org/wiki/Planificaci%C3%B3n_de_sistemas_inform%C3%A1ticos