热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

第四章软件总体设计1

哎呦,我发现我写的文章这几天点击量稍微高一点的文章开头都是自我吐槽(此处应该放什么表情呢),是不是像我这么善于发现自己缺点且

哎呦,我发现我写的文章这几天点击量稍微高一点的文章开头都是自我吐槽(此处应该放什么表情呢),是不是像我这么善于发现自己缺点且毫不留情吐槽自己的人不多了(偷笑)。没办法我一个学渣非要跟老公学编程和测试,确实有点自不量力。但还就是想要试一下,虽然我真的很笨还有些懒(指学习上的懒)算了还是收住吧,要不然又感觉自己一无是处了。回归正题

软件设计师把软件需求转换为软件表的过程,总体设计师进入软件设计的第一阶段,只描述软件的总体结构,第二个阶段是详细设计,即对结构进一步细化。

4.1软件总体设计的目标和任务

目标:就是回答“概括地说”、系统应该如何实现?这个问题总体设计的另一项任务是软件的总体结构。即确定系统中的每个程序由那些模块组成的,每个模块的功能及模块之间的接口。调用关系等,但所有这些都不要涉及模块内部过程的细节。

4.2软件体系结构设计准则如下

1、体系结构是对复杂事物的一种抽象良好的体系,结构是普遍适用的,它能够描述各种风格的软件系统结构,可以高效地处理多种多样的个体需求。

2、体系结构在一定的时间内保持稳定,确保接口一致既能确保其中一体系结构配置描述,内相关接口描述的一致,又能确保建立关联的两个接口描述一致性。

3、良好的体系结构意味着普通、高效和稳定。

4.2.2软件模块设计准则如下

1、降低模块之间的耦合性,提高模块的内聚性

列4,1图

2、模块结构的深度、宽度、扇出和扇入应适当

深度:指软件结构中模块的层次数,它表示控制的层数。

宽度:指同一层次中最大的模块个数,它表示控制总分布、宽度越大系统结构越复杂,影响宽度的最大因素是模块的扇出,扇出示一个模块自接调用的模块数目。

扇入:指有多少个上级模块直接调用它

一般设计得比较好的软件结构,顶层扇出高、中层扇出少、底层模块有高扇入。

3、模块的作用范围要你管管在控制范围内

4、模块接口设计要简单、以便降低复杂程度和冗余度

5、设计功能可预测并能得到验证的模块。

6、适当划分模块规模、以保持独立性。

4.3模块和模块化

模块是软件结构的基础,是软件元素,是能够单独命名、独立完成一定功能的程序语句的集合,如高级语言中的过程、函数、子程序等

模块化是使得软件能够对复杂问题所应具备的属性,模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。、

4.3.2 抽象

模块最重要的特征有两个:一是抽象、二是信息隐蔽性

模块反映了数据和过程的抽象,在模块化问题求解时,可以提出不同层次的抽象,在抽象的最高层可以使用问题环境语言,以概括的方式叙述问题的解。在抽象的较底层,则可采用过程性术语,在描述问题时,面向问题的术语与面向实现的述语结合起来使用,最终在抽象的最底层,可以用直接实现的方式来说明。


推荐阅读
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 自学编程与计算机专业背景者的差异分析
    本文探讨了自学编程者和计算机专业毕业生在技能、知识结构及职业发展上的不同之处,结合实际案例分析两者的优势与劣势。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 深入解析:阿里实战 SpringCloud 微服务架构与应用
    本文将详细介绍 SpringCloud 在微服务架构中的应用,涵盖入门、实战和案例分析。通过丰富的代码示例和实际项目经验,帮助读者全面掌握 SpringCloud 的核心技术和最佳实践。 ... [详细]
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
  • 本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ... [详细]
  • 阅读本文大约需要3分钟。微信8.0版本的发布带来了许多令人振奋的新功能,如烟花特效和改进的悬浮窗,引发了用户的热烈反响。 ... [详细]
  • 本文深入探讨了C++对象模型中的一些细节问题,特别是虚拟继承和析构函数的处理。通过具体代码示例和详细分析,揭示了书中某些观点的不足之处,并提供了更合理的解释。 ... [详细]
  • 【行业专题报告】 人力资源专题资料
    每项专题报告都是从2019开始更新到至今,后续将持续更新如需查看完整报告和报告下载或了解更多,公众号:参一江湖今天为大家分享专题 ... [详细]
  • Codeforces Round #566 (Div. 2) A~F个人题解
    Dashboard-CodeforcesRound#566(Div.2)-CodeforcesA.FillingShapes题意:给你一个的表格,你 ... [详细]
  • 卷积神经网络(CNN)基础理论与架构解析
    本文介绍了卷积神经网络(CNN)的基本概念、常见结构及其各层的功能。重点讨论了LeNet-5、AlexNet、ZFNet、VGGNet和ResNet等经典模型,并详细解释了输入层、卷积层、激活层、池化层和全连接层的工作原理及优化方法。 ... [详细]
  • 堆是一种常见的数据结构,广泛应用于计算机科学领域。它通常表示为一棵完全二叉树,并可通过数组实现。堆的主要特性是每个节点的值与其父节点的值之间存在特定的关系,这使得堆在优先队列和排序算法中非常有用。 ... [详细]
author-avatar
mobiledu2502922985
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有