软件工程实践 课件 单元4 软件构造与软件工_第1页
已阅读1页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计语言的选择软件工程软件的详细设计,完成了软件的过程性的描述,接下来进入程序编码阶段。软件构造(SoftwareConstruction)指通过编码、验证、单元测试、集成测试和排错的组合,创建一个可以工作的、有意义的软件。在本章中,我们将聚焦在该领域当中的程序设计语言、设计、编码和复用这几个话题,其余的将在后续章节中讨论。软件构造

低级语言包括机器语言和汇编语言。机器语言是直接用CPU二进制基本指令集或者是用经过符号化的基本指令集写成的代码,其存储由语言本身决定。无疑,用机器语言编写程序是所有程序员的噩梦。汇编语言是机器语言中地址部分符号化的结果,比机器语言更直观。汇编语言程序中可以包括一些宏构造,使其显得比机器语言更容易理解和使用。不过,即使汇编语言存在着生产效率低、维护困难、容易出错等缺点,但是在实现与硬件系统接口部分时,因其易于实现且效率高,仍然被频繁使用。5.1程序设计语言的选择5.1.1程序设计语言的分类

高级语言的表示方法要比低级语言更接近于待求解的问题,其特点是在一定程度上与具体硬件无关,易学、易用、易维护。高级语言的使用极大地提高了软件的生产效率。高级语言按语义分类:命令式、函数式、逻辑式按数据类型检查的时机分类:静态、动态按语言对类型的约束分类:强类型、弱类型按思维方式分类:面向过程、面向对象、混合型5.1程序设计语言的选择1.项目的应用领域。应尽量选取适合某个应用领域的语言。2.算法和计算复杂性。3.软件的执行环境。要选取机器上能运行且具有相应支持软件的语言。4.性能因素。应结合工程具体性能来考虑。5.数据结构的复杂性。要根据不同语言构造数据结构类型的能力选取。6.软件开发人员的知识水平以及心理因素。要特别注意选择语言时,尽量避免受外界的影响,盲目追求高、新的语言。

5.1.2程序设计语言选择准则5.1程序设计语言的选择程序设计方法1软件工程结构程序设计的概念最早是由E.W.Dijkstra提出来的。结构化程序设计方法(StructuredProgram),即SP法是结构化开发方法的重要组成部分。基本思想是自顶向下、逐步求精。基本原则是功能的分解与抽象。5.2程序设计方法5.2.1结构化程序设计

1.自顶而下、逐步求精这种逐步求精的思想符合人类解决复杂问题的普遍规律,从而可以显著提高软件开发的效率。体现了先全局,后局部、先抽象后具体的方法,使开发的程序层次结构清晰,易读、易理解还易验证,因而提高了程序的质量。2.单入口和单出口的控制结构结构化的程序是由且仅由顺序、选择、循环三种基本控制结构组成,既保证了程序结构清晰,又提高了程序代码的可重用性。

一、结构化程序设计特点提出和分析问题确定数学模型设计算法模块化编程程序整个编译、运行结构化程序设计步骤

三、优化设计

优化设计有多方面的内容,例如结构的优化,功能的优化,算法的优化和时间、效率的优化等等。二、结构化程序设计的基本原理

⑴不考虑时间因素的前提下开发并精简软件结构。⑵寻求软件设计结构中的“关键路径”和“关键事件”。仔细的设计该模块的实现算法。⑶选择合适的高级编程语言,提高程序的编译效率。⑷在效率和实现功能之间寻求平衡点。所谓的平衡点指的是,不要求为了一些不必要的功能而耗费大量的时间,从而降低效率,以致得不偿失。常用的软件优化方法程序设计方法2软件工程5.2.2面向对象程序设计

由于软件变得越来越庞大,设计过程也愈加复杂,对软件的可重用和可扩展性的需求越来越强烈。而结构化程序设计无法满足这样的需求。因此,面向对象的程序设计方法应运而生。面向对象的程序设计语言都支持面向对象技术的四个核心概念:数据封装、继承、多态和泛型编程。1.数据封装

将一组数据和这组数据有关的操作集合封装在一起,形成一个实体,称为“对象”。例如:有关时间的信息,面向对象技术定义1个数据类型:

classTimer{

时分秒等时间数据成员;

操作时间数据的成员函数;};

用户不必知道类的实现细节,只需根据类所提供的外部特性接口访问。2.继承

继承是面向对象语言的重要的概念,是软件可重用和可扩充问题的基础

。继承实现了一般和特殊的关系。在面向对象语言中,类功能支持这种层次机制。除了根结点外,每个类都有它的基类(baseclass)。除了叶结点外,每个类都有它的派生类(derivedclass)。一个派生类可以从它的基类那里继承所有的数据和操作,并扩充自己的特殊数据和操作。

3.多态性

所谓多态,是指一个名字(或符号)具有多种含义。即相同的操作的消息发送给不同的对象时,每个对象将根据自己所属类中定义的操作去执行,产生不同的结果。

这对仿真客观世界以及提升软件的灵活性有相当重要的意义。

在面向对象的程序设计语言中,多态是通过函数重载(overload)来实现的。4.泛型编程

所谓泛型编程(genericprogramming),是以独立于任何特定数据类型的方式编写代码。这就为程序员在编写可重用代码时提供了有用的工具。

泛型其实是一种运算符的多态,实现方式是类型参数化。

用一个类或者函数就能够处理具有不同数据类型的类或函数,且其实现细节相同。

泛型编程主要依托模板(template)来实现。模板有函数模板和类模板之分。

程序设计风格与代码审查软件工程5.3程序设计风格5.3.1源程序文件符号的命名。尽量用与实际意义相同或接近的标识符命名。源程序中的注释注释可分为序言性注释和解释性注释。错误的注释宁可不要。源程序的书写格式

讨论程序设计风格,是力图从编码原则的角度来探讨提高程序的可读性、改善程序质量的方法和途径。语句构造,尤其是流程控制语句的构造技术,直接影响到程序的可读性及效率。应采用直接、清晰的构造方式,而不要为了提高效率或者显示技巧而降低程序的清晰性和可读性。5.3.2语句构造方法

为使程序中的数据说明更易于理解和维护,数据说明的次序应当规范化:

可按说明类型(常量,简单变量类型,复杂类型)

一个语句说明多个变量时,按字母顺序排列。复杂的数据结构,要加注释。

输入输出技术输入和输出格式应尽可能统一。输出信息中应该反映输入的数据。输入和输出应尽可能集中安排。数据说明方法在高级别的警告模式下编译程序尽量采用自动化的编程工具交叉审阅代码只让一个功能模块完成一个任务正确性、简单性和清晰性是第一位的尽量避免全局和共享数据的使用总是初始化变量避

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论