社区
分析与设计
帖子详情
抽象和逐步求精的关系?举例子说明
qq_29366091
2016-01-11 02:55:24
加精
抽象和逐步求精的关系?举例子说明
...全文
3403
13
打赏
收藏
抽象和逐步求精的关系?举例子说明
抽象和逐步求精的关系?举例子说明
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mingcsharp
2016-04-06
打赏
举报
回复
sp1234我只看你
yongjiusd
2016-01-25
打赏
举报
回复
卖锅帝多功能电锅告诉你,学习要一步一步来,不可过于偏见
纸飞机_
2016-01-25
打赏
举报
回复
blueink_200451
2016-01-24
打赏
举报
回复
学习了。不过感觉理解有点吃力。
缪军
2016-01-23
打赏
举报
回复
抽象
的程度是相对的,所以随着技术手段,分析设计能力,需求,等情况的变化,抽象也会
逐步求精
以专业开发人员为伍
2016-01-18
打赏
举报
回复
在50年前,那时候的计算机教育基本上就是汇编语言(实际上连c语言也几乎没有出现、没有人认识)风格的编程模式,可以说没有什么规范的数据结构,并且方法(函数)接口形式也是五花八门。 Pascal 定义了一套数据结构规范,它的关键字中出现了 Record 等等。如果看看它的介绍
http://www.yiibai.com/pascal/pascal_overview.html#pascal_overview
也许还不能猜到它在那个时代的划时代意义。但是它提出了规范化、符号化(编程语言不用过多地考虑计算机体系结构,而只要考虑数学符号结构即可),在当时绝对是划时代的。 那么这就能解释,为什么“逐步求精”这种在于今天的计算机软件设计技术整体相比、其实是啥技术含量都没有定律,在当时为什么轰动一时。这个词儿是与当时刚刚推行结构化编程风格有关的,是符合那个时代的。 现在这些东西会被比较现代的理论直接一笔带过,因为现在的许多技术的表现力很强大,需要你用现代的思维方式去学习。如果你在今天的一些编程书上看到了这些描述,那么很可能,说明你看的编程书是一些照抄20年前的软件编程手册的人写的编程书,书上抄20年前过去的书里的段落的风气或许很重。
以专业开发人员为伍
2016-01-18
打赏
举报
回复
逐步求精是个非常古老和原始的编程思路,也是 pascal 编程强调的风格。它实际上是说,任何函数(方法),首先只关心其输入输出接口定义,然后第二层选择一个比较简单和直观的逻辑分解形式,也就是把这个函数(方法)的实现分为2个、3个、几个很少的函数(方法)的连缀计算。如此迭代,将这些新的函数(方法)的独立的定义再去分解.....直到你觉得函数(方法)实在是太简单了,那么就到达“底”了。 这是最原始的一个概念。它其实与复杂系统无关,它简洁地描述了自古就有的符号数学归纳方式,用到了50年前的计算机编程教材上了。没错,50年前的计算机编程教材,主要是讲这类。而如今,编成所需要学习的基本设计知识早就比那时候复杂100倍了。
娃都会打酱油了
2016-01-13
打赏
举报
回复
逐步求精 将现实问题经过几次抽象(细化)处理,最后到求解域中只是一些简单的算法描述和算法实现问题。即将系统功能按层次进行分解,每一层不断将功能细化,到最后一层都是功能单一、简单易实现的模块。求解过程可以划分为若干个阶段,在不同阶段采用不同的工具来描述问题。在每个阶段有不同的规则和标准,产生出不同阶段的文档资料。
EdsionWang
2016-01-13
打赏
举报
回复
对于书里面理解不了的概念,就先放着吧。等你做够了项目,再回过头来看看
《软件工程导论》张海潘_第五版_清华_课后答案
作者:张海藩 第1章 软件工程学概述1 1.1 软件危机1 1.1.1 软件危机的介绍1 1.1.2 产生软件危机的原因3 1.1.3 消除软件危机的途径4 1.2 软件工程5 1.2.1 软件工程的介绍5 1.2.2 软件工程的基本原理7 1.2.3 软件工程方法学9 1.3 软件生命周期11 1.4 软件过程14 1.4.1 瀑布模型15 1.4.2 快速原型模型16 1.4.3 增量模型17 1.4.4 螺旋模型19 1.4.5 喷泉模型21 1.4.6 Rational统一过程22 1.4.7 敏捷过程与极限编程25 1.4.8 微软过程29 1.5 小结31 习题132 第2章 可行性研究35 2.1 可行性研究的任务35 2.2 可行性研究过程36 2.3 系统流程图38 2.3.1 符号38 2.3.2
例子
38 2.3.3 分层40 2.4 数据流图40 软件工程导论目 录 2.4.1 符号40 2.4.2
例子
42 2.4.3 命名44 2.4.4 用途45 2.5 数据字典47 2.5.1 数据字典的内容47 2.5.2 定义数据的方法47 2.5.3 数据字典的用途48 2.5.4 数据字典的实现49 2.6 成本/效益分析49 2.6.1 成本估计50 2.6.2 成本/效益分析的方法51 2.7 小结53 习题253 第3章 需求分析55 3.1 需求分析的任务56 3.1.1 确定对系统的综合要求56 3.1.2 分析系统的数据要求57 3.1.3 导出系统的逻辑模型58 3.1.4 修正系统开发计划58 3.2 与用户沟通获取需求的方法58 3.2.1 访谈58 3.2.2 面向数据流自顶向下求精59 3.2.3 简易的应用规格
说明
技术59 3.2.4 快速建立软件原型61 3.3 分析建模与规格
说明
62 3.3.1 分析建模62 3.3.2 软件需求规格
说明
62 3.4 实体-联系图62 3.4.1 数据对象63 3.4.2 属性63 3.4.3 联系63 3.4.4 实体-联系图的符号64 3.5 数据规范化64 3.6 状态转换图65 3.6.1 状态65 3.6.2 事件65 3.6.3 符号66 3.6.4
例子
66 3.7 其他图形工具67 3.7.1 层次方框图68 3.7.2 Warnier图68 3.7.3 IPO图69 3.8 验证软件需求70 3.8.1 从哪些方面验证软件需求的正确性70 3.8.2 验证软件需求的方法70 3.8.3 用于需求分析的软件工具71 3.9 小结72 习题373 第4章 形式化
说明
技术75 4.1 概述75 4.1.1 非形式化方法的缺点75 4.1.2 形式化方法的优点76 4.1.3 应用形式化方法的准则76 4.2 有穷状态机77 4.2.1 概念77 4.2.2
例子
79 4.2.3 评价82 4.3 Petri网82 4.3.1 概念82 4.3.2
例子
84 4.4 Z语言85 4.4.1 简介85 4.4.2 评价88 4.5 小结88 习题489 第5章 总体设计91 5.1 设计过程91 5.2 设计原理94 5.2.1 模块化94 5.2.2
抽象
95 5.2.3
逐步求精
95 5.2.4 信息隐藏和局部化96 5.2.5 模块独立97 5.3 启发规则99 5.4 描绘软件结构的图形工具102 5.4.1 层次图和HIPO图102 5.4.2 结构图103 5.5 面向数据流的设计方法104 5.5.1 概念104 5.5.2 变换分析105 5.5.3 事务分析111 5.5.4 设计优化112 5.6 小结113 习题5114 第6章 详细设计117 6.1 结构程序设计117 6.2 人机界面设计119 6.2.1 设计问题119 6.2.2 设计过程121 6.2.3 人机界面设计指南122 6.3 过程设计的工具124 6.3.1 程序流程图124 6.3.2 盒图125 6.3.3 PAD图126 6.3.4 判定表127 6.3.5 判定树128 6.3.6 过程设计语言128 6.4 面向数据结构的设计方法129 6.4.1 Jackson图130 6.4.2 改进的Jackson图131 6.4.3 Jackson方法132 6.5 程序复杂程度的定量度量136 6.5.1 McCabe方法137 6.5.2 Halstead方法139 6.6 小结140 习题6140 第7章 实现145 7.1 编码146 7.1.1 选择程序设计语言146 7.1.2 编码风格147 7.2 软件测试基础149 7.2.1 软件测试的目标150 7.2.2 软件测试准则150 7.2.3 测试方法151 7.2.4 测试步骤151 7.2.5 测试阶段的信息流152 7.3 单元测试153 7.3.1 测试重点153 7.3.2 代码审查154 7.3.3 计算机测试155 7.4 集成测试156 7.4.1 自顶向下集成157 7.4.2 自底向上集成158 7.4.3 不同集成测试策略的比较159 7.4.4 回归测试160 7.5 确认测试160 7.5.1 确认测试的范围160 7.5.2 软件配置复查161 7.5.3 Alpha和Beta测试161 7.6 白盒测试技术162 7.6.1 逻辑覆盖162 7.6.2 控制结构测试165 7.7 黑盒测试技术171 7.7.1 等价划分172 7.7.2 边界值分析175 7.7.3 错误推测175 7.8 调试176 7.8.1 调试过程176 7.8.2 调试途径178 7.9 软件可靠性179 7.9.1 基本概念179 7.9.2 估算平均无故障时间的方法180 7.10 小结182 习题7183 第8章 维护189 8.1 软件维护的定义189 8.2 软件维护的特点190 8.2.1 结构化维护与非结构化维护差别巨大190 8.2.2 维护的代价高昂190 8.2.3 维护的问题很多191 8.3 软件维护过程192 8.4 软件的可维护性194 8.4.1 决定软件可维护性的因素194 8.4.2 文档195 8.4.3 可维护性复审196 8.5 预防性维护197 8.6 软件再工程过程198 8.7 小结200 习题8201 第9章 面向对象方法学引论203 9.1 面向对象方法学概述203 9.1.1 面向对象方法学的要点203 9.1.2 面向对象方法学的优点205 9.2 面向对象的概念209 9.2.1 对象209 9.2.2 其他概念211 9.3 面向对象建模215 9.4 对象模型216 9.4.1 类图的基本符号217 9.4.2 表示
关系
的符号218 9.5 动态模型223 9.6 功能模型224 9.6.1 用例图224 9.6.2 用例建模227 9.7 3种模型之间的
关系
228 9.8 小结229 习题9229 第10章 面向对象分析231 10.1 面向对象分析的基本过程231 10.1.1 概述231 10.1.2 3个子模型与5个层次232 10.2 需求陈述233 10.2.1 书写要点233 10.2.2
例子
234 10.3 建立对象模型235 10.3.1 确定类与对象236 10.3.2 确定关联238 10.3.3 划分主题241 10.3.4 确定属性241 10.3.5 识别继承
关系
244 10.3.6 反复修改244 10.4 建立动态模型247 10.4.1 编写脚本247 10.4.2 设想用户界面248 10.4.3 画事件跟踪图249 10.4.4 画状态图250 10.4.5 审查动态模型251 10.5 建立功能模型253 10.5.1 画出基本系统模型图253 10.5.2 画出功能级数据流图254 10.5.3 描述处理框功能254 10.6 定义服务255 10.7 小结256 习题10256 第11章 面向对象设计259 11.1 面向对象设计的准则259 11.2 启发规则261 11.3 软件重用263 11.3.1 概述263 11.3.2 类构件265 11.3.3 软件重用的效益266 11.4 系统分解267 11.5 设计问题域子系统270 11.6 设计人机交互子系统273 11.7 设计任务管理子系统275 11.8 设计数据管理子系统277 11.8.1 选择数据存储管理模式277 11.8.2 设计数据管理子系统278 11.8.3
例子
280 11.9 设计类中的服务280 11.9.1 确定类中应有的服务280 11.9.2 设计实现服务的方法281 11.10 设计关联282 11.11 设计优化283 11.11.1 确定优先级283 11.11.2 提高效率的几项技术284 11.11.3 调整继承
关系
285 11.12 小结287 习题11288 第12章 面向对象实现289 12.1 程序设计语言289 12.1.1 面向对象语言的优点289 12.1.2 面向对象语言的技术特点290 12.1.3 选择面向对象语言294 12.2 程序设计风格294 12.2.1 提高可重用性295 12.2.2 提高可扩充性297 12.2.3 提高健壮性297 12.3 测试策略298 12.3.1 面向对象的单元测试298 12.3.2 面向对象的集成测试299 12.3.3 面向对象的确认测试299 12.4 设计测试用例299 12.4.1 测试类的方法300 12.4.2 集成测试方法301 12.5 小结303 习题12304 第13章 软件项目管理305 13.1 估算软件规模305 13.1.1 代码行技术305 13.1.2 功能点技术306 13.2 工作量估算308 13.2.1 静态单变量模型308 13.2.2 动态多变量模型308 13.2.3 COCOMO2模型309 13.3 进度计划312 13.3.1 估算开发时间312 13.3.2 Gantt图314 13.3.3 工程网络315 13.3.4 估算工程进度316 13.3.5 关键路径318 13.3.6 机动时间318 13.4 人员组织320 13.4.1 民主制程序员组320 13.4.2 主程序员组321 13.4.3 现代程序员组322 13.5 质量保证324 13.5.1 软件质量324 13.5.2 软件质量保证措施326 13.6 软件配置管理328 13.6.1 软件配置329 13.6.2 软件配置管理过程329 13.7 能力成熟度模型331 13.8 小结334 习题13335 附录A C++类库管理系统的分析与设计337 A.1 面向对象分析337 A.1.1 需求337 A.1.2 建立对象模型338 A.2 面向对象设计339 A.2.1 设计类库结构339 A.2.2 设计问题域子系统340 A.2.3 设计人机交互子系统341 A.2.4 设计其他类344 附录B 一个汉字行编辑程序的设计347 B.1 设计规格
说明
347 B.1.1 外部编辑命令347 B.1.2 编辑命令348 B.1.3 输出信息349 B.2 概要设计350 B.2.1 正文文件350 B.2.2 两个工作模式351 B.2.3 数据元素352 B.2.4 过程353 B.3 概要设计结果353 B.4 详细设计356 B.4.1 数据元素356 B.4.2 控制数据元素357 B.4.3 编辑过程357 B.4.4 输入模式的过程359 B.4.5 编辑模式的过程360 B.5 详细设计结果364 B.5.1 编辑程序的详细结构364 B.5.2 类PASCAL伪码365 B.5.3 实现编辑程序的算法367
抽象
与
逐步求精
https://baike.baidu.com/item/
抽象
/9021815
抽象
(Abstraction)是简化复杂的现实问题的途径,它可以为具体问题找到最恰当的类定义,并且可以在最恰当的继承级别解释问题。它可以忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。
抽象
并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。
抽象
包括两个方面,一是过程...
Java基本功练习三(方法的
抽象
、
逐步求精
)
运用“方法
抽象
”的思想去编程会提高代码的重用性,也提高了开发的效率,是不得不掌握的程序开发思想方法!
(软件工程复习核心重点)第四章总体设计-第二节:设计原理
文章目录一:模块化(1)模块(2)模块化二:
抽象
三:
逐步求精
(1)定义(2)MIller法则:注意力集中在(7 ±\pm± 2)四:信息隐藏和局部化五:模块独立(1)定义(2)耦合A:定义B:分类(3)内聚A:定义B:分类软件设计目标 一:模块化 (1)模块 模块:能够单独命名,由边界元素限定的程序元素的序列,是构成程序基本构件 (2)模块化 模块化:把程序划分成独立命名且可以独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能以满足用户的需求 二:
抽象
抽象
:抽出事物
自顶向下,
逐步求精
“自顶向下,
逐步求精
”(又称分治法)的程序设计方法是结构化程序设计,是面向数据流进行需求分析的方法。采用自顶向下、
逐步求精
,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。 具体而言“自顶向下” 是将复杂、大的任务按功能进行分解划分为小问题,找出问题的关键、重点所在,然后用精确的思维定性、定量地去描述问题。“
逐步求精
” 是将现实世界的问题经
抽象
转化为逻辑空间或求解空间
分析与设计
13,190
社区成员
5,761
社区内容
发帖
与我相关
我的任务
分析与设计
.NET技术 分析与设计
复制链接
扫一扫
分享
社区描述
.NET技术 分析与设计
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章