Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Fundamentos básicos para el diseño de software
1. fundamentos básicos para el
diseño de software
Autor: Luis Javier Pérez García CI: 27229634
Julio del 2021
InstitutoUniversitario
PolitécnicoSantiagoMariño
ExtensiónMérida
2. Diseño de
Software
Es el proceso por el que un agente crea una especificación de un
artefacto de software, pensado para cumplir unos objetivos,
utilizando un conjunto de componentes primitivos y sujeto a
restricciones. El diseño de software se puede referir a "toda la
actividad en conceptualizar, enmarcar, implementar, poner en
funcionamiento y, finalmente, modificar sistemas complejos" o "la
actividad que sigue a la especificación de requisitos y precede a la
programación, como en un proceso de ingeniería de software
estilizado.
El diseño de Software juega un papel importante en el desarrollo
de software lo cual permite al ingeniero de software producir
varios modelos del sistema o producto de que se va a construir el
mismo que forman una especie de plan de la solución de la
aplicación. Estos modelos puede evaluarse en relación con su
calidad y mejorarse antes de generar código, de realizar pruebas y
de que los usuarios finales se vean involucrados a gran escala. El
diseño es el sitio en el que se establece la calidad del software.
3. Conceptos del
Diseño de
Software
Los conceptos de diseño proporcionan al diseñador de software una base sobre la
que se pueden aplicar métodos más sofisticados. El conjunto de conceptos
fundamentales del diseño ha evolucionado. Son los siguientes:
Abstracción: La abstracción es el proceso o resultado de la generalización
reduciendo el contenido de información de un concepto o un fenómeno
observable, típicamente para retener información única que es pertinente para
un propósito particular. Es el acto de Representar características esenciales sin
incluir los detalles de fondo o explicaciones.
Refinamiento: Es el proceso de elaboración. Una jerarquía se desarrolla
descomponiendo una declaración macroscópica de función de un modo sensato
hasta que se logre obtener declaraciones del lenguaje de programación. En cada
paso, una o varias instrucciones de un programa dado se descomponen en
instrucciones más detalladas. La abstracción y El Refinamiento son conceptos
complementarios .
Modularidad: La arquitectura de software está dividida en componentes
llamados módulos.
Arquitectura de software: Se refiere a la estructura global del software y las
maneras en que esa estructura proporciona integridad conceptual al sistema.
Una buena arquitectura de software amortizará la inversión en cuanto al
resultado deseado del proyecto, p. ej. en el rendimiento, la calidad, el programa
y el coste.
4. Jerarquía de control: Un estructura de programa que representa la organización
de un componente e implica una jerarquía de control.
Estructural Partitioning: La estructura de programa puede ser dividida
horizontal y verticalmente. Las particiones horizontales definen ramas
separadas de jerarquía modular para cada función importante. Las particiones
verticales sugiere que el control y el trabajo tendrían que ser distribuidos de
arriba abajo en la estructura de programa.
Estructura de datos: Es una representación de la relación lógica entre los
elementos individuales de los datos.
Procedimiento de software: Centra en el procesamiento de cada módulo
individualmente.
Ocultar Información: Los módulos tendrían que ser especificados y diseñados
de modo que la información contenida dentro de un módulo es inaccesible a
otros módulos, que no tienen ninguna necesidad de conocer esa información.
En su modelo de objeto, Grady Booch menciona Abstracción, Encapsulación,
Modularización y Jerarquía como principios fundamentales del diseño de software.
El acrónimo PHAME (del inglés: Principles of Hierarchy, Abstraction,
Modularisation, and Encapsulation) se utiliza a veces para referirse a estos cuatro
principios fundamentales.
Conceptos del
Diseño de
Software
5. Hay muchos aspectos a considerar en el diseño de una pieza de software. La
importancia de cada consideración tendría que reflejar los objetivos y expectativas
para los que el software está siendo creado. Algunos de estos aspectos son:
Compatibilidad: El software es capaz de operar con otros productos que están
diseñado para interoperar con otros productos. Por ejemplo, una pieza de
software puede ser compatible con una versión más vieja de sí misma.
Extensibilidad: Las capacidades nuevas pueden añadirse al software sin cambios
importantes a la arquitectura subyacente.
Modularidad: El software resultante contiene componentes bien definidos e
independientes que llevan a una mejor mantenibilidad. Los componentes
podrían ser entonces implementados y probados en aislamiento antes de ser
integrados en el sistema de software deseado. Esto permite la división de trabajo
en un proyecto de desarrollo del software.
Tolerancia a los fallos: El software es resistente y capaz de recuperarse de los
fallos de componente.
Mantenibilidad: Una forma de medir cómo se consiguen los arreglos de errores
y las modificaciones funcionales. Una alta mantenibilidad puede ser producto de
la modularidad y la extensibilidad.
Consideraciones
de diseño
6. Fiabilidad (durabilidad del Software): El software es capaz de realizar una
función bajo determinadas condiciones durante un periodo específico de tiempo.
Reusabilidad: La capacidad de utilizar algunos o todos los aspectos del software
existente en otros proyectos con pocas o ninguna modificación.
Robustez: El software es capaz de operar bajo tensión o tolerar una entrada
imprevisible o inexistente. Por ejemplo, puede ser diseñado con resistencia a
condiciones malas de memoria.
Seguridad: El software es capaz de resistir a influencias y actos hostiles.
Usabilidad: La interfaz de usuario del software tiene que ser utilizable para su
audiencia objetivo. Los valores por defecto para los parámetros tienen que ser
escogidos de modo que sean una buena elección para la mayoría de los usuarios.
Rendimiento: El software realiza sus tareas dentro de una ventana temporal que
es aceptable para el usuario, y no requiere demasiada memoria.
Portabilidad: El software tendría que ser utilizable a través de un número de
entornos y condiciones diferentes.
Escalabilidad: El software se adapta bien a un número creciente de datos o
usuarios.
Consideraciones
de diseño