电子斜技大学 软件技术基础 5.3软件开发过程 主讲教师:刘民岷 航空航天学院 a口2 软件技术基础课程组
软件技术基础 主讲教师:刘民岷 航空航天学院 软件技术基础课程组
1、需求分析 需求分析之前的可行性研究 一技术可行性 THE SOFTWARE DEVELOPMENT -经济可行性 CYCLE -操作可行性 ● 需求分析的任务:用户和软件人员进一步理解需求, 并将双方的共同理解表达成一致接受的“需求说明 书” 需求说明书的作用 -作为用户和开发者的合同,为双方相互了解提供基础; -作为开发者进行设计和编程的根据; -作为软件开发完成后验收的依据。 电子科技大学刘民岷 软件开发过程 2
电子科技大学 刘民岷 软件开发过程 2 ⚫ 需求分析之前的可行性研究 –技术可行性 –经济可行性 –操作可行性 ⚫ 需求分析的任务:用户和软件人员进一步理解需求, 并将双方的共同理解表达成一致接受的“需求说明 书” ⚫ 需求说明书的作用 –作为用户和开发者的合同,为双方相互了解提供基础; –作为开发者进行设计和编程的根据; –作为软件开发完成后验收的依据
1.1结构化分析方洁 结构化分析方法(Structured Analysis),简称SA,适用于 分析大型数据处理系统。通常和结构化设计方法SD联合 使用 SA方法通常用数据流图表达需求,数据词典记录数据的 逻辑定义。 软件工程中控制复杂性的基本手段: 一分解:大问题分割成小问题,分别解决 一抽象:用最本质属性考虑子系统,略去细节 用$A方法进行需求分析的一般步骤: 建立当前系统的“具体模型”:一“怎样做” 一抽象出当前系统的逻辑模型:-“做什么” -建立目标系统的逻辑模型:SA的最终目标; 一考虑人机界面和其他问题:环境、出错处理、系统启停、 I/O等 电子科技大学刘民岷 软件开发过程 3
电子科技大学 刘民岷 软件开发过程 3 ⚫ 结构化分析方法(Structured Analysis),简称SA,适用于 分析大型数据处理系统。通常和结构化设计方法SD联合 使用 ⚫ SA方法通常用数据流图表达需求,数据词典记录数据的 逻辑定义。 ⚫ 软件工程中控制复杂性的基本手段: – 分解:大问题分割成小问题,分别解决 – 抽象:用最本质属性考虑子系统,略去细节 ⚫ 用SA方法进行需求分析的一般步骤: – 建立当前系统的“具体模型”:-“怎样做” – 抽象出当前系统的逻辑模型:-“做什么” – 建立目标系统的逻辑模型:SA的最终目标; – 考虑人机界面和其他问题:环境、出错处理、系统启停、 I/O等
1.2面向对象分析方法 面向对象(Object Oriented)方法简称为OO方法。 “面向对象”技术追求的是软件系统对现实世界的直接 模拟,尽量实现将现实世界中的事物直接映射到软件系 统的解空间。 面向对象的程序设计技术是以对象为基础,以消息驱动 对象实现操作的一种全新的程序设计方法。 OO方法最早出现在挪威奥斯陆大学和挪威计算中心共 同研制的仿真语言Simula67中。 1980年随美国加州的Xerox?研究中心推出的SmallTalk80 语言,使得0O方法得以较完善地实现。 90年代初,O0方法和OOP语言开始成熟。 到2000年,O0方法将成为软件开发的首选方法而受到 越来越多的程序设计人员的青睐。 电子科技大学刘民岷 软件开发过程 4
电子科技大学 刘民岷 软件开发过程 4 ⚫ 面向对象(Object Oriented)方法简称为OO方法。 ⚫ “面向对象”技术追求的是软件系统对现实世界的直接 模拟,尽量实现将现实世界中的事物直接映射到软件系 统的解空间。 ⚫ 面向对象的程序设计技术是以对象为基础,以消息驱动 对象实现操作的一种全新的程序设计方法。 ⚫ OO方法最早出现在挪威奥斯陆大学和挪威计算中心共 同研制的仿真语言Simula67中。 ⚫ 1980年随美国加州的Xerox研究中心推出的SmallTalk 80 语言,使得OO方法得以较完善地实现。 ⚫ 90年代初,OO方法和OOP语言开始成熟。 ⚫ 到2000年,OO方法将成为软件开发的首选方法而受到 越来越多的程序设计人员的青睐
2、软件设计 任务和目标 -任务:将分析阶段获得的需求说明转换为计算机中可实现 的系统,完成系统的结构设计(数据结构、程序结构), 提交软件设计说明书。 -目标: -提高可靠性:包括正确性和健壮性; -提高可维护性:可读性、可扩充性、可修改性; -提高可理解性:模块化、界面清晰、规格说明清晰无歧 义; -提高效率:时间、空间效率; THE SOFTWARE DEVELOPMENT CYCLE 电子科技大学刘民岷 软件开发过程 5
电子科技大学 刘民岷 软件开发过程 5 ⚫ 任务和目标 –任务:将分析阶段获得的需求说明转换为计算机中可实现 的系统,完成系统的结构设计(数据结构、程序结构), 提交软件设计说明书。 –目标: –提高可靠性:包括正确性和健壮性; –提高可维护性:可读性、可扩充性、可修改性; –提高可理解性:模块化、界面清晰、规格说明清晰无歧 义; –提高效率:时间、空间效率;
2、软件没计(续) 方法和步骤 -概要设计: 一定义系统的逻辑结构,包括:系统的模块划分、建立模块 的层次结构、逻辑关系、设计全局DS及DB -详细设计: 一根据每个模块的功能描述,设计模块内部的实现算法、模 块所需要的局部数据结构。 修改 修改 软件 模块 设计 要求说明书 结构 可接收 描述 说明书 概要设计 复审 详细设计 复审 电子科技大学刘民岷 软件开发过程 6
电子科技大学 刘民岷 软件开发过程 6 ⚫ 方法和步骤 –概要设计: – 定义系统的逻辑结构,包括:系统的模块划分、建立模块 的层次结构、逻辑关系、设计全局DS及DB。 –详细设计: – 根据每个模块的功能描述,设计模块内部的实现算法、模 块所需要的局部数据结构。 概要设计 复审 要求说明书 软件 结构 可接收 详细设计 模块 描述 设计 说明书 复审 修改 修改
2、软件设计(续) 软件设计准则 -软件结构准则:好的软件结构应具有倒置水缸形;即顶部宽度 最小,中间宽度最大,底部宽度小于中间的宽度 -模块化准则:不分模块的程序是无法理解、管理和维护的程序 模块独立性准则:模块独立性是指开发具有功能专一、模块之 间无过多相互作用的模块 -模块的耦合性:模块之间联系紧密程度的度量,耦合性越小越 好 模块的内聚性:模块内部各部分之间联系紧密程度的度量,内 聚性越大越好 电子科技大学刘民岷 软件开发过程 7
电子科技大学 刘民岷 软件开发过程 7 ⚫ 软件设计准则 –软件结构准则:好的软件结构应具有倒置水缸形;即顶部宽度 最小,中间宽度最大,底部宽度小于中间的宽度 –模块化准则:不分模块的程序是无法理解、管理和维护的程序 –模块独立性准则:模块独立性是指开发具有功能专一、模块之 间无过多相互作用的模块 –模块的耦合性:模块之间联系紧密程度的度量,耦合性越小越 好 –模块的内聚性:模块内部各部分之间联系紧密程度的度量,内 聚性越大越好
3、软件编程 程序设计语言分“机器语言”、“汇编语言”和“高级 语言” 一机器语言和汇编语言的程序执行效率高,但生产效率低 高级语言的程序执行效率不如汇编语言,但编程效率则要 高得多,同时还有可读性、可维护性好等优点 常见的高级语言 BASIC FORTRAN IMPLEMENTATION E56 NTECHATION C/C++/C# 3 THE DESICN SOFTWARE DEVELOPMENT JAVA 6 CYCLE -ADA 2 ANALYSIS Python 电子科技大学刘民岷 软件开发过程 8
电子科技大学 刘民岷 软件开发过程 8 ⚫ 程序设计语言分“机器语言”、“汇编语言”和“高级 语言” – 机器语言和汇编语言的程序执行效率高,但生产效率低 – 高级语言的程序执行效率不如汇编语言,但编程效率则要 高得多,同时还有可读性、可维护性好等优点 ⚫ 常见的高级语言 – BASIC – FORTRAN – C/C++/C # – JAVA – ADA – Python
软件测试 程序设计语言分“机器语言”、“汇编语言”和“高级 语言” 一机器语言和汇编语言的程序执行效率高,但生产效率低 高级语言的程序执行效率不如汇编语言,但编程效率则要 高得多,同时还有可读性、可维护性好等优点 常见的高级语言 BASIC FORTRAN IMPLEMENTATION E56 NTECHATION C/C++/C# 3 THE DESICN SOFTWARE DEVELOPMENT JAVA 6 CYCLE -ADA 2 ANALYSIS Python 电子科技大学刘民岷 软件开发过程 9
电子科技大学 刘民岷 软件开发过程 9 ⚫ 程序设计语言分“机器语言”、“汇编语言”和“高级 语言” – 机器语言和汇编语言的程序执行效率高,但生产效率低 – 高级语言的程序执行效率不如汇编语言,但编程效率则要 高得多,同时还有可读性、可维护性好等优点 ⚫ 常见的高级语言 – BASIC – FORTRAN – C/C++/C # – JAVA – ADA – Python