- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件构造
《软件构造》课程复习纲要
参考教材《代码大全(第二版)》:以下简称CC2
复习所涉及的内容以PPT中出现的为准,具体细节参阅CC2中的解释。
软件构造的概念
测试和调试的区别
测试是为了发现错误
调试是为了改成错误
软件开发包括哪些:
问题定义
需求分析
实现计划
总体设计
详细设计
编码实现
系统集成
单元测试
系统测试
校正性的维护
功能强化
软件构造活动主要是其中哪些部分?
验证基础工作已经完成,可以进行创建工作;
设计和编写子程序与模块
创立数据类型并命名变量
选择控制结构并组织语句块
找出并修正错误
评审其它小组的细节设计和代码,同时接受其它小组评审
通过仔细地格式化和征集意见改进编码
对分别完成的软件单元进行综合
调整编码使其更小、更快
编码和调试,部分的详细设计和单元测试
软件构造的重要性
构造活动是开发软件的重要组成部分
构造活动在开发软件中处于枢纽地位
把主要精力集中于创建活动,可以极大地提高程序员的生产效率
创建活动的产品,源代码,往往是软件的唯一精确描述
创建活动是唯一一项必不可少的工作
隐喻(Software Metaphors)
常见的软件隐喻 (简单了解)
软件书写:写代码(Writing Code)
软件播种:生成系统(Growing a System)
软件珍珠培植法:系统积累(System Accretion)
软件创建:建造软件(building software)
实用软件技术:智能工具箱(The Intellectual Toolbox)
复合隐喻(Combing Metaphors)
隐喻可以帮助开发人员借助类比的力量加深对编程的理解
事实上,借助隐喻加深理解是各个研究领域都常用的方法
软件构造的前期准备工作
软件构造的前期准备工作有哪些
前期准备工作并非一成不变
构建活动的准备工作要根据项目特点调整
具体细节随项目的不同会有很大变化
构造开始前的准备工作有哪些
辨明软件项目的类型
明确问题定义
明确需求规约
明确软件架构的个组成部分
什么是软件构造的前期准备工作
软件构造的前期准备工作是复查性的活动
明确前导性的工作结果有哪些
重新审视前导性工作是否完成
明确前导性工作完成的程度如何
准备工作的中心目标是降低风险
糟糕的需求分析
糟糕的项目计划
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
根据CC2 Page59 核对表上的内容复习(只涉及ppt中有的内容)
问题定义先决条件
需求定义先决条件
软件架构先决条件
构造技术
模块化设计 (简单了解相关概念)………………………………
这一部分的复习参阅CC2书上的第5章
模块和子程序的区别
子程序是具有一定功能的,可以调用的函数或过程
模块是指数据及作用于数据的子程序的集合,或者
模块也可能是指,可以提供一系列互相联系功能的子程序集合,而这些子程序之间不一定有公共的数据
模块化:内聚性与耦合性(重要)
ppt page73
可以参阅CC2-7章子程序内聚性的相关内容
耦合性( Coupling ):对一个软件结构内不同模块间互连程度的度量。
内聚性(Cohesion):标志一个模块内各个处理元素彼此结合的紧密程度,理想的内聚模块只做一件事情。
模块化
模块化设计的目标是使每个子程序都成为一个“黑盒子”
你知道进入盒子和从盒子里出来的是什么,却不知道里边发生什么
通过接口的定义明确其功能
“模块化”同时涉及到子程序设计和模块设计
但通过对子程序的控制可以达到模块化的效果
通过对一组子程序定义统一对外的接口,也完全有可能达到高度模块化这一目标
模块化:内聚性与耦合性
模块独立程度的衡量标准
耦合性( Coupling ):对一个软件结构内不同模块间互连程度的度量。
内聚性(Cohesion):标志一个模块内各个处理元素彼此结合的紧密程度,理想的内聚模块只做一件事情。
模块内聚性
模块的内聚性
内聚性表示了在一个模块中,各种操作及数据之间互相联系的紧密程度
内聚性的强弱程度用“强度”表示
应尽量提高内聚程度
强调“强内聚”的目的
每一个模块只需作好一项工作,而不必过分考虑其它任务
模块内聚性分类
偶然内聚:一组任务关系松散(低)
逻辑内聚:一组任务在逻辑上同属一类,例如均为输出(低)
时间内聚:一组任务必须在同一段时间内执行(低)
子程序的内聚性
模块的强内聚性并不说明子程序内聚性强
子程序的内聚性影响到模块的实现质量
子程序内聚性分类
可取的内聚性
不可取的内聚性
可取
文档评论(0)