República
Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria.
Fundación Misión Sucre.
Aldea Universitaria U.E.N:Dr. Jesús María Portillo.
Fines de Semana. Municipio Municipio Baralt-Edo.Zulia.
Unidad Curricular: Ingeniería del Software.
Trayecto II-I
Unidad II
Fundamentos de la Ingeniería del Software
PROFESORA: ING.YILMARIS VILLASMIL
Mene Grande:Miércoles,07 de Junio de 2023.
INTRODUCCION
El software de computadora sigue siendo la tecnología más importante en la escena mundial.
Y también es un ejemplo magnífico de la ley de las consecuencias inesperadas. Hace 50 años,
Nadie hubiera podido predecir que el software se convertiría en una tecnología indispensable
Para los negocios, ciencias e ingeniería, ni que permitiría la creación de tecnologías nuevas (por
Ejemplo, ingeniería genética y nanotecnología), la ampliación de tecnologías ya existentes (telecomunicaciones)
Y el cambio radical de tecnologías antiguas (la industria de la impresión);
Tampoco que el software sería la fuerza que impulsaría la revolución de las computadoras personales,
Que productos de software empacados se comprarían en los supermercados, que el
Software evolucionaría poco a poco de un producto a un servicio cuando compañías de software
“sobre pedido” proporcionaran funcionalidad justo a tiempo a través de un navegador web, que
Una compañía de software sería más grande y tendría más influencia que casi todas las empresas
De la era industrial, que una vasta red llamada internet sería operada con software y evolucionaría
Y cambiaría todo, desde la investigación en bibliotecas y la compra de productos para
El consumidor hasta el discurso político y los hábitos de encuentro de los adultos jóvenes (y no
Tan jóvenes).
Nadie pudo prever que habría software incrustado en sistemas de toda clase: de transporte,
Médicos, de telecomunicaciones, militares, industriales, de entretenimiento, en máquinas de
Oficina… la lista es casi infinita. Y si usted cree en la ley de las consecuencias inesperadas, hay
Muchos efectos que aún no podemos predecir.
Nadie podía anticipar que millones de programas de computadora tendrían que ser corregidos,
Adaptados y mejorados a medida que transcurriera el tiempo. Ni que la carga de ejecutar
Estas actividades de “mantenimiento” absorberían más personas y recursos que todo el trabajo
Aplicado a la creación de software nuevo...
INDICE
1. El Software.
2. Cualidades del Software.
3. Factores de Calidad del Software.
4. Ingenieria del Software.
5. Vision General del Proceso del Desarrollo del Software.
6. El Papel del Usuario dentro del Proceso de Desarrollo del Software.
7. Responsabilidad Ética y Profesional en Ingeniería del Software.
8. Ciclo de Vida del Software.
9. Principios ,Modelos,Metodos,Metodologias,Tecnicas,Actividades y Herramientas en el Proceso de Desarrollo del Software.
10. Seleccion del Modelo Apropiado según las Características de los Proyectos de Software.
1. El Software: El software es un conjunto de reglas o programas que dan instrucciones a un ordenador para que realice tareas específicas. También se conoce como aplicaciones de software, paquetes de software, herramientas de software y programas de software. El software puede utilizarse para gestionar datos, automatizar procesos y crear aplicaciones o productos informáticos. Su complejidad puede variar desde un simple programa de tratamiento de textos hasta complejos sistemas informáticos que controlan infraestructuras críticas en sectores como la sanidad y el transporte.
El concepto de software se remonta a los primeros tiempos de la informática, cuando los operadores humanos programaban las máquinas directamente mediante el uso de tarjetas perforadas o introduciendo comandos en un terminal. Con el tiempo, a medida que los ordenadores se hicieron más potentes y sofisticados, se desarrollaron programas informáticos que podían automatizar las tareas rutinarias, aumentando tanto la eficacia como la precisión de estos sistemas. En la actualidad, desempeña un papel vital en todo, desde nuestra vida cotidiana hasta los sistemas de infraestructuras críticas, y evoluciona constantemente para satisfacer las necesidades de los usuarios de todo el mundo.
Los tipos de software pueden clasificarse a grandes rasgos en dos categorías principales:
- Software de sistema, o sistemas operativos, proporcionan la capa base sobre la que se ejecutan todas las demás aplicaciones de software. El software de sistema incluye el propio sistema operativo, los controladores de dispositivos, el middleware, los navegadores web, los reproductores multimedia y muchos más.
- Software de aplicación, o aplicaciones de software, son programas diseñados para realizar tareas específicas. Puede incluir software como procesadores de texto y herramientas de hojas de cálculo, o productos de software como sistemas de planificación de recursos empresariales que ayudan a las empresas a gestionar sus operaciones.
Como ejemplos de software podemos citar:
- Sistema operativo: Es un conjunto de programas y archivos que controlan el funcionamiento de una computadora y permiten a los usuarios ejecutar aplicaciones y programas. Algunos ejemplos de sistemas operativos populares son Windows, MacOS y Linux.
- Navegador web: Es un programa que se utiliza para acceder y navegar por Internet. Algunos ejemplos de navegadores web populares son Google Chrome, Opera, Mozilla Firefox y Microsoft Edge.
- Procesador de texto: Es un programa que se utiliza para crear y editar documentos de texto. Algunos ejemplos de procesadores de texto populares son Microsoft Word, Google Docs y LibreOffice Writer.
- Hoja de cálculo: Es un programa que se utiliza para crear y editar tablas y gráficos que muestran datos numéricos. Algunos ejemplos de hojas de cálculo populares son Microsoft Excel, Google Sheets y LibreOffice Calc.
- Aplicación de correo electrónico: Es un programa que se utiliza para enviar y recibir correos electrónicos. Algunos ejemplos de aplicaciones de correo electrónico populares son Hotmail, Microsoft Outlook, Gmail y Yahoo Mail.
2.Cualidades del Software: “Es el conjunto de cualidades que determina su utilidad. Es el grado en que el software cumple con los requisitos especificados (eficiencia, flexibilidad, corrección, mantenimiento seguridad e integridad, entre otros). La cualidad del software es medible y varía según el tipo de sistema y de programa, por ejemplo no es lo mismo un software para control de viajes el cual deba ser confiable a un nivel de cero errores que un software elaborado para la implementación de un sistema de calidad” (EcuRed, 2015)
Dichas cualidades son las siguientes:
· Robustez: Es la capacidad de los productos software de reaccionar apropiadamente ante condiciones excepcionales. La robustez viene a ser el complemento de la corrección. En implementación se cuenta con el mecanismo de excepciones el cual garantiza el correcto flujo de ejecución del código
· Corrección: Un sistema es correcto si hace lo que el cliente necesita. Dicho de otra forma, un sistema es correcto si su resuelve el problema real que causó su desarrollo.
· Eficiencia o Performance: tenemos dos dimensiones posibles para medir la eficiencia (tiempo/recursos) de un sistema:
o Recursos necesarios para la construcción (tiempo de desarrollador)
o Recursos necesarios para la ejecución (tiempo de usuario + hardware)
Tiene mejor eficiencia el sistema que necesita menos recursos para realizar una tarea determinada, por lo tanto deberíamos considerar ambas dimensiones a la hora de medir esta cualidad.
· Claridad: Se refiere a la posibilidad de entender el funcionamiento de un sistema, subsistema o una porción de código cualquiera, su objetivo y la forma de solucionar el problema; en particular por gente que no es la que lo construyó. La claridad de un módulo afecta claramente a las posibilidades de modificarlo.
· Flexibilidad: es la capacidad que tiene un sistema para reflejar cambios percibidos en el dominio (sea por mejor comprensión del mismo o porque de verdad cambió) de una manera simple y sencilla. Conceptos relacionados son:
o Extensibilidad: un sistema es extensible cuando pueden incorporarse nuevas características al mismo sin mayor impacto sobre las características actuales.
o Mantenibilidad: un sistema o desarrollo es más mantenible cuanto menor esfuerzo requiere para que el sistema siga funcionando en condiciones distintas a las originales e incluso en las originales. Entre estas tareas podríamos enumerar:
-Pequeños cambios de funcionalidad o parametrización (aquí se relaciona con la flexibilidad)
- Posibilidad de corregir las incongruencias producidas por los propios errores del software
- Posibilidad de hacer cualquier tipo de cambio sobre el sistema mientras este sigue funcionando.
· Consistencia: el sistema debe comportarse siempre de la misma manera ante un mismo evento y las tareas similares deben poder realizarse siguiendo pasos similares.
· Simplicidad: el sistema debe ser simple tanto en la interfaz como en la implementación. Es más importante la simplicidad en la interfaz que en la implementación.
· Completitud: Un sistema es completo cuando contempla todas las posibles situaciones a darse en la práctica.
· Encapsulamiento o Modularidad: poder agrupar unidades funcionales me permite que el sistema sea cohesivo, reduciendo la complejidad del sistema y aumentando en cierta forma su flexibilidad.
· Escalabilidad: la facilidad con la que un sistema pensado originalmente para una carga determinada puede ser adaptado para soportar una carga mayor. Las aplicaciones Web nos dan una buena muestra de cuándo la escalabilidad puede ser importante para no afectar 1) la imagen del usuario que da vida a nuestro sistema, 2) la imagen corporativa del negocio que manejamos
· Abstracción: un sistema debería contener buenas abstracciones de la realidad. Recordemos que el sistema no es la realidad, sino un modelo. En base a nuestras abstracciones podemos definir:
o Reusabilidad: la posibilidad de utilizar un sistema construido anteriormente para resolver un problema nuevo.
o Genericidad: Un sistema o subsistema es genérico cuando se puede aplicar a un conjunto de situaciones similares.
En general reusabilidad y genericidad están relacionadas, un sistema muy específico difícilmente puede ser reutilizado.
· Utilidad: no está de más recordar que el sistema debe ser útil al usuario.
· Seguridad: Un sistema seguro debe impedir que agentes (personas u otros sistemas) no autorizados realicen acciones sobre el sistema.
3.Factores de Calidad del Software: Los factores de calidad del software sirven para descomponer el concepto genérico de “calidad” en otros más sencillos, para facilitar su control y su medición.
Dado que la división en factores es una división subjetiva, existen varias clasificaciones de los factores de calidad. Veremos la de McCall, que los agrupa en tres perspectivas: operativa, de mantenimiento y evolutiva.
Factores operativos de la calidad del software.
Los factores operativos son aquellos que afectan al uso del software:
- Corrección: el software cumple las especificaciones
- Fiabilidad: grado en el que el software es confiable, es decir, no tiene fallos
- Eficiencia: necesidad de recursos software y hardware del producto
- Seguridad: grado en el que puede controlarse el acceso al software y a los datos
- Facilidad de uso: grado de esfuerzo necesario para utilizar el software
Factores de mantenimiento de la calidad del software.
Los factores de mantenimiento son aquellos que se aplican a la capacidad de modificación del software:
- Flexibilidad: esfuerzo necesario para modificar un programa
- Facilidad de prueba: esfuerzo requerido para realizar las pruebas de un programa
- Facilidad de mantenimiento: esfuerzo requerido para localizar y reparar un error
Factores evolutivos
Los factores evolutivos son aquellos que indican si el software se puede trasladar con facilidad a otra máquina o a otro producto de base (SO, SGBD, etc.), o incrementar sus prestaciones:
- Portabilidad: facilidad para migrar el software de un entorno de operación a otro
- Capacidad de reutilización: grado en el que un programa o parte del mismo se puede utilizar en otras aplicaciones.
- Capacidad de interoperación: esfuerzo necesario para que un software opere conjuntamente con otros sistemas.
4.Ingenieria del 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.
5.Vision General del Proceso del Desarrollo del Software: Es proceso es afectado por la creatividad y juicio de las personas involucradas. En el desarrollo de software hay una serie de desafíos adicionales, relativos esencialmente a la naturaleza del producto obtenido. Un proceso de desarrollo de software tiene como propósito la producción eficaz y eficiente de un producto software que reúna los requisitos del cliente.
Es actividades requeridas para desarrollar un sistema de software de alta calidad y proporciona el marco de trabajo desde el cual se puede establecer un plan detallado para el desarrollo del software. Actividades: Diseño, validación, evolución, especificación.
6.El Papel del Usuario dentro del Proceso de Desarrollo del Software: Todos sabemos que cuanto mayor sea la ayuda de los usuarios en un proyecto de desarrollo de software, mayores serán las probabilidades de éxito que tenga el mismo.
No obstante es importante hacer algunas matizaciones:
1) El proyecto no se hace sólo, porque incluso existiendo una gran ayuda por parte de los usuarios, si no se consigue interpretar con precisión lo que quieren y no se dinamiza un feedback continuo de los mismos durante todo el proceso de desarrollo, se incrementarán las posibilidades de que algún requisito funcional no se haya recogido adecuadamente o de que se haya realizado un software con una usabilidad incómoda para los usuarios.
Estas circunstancias son fuente de innumerables problemas en las fases finales del proyecto y provocan retrasos, sobrecostes y grandes dificultades para cerrar el proyecto, además de crear conflictos con el cliente que pueden perjudicar las relaciones futuras con el mismo. Esto hace que sea fundamental el papel que desempeñan tanto el jefe de proyectos, como el equipo de analistas funcionales y analistas programadores.
2) Es importante que entre el grupo usuarios asignados al proyecto haya usuarios que vayan a estar implicados en el futuro uso del sistema de información, es decir, no es suficiente que el equipo de usuarios esté formado por “ideólogos” o “teóricos” que se nutrirán del resultado del trabajo de la herramienta, sino que es fundamental que participen usuarios que después se tengan que poner el mono de trabajo y vayan a trabajar con el software. Es importante conseguir la combinación de ambos tipos de usuarios (tampoco es positivo que en el grupo de usuarios no participen usuarios directores, ya que pueden existir conflictos entre usuarios que éstos deben solucionar y también es recomendable que el software no sólo se diseñe para el corto plazo, sino que sirva para tareas de gestión, planificación, etc… y esta visión la proporcionan principalmente los usuarios directores), por lo que el jefe de proyectos debe poner en conocimiento del cliente esta necesidad, como es lógico explicando los riesgos de que no se aplique esta estrategia.
3) Los analistas están para ayudar y para colaborar con los usuarios en la especificación y diseño de la solución, pero no están para “dar lecciones” a los usuarios y enseñarle cómo deben hacer su trabajo. Si los usuarios hacen su trabajo de una determinada manera, aunque no sea la más ortodoxa, siempre tendrá una justificación que sólo se entendería si realmente estuviéramos haciendo su trabajo durante un tiempo y viéramos los problemas con los que se enfrentan cotidianamente. La clave por tanto está en la colaboración y en el diálogo, es decir, se pueden proponer cosas al usuario, se le pueden dar ideas, pero no se le puede dar una vuelta al calcetín de cómo hacen sus tareas, salvo que ellos mismos lo soliciten y procurando en estos casos y en consenso con los usuarios que los cambios sean tranquilos.
4) Es fundamental documentar el proyecto, en primer lugar con la documentación que se especifique en las normativas de desarrollo de la organización para la que se realiza el servicio, con las matizaciones que indique el Director del Proyecto, en segundo lugar con la documentación que establezcan las normativas internas de calidad de tu organización (no requerirá un sobreesfuerzo, ya que en la mayor parte de los casos coincidirá) y a todo lo anterior sumarle toda la documentación de trabajo que sea necesaria para trabajar con los usuarios, que no tienen por qué entender de modelos de datos, de diagramas de casos de uso, etc…, es más, es un error trabajar con los usuarios utilizando dichas herramientas, ya que estas son de utilidad técnica y no hablan el mismo lenguaje de los usuarios. Este tipo documentación, por tanto, no tiene por qué tener los formalismos de la técnica y tiene como objetivo que el usuario capte lo que el analista está interpretando y se pueda ir perfilando a partir de esto, tanto requisitos, como casos de uso, interfaces, etc… Es muy importante trabajar todo esto, ya que comenzar demasiado pronto con la construcción, es algo muy arriesgado, ya que los costes de modificar algo en las distintas fases de la construcción pueden ser muy importantes y provocar que se tengan que reconstruir varias veces distintas funcionalidades de la aplicación.
7.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:
• Confidencialidad. Respetar la confidencialidad de sus empleadores o clientes, independientemente de que se haya firmado un acuerdo formal de confidencialidad.
• Competencia. No debe falsificar su nivel de competencia, ni aceptar conscientemente trabajos que están fuera de su capacidad.
• Derechos de propiedad intelectual. Debe ser consciente de las leyes locales que gobiernan el uso de la propiedad intelectual, como las patentes en 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 máquina de un empleado, por ejemplo) hasta los extremadamente serios (difusión de virus).
CÓDIGO DE ÉTICA (ACM/IEEE)
Los ingenieros de software deberán comprometerse consigo mismo en convertir el análisis, especificación, diseño, desarrollo, prueba y mantenimiento de software en una profesión respetable y beneficiosa. De acuerdo con su compromiso con la salud, seguridad y bienestar del público, los ingenieros de software deberán apegarse a ocho principios.
8.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:
Análisis: Construye un modelo de los requisitos
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.
Codificación: Construye el sistema. La salida de esta fase es código ejecutable.
Pruebas: Se comprueba que se cumplen criterios de corrección y calidad.
Validación: es el proceso de comprobar que lo que se ha especificado es lo que el usuario realmente quería.
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 DEL CÓDIGO
Público: Los ingenieros de software deberán actuar consistentemente con el interés público.
Cliente y Empleador: Los ingenieros de software deberán actuar de una forma determinada que esté en los mejores intereses de su cliente y empleador consistente con el interés público
.
. Producto: Los ingenieros de software deberán asegurar que sus productos y modificaciones relacionadas logren el más alto estándar profesional posible.
Juicio: Los ingenieros de software deberán mantener integridad e independencia al emitir su juicio profesional.
Gerencia: Los gerentes y líderes de ingeniería de software deberán suscribirse y promocionar un enfoque ético para la gerencia de desarrollo y mantenimiento del software.
Profesión: Los ingenieros de software deberán fomentar la integridad y reputación de la profesión consistente con el interés público
.
Colegas: Los ingenieros de software deberán ser justos y comprensivos con sus colegas.
Interés Propio: Los ingenieros de software deberán participar en el aprendizaje de por vida del ejercicio de su profesión y deberán promover un enfoque ético para el ejercicio de la misma.
9.Principios,Modelos,Metodos,Metodologias,Tecnicas,Actividades y Herramientas en el Proceso de Desarrollo del Software:
MODELOS DE DESARROLLO DE SOFTWARE
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.
Modelo de cascada
El modelo de cascada muestra un proceso donde los desarrolladores han de seguir las siguientes fases de forma sucesiva:
Siguiendo el modelo de cascada de forma estricta, sólo cuando se finaliza una fase, comienza la otra. En ocasiones se realiza una revisión antes de iniciar la siguiente fase, lo que permite la posibilidad de cambios (lo que puede incluir un proceso de control formal de cambio). Las revisiones también se utilizan para asegurar que la fase anterior ha sido totalmente finalizada; los criterios para completar una fase se conocen frecuentemente con el término inglés "gate" (puerta). Este modelo desaconseja revisitar y revisar fases que ya se han completado. Esta falta de flexibilidad en un modelo de cascada puro ha sido fuente de crítica de los defensores de modelos más flexibles.
Modelo de espiral
La principal características del modelo en espiral es la gestión de riesgos de forma periódica en el ciclo de desarrollo. Este modelo fue creado en 1988 por Barry Boehm, combinando algunos aspectos clave de las metodologías del modelo de cascada y del desarrollo rápido de aplicaciones, pero dando énfasis en un área que para muchos no jugó el papel que requiere en otros modelos: un análisis iterativo y concienzudo de los riesgos, especialmente en el caso de sistema complejos de gran escala.
La espiral se visualiza como un proceso que pasa a través de algunas iteraciones con el diagrama de los cuatro cuadrantes representativos de las siguientes actividades:
crear planes con el propósito de identificar los objetivos del software,seleccionados para implementar el programa y clarificar las restricciones en el desarrollo del software;
Análisis de riesgos: una evaluación analítica de programas seleccionados, para evaluar como identificar y eliminar el riesgo; la implementación del proyecto: implementación del desarrollo del software y su pertinente verificación; Modelo de espiral con énfasis en los riesgos, haciendo hincapié en las condiciones de las opciones y limitaciones para facilitar la reutilización de software, la calidad del software puede ayudar como una meta propia en la integración en el desarrollo del producto. Sin embargo, el modelo en espiral tiene algunas limitaciones, entre las que destacan:
El énfasis se sitúa en el análisis de riesgo, y por lo tanto requiere de clientes que acepten este análisis y actúen en consecuencia. Para ello es necesaria confianza en los desarrolladores así como la predisposición a gastar más para solventar los temas, por lo cual este modelo se utiliza frecuentemente en desarrollo interno de software a gran escala.
Si la implementación del riesgo de análisis afectará de forma esencial los beneficios del proyecto, no debería utilizarse este modelo.
Los desarrolladores de software han de buscar de forma explícita riesgos y analizarlos de forma exhaustiva para que este modelo funcione.
La primera fase es la búsqueda de un plan para conseguir los objetivos con las limitaciones del proyecto para así buscar y eliminar todos los riesgos potenciales por medio de un cuidadoso análisis, y si fuera necesario incluyendo la fabricación de un prototipo. Si es imposible descartar algunos riesgos, el cliente ha de decidir si es conveniente terminar el proyecto o seguir adelante ignorando los riesgos. Por último, se evalúan los resultados y se inicia el diseño de la siguiente fase.
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.
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.
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).
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.
10.Seleccion del Modelo Apropiado Según las Caracteristicas de los Proyectos de Software:
Cuando se gestiona un proyecto exitoso, es necesario entender que este puede llegar a fracasar. Según John Reel, existen 10 razones por las cuales un proyecto puede fracasar:
1. El personal de software no entiende las necesidades del los clientes.
2. El ámbito del producto está mal definido.
3. Los cambios se gestionan mal.
4. La tecnología elegida cambia.
5. Las necesidades comerciales cambian.
6. Los plazos de entrega no son realistas.
7. Los usuarios se resisten a la utilización del software.
8. Se pierde el patrocinio.
9. El equipo del proyecto carece de personal con las habilidades apropiadas.
10. Los gestores evitan las mejores prácticas y las lecciones aprendidas.
Para tener éxito en la consecución de un proyecto es necesario comenzar con pie derecho, esto se lo logra trabajando duro para entender el problema y dar una solución adecuada. Se debe rastrear el proyecto conforme se elabora el producto y se aprueba por parte del grupo de control de calidad. Es importante que el gestor del proyecto tome decisiones inteligentes para no poner en riesgo el desarrollo de la solución. Por último, se debe analizar los resultados obtenidos para obtener la experiencia necesaria en la construcción de otros proyectos.
CONCLUSION
Según la investigación sobre fundamentos de la Ingenieria del Software,se concluye que para la elaboración o desarrollo de un software existen diversos métodos,metodologías,modelos,técnicas,actividades y herramientas ,los cuales se adaptan a las necesidades del usuario.tambien hay códigos de responsabilidad ética y profesional.
BIBLIOGRAFIA
1.Que es Software-Definicion,Significado y ejemplos. https://www.arimetrics.com/glosario-digital/software. Consultado el miercoles 07 de junio de 2023.
2.Cualidades del Software. http://phpteamltap.blogspot.com/2015/05/cualidades-del-software.html?m=1. Consultado el miércoles 07 de junio de 2023.
3.Calidad del Software.Factores y métricas.Estratgias de Prueba. https://oposicionestic.blogspot.com/2013/03/calidad-del-software-factores-y.html Consultado el miércoles 07 de junio de 2023.
4.Ingenieria del Software-Definicion.de https://definicion.de/ingenieria-de-software/
5.VISION GENERAL DEL PROCESO DE DESARROLLO DE SOFTWARE http://memorywil.blogspot.com/2014/04/vision-general-del-proceso-de.html?m=1 Consultado el miércoles 07 de junio de 2023.
No hay comentarios:
Publicar un comentario