miércoles, 29 de junio de 2016


INGENIERÍA DE SOFTWARE


La ingeniería de software es una disciplina formada por un conjunto de métodos, herramientas y técnicas que se utilizan en el desarrollo de los programas informáticos (software).
Esta disciplina trasciende la actividad de programación, que es el pilar fundamental a la hora de crear una aplicación. El ingeniero de software se encarga de toda la gestión del proyecto para que éste se pueda desarrollar en un plazo determinado y con el presupuesto previsto.
La ingeniería de software, por lo tanto, incluye el análisis previo de la situación, el diseño del proyecto, el desarrollo del software, las pruebas necesarias para confirmar su correcto funcionamiento y la implementación del sistema.


NOTACIONES
LUM (LENGUAJE UNIFICADO DE MODELADO) O UML
Es un lenguaje de modelado muy reconocido y utilizado actualmente que se utiliza para describir o especificar métodos. También es aplicable en el desarrollo de software.
Las siglas UML significan lenguaje unificado de modelado esto quiere decir que no pretende definir un modelo estándar de desarrollo, sino únicamente un lenguaje de modelado.
Un lenguaje de modelado consiste de vistas, elementos de modelo y un conjunto de reglas: sintácticas, semánticas y pragmáticas que indican cómo utilizar los elementos.

BPMN (NOTACIÓN PARA EL MODELADO DE PROCESOS DE NEGOCIOS)
El objetivo de la notación para el modelado de procesos de negocios es proporcionar de una manera fácil de definir y analizar los procesos de negocios públicos y privados simulando un diagrama de flujo. La notación ha sido diseñada específicamente para coordinar la secuencia de los procesos y los mensajes que fluyen entre los participantes del mismo, con un conjunto de actividades relacionadas. Características básicas de los elementos de BPMN.
·         Objetos de flujo: eventos, actividades, rombos de control de flujo (gateways).
·         Objetos de conexión: flujo de secuencia, flujo de mensaje, asociación.
·         Swimlanes (carriles de piscina): pool, lane.
·         Artefactos: objetos de datos, grupo, anotación.

DIAGRAMA DE FLUJO DE DATOS (DFD)
Un diagrama de flujo de datos permite representar el movimiento de datos a través de un sistema por medio de modelos que describen los flujos de datos, los procesos que transforman o cambian los datos, los destinos de datos y los almacenamientos de datos a la cual tiene acceso el sistema.
Su inventor fue Larry Constantine, basado en el modelo de computación de Martin y Estrin: flujo gráfico de datos. Con los diagramas de flujo de datos determina la manera en que cualquier sistema puede desarrollarse, ayuda en la identificación de los datos de la transacción en el modelo de datos y proporciona al usuario una idea física de cómo resultarán los datos a última instancia.

HERRAMIENTAS CASE

Las Herramienta CASE son herramientas computacionales (software) que están destinadas a asistir en los procesos de ciclo de vida de un software, facilitan la producción del software, varias se basan principalmente en la idea de un modelo gráfico



ETAPAS DEL PROCESO

 

OBTENCIÓN DE LOS REQUISITOS

Se debe identificar sobre qué se está trabajando, es decir, el tema principal que motiva el inicio del estudio y creación del nuevo software o modificación de uno ya existente. A su vez identificar los recursos que se tienen, en esto entra el conocer los recursos humanos y materiales que participan en el desarrollo de las actividades. Es importante entender el contexto del negocio para identificar adecuadamente los requisitos.
Se tiene que tener dominio de la información de un problema, lo cual incluye los datos fuera del software (usuarios finales, otros sistemas o dispositivos externos), los datos que salen del sistema (por la interfaz de usuario, interfaces de red, reportes, gráficas y otros medios) y los almacenamientos de datos que recaban y organizan objetos persistentes de datos (por ejemplo, aquellos que se conservan de manera permanente).
También hay que ver los puntos críticos, lo que significa tener de una manera clara los aspectos que entorpecen y limitan el buen funcionamiento de los procedimientos actuales, los problemas más comunes y relevantes que se presentan, los motivos que crean insatisfacción y aquellos que deben ser cubiertos a plenitud. Por ejemplo: ¿El contenido de los reportes generados, satisface realmente las necesidades del usuario? ¿Los tiempos de respuesta ofrecidos, son oportunos?, etc.
Hay que definir las funciones que realizará el software ya que estas ayudan al usuario final y al funcionamiento del mismo programa.
Se tiene que tener en cuenta cómo será el comportamiento del software ante situaciones inesperadas como lo son por ejemplo una gran cantidad de usuarios usando el software o una gran cantidad de datos entre otros.

ANÁLISIS DE REQUISITOS

Extraer los requisitos de un producto software es la primera etapa para crearlo. Durante la fase de análisis, el cliente plantea las necesidades que se presenta e intenta explicar lo que debería hacer el software o producto final para satisfacer dicha necesidad mientras que el desarrollador actúa como interrogador, como la persona que resuelve problemas. Con este análisis, el ingeniero de sistemas puede elegir la función que debe realizar el software y establecer o indicar cuál es la interfaz más adecuada para el mismo.
El análisis de requisitos puede parecer una tarea sencilla, pero no lo es debido a que muchas veces los clientes piensan que saben todo lo que el software necesita para su buen funcionamiento, sin embargo se requiere la habilidad y experiencia de algún especialista para reconocer requisitos incompletos, ambiguos o contradictorios. Estos requisitos se determinan tomando en cuenta las necesidades del usuario final, introduciendo técnicas que nos permitan mejorar la calidad de los sistemas sobre los que se trabaja.
El resultado del análisis de requisitos con el cliente se plasma en el documento ERS (especificación de requisitos del sistema), cuya estructura puede venir definida por varios estándares, tales como CMMI. Asimismo, se define un diagrama de entidad/relación, en el que se plasman las principales entidades que participarán en el desarrollo del software.
La captura, análisis y especificación de requisitos (incluso pruebas de ellos), es una parte crucial; de esta etapa depende en gran medida el logro de los objetivos finales. Se han ideado modelos y diversos procesos metódicos de trabajo para estos fines. Aunque aún no está formalizada, ya se habla de la ingeniería de requisitos.
La IEEE Std. 830-1998 normaliza la creación de las especificaciones de requisitos de software (Software Requirements Specification).
Finalidades del análisis de requisitos:
·         Brindar al usuario todo lo necesario para que pueda trabajar en conjunto con el software desarrollado obteniendo los mejores resultados posibles.
·         Tener un control más completo en la etapa creación del software, en cuanto a tiempo de desarrollo y costos.
·         Utilización de métodos más eficientes que permitan el mejor aprovechamiento del software según sea la finalidad de uso del mismo.
·         Aumentar la calidad del software desarrollado al disminuir los riesgos de mal funcionamiento.
No siempre en la etapa de "análisis de requisitos" las distintas metodologías de desarrollo llevan asociado un estudio de viabilidad y/o estimación de costes. El más conocido de los modelos de estimación de coste del software es el modelo COCOMO.

LIMITACIONES

El software tiene la capacidad de emular inteligencia creando un modelo de ciertas características de la inteligencia humana pero sólo posee funciones predefinidas que abarcan un conjunto de soluciones que en algunos campos llega a ser limitado. Aun cuando tiene la capacidad de imitar ciertos comportamientos humanos no es capaz de emular el pensamiento humano porque actúa bajo condiciones.
Otro aspecto limitante del software proviene del proceso totalmente mecánico que requiere de un mayor esfuerzo y tiempos elevados de ejecución lo que lleva a tener que implementar el software en una máquina de mayor capacidad.

ESPECIFICACIÓN

La especificación de requisitos describe el comportamiento esperado en el software una vez desarrollado. Gran parte del éxito de un proyecto de software radicará en la identificación de las necesidades del negocio (definidas por la alta dirección), así como la interacción con los usuarios funcionales para la recolección, clasificación, identificación, priorización y especificación de los requisitos del software.
Entre las técnicas utilizadas para la especificación de requisitos se encuentran:
·         Caso de uso
·         Historias de usuario
Siendo los primeros más rigurosos y formales, los segundas más ágiles e informales.

ARQUITECTURA

La integración de infraestructura, desarrollo de aplicaciones, bases de datos y herramientas gerenciales, requieren de capacidad y liderazgo para poder ser conceptualizados y proyectados a futuro, solucionando los problemas de hoy. El rol en el cual se delegan todas estas actividades es el del Arquitecto.
El arquitecto de software es la persona que añade valor a los procesos de negocios gracias a su valioso aporte de soluciones tecnológicas.
La arquitectura de sistemas en general, es una actividad de planeación, ya sea a nivel de infraestructura de red y hardware, o de software.
Lo principal en este punto es poner en claro los aspectos lógicos y físicos de las salidas, modelos de organización y representación de datos, entradas y procesos que componen el sistema, considerando las bondades y limitaciones de los recursos disponibles en la satisfacción de las pacificaciones brindadas para el análisis.
Hay que tener en consideración la arquitectura del sistema en la cual se va a trabajar, elaborar un plan de trabajo viendo la prioridad de tiempo y recursos disponibles. En los diseños de salidas entra los que es la interpretación de requerimientos lo cual es el dominio de información del problema, las funciones visibles para el usuario, el comportamiento del sistema y un conjunto de clases de requerimientos que agrupa los objetos del negocio con los métodos que les dan servicio.
La arquitectura de software consiste en el diseño de componentes de una aplicación (entidades del negocio), generalmente utilizando patrones de arquitectura. El diseño arquitectónico debe permitir visualizar la interacción entre las entidades del negocio y además poder ser validado, por ejemplo por medio de diagramas de secuencia. Un diseño arquitectónico describe en general el cómo se construirá una aplicación de software. Para ello se documenta utilizando diagramas, por ejemplo:
·         Diagramas de clases.
·         Diagramas de base de datos.
·         Diagrama de despliegue.
·         Diagrama de secuencia.

 

 


RESUMEN
Ingeniería de software es el estudio de los principios y metodologías para el desarrollo y mantenimiento de sistemas software, es la aplicación práctica del conocimiento científico al diseño y construcción de programas de computadora y a la documentación asociada requerida para desarrollar, operar y mantenerlos. Se conoce también como desarrollo de software o producción de software.

SUMMARY
Software engineering is the study of the principles and methodologies for the development and maintenance of software systems is the practical application of scientific knowledge to the design and construction of computer programs and associated documentation required to develop, operate and maintain them. It is also known as software development or production software.


RECOMENDACIONES
v Se recomienda a los programadores aplicar este modelo de evaluación al software que diseñen, para evita que después de estar implantado se tenga que rediseñar y causar inconvenientes a los usuarios.
v  Se recomienda los programadores utilizar la norma ISO/IEC para minimizar la tasa de error en sus sistemas.
v  Se recomienda que los sistemas que se realizan sean modificados, para  que no haya ningún problema.
CONCLUSIONES
v  Ingeniera de software es un tema muy importante dentro del proceso de aprendizaje del alumno.
v  Ingeniera de software permite a los programadores la creación de mejor software mediante el uso de  técnicas y metodologías para garantizar la correcta funcionalidad.
v  Ingeniera de software ha sido uno de los pilares más grandes para el crecimiento de la industria del software a lo largo de los años.

APRECIACIÓN DEL EQUIPO
Este trabajo define el concepto de ingeniería de software ,sus notaciones ,herramientas case, etapas del proceso y puntos muy importantes de ingeniería  de software , ya que es la aplicación práctica del conocimiento científico al diseño y construcción de programas de computadora y a la documentación asociada requerida para desarrollar, operar y mantenerlos.

GLOSARIO DE TÉRMINOS
Es la parte del proceso de desarrollo de software cuyo propósito principal es realizar un modelo del dominio del problema. El análisis hace foco en qué hacer, el diseño hace foco en cómo hacerlo. Contraste: diseño.


ATRIBUTO
Es una parte específica de una clase. Una propiedad de un tipo identificada mediante un nombre.


Es un case integrado que abarca distintas etapas del ciclo de vida de desarrollo del sistema.



                                                    VIDEO TUTORIAL





BIBLIOGRAFIA

v  http://definicion.de/ingenieria-de-software/#ixzz4Cs0p6aNN
v  https://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_software#Notaciones
https://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_









































































































http://www.slideshare.net/marianela0393/ingeniera-de-software-63572259

miércoles, 22 de junio de 2016



CALIDAD DE SOFTWARE

Es la concordancia con los requerimientos funcionales y de rendimiento explícitamente establecidos, con los estándares de desarrollo explícitamente documentados y con las características implícitas que se esperan de todo software desarrollado profesionalmente.
Un producto de alta calidad requiere menos mantenimiento y facilita tanto el desarrollo como el mantenimiento de la productividad. Con la medición de la calidad se pueden lograr estos objetivos. En lo que se refiere al mantenimiento, la medición de la calidad del software ayuda a identificar problemas de confiabilidad y a mejorar las técnicas para identificar las necesidades de mantenimiento.




CERTIFICACIÓN  DEL SOFTWARE

Consecuencia de un proceso que es asegurar la calidad pero nunca es el objetivo final. La calidad de software no se certifica, lo que se certifica son los procedimientos para construir un software de calidad, los procedimientos deben ser correctos y estar en función de la normalización (ISO 9000, CMMI, Microsoft...).

NORMATIVA ISO
Pone a disposición de un auditor o certificador los procesos internos, de forma que este indique si cumple o no la normativa al 100%, audita el sistema; Si los resultados son positivos se emite la certificación y cada cierto tiempo se tiene que renovar; La certificación es costosa, a consecuencia de costes que ocasionan la lejanía y el tiempo de duración de proceso (aprox. 6 meses). Se certifica la empresa y la metodología para el desarrollo de la aplicación.

MEDICIÓN DEL SOFTWARE
En el software lo que se mide son atributos propios del mismo, se descompone un atributo general en otros más simples de medir, a veces se mide bien o mal ya que la descomposición del atributo genérico de calidad en otros sub-atributos se torna irreal, se mide con datos estadísticos no avalados, es imposible decir que la medición se hace en forma correcta.
El concepto de medida va de más a menos, va de lo general a lo concreto y lo concreto es asociado a la métrica, cuya combinación te daría el nivel de calidad o seguridad de tu producto. Las ciencias bien estructuradas se basan en medidas bien hechas, se basan en la matemática.

TIPOS DE MEDIDAS
·         Número de errores durante un periodo determinado.
·         Fallo en la codificación o diseño de un sistema que causa que el programa no funcione correctamente o falle.
·         Tamaño de un producto informático (líneas de código)
·         Métrica de punto función (IBM): relaciona funcionalidades que ofrecía.
·         Estimación de costes y esfuerzos.
·         COCOMO

UTILIDADES DE LA MEDIDA DEL SOFTWARE
ü  Normativa ISO 9126, medida de la calidad de software descomponiendo atributos, para no tener márgenes de error e interpretación.
ü  Atributo de funcionalidad.
ü  Atributo de capacidad de respuesta frente a errores externos.
ü  Atributo de nivel de seguridad. La calidad no puede existir sin seguridad, un producto sin seguridad sería un producto sin calidad. El observador o usuario final indica que atributos más o menos importantes de seguridad.

RESUMEN

Un desarrollador que analice a la hora de realizar un excelente trabajo en el control de  calidad del software debe de tener en cuenta una buena gestión de los proyectos, tener un buen control para mejorar los problemas que se estén presentando para el proceso y el desarrollo del sistema. También se debe de tener en cuenta los mecanismos, acciones, herramientas que realizamos y utilizamos para detectar la presencia  de errores, y en esta medida se deben hacer inspecciones o pruebas para verificar que las características sean buenas y flexibles al momento de presentar estos proyectos al cliente que es el encargado en muchos casos de evaluar el producto final.
Los factores en la calidad del software son elementos y métodos de gran importancia ya que nos enfocan hacia lo que vamos a realizar y a que el software final sea lo esperado y se miran desde la operatividad hasta la adaptabilidad a los entornos. Todos los desarrolladores debemos de estar al día en toda la información que se encuentra respecto a calidad y por supuesto siempre escuchar y analizar muy bien al cliente y/o la empresa de la cual se va a realizar el software; para que así como avanza la tecnología, avance nuestros conocimientos y la calidad de nuestros sistemas software.

SUMMARY

A developer to analyze when doing an excellent job in quality control software should take account of good project management, good control to improve the problems that are being presented for the process and development of system. It also must take into account the mechanisms, actions, tools we do and use to detect the presence of errors, and this measure should make inspections or tests to verify that the features are good and flexible when submitting these projects to customer who is responsible in many cases to evaluate the final product. Factors in software quality elements and methods are of great importance as they approach us to what we will perform and the final software is expected and viewed from the operation to adaptability to environments. All developers must keep abreast of all the information found regarding quality and of course always listen and analyze customer well and / or the company which will perform the software; so that as technology advances, advance our knowledge and the quality of our software systems.




RECOMENDACIONES
ü  La industria del software sufre de un mal endémico que se remonta a sus orígenes y que hasta ahora no parece tener una solución definitiva, es la llamada crisis del software
ü  Ha habido muchas iniciativas para atenuar los efectos de esta crisis
ü  Una de las más importantes es la aplicación de sistemas de aseguramiento de calidad al desarrollo de software, los que se basan sobre las siguientes ideas.


CONCLUSIONES
No se puede medir la calidad del software de forma correcta debido a su naturaleza, la certificación se da a los procesos, la correcta consecución de los mismos garantizaría un buen software. No se puede medir al software como tal, sino los atributos que la conforman, tales métodos de medida deben ser exactos.
El usuario final mide la calidad del software según lo que tenga o no, es en ese sentido que la calidad del software depende de quien la juzgue. El hecho de que una empresa tenga certificación en calidad de software no garantiza que su software sea de calidad.

APRECIACIÓN DEL EQUIPO

En el desarrollo de software, la calidad de diseño acompaña a la calidad de los requisitos, especificaciones y diseño del sistema. La calidad de concordancia es un aspecto centrado principalmente en la implementación; Si la implementación sigue al diseño, y el sistema resultante cumple con los objetivos de requisitos y de rendimiento, la calidad de concordancia es alta.
·         Es la aptitud de un producto o servicio para satisfacer las necesidades del usuario.
·         Es la cualidad de todos los productos, no solamente de equipos sino también de programas.


GLOSARIO DE TERMINOS

• Fiabilidad: Capacidad de operar sin errores.
 • Modificable: Capacidad de hacer los cambios necesarios de una forma sencilla.
 • Comprensible: Capacidad de comprender el software operativo, de cara a un cambio o arreglo.
• Rendimiento: Velocidad y compacidad del software.
• Utilizable: Capacidad de uso sencillo del software.
• Probable: Capacidad de construir y ejecutar fácilmente casos de prueba.
 • Portable: Capacidad de mover el software fácilmente de un entorno de trabajo a otro.


VIDEO TUTORIAL





BIBLIOGRAFIA

·         vanevargas.jimdo.com/módulos/introducción/definición-de-calidad/


·         https://dialnet.unirioja.es/descarga/articulo/4745899.pdf