
前言 商鹏
前 言 商 鹏

例 某公句程序员阿超的宝贝儿子上了小学二年级,老师让家 长每天出30道加减法题目给孩子做。阿超想写一个小程序 来做这件事,具体实现可以采用很多语言或工具: Excel、C/C++、C#、VB、Unix Shell.Emacs. Powershell/VBScript.JavaScript,Perl,Pythn. 冬请大家估计写好这个程序需要多少时间?
示例 ❖ 某公司程序员阿超的宝贝儿子上了小学二年级,老师让家 长每天出30道加减法题目给孩子做。阿超想写一个小程序 来做这件事,具体实现可以采用很多语言或工具: Excel、C/C++、 C#、VB、Unix Shell. Emacs. Powershell/VBScript. JavaScript、 Perl、 Pythn. ❖ 请大家估计写好这个程序需要多少时间?

示例 冬阿超一下打印出好多份不同的题目,让孩子做了。老师看 了作业之后,对阿超的小程序赞许有加。别的老师闻讯也 想要类似的程序,让二年级到四年级都能用,并附带提出 一些小小的要求,例如:题目避免重复、可定制数量和打 印方式、可以控荆下列参数:是否有乘除法、是否有括号 、数值范围、除法有无余数、是否支持分数(真分数、假 分数.)、是否支持小数(精确到多少位)、打印中每行 的间隔。阿超的儿子兴高采烈地回家来给老爸汇报,并说 ”老师明天就想要!"阿超有些挠头,原来就是随手写了个 程序,现在怎么来了一些用户,还带来了不少需求。 $现在大家估计做好这个软件需要多长时间?
示例 ❖ 阿超一下打印出好多份不同的题目,让孩子做了。老师看 了作业之后,对阿超的小程序赞许有加。别的老师闻讯也 想要类似的程序,让二年级到四年级都能用,并附带提出 一些小小的要求,例如:题目避免重复、可定制数量和打 印方式、可以控制下列参数:是否有乘除法、是否有括号 、数值范围、除法有无余数、是否支持分数(真分数、假 分数.)、是否支持小数(精确到多少位)、打印中每行 的间隔。阿超的儿子兴高采烈地回家来给老爸汇报,并说 "老师明天就想要!"阿超有些挠头,原来就是随手写了个 程序,现在怎么来了一些用户,还带来了不少需求。 ❖ 现在大家估计做好这个软件需要多长时间?

阿超熬夜做出了这个软件的一个初始版本,交给了老师。过 了几天,老师说教导主任看了很满意,提议把这个程序放到 学校的网站上,再多一点点要求:支持二元一次方程、能开 根号、并且让老师和家长可以通过网站定制各种类型的四则 运算作业,还可以生成期中、期末考试的试卷。当然,希望 网站永远是可以用的,至少早上五点到晚上十二点要能访问 。阿超叹了一口气,这是多复杂的一个工程啊,如果有一天 晚上网站打不开了,我是不是还要修理服务器? 冬在这个例子中,我们看到客户们对阿超的鼎求从一个简单的 程序,扩展到一个满足各种功能的应用软件,再扩展到一个 能保证维修的软件服务。 现在请大家估计做好这个软件服务需要多长时间? 这个例子展现了软件工程的概念
❖ 阿超熬夜做出了这个软件的一个初始版本,交给了老师。过 了几天,老师说教导主任看了很满意,提议把这个程序放到 学校的网站上,再多一点点要求:支持二元一次方程、能开 根号、并且让老师和家长可以通过网站定制各种类型的四则 运算作业,还可以生成期中、期末考试的试卷。当然,希望 网站永远是可以用的,至少早上五点到晚上十二点要能访问 。阿超叹了一口气,这是多复杂的一个工程啊,如果有一天 晚上网站打不开了,我是不是还要修理服务器? ❖ 在这个例子中,我们看到客户们对阿超的需求从一个简单的 程序,扩展到一个满足各种功能的应用软件,再扩展到一个 能保证维修的软件服务。 ❖ 现在请大家估计做好这个软件服务需要多长时间? 这个例子展现了软件工程的概念

课程内容 软件工程知识 面向对象的分析与设计
课程内容 软件工程知识 面向对象的分析与设计 Conclusion 1 2 3 4

1.软件工程 $软件工程是指应用计算机科学技术、数学和管理学 的原理,运用工程学的理论、方法和技术,研究和 指导软件开发和演化的一门交叉学科。 冬软件工程学包括软件工程原理、软件工程过程、软 件工程方法、软件工程模型、软件工程管理、软件 工程度量、软件工程环境和软件工程应用等
1.软件工程 ❖软件工程是指应用计算机科学技术、数学和管理学 的原理,运用工程学的理论、方法和技术,研究和 指导软件开发和演化的一门交叉学科。 ❖软件工程学包括软件工程原理、软件工程过程、软 件工程方法、软件工程模型、软件工程管理、软件 工程度量、软件工程环境和软件工程应用等

1.1软件开发方法 功能分解法:定义顶层功能,把功能分解为子功能,同时定 义功能之间的接口,对较大的子功能进一步分解,直到给出 明确定义,可以设计数据结构和算法。 ■规模不大的系统,开发效率提高,提出了模块化思想,结 合模块化编程,软件维护更有效 ■功能和接口不能直接映射到问题域中的事物,功能模型难 以准确描述问题域,难以检验模型的正确性,对需求变化 性的适应能力差 冬结构化方法:包括需求分析、设计、编程和测试等,远用逐 步求精的原则,更强调对问题域的分析。 ■不适用于需求多变的复杂系统 冬信息建模方法:建立在实体联系棋型(entity relationship m0de1)基础上。以数据结构为中心开发软件。 ■强调对数据的组织,忽略了系统功能
1.1 软件开发方法 ❖ 功能分解法:定义顶层功能,把功能分解为子功能,同时定 义功能之间的接口,对较大的子功能进一步分解,直到给出 明确定义,可以设计数据结构和算法。 ◼ 规模不大的系统,开发效率提高,提出了模块化思想,结 合模块化编程,软件维护更有效 ◼ 功能和接口不能直接映射到问题域中的事物,功能模型难 以准确描述问题域,难以检验模型的正确性,对需求变化 性的适应能力差 ❖ 结构化方法:包括需求分析、设计、编程和测试等,运用逐 步求精的原则,更强调对问题域的分析。 ◼ 不适用于需求多变的复杂系统 ❖ 信息建模方法:建立在实体联系模型(entity relationship model)基础上。以数据结构为中心开发软件。 ◼ 强调对数据的组织,忽略了系统功能

1,1软件开发方法 面向对象方法(0bject-Oriented Method,OOM)解 决问题的思路是主张从客观世界固有的事物出发来 构造系统,提倡用人类在现实生活中常用的思维方 法来认识、理解和描述客观事物,强调最终建立的 系统能越映射问题域。 ■面向对象的思想已经被软件开发过程的各个阶段所应用: 面向对象分析(0 bject0 riented Analysis,00A)、面 向对象设计(0 oject0 riented Design,O0D)、以及面 向对象编程实现(Object Oriented Programming,O0P)
1.1 软件开发方法 ❖面向对象方法(Object-Oriented Method,OOM)解 决问题的思路是主张从客观世界固有的事物出发来 构造系统,提倡用人类在现实生活中常用的思维方 法来认识、理解和描述客观事物,强调最终建立的 系统能够映射问题域。 ◼ 面向对象的思想已经被软件开发过程的各个阶段所应用: 面向对象分析(Object Oriented Analysis,OOA)、面 向对象设计(Object Oriented Design,OOD)、以及面 向对象编程实现(Object Oriented Programming,OOP)

1.2软件生命周期 一个软件产品或软件系统经历包含孕育、诞生、 成长、成熟、衰亡等阶段的生存过程,称为软件 生命周期。 冬概括说,软件生命周期包括软件定义、软件开发 、软件运行维护三个阶段。 ·软件定义期:任务立项、项目可行性分析、制定项目 计划、需求分析 ■软件开发期:概要设计、详细设计、编码和单元测试 、集成测试、系统确认验证 ■软件运行和维护期:改正性、适应性、完善性 Company Logo
1.2 软件生命周期 ❖一个软件产品或软件系统经历包含孕育、诞生、 成长、成熟、衰亡等阶段的生存过程,称为软件 生命周期。 ❖概括说,软件生命周期包括软件定义、软件开发 、软件运行维护三个阶段。 ◼ 软件定义期:任务立项、项目可行性分析、制定项目 计划、需求分析 ◼ 软件开发期:概要设计、详细设计、编码和单元测试 、集成测试、系统确认验证 ◼ 软件运行和维护期:改正性、适应性、完善性 Company Logo

1,3软件开发模型 冬简单的过程模型 ■需求分析后,直接进入代码编写阶段 ·仅适用于简单的项目开发 需求分析 编写代码 需求 源 说明 代码 需求说明书可以采取多种形式,可以简单, 可以详细,可以是非书面的文档,可以是开 发的一个原型系统 10
10 1.3 软件开发模型 ❖简单的过程模型 ◼ 需求分析后,直接进入代码编写阶段 ◼ 仅适用于简单的项目开发 需求分析 编写代码 需求 说明 书 源 代码 需求说明书可以采取多种形式,可以简单, 可以详细,可以是非书面的文档,可以是开 发的一个原型系统