软件工程 Software Engineering

Slides:



Advertisements
Similar presentations
1 计算机软件考试命题模式 计算机软件考试命题模式 张 淑 平 张 淑 平. 2  命题模式内容  组织管理模式 − 命题机构和人员组成 − 命题程序  试卷组成模式.
Advertisements

[ Java 程序设计 教程 ] 阎菲 陈利 向郑涛 陈宇峰 中国水利水电出版社.  Java 语言是对软件开发技术有深 远影响、应用前景广泛、具有丰富 的类库、继承了 C++ 传统(摈弃了 某些不足)广泛使用的网络编程语 言。 Java 语言的特性使它可以最大 限度地利用网络。  本章介绍面向对象的基本概念:对.
联系方式 课程学习平台网址: 用户名:学号 ; 密码:身份证后 6 位.
第11章 面向对象实现 11.1 面向对象的程序设计语言 11.2 面向对象的程序实现特征 11.3 面向对象测试 11.4 组件技术简介.
第一章 認識程式語言.
Tool Command Language --11级ACM班 金天行.
第八章 信息系统开发概述.
UI(用户界面)集训班 Illustrator 高级班.
基于解释性语言的手机跨平台架构 Sloan Yi. Qt MTK.
面向对象程序设计 C#.Net 01 C#概述和简单编程 郑捷
Oracle数据库 Oracle 子程序.
軟體工程 -物件導向程式設計與UML系統分析實作
12.1 程序设计语言 12.2 程序设计风格 12.3 测试策略 12.4 设计测试用例 12.5 小结 习题
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
程序、模型与表达 前端工程师的程序设计思考.
计算机基础知识 丁家营镇九年制学校 徐中先.
施耐德电气(中国)投资有限公司 运动控制部技术经理 李幼涵 高级工程师
程序的形式验证 - 简介 中国科学院软件研究所 张文辉 1.
《数据库原理及应用》课程介绍 信息工程学院 孙俊国
Android快速开发入门 巫文杰、Android工程师 讲师的CSDN博客地址
嵌入式系统课程简介 宋健建 南京大学软件学院 2004/02/10.
第二讲 搭建Java Web开发环境 主讲人:孙娜
面向对象建模技术 软件工程系 林 琳.
第一章 计算机语言的学科形态与发展历程   计算机语言在计算学科中占有特殊的地位,它是计算学科中最富有智慧的成果之一,它深刻地影响着计算学科各个领域的发展。不仅如此,计算机语言还是程序员与计算机交流的主要工具。因此,可以说如果不了解计算机语言,就谈不上对计算学科的真正了解。
管理信息结构SMI.
走进编程 程序的顺序结构(二).
第11章:一些著名开源软件介绍 第12章:服务安装和配置 本章教学目标: 了解当前一些应用最广泛的开源软件项目 搭建一个网站服务器
大数据管理技术 --NoSQL数据库 HBase 陈 辉 大数据分析技术.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
数 控 技 术 华中科技大学机械科学与工程学院.
第二章 Java语言基础.
数据挖掘工具性能比较.
动态规划(Dynamic Programming)
《编译原理与技术》 期末复习 计算机科学与技术学院 郑启龙 李 诚 25/12/2018.
实习前你需要知道的 PRESENTED BY Yisa.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
三:基于Eclipse的集成开发环境搭建与使用
程序设计工具实习 Software Program Tool
第4章 非线性规划 4.5 约束最优化方法 2019/4/6 山东大学 软件学院.
新一代安全网上银行 小组成员:杨志明 王晶 任毅 刘建中 关昊 刘超.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
第6章 软件编码 本章内容结构 本章引言 学习目标 教学内容 本章小结 思考和练习 课堂讨论 2019年4月9日.
内容摘要 ■ 课程概述 ■ 教学安排 ■ 什么是操作系统? ■ 为什么学习操作系统? ■ 如何学习操作系统? ■ 操作系统实例
C语言程序设计 主讲教师:陆幼利.
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
微机系统的组成.
软件设计演进和系列训练营 实践 丁辉 Tel:
$9 泛型基础.
VisComposer 2019/4/17.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月13日.
实验七 安全FTP服务器实验 2019/4/28.
程式語言 程式語言發展史 資料型態 程式指令 程序定義和使用.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
計算機概論 跨越講義 第4章 基本視窗程式應用 4-1 程式語言簡介 4-2 結構化VS物件導向程式設計
JSP实用教程 清华大学出版社 第2章 JSP运行环境和开发环境 教学目标 教学重点 教学过程 2019年5月7日.
iSIGHT 基本培训 使用 Excel的栅栏问题
<编程达人入门课程> 本节内容 计算机编程语言 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
辅导课程十五.
<编程达人入门课程> 本节内容 学习路线 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
_03宽字符与Unicode编程 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
第二节 C语言的特点.
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
第四章 UNIX文件系统.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
学习数据结构的意义 (C语言版) 《数据结构》在线开放课程 主讲人:李刚
程式設計與程式語言 告訴電腦做些什麼 第十六章.
Presentation transcript:

软件工程 Software Engineering 第九章 编码 武汉大学 计算机学院

思考? 编程对软件的开发和维护有何影响?

软件生存期 软件计划 需求分析 软件设计 实现(编码) 测试 维护 定义时期 开发时期 使用和维护时期 退 役

第9章 软件编码 什么是结构化程序设计技术? 程序设计语言的分类如何? 面向对象程序设计语言的优点有哪些? 面向对象程序设计语言的技术特点如何? 如何选择程序设计语言? 如何保持良好的编码风格?

软件开发时期的三个阶段 信息描述 数据设计 功能描述 设计 结构设计 行为描述 实现 程序模块 测试 其他需求 过程设计 集成并确认 的软件

一、结构化程序设计(SP) 无条件转移语句GOTO “好结构” —— “高效率”的争论 缺点 优点 破坏了程序动态结构与静态结构的一致性 难阅读、难理解 易出错、难查错 优点 使程序简单 提高执行效率 “好结构” —— “高效率”的争论

非结构化  结构化 E1 C B T F E2 E3 A D E1 Flag=1 T F E2 E3 Flag=0 C B A D (a)

二、程序设计语言 语言的元计算模型等价 → 功能等价 描述问题的方便性有差异 P A B 语义等价

1. 语言的分类 按语言的演变分类 第一代 机器相关(机器语言,汇编语言) 第二代 高级程序设计语言(Fortran, COBOL, Basic) 第三代 结构化PL 通用语言(Pascal, C, Ada) OOPL(C++, Smalltalk, Java) 专用语言(LISP, Prolog) 第四代 不涉及算法细节的4GL SQL,Program generators, Decision support language Prototyping language, Formal specification language

2. 编程语言对软件的影响 机器求解问题的基本工具  思维方式、解题方式 理想的模块化机制,语法清晰  可读性、可理解性 独立编译机制,编译程序查错能力  可靠性 实现的难易程度,独立编译机制,软件开发工具丰富  开发效率 编译程序优化能力,语言直接操纵硬件能力  运行效率 标准化程度,模块封装机制  可维护性

3. 语言的选择 应用领域 算法和计算复杂性 性能需求 数据结构的复杂性 软件开发人员的知识水平 软件运行环境 等

4. 编码风格(编码原则) 编码风格指一个人编制程序是所表现出来的特点、习惯、逻辑思路等。良好的编码风格可以减少编码的错误,提高程序的可读性,提高开发效率。 代码文档化(标识符的命名、注释安排、程序的视觉组织) 数据说明 语句构造 输入/输出风格 效率 复用

三、面向对象编程(Object-oriented Programming, OOP) 面向对象语言(OOPL) 支持OO概念 编译程序可自动把OO概念映射到目标程序中 非面向对象语言 程序员实现 OOP是否必须用OOPL来实现?

OOD的结果可以用OOPL/非OOPL实现 错误! OOPL功能强于非OOPL? 任何通用语言都可实现OO概念 OOPL实现OO概念远比非OOPL方便! 选择编程语言的关键 一致的表达能力 可重用性 可维护性

1. OOPL的优点 一致的表达方式 可重用性好 可维护性好 OOA→OOD→OOP使用统一的概念 可重用OOA、OOD、OOP的结果 程序显式陈述问题域语义

2. OOPL的技术特点 20世纪50年代,LISP,动态联编、交互式开发 60年代,SIMULA,类,继承 70年代末,Modula_2,Ada,数据抽象机制 80年代,OOPL 纯OOPL(Smalltalk, Eiffel) 混合型OOPL(C++)

OOPL的技术特点主要有: 支持类和对象概念 实现整体-部分结构 实现一般-特殊结构 实现属性和服务 提供类库和强大的开发环境 类型检查 效率

类型检查 按编译时进行类型检查的严格程度,分为 强类型(Strong Typing) 弱类型(Weak Typing) 每个变量(属性)必须准确属于某个类 C++,Eiffel等 弱类型(Weak Typing) 仅要求每个变量(属性)隶属于一个对象 Smalltalk无类型,Foxpro等

强类型语言的优点 可靠 高效 强类型编译型语言  弱类型解释型语言  利于在编译时发现程序错误 增加了程序可读性 可生成高效率目标代码 开发软件产品 快速开发原型

效率问题 许多人认为OOPL的主要缺点是效率低 早期OOPL是解释型而非编译型的  类库 运行时dynamic binding实现多态性,要在运行时查找继承树  优化了查找过程,高效率查找

3. 选择OOPL应考虑的因素 将来能否占主导地位 可重用性 类库、开发环境 其它因素

4. 程序设计风格 提高可重用性 提高可扩充性 提高健壮性 提高方法的内聚 减小方法的规模 保持方法的一致性 把策略与实现分开 全面覆盖 尽量不使用全局信息 利用继承机制 提高可扩充性 封装实现策略 不要用一个方法遍历多条关联链 避免使用多分支语句 精心确定公有方法 提高健壮性 预防用户的操作错误 检查参数合法性等

小 结 结构化程序设计 程序设计语言 编码风格 面向对象语言的优点 面向对象语言的技术特点 选择面向对象语言的实际因素

思考题 根据你的经验,总结编程应遵循的风格,并说明为什么如此能增加代码的可读性和可理解性? 有人认为:“应该尽量用面向对象语言来实现面向对象分析和设计的结果”。你认为他的观点对吗 ?请说明理由。 选择面向对象程序设计语言时应该主要考虑哪些因素?