软件工程教学课件_第1页
软件工程教学课件_第2页
软件工程教学课件_第3页
软件工程教学课件_第4页
软件工程教学课件_第5页
已阅读5页,还剩361页未读 继续免费阅读

下载本文档

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

文档简介

软件工程内容摘要

本书为配合国家技能型紧缺人才培养培训工程并根据《计算机应用和软件专业领域技能型紧缺人才培养培训指导方案》的要求而编写。本书针对职业院校学生的特点,充分体现《指导方案》中素质为基础、能力为本位、需求为依据、就业为导向的基本原则,教学内容注重选择当前软件工程中的一些新理论、新方法与新技术,通过一个小型软件项目为案例贯穿全书,使学生在学完后能基本掌握软件工程的基本理论与方法在软件项目开发中的实际应用。其主要内容涉及软件工程中的软件策划、需求分析、软件设计、编码实现、软件测试及实施与维护等方面的内容,考虑职业院校学生的就业定位,重点侧重于详细设计、软件编码、软件测试、软件维护这几个方面的基本知识与技能。为保持教学内容的先进性同时便于对教学进行科学灵活的组织,对诸如UML方法、面向对象的分析、设计与编程、面向对象软件测试、CMM等也作了介绍。本书可以作为职业院校计算机类专业的软件工程课程的教材或教学参考书,也可作为IT行业程序员、测试员、维护员等的培训教材或参考书。主要内容第1章软件工程概述第2章系统策划第3章需求分析第4章软件设计第5章编码第6章软件测试第7章软件实施与维护第8章软件项目管理第9章软件过程管理第一章软件工程概述本章主要内容1.1软件与软件工程1.2软件生存周期与开发模型1.3软件工程过程1.4软件开发工具简介1.5学习指南11软件及软件工程—软件软件的定义在运行中能提供所希望的功能与性能的程序

使程序能够正确运行的数据及其结构描述软件研制过程和方法所用的文档

软件的特点软件角色的双重性软件不是传统意义上的被制造软件不会“磨损”,但会退化软件都是手工定制的开发过程的复杂与费用的昂贵11软件及软件工程—软件软件的分类分类方法软件类型按功能(1)系统软件(2)支撑软件

(3)应用软件按版权(1)商业软件(2)共享软件

(3)自由(免费)软件(4)公有领域软件按工作方式(1)实时软件(2)分时软件(3)交互式软件(4)批处理软件按销售方式(1)订制软件(2)产品软件11软件及软件工程—软件工程软件危机软件开发的生产率远远不能满足客观需要

开发的软件产品往往不能满足用户的实际需要

软件产品的质量低下且可维护性差

很难估计软件开发的进度计划与成本

软件神话有了软件开发书籍,就可以解决软件开发中的一切问题进度滞后了?好,增加程序员只要程序正确,项目就成功,文档可有可无软件质量只能在正式投入运行后才知道11软件及软件工程—软件工程软件工程的定义IEEE定义:软件工程是将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件。通俗地说,软件工程是指导软件开发和维护的一门工程学科。它采用工程的概念、原理、技术和方法,把经过时间检验而证明是正确的管理技术和当前能够得到的最好的技术方法结合起来,用于开发和维护软件。

质量焦点11软件及软件工程—软件工程软件工程—层次化技术过程方法软件工程三个要素:方法、工具、过程工具11软件及软件工程—软件工程软件工程的作用【成功案例】美国联邦速递公司(FedEX)的管理信息系统

【失败案例】英国伦敦的急救服务管理信息系统

软件工程的基本原理用分阶段的生存周期计划严格管理

坚持进行阶段评审

实行严格的产品控制

采用现代程序设计技术

结果应能清楚地审查

开发小组的人员应该少而精

承认不断改进软件工程实践的必要性

80:20原则12软件生存周期与开发模型—生存周期软件生存周期人的生存周期婴儿——幼儿——儿童——少年——青年——中年——老年——死亡

软件的生存周期软件定义软件开发软件支持问题定义可行性分析需求分析概要设计详细设计编码测试软件发布软件运行维护或退役12软件生存周期与开发模型—生存周期软件定义阶段问题定义可行性分析立项或签订合同软件开发阶段需求分析软件设计编码与测试发布或安装验收软件开发阶段软件的使用、运行软件维护12软件生存周期与开发模型—开发模型问题的提出—软件工程需要解决什么问题?软件开发模型做什么软件?怎么做软件?软件如何适应变化?软件开发过程概括,是软件工程思想的具体化它是跨越整个软件生存周期的各个阶段所需要的全部工作与任务的结构框架

12软件生存周期与开发模型—开发模型瀑布模型—线性顺序模型可行性分析需求分析设计编码测试支持定义阶段开发阶段支持阶段12软件生存周期与开发模型—开发模型瀑布模型的特点:瀑布模型的应用范围阶段间具有顺序性和依赖性每个阶段必须完成规定的文档;每个阶段结束前完成文档审查,及早改正错误,但:开发过程一般不能逆转,否则代价太大。实际的项目开发很难严格按该模型进行。客户往往很难清楚地给出所有的需求,而该模型却要求如此。软件的实际情况必须到项目开发的后期客户才能看到,这要求客户有足够的耐心。用户的需求非常清楚全面,且在开发过程中没有或很少变化

开发人员对软件的应用领域很熟悉。用户的使用环境非常稳定。开发工作对用户参与的要求很低

12软件生存周期与开发模型—开发模型原型模型用户测试运行原型建造/修改原型

听取用户意见12软件生存周期与开发模型—开发模型原型模型的特点:原型模型的应用范围可以得到比较良好的需求定义,容易适应需求的变化。有利于开发与培训的同步。开发费用低、开发周期短、维护容易且对用户更友好。客户与开发者对原型理解不同准确的原型设计比较困难不利于开发人员的创新对所开发的领域比较熟悉而且有快速的原型开发工具项目招投标时,可以以原型模型作为软件的开发模型进行产品移植或升级时,或对已有产品原型进行客户化工作时,原型模型是非常适合的。

12软件生存周期与开发模型—开发模型基于构件的开发模型特点:属于演化式开发或迭代式开发,其开发过程:客户的交流,获得问题的定义标识基本类计划与风险分析类的复用或重新开发构造系统用户评估采用了先进的面向对象技术。

基于构件库的开发,这是软件复用的基础,开发速度快。

融合了螺旋模型特征支持软件开发的迭代方法,是一种演化型的开发技术。

13软件工程过程软件工程过程的概念ISO9000过程:软件工程的三要素之一从开发到维护软件相关产品所采取一系列管理活动。主要包括项目管理、配置管理、质量管理、文档管理等。IS09001:设计、开发、生产、安装和服务的质量保证模式

IS09002:生产、安装和服务的质量保证模式IS09003:最终检验和试验的质量保证模式。

13软件工程过程CMM软件能力成熟度模型

CMM(CapabilityMaturityModel)CMM的级别初始级Initial可重复级Repeatable已定义级Defined已管理级Managed优化级Optimizing开发工具的作用与功能14软件开发工具简介—CASE工具计算机辅助软件工程

CASE作用认识与描述系统需求

保存与管理开发过程中的信息

代码的生成

文档的编制与生成

软件项目的管理开发工具的分类14软件开发工具简介—CASE工具分类方法按应用阶段划分

按功能划分设计工具分析工具项目管理软件配置质量保证分析设计计划工具界面开发客户服务器Web开发IBMRational工具14软件开发工具简介—常用CASE工具Rational公司是专门从事CASE工具研制与开发的软件公司,2003年被IBM公司收购。该公司所研发的Rational系列软件是完整的CASE集成工具,贯穿从需求分析到软件维护的整个软件生存周期。需求分析与设计工具产品主要构成测试工具软件配置管理工具RosePurifyPlusRobotClearCase北大青鸟工具14软件开发工具简介—常用CASE工具

北大青鸟系列CASE工具北京北大青鸟软件有限公司开发研制的,在国内有较高的知名度,北京大学软件工程国家工程研究中心就设在该公司。产品主要构成面向对象软件开发工具集

JBOO构件库管理系统

JBCLMS项目管理与质量保证

JBCMJBPMJBCCM软件测试系统Safepro微软版本管理器—VSS14软件开发工具简介—常用CASE工具版本管理是软件配置管理中的核心工作,由Microsoft公司开发的VisualSourceSafe6.0使用非常广泛而且很容易获得。文件检入与检出产品主要功能版本控制

文件的拆分与共享权限管理本书案例介绍—教师教学网络测评系统15学习指南—学习案例

为实现教学质量的量化考核,借此评价教师的教学水平并有针对性的提高教学质量,某高校开发了基于校园网的教学质量网上测评系统四大功能模块数据采集模块,学生对一个学期中所学课程的各任课教师的教学水平及师德两个方面给予的百分制评价分值数据统计模块,根据教务处规定的统计方法统计出每位任课教师在一个学期中的教学水平及师德的最终测评得分。数据查询模块,查询全校任课教师的最终得分及名次,还能够查询各个班级的学生对任课教师的教学水平及师德的评分情况。辅助功能模块,包括基础数据的管理、测评类型的管理等。

本书案例介绍—教师教学网络测评系统15学习指南—学习案例系统运行界面—浏览器端:本书案例介绍—教师教学网络测评系统15学习指南—学习案例系统运行界面—服务器端:第二章系统策划这个项目是做还是不做呢?还是先去做一下市场调研或与客户谈谈签约的事吧!2.1可行性研究2.2软件项目计划本章主要内容21可行性研究问题的定义问题定义确定软件开发项目必须完成的目标。其关键问题是:“要解决什么问题?”含义主要内容问题的背景、总体要求与目标、类型范围、功能规模、实现目标的方案、开发的条件、环境要求等问题定义报告应包括内容

项目名称

使用方对问题的概括定义项目的目标项目的规模21可行性研究问题的定义案例分析

某校在校生近5000人,每学期在期中都要进行一次对教师的教学质量测评,要求所有学生都要参加。以前测评的方式都是手工操作,由教务处发出书面问卷调查表,每个同学填写完成后交回到教务处。然后教务处再使用手工的方法对问卷进行统计汇总,最后得出学生对每一位教师的总体评价。这种方法一方面浪费了大量的财力、人力,另一方面统计繁琐且容易出错。考虑到现在学校校园网已经建成,为节省开支,提高效率,学校决定委托计算机系开发一套基于校园网的《教师教学网络测评系统》

1、问题的提出21可行性研究问题的定义案例分析2、问题分析

系统分析人员经过与学校教务部门及各相关单位进行充分的调查后,了解了该项目的一些背景资料与基本要求。教师测评分两大部分,一是师德测评;二是教学质量测评。师德测评有4项指标,教学质量测评有14项指标。系统要实现的目标是:

•所有学生在指定时间内在指定机房的计算机上完成对任课教师的测评打分,测评过程全部采用选择的方法,不需要输入任何信息

•所有的测评数据保存在学校中心服务器上,有较为严格的安全措施

•系统能对所有的数据进行统计汇总,得出每一位教师的测评结果,并能进行排序、输出。

……系统开发的大体费用在1.2万元左右,开发周期大约6个人月。

21可行性研究问题的定义案例分析3、系统定义报告根据以上分析,形成如下的系统定义报告。

案例文档之一——系统定义报告用户单位:XX学校教务处负责人:XXX开发单位:XX学校计算机系分析员:XXX项目名称:基于校园网的教学质量测评系统问题概述:教师教学质量测评每学期必须进行一次,原有的手工方法存在资源浪费、效率极低、结果不准确等问题。……(其它的相关说明)项目目标:开发一个效率高且相对通用的教师教学网络测评系统。项目规模:开发成本大约1.2万元,开发周期约6个人月。可行性研究:建议进行一周,费用不超过500元。21可行性研究可行性研究的任务与步骤一、可行性研究的任务

2、经济可行性

3、社会因素的考虑分析成本——收益与短期效益——长远利益这两个方面。要作出投资的估算和系统投入运行后可能获得的经济效益或可节约的费用估算。分析利用现有的技术能否实现,能否解决系统中的技术难题,所开发的系统能否达到所要求的功能和性能,系统对技术人员的要求,现有的技术人员能否胜任,开发所需要的软件与硬件能否如期得到等

1、技术可行性

主要考虑的是市场、政策与法律方面的问题

21可行性研究可行性研究的任务与步骤二、可行性研究的步骤1、重新检查系统定义报告中相关内容,明确对目标系统限制与约束。

2、研究目前正在使用的系统,找出其基本功能和所需要的基本信息,绘制系统流程图。

3、设想新系统高层逻辑模型,分析归纳现有系统,最后建造新物理系统。

4、导出各种实现方案并对方案进行评价

5、推荐可行性方案6、编写可行性研究报告21可行性研究技术可行性分析技术可行性分析的三个方面

1、在给定的时间内能否实现系统定义中的功能。2、软件的质量如何?如实时性、正确性和精确性。3、软件的生产率如何?高生产率意味着利润。做得了吗?做得好吗?做得快吗?

先分析21可行性研究技术可行性分析

在进行技术可行性分析时,一个重要的内容是对现有系统与拟开发的系统绘制系统流程图。系统流程图中所用的符号与程序设计语言中的程序流程图所用的符号类似。但系统流程图与程序流程图不同,系统流程图表达的是信息在系统中各个部件之间的流动情况,而程序流程图表达的是程序对信息进行加工处理的控制过程

系统流程图21可行性研究技术可行性分析符

号名称含

义处理能改变数据或数据位置的加工或部件输入/输出广义的不指明具体设备的输入与输出连接在同一页上指明转到图的另一部分或从图的另一部分转来换页连接指转到另一页或从另一页转来数据流连接其他符号,指明数据的流动方向文档通常表示打印输出系统流程图中的常用符号

系统流程图中的常用符号

21可行性研究技术可行性分析联机存储任何种类的联机存储磁盘磁盘的输入/输出,也表示存储在磁盘上的数据库或文件人工输入在脱机情况下人工输入数据,如填写表格人工操作人工完成的操作,如在表格上的签名通信链路通过通信链路传送数据测评数据库测评设置测评人员管理人员数据处理数据提交验证验证测评测评结果教师教学网络测评系统流程图

21可行性研究技术可行性分析21可行性研究经济可行性分析经济可行性分析

1.成本分析

2.收益分析办公成本

人员成本资源成本其它成本货币的时间价值纯收入

如果从经济可行性的角度分析得出纯收入小于或等于零的结论,则这个项目是不能投资的

最难准确核算

纯收入=总收入折现-总成本折现P=F(1+i)-n

称为折现21可行性研究经济可行性分析常用成本估算策略1、在项目后期进行估算,即完全精确核算2、基于已经完成的类似项目进行估算3、使用相对简单的分解技术以生成项目成本及工作量的估算4、使用一个或多个经验模型进行软件成本及工作量的估算估算不能选择比较切实可行两种常用策略21可行性研究经济可行性分析两种成本估算方法代码行法(LOC)功能点法(FP)每行代码的平均成本乘以程序的行数采用软件所提供的功能来测量的21可行性研究案例分析(可行性研究)可行性研究最终生成可行性研究报告案例文档之二——可行性研究报告1.引言1.1编写目的本报告分析了《教师教学网络测评系统》开发的可行性,请院领导审阅并对是否进行该系统的开发做出批示。1.2项目背景建议进行《教师教学网络测评系统》的开发。(背景介绍略)我院计算机系具备进行该软件系统开发的能力并承担本软件系统的开发与维护工作。该软件系统由我院教务处使用。……详见教材22软件项目计划系统定义报告

用户的需求报告

可行性研究报告

项目开发计划及相关的一些专题计划

如:测试计划、质量保证计划、配置管理计划、人员培训计划、系统安装计划

22软件项目计划软件项目计划的主要内容制订方法软件项目计划资源计划

软件估算计划进度安排计划人力资源

可复用的构件开发环境高层管理人员

项目经理

开发人员客户、最终用户软件/硬件环境

采用任务分解技术对软件的规模与工作量进行估算,并将总的开发费用分配到开发的各个阶段中

软件规模工作量进度成本进度安排要确定最终的软件交付日期,并在限定的日期内安排和分配工作量;或者在合理复用各种资源分配工作量的基础上确定最终交付日期。

其它专题计划如质量保证计划、配置管理计划、里程碑及评审计划、测试计划等

22软件项目计划案例分析(软件项目开发计划书)案例文档之三—软件项目开发计划书1.引言1.1编写目的为保证《教师教学网络测评系统》的开发成功,按期交付使用,特编写项目开发计划,请参与开发的人员遵照执行。1.2项目背景(略)1.3定义《教师教学网络测评系统》以下简称《测评系统》。

。。。。。详见教材第三章需求分析本章主要内容3.1需求分析概述3.2结构化分析3.3面向对象分析3.4UML概述31需求分析概述--需求分析的重要性

需求分析是发现、求精、建模、规格说明和复审的过程;需求分析是系统设计的基础,关系到程的成败和软件产品的质量。重要性需求获取困难,原因有三一是用户需求的动态性(不稳定性)二是需求的模糊性(不准确性)三是需求必须得到用户的确认,否则毫无意义31需求分析概述—需求分析的任务1、确定对系统的综合要求:系统界面要求、系统功能要求、系统性能要求、完全性可靠性保密性要求、系统运行要求、异常处理要求、将来可能提出的要求、分析系统的数据要求。

2、分析系统的数据要求

3、异出系统的逻辑模型

4、修正项目开发划

5、开发原型系统需求分析任务需求工程需求开发需求管理需求获取需求分析编写需求文档需求确认需求工程层次分解图31需求分析概述--需求分析的过程与方法一、需求分析过程需求获取用户概要信息业务需求功能需求用户需求非功能性需求可行性报告系统定义报告系统分析员程序员分析调研座谈法

调查表法

观察法31需求分析概述--需求分析的过程与方法需求分析获取数据分析、处理目标逻辑模型需求获取系统分析员从数据流和数据结构出发,找出系统各元素之间的联系、接口特征及设计限制、能否满足功能需求31需求分析概述--需求分析的过程与方法系统分析员需求规格说明书编写目标系统的基本描述

系统各项需求

系统限制及条件

系统数据定义

……需求分析结果需求文档编写31需求分析概述--需求分析的过程与方法评审、验证的四个方面一致性完整性现实性有效性所有需求必须一致,不能前、后和相互矛盾说明书应包括用户需求的每一方面在现有基础上可实现必须证明需求有效,能解决用户提出的问题需求评审与确认31需求分析概述--需求分析的过程与方法31需求分析概述--需求分析的过程与方法二、需求分析的方法分析方法结构化分析方法面向对象的分析方法面向数据的方法,以数据流为中心。其核心概念包括:进程、数据流、数据存储、外部实体、数据组和数据元素。有代表性的模拟工具有:数据流图、数据字典、原始进程规格说明。

面向对象分析以对象及其服务作为建模标准,比较自然,对象也具有相对的稳定性。主要模拟的元素有:对象、类、属性、关系、方法、消息传递、用例等。其主要原理包括分类、继承、层次、信息隐藏、汇集关系等。基本思想自顶向下逐层分解结构化分析(StructuredAnalysis)它是一种面向数据流的需求分析方法,适用分析大型数据处理系统,是一种简单、实用的方法。32结构化分析软件系统(S)D1D2D3…Dn问题域DiP1P2P3…Pn问题PjF1F2F3…Fn问题域问题行为(功能)对应于软件子系统对应于子软件的软构件对应于软件子系统32结构化分析自顶向下需求分析模型图S={D1,D2,D3,…Dn}Di={P1,P2,P3,…Pm}Pj={F1,F2,F3,…Fk}概念是描述数据信息的集合,是对系统中所有数据元素定义的集合。包含信息数据、控制项、数据存储或外部实体的主要名称和别名使用数据和对象的列表、使用对象的方式描述数据或控制内容的符号关于数据类型、预置值、限制等其他补充信息32结构化分析--数据字典一、定义32结构化分析--数据字典二、数据项的定义数据三种基本类型顺序选择循环即以确定次序连接两个或多个分量从两个或多个可能的元素选取一个即把指定的分量重复零次或多次算符意义=等价于或定义为+连接两个分量[]或(从方括号内列出的若干个分量中选择一个),用“|”号分开供选择分量{}重复(重复花括号内的分量)()可选(圆括号内的分量可有可无)数据字典符号三、数据字典举例教师测评系统中,数据字内部分内容测评子项得分={测评子项编号+{子项得分}}学生评测数据={序号+教师姓名+{所任课程}+{测评子项得分}}以测评子项得分为单位的评测数据记录={学期+被评对象编号+测评类型编号+评测者区别编号+测评子项名称+测评子项所得分值}以测评类型得分为单位的评测数据记录={学期+被评对象编号+测评类型编号+评测者区别编号+本测评类型所得分值}被评对象各测评类型的得分记录={学期+被评对象编号+测评类型编号+测评类型得分+本测评类型占总分的比率}32结构化分析--数据字典定义数据流变换数据的处理数据存储数据的源/宿32结构化分析--数据流图数据流图(DFD)是一种图形化技术,它描绘信息和数据从输入到输出的过程中所经受的变换。

符号数据流图说明:描绘“做什么”,不考虑“怎么做”箭头:数据流图和程序图中用箭头表示的控制流有本质不同,不能混淆。在数据流图中应该描绘所有可能的数据流向,而不应该描绘出现某个数据流的条件。处理:处理并不一定是一个程序。一个处理框可以代表一系列程序、单个程序或者程序的一个模块,也可代表一个人工处理过程,如用户目视检查数据正确性。数据存储:一个数据存储并不等同于一个文件,它可以表示一个文件、文件的一部分、数据库的元素或记录的一部分等;数据可以存储在磁盘、磁带、磁鼓、主存、微缩胶片、穿孔卡片及其他任何介质上(包括人脑)。数据存储和数据流都是数据,仅仅所处的状态不同。数据存储是处于静止状态的数据,数据流是处于运动中的数据。32结构化分析--数据流图32结构化分析--数据流图教师教学网络测评系统数据流图统计查询学生评测数据提交并存储以测评子项得分为单位评测数据记录以测评类型得分为单位评测数据记录被评对象各测评类型的得分记录被评对象各测评子项得分记录以评测类型为单位的测评表案例状态转换图简称状态图,描述的是系统的状态及引系统状态转换的事件,可用来表示系统的行为。状态图指出了作为特定事件的结果将执行哪些动作(如处理数据)。所以说,状态图提供了行为建模机制。状态1do:行为1初始事件状态2do:行为2事件[条件1]结束事件表示从一个状态到另一个状态的转换,箭头的方向表示转换的方向。表示状态。定义符号状态图示例32结构化分析--状态转换图软件需求规格说明阐述一个软件系统必须提供的功能和性能以及它所要考虑的限制条件,它不仅是系统测试和用户文档的基础,也是所有子系列项目规划、设计和编码的基础。它应该尽可能完整地描述系统预期的外部行为和用户可视化行为。除了设计和实现上的限制,软件需求规格说明不应该包括设计、构造、测试或工程管理的细节。说明格式见教材32结构化分析--需求规格说明书33面向对象的分析

面向对象分析方法的核心是利用面向对象的概念和方法为软件需求建造模型。它包含面向对象的图形语言机制以及用于指导需求分析的面向对象的方法学。本节主要介绍面向对象的概念、面向对象方法及面向对象分析过程。33面向对象的需求分析--面向对象的概念面向对象=对象+分类+继承+通信对象对象是现实世界中个体或事物的抽象表示,它封装了特殊的属性(数据)和行为方法。例如,大型客机可视为对象,它具有位置、速度、颜色、容量等属性,对于该对象可施行起飞、降落、加速、维修等操作,这些操作将或多或少地改变飞机的属性值(状态)。

类类是具有相同属性和操作的一组相似对象的抽象例如,飞行器类是所有能够飞行的器械的抽象(如各种飞机、航天器等),它可以包含位置、速度、颜色等属性,同时也具有起飞、降落、加速等操作。显然类是一个支持继承的抽象数据类型,而对象就是类的实例。33面向对象的需求分析--面向对象的概念实例是由某个特定的类所描述的一个具体的对象例如,圆具有半径和圆心等属性,它是一个抽象类,可用circle类来定义,有许多不同半径和不同圆心的具体的圆,它们是类的一个个实例。33面向对象的需求分析--面向对象的概念属性是类或对象中所定义的数据,它是描述客观世界实体静态特征的数据项。当类被实例化而形成具体的对象后,它不仅包含类所具有的一些属性,而且还有自己所特有的属性值例如,Circle类中定义的代表圆心坐标、半径、颜色等的数据成员,就是圆类所具有的属性,当实例一个具体的圆后,其属性也必然存在,还可能增加一些特殊的属性。33面向对象的需求分析--面向对象的概念方法方法是对象所能执行的操作,也就是类中所定义的服务。方法描述了对象执行操作的算法,响应消息的方法在C++语言中把方法称为成员函数。例如在圆的对象中可以定义一个方法GetColor(),用来取得圆的颜色。33面向对象的需求分析--面向对象的概念消息就是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明。通常,一个消息由以下三部分组成:

•接收消息的对象;

•消息选择符即消息名;

•零个或多个变元。例如,MyCircle是一个半径4cm、圆心位于(100,200)的Circle类,也就是一个实例,当要求它以绿颜色在屏幕上显示自己时,在C++语言中应该向它发下列消息:MyCircle.Show(GREEN);

其中,MyCircle是接受消息的对象名,Show是消息选择符(即消息名),圆括号内的GREEN是消息的变元。当Mycircle接收到这个消息后,将执行在Circle类中所定义的Show操作。33面向对象的需求分析--面向对象的概念封装所谓封装就是把某个事物包起来,使外界不知道该事物的具体内容。在面向对象的程序中,把数据和实现操作的代码集中起来放在对象内部。

*

数据与方法代码的内部细节对外界隐藏,这样对其的任何改变可能引起的副作用只能作用在内部,不会传播。

*封装是软件复用的基础。*被封装对象间的接口大大地简化了,对象之间通过消息联系它时不再关心对象内部的数据结构,系统的耦合度降低了。

含义优点33面向对象的需求分析--面向对象的概念继承含义分类类之间的继承关系是现实世界中遗传关系的直接模拟,它表示类之间的内在联系以及对属性和操作的共享,即子类可沿用父类(被继承)的某些特征。当然也可以具有自己独有的属性和操作。

单重继承

多重继承子类仅从一个父类继承属性和行为,而且子类可以覆盖父类的部分属性和方法子类可从多个父类继承属性和方法33面向对象的需求分析--面向对象的概念类继承实例汽车类轿车类货车类商用轿车家用轿车汽车是抽象层次较高的概念,在汽车类的基础上可以分出轿车类与货车类等,如果再细分,还可在轿车类的基础上分出商用轿车与家用轿车等。由于商用轿车与家用轿车作为轿车在绝大多数的属性和行为上是一致的,可以把轿车类看成是家用轿车的父类,而家用轿车这个子类继承了父类所拥有的属性与行为,并在父类的基础上加入了特殊化的属性与行为而形成了新的类。在类的层次结构中,相对上层的是超类(superclass),相对下层的是子类(subclass)

33面向对象的需求分析--面向对象的概念33面向对象的需求分析--面向对象方法简介面向对象方法支持三种基本的活动

识别对象和类描述对象和类之间的关系通过描述每个类的功能定义对象的行为。面向对象方法Booch方法:提出面象对象的软件工程的概念OMT方法:提出面象对象的建模技术方法OOSE方法:用例贯穿于软件整个开发过程UML在Booch方法、OMT方法和OOSE方法的基础上推出了统一的建模语言(UML),1997年被国际对象管理组织(OMG)确定为标准的建模语言33面向对象的需求分析--面向对象分析过程

面向对象方法实际上是一整套的软件开发方法,它包括面向对象的分析OOA、面向对象的设计OOD、面向对象的编程OOP、面向对象的测试OOT等,可以看出面向对象方法可以贯穿软件开发的整个过程。

OOA方法的关键,是识别问题域内的对象,并分析它们相互间的关系,最终建立起问题域的简洁、精确、可理解的正确模型。这是面向对象分析的首要任务

在实际工作中,建模的步骤并不一定严格按照前面讲述的次序进行

OOA分析过程分析用户需求识别类与对象

确定对象的内部特征

识别对象之间的关系

定义主题词

系统分析员应该深入地理解用户需求,抽象出目标系统的本质属性,并用模型准确表示来;另外要向领域专家学习。确定问题域中的类和对象

确定对象的属性的操作分类关系(一般/特殊)、组成关系(整体/部分),还有反映对象属性之间联系的实例连接、反映对象行为之间依赖关系的消息等

概念上把大型的、复杂的系统包含的内容分解成若干个范畴

33面向对象的需求分析--面向对象分析过程34UML概述1997年UML1.1被对象管理组织OMG确定为标准建模语言是软件工程领域最重要的、具有划时代重大意义的事件。

UML是一种定义良好、易于表达、功能强大且普遍适用的标准的图形化建模语言,用它可以简明、准确地为目标系统建立模型。它融入了软件工程领域的新思想、新方法和新技术。它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。34UML概述--UML的结构一、UML中的基本构造块——UML建模的积木块构成UML模型的基本构造块有三种积木元素或积木组合体,即:

反应的是类与类之间联系的方法与性质,关系有依赖、关联、继承、实现和聚合5种

图是软件系统在不同角度上的投影,它是一组元素的表示,包含了事物及其关系的组合。UML有九种图事物是UML模型中的静态元素,UML中共有11种不同的事物

事物关系图序号事物名称语义及表示1类就是面向对象方法中的类,用具有上、中、下三部分的矩形表示。2接口一个类或一个构件的服务的操作集,用一个带有名称的圆表示。3协作表示多个元素的交互,用一个仅包含名称的虚线椭圆表示。4用例涉及系统的参与者的一组动作序列(可以是人、设备或其他系统),用仅包含名称的实线椭圆表示。5主动类拥有进程或线程的类,用外框线加粗的类表示。6构件物理上可替代的软部件,用带有小方框包含名称的矩形表示7节点一般是网络中的服务器,用包含名称的立方体表示。8交互一组对象间的交换消息,用包含操作名的有向线段表示。9状态机对象或交互在其生存周期内呼应其事件而经历的状态序列,用包含名称的圆角矩形表示。10包UML模型的组织元素,用包含名称的左上角带有一个小矩形的大矩形表示。11注释对UML模型的解释,用包含注解内容的右上角为折角的矩形表示UML中的“事物”

34UML概述--UML的结构二、UML中的规则——UML建模的“粘合剂”

UML中的规则是为了将UML中的构造块有机地组装在一起形成一个结构良好的模型而对事物进行描述的语义规则。

5种规则

1、为事物、关系命名的命名规则2、给一个名字以特定含义的范围规则3、使名字可见或如何使用的可见性规则4、描述事件正确、一致地相互联系的完整性规则5、描述运行或模拟动态模型含义的执行规则

34UML概述--UML的结构三、应用于UML的通用机制——UML模型的图纸说明为了对UML模型进行进一步的说明,同时增强其表达能力,UML提供了4种在整个语言中可以一致应用的“通用机制”,可以认为是对UML模型的图纸说明四种机制规格说明

修饰通用划分扩展机制UML图形每个部分后面的语法语义描述UML表示法中每个元素都有一个基本符号UML构造块有两种划分,即类与对象、接口与实现提高UML语言表达能力,它包含构造型、标记值和约束等3种类型34UML概述--UML的结构34UML概述--UML的图UML主要用图来表达模型的内容,而图又由代表模型元素的图形符号组成。学会使用UML的图,是学习、使用统一建模语言UML的关键。

UML的重要内容可以由下列五类图(共9种图形)UML图用例图(Use-casediagram)静态图(Staticdiagram)

行为图(Behaviordiagram)交互图(Interactivediagram)实现图(Implementationdiagram)34UML概述--UML的应用UML的目标是用面向对象的图形方式来描述任何类型的系统,因此,具有很宽的应用领域。其中最常用的是建立软件系统模型,但是它同样也可以用于描述非计算机软件的其他系统,如机械系统、商业系统、企业机构或业务过程、处理复杂数据的信息系统、具有实时要求的工业系统或工业过程等。总之,UML是一个通用的标准建模语言,可以为任何具有静态结构和动态行为的系统建立模型。UML适用于系统开发全过程

需求分析

分析设计编码测试捕获用户的需求、用例建模用UML的逻辑视图和动态视图来描述问题域中的基本概念(例如抽象、类和对象等)和机制。类图描述系统的静态结构,合作图、顺序图、活动图和状态图描述系统的动态行为。把分析阶段的结果扩展成技术解决方案,加入新的类来定义软件系统的技术方案细节。设计阶段用和分析阶段类似的方式使用UML。这个阶段的任务是把来自设计阶段的类转换成某种面对象程序语言的代码(如VB、C++、Java等)UML模型可作为测试阶段的依据。单元测试使用类图和类规格说明;集成测试使用构件图和合作图;系统测试使用用例图来验证系统的行为34UML概述--UML的应用一、UML的应用领域二、UML的建模机制UML9个模型UML9种图UML5个视图业务模型、领域模型、用例模型、分析模型、设计模型、过程模型、部署模型、实现模型、测试模型

用例视图、设计视图、进程视图、实现视图、实施视图用例图、静态图(包括类图、对象图和包图)、行为图(包括状态图和活动图)、交互图(包括顺序图和协作图)、实现图(构件图和配置图)34UML概述--UML的应用静态建模动态建模

反映的是目标系统的静态数据,用例图、类图、对象图、包、构件图、配置图等是静态建模机制,其中尤以用例图和类图最为重要。

强调的是系统的行为,动态建模所建立的模型或者可以执行,或者表示执行时的时序状态或交互关系。它包括状态图、活动图、顺序图和合作图等四个图形,是标准建模语言UML的动态建模机制。UML建模34UML概述--UML的应用

在UML中可以通过用例图来构造目标系统的用例模型,它通过用例来捕获用户需求,通过用例建模,描述对系统感兴趣的外部角色及其对系统(用例)的功能要求。它从系统外部观察系统,而不涉及到技术上如何做这些事。34UML概述--UML中的需求分析(用例图的创建)一、用例模型(Usecasemodel)描述的是外部执行者(Actor)所理解的系统功能。用例模型用于需求分析阶段。在UML中,一个用例模型由若干个用例图描述,用例图的主要元素是用例和执行者。用例模型是开发者和用户对需求规格达成的共识用例模型※描述了待开发系统的功能需求;

※它将系统看作黑盒,从外部执行者的角度来理解系统;

※它驱动了需求分析之后各阶段的开发工作,影响开发工作的各个阶段和

UML的各个模型。

用例模型功能34UML概述--UML中的需求分析(用例图的创建)二、用例(usecase)一个用例是用户与计算机之间的一次典型交互过程。在UML中,用例表示为一个椭圆

含义

1、用例捕获某些用户可见的需求,实现一个具体的用户目标。

2、用例由执行者激活,并提供确切的值给执行者。

3、用例可大可小,但它必须是对一个具体的用户目标实现的完整描述。

特点34UML概述--UML中的需求分析(用例图的创建)举例教师测评系统用例图

以《测评系统》为例,“一个学生测评某位老师”和“管理员进行测评数据处理”便是两个典型的用例

测评数据处理学生管理员说明:学生、管理员是执行者34UML概述--UML中的需求分析(用例图的创建)三、执行者(Actor)含义执行者是指用户在系统中所扮演的角色。其图形化的表示是一个小人。

通信联系不带箭头的线段将执行者与用例连接到一起,表示两者之间交换信息注意尽管执行者在用例图中是用类似人的图形来表示的,但执行者未必是人。意义面对一个大系统,要列出用例清单常常是十分困难。这时可先列出执行者清单,再对每个执行者列出它的用例,问题就会变得容易很多34UML概述--UML中的需求分析(用例图的创建)四、使用和扩展(UseandExtend)扩展关系当一个用例使用另一个用例时,这两个用例之间就构成了使用关系当一个用例与另一个用例相似,但所做的动作多一些,就可以用到扩展关系

使用关系说明使用和扩展是两种不同形式的继承关系34UML概述--UML中的需求分析(用例图的创建)举例例中学位课程的学习包括课程设计,因此构成了使用关系;学位课程学习比专业课程学习有更多的要求,因此构成了扩展关系。课程设计的完成学位课程的学习专业课程的学习《使用》《扩展》34UML概述--UML中的需求分析(用例图的创建)五、用例模型的获取步骤获取执行者

1、使用系统的主要功能(主要使用者)。

l

2、谁需要系统支持他们的日常工作。

l

3、谁来维护、管理使系统正常工作(辅助使用者)。

4、系统需要操纵哪些硬件。

5、系统需要与哪些其它系统交互,包含其它计算机系统和其它应用程序。

获取用例l

执行者要求系统提供哪些功能(执行者需要做什么)?

l

执行者需要读、产生、删除、修改或存储的信息有哪些类型。

l

必须提醒执行者的系统事件有哪些?或者执行者必须提醒系统的事件有哪些?怎样把这些事件表示成用例中的功能?

l

为了完整地描述用例,还需要知道执行者的某些典型功能能否被系统自动实现?

l

系统需要何种输入输出?输入从何处来?输出到何处?

当前运行系统(也许是一些手工操作而不是计算机系统)的主要问题?

34UML概述--UML中的需求分析(用例图的创建)举例教师测评系统用例模型34UML概述--UML中的需求分析(用例图的创建)第四章软件设计41软件设计基本概念软件设计工作内容概要设计详细设计

将软件需求转化为软件体系结构,确定系统级接口、全局数据结构或数据库模式。

确立每个模块的实现算法、局部数据结构,用适当方法表示算法和数据结构的细节。

41软件设计基本概念软件模块定义

整个软件被划分成若干单独命名和可编址的部分,称之为模块。

模块的基本属性模块实现什么功能模块的内部实现逻辑该模块使用时的环境和条件41软件设计基本概念模块划分的原则

划分模块的重要目标是提高模块的独立性。度量模块独立性的两个准则是模块间的内聚性和耦合性。好的软件结构应该具有高内聚、低耦合的模块化结构。

内聚性耦合性内聚性是一个模块内部各个元素彼此结合的紧密程度的度量。

耦合性是模块间互相连接的紧密程度的度量。它取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。

41软件设计基本概念内聚性模块内聚按照模块独立性由高到低的顺序叙述如下:

(1)功能内聚(2)信息内聚(3)通信内聚(4)过程内聚(5)时间内聚(6)逻辑内聚(7)巧合内聚41软件设计基本概念耦合性(1)非直接耦合(2)数据耦合(3)标记耦合(4)控制耦合(5)外部耦合(6)公共耦合(7)内容耦合模块间的耦合按照模块独立性由高到低的顺序列举如下:

42概要设计概要设计需要完成的工作(1)制定规范(2)软件系统结构的总体设计(3)处理方式设计(4)数据结构设计(5)可靠性设计(6)编写概要设计阶段的文档42概要设计概要设计的目标概要设计的主要目标是把需求转换为软件的体系结构。

软件的体系结构程序的模块结构程序的数据结构42概要设计设计程序的模块结构

程序的模块结构表明了程序各个部件(模块)的组织情况,是软件的过程表示。

42概要设计模块间关系的表示

结构图反映程序中模块间的调用关系和模块间信息的传递。结构图的要素包括:(1)模块:模块用矩形框表示,并用模块的名字标记它。(2)模块的调用关系和接口:模块之间用单向箭头联结,箭头从调用模块指向被调用模块,表示调用模块调用了被调用模块。42概要设计设计程序的数据结构(1)确定软件涉及的文件系统的结构以及数据库的模式、子模式,进行数据完整性和安全性的设计。(2)确定输入、输出文件的详细的数据结构。(3)结合算法设计,确定算法所必需的逻辑数据结构及其操作。(4)确定对逻辑数据结构所必需的那些操作的程序模块(软件包)。(5)限制和确定各个数据设计决策的影响范围。(6)若需要与操作系统或调度程序接口所必须的控制表等数据时,确定其详细的数据结构和使用规则。(7)数据的保护性设计

43详细设计详细设计需要完成的工作

在详细设计过程中,需要完成的工作是:

(1)确定软件各个组成部分内的算法以及各部分的内部数据组织。

(2)选定某种过程的表达形式来描述各种算法。可选用的过程表达形式有:流程图、盒图、PAD图等。

(3)编写详细设计说明书。

(4)制定单元测试计划。

(5)进行详细设计评审。43详细设计详细设计的表示详细设计中应采用合适的方式来描述模块内问题解决过程的细节,采用结构化的图形设计表示法是人们易于使用、易于理解的方式。

图形设计表示法流程图盒图PAD图43详细设计程序流程图结构化程序基本结构顺序结构选择结构循环结构43详细设计标准流程图符号

我国国家标准局批准的国家标准(GB1525-89)流程图符号:43详细设计标准流程图示例43详细设计盒图(N-S图)43详细设计面向数据结构的详细设计方法

Jackson方法44面向对象的分析与设计面向对象的分析与设计步骤

使用面向对象的设计方法,同样需要得出软件的体系结构。首先,需要将系统划分为子系统,可以使用包来描述子系统,根据子系统提供的操作定义它们的接口,然后设计子系统的概念模型。对复杂的子系统,可以继续将其分解,得到更简单的子系统。直到得出子系统内待解决问题域中的类。确定子系统中存在的类及类之间的关系,并定义了子系统的接口及关系后,便完成了系统的静态建模工作。接下来需要描述待解决问题域中类的动态行为,从而建立问题解决过程的系统动态模型。44面向对象的分析与设计识别类

为了描述一个软件系统,识别其中的对象并将其抽象为类是极为关键的。识别类和对象的一些好的方法:(1)通过实体-关系模型识别类和对象。(2)基于自然语言信息识别类和对象。(3)基于用例与序列图识别类和对象。44面向对象的分析与设计筛选出正确的类筛选时主要依据下列标准,删除不正确或不必要的类—&—对象。①冗余

如果两个类表达了同样的信息,则应该保留在此问题域中最富于描述的类。②无关

现实世界中存在许多对象,不能把它们都纳入到系统中去,仅需要把与本问题密切相关的类—&—对象放进目标系统中。有些类在其他问题中可能很重要,但与当前要解决的问题无关,同样也应该把它们删掉。44面向对象的分析与设计筛选出正确的类(续)③笼统

在需求陈述中常常使用一些笼统的、泛指的名词,虽然在初步分析时把它们作为候选的类—&—对象列出来了,但是,要么系统无须记忆有关它们的信息,要么在需求陈述中有更明确更具体的名词对应它们所暗指的事务,因此,通常把这些笼统的或模糊的类去掉。④属性

在需求陈述中有些名词实际上描述的是其他对象的属性,应该把这些名词从候选类—&—对象中去掉。当然,如果某个性质具有很强的独立性,则应把它作为类而不是作为属性。44面向对象的分析与设计筛选出正确的类(续)⑤操作

在需求陈述中有时可能使用一些既可作为名词,又可作为动词的词,应该慎重考虑它们在本问题中的含义,以便正确地决定把它们作为类还是作为类中定义的操作。⑥实现在分析阶段不应该过早地考虑怎样实现目标系统。因此,应该去掉仅和实现有关的候选的类—&—对象。在设计和实现阶段,这些类—&—对象可能是重要的,但在分析阶段过早地考虑它们反而会分散我们的注意力。44面向对象的分析与设计确定属性一般来说,确定属性的过程包括分析和选择两个步骤。①分析在需求陈述中用名词词组表示属性,例如,“汽车的颜色”或“光标的位置”。往往用形容词表示可枚举的具体属性,例如,“红色的”、“打开的”。但是,不可能在需求陈述中找到所有属性,分析员还必须藉助于领域知识和常识才能分析得出需要的属性。②选择认真考察经初步分析而确定下来的那些属性,从中删除不正确的或不必要的属性。44面向对象的分析与设计使用类图来描述类

类图通常表示为长方形,长方形又分三个部分,分别用来表示类的名字、属性和操作。44面向对象的分析与设计类图中类之间的关系及表示

普通关联44面向对象的分析与设计类图中类之间的关系及表示

导航关联44面向对象的分析与设计类图中类之间的关系及表示

关联中的角色44面向对象的分析与设计类图中类之间的关系及表示

聚合44面向对象的分析与设计类图中类之间的关系及表示

复合聚合44面向对象的分析与设计类图中类之间的关系及表示

通用化(继承)44面向对象的分析与设计使用包来组织类

包(package)是一种组合机制,把许多类集合成一个更高层次的单位,形成一个高内聚、低耦合的类的集合。包图是一个很有用的工具,特别是对于改进系统的结构非常有帮助。44面向对象的分析与设计动态建模表示方法顺序图状态图合作图其它44面向对象的分析与设计状态图

所有对象都具有状态,状态是对象执行了一系列活动的结果。当某个事件发生后,对象的状态将发生变化。状态图中定义的状态有:初态、终态、中间状态、复合状态。其中,初态是状态图的起始点,而终态则是状态图的终点。一个状态图只能有一个初态,而终态则可以有多个。44面向对象的分析与设计顺序图

顺序图用来描述对象之间动态的交互关系,着重体现对象间消息传递的时间顺序。44面向对象的分析与设计合作图

合作图用于描述相互合作的对象间的交互关系和链接关系。44面向对象的分析与设计动态建模表示方法小结状态图描述跨越多个用例的单个对象的行为顺序图和合作图适合描述单个用例中几个对象的行为。第五章编码本章主要内容5.1程序设计语言5.2编码规范5.3结构化程序设计5.4面向对象的设计5.5用户界面设计计算机语言分类面向机器的程序设计语言面向过程的程序设计语言面向对象的程序设计语言web编程语言.net程序设计语言51程序设计语言常用程序设计语言及其特点

语言特点举例面向机器的语言机器语言程序运行速度高,但可读性和可移植性差

汇编语言克服了机器语言的缺点,采用便于记忆并能描述指令功能的符号来表示指令的操作码.

汇编语言编写的程序较机器语言程序易理解、调试和维护

汇编语言面向过程的语言数据结构、算法是面向过程问题求解的核心FORTRAN,PASCAL,C面向对象的语言支持面向对象的设计方法.C++、VisualBasic、Java、Delphi、PowerBuild(PB)51程序设计语言常用程序设计语言及其特点语言特点Web编程语言

(编写因特网应用程序的语言统称为Web编程语言)HTML语言HTML(HyperTextMarkLanguage)是一种超文本标记语言,主要用来制作网页。它以特殊的标记形式存储为通常的文本文件

ASP(MicrosoftActiveServerPages)它是微软开发的一套服务器端脚本环境。ASP内含于微软的IIS之中。JSP(JavaServerPages

)由Sun公司在Java语言上开发出来的一种动态网页制作技术。其可使网页中的动态部分和静态的HTML相分离。PHP

(HypertextPreprocessor

)PHP是一种HTML内嵌式的语言。而PHP独特的语法混合了C、Java、Perl以及PHP式的新语法,提供了类和对象的实现机制,PHP的这种语法非常适合用于创建WEB项目。.Net

(如C#)“.Net”给我们带来了崭新的思维和技术。它代表了一个集合、一个环境、一个编程的基础结构。有了.Net框架后,开发人员便可对选用的任何编程语言一律使用统一的命令集。51程序设计语言常用程序设计语言及其特点51程序设计语言程序设计语言的选择选择语言的理想标准为使程序易测试和维护以减少生存周期的总成本,选用高级语言应用理想的模块化机制,以及可读性好的控制结构和数据结构。为便于调试和提高软件可靠性,应选用编译程序能够尽可能多地发现程序中错误的语言。为降低软件开发和维护成本,选用的语言应具有良好的独立的编译机制。51程序设计语言程序设计语言的选择选用语言综合考虑标准

系统用户的要求可以使用的编译程序可以得到的软件工具

程序员的知识软件可移植性要求软件应用领域工程规模如果所开发的系统由用户负责维护,用户通常要求用他们熟悉的语言书写程序。

运行目标系统的环境中可以提供的编译程序往往限制了可以选用的语言的范围。如果某种语言有支持程序开发工具可以利用,则目标的实现和验证都变得比较容易。标准化程度高、程序可移植性好是选择语言的重要标准最好是选择程序员最熟悉的语言52编码规范代码文档化含义源程序的文档化包括标识符的选择与命名、注释的安排、程序代码的视觉组织等。程序清单的布局对于程序的可读性也有很大影响,应该利用适当的阶梯(即缩进)形式使程序的层次结构清晰明显举例#defineONE1#defineTEN10#defineTWENTY20#defineINPUT_MODE1#defineINPUT_BUF10#defineOUTPUT_BUF20标识符选择与命名不直观直观,明了52编码规范数据说明与语句一、数据说明

编程序时需确定数据说明的风格。为了使数据更容易理解和维护,应该遵循一些比较简单的原则:数据说明的次序应该标准化,如按照数据结构或数据类型确定说明的次序;当多个变量名在一个语句中说明时,应该按字母顺序排列这些变量。如果设计时使用了一个复杂的数据结构,则应该用注释说明用程序设计语言实现这个数据结构的方法和特点。含义及规则52编码规范数据说明与语句举例IntI,j,k;Floatli,lk;Charch;同时说明多个变量,则按字母顺序按照数据类型确定说明的次序52编码规范数据说明与语句二、语句构造语句构造基本规则不要为了节省空间而把多个语句写在同一行尽量避免复杂的条件测试尽量减少对“非”条件的测试避免大量使用循环嵌套和条件嵌利用括号使逻辑表达式或算术表达式的运算次序清晰直观52编码规范输入/输出

I/O是几乎所有应用程序都要涉及到的,如何提高I/O的效率、准确性与可靠性是编程时必须着重考虑的问题。以下是有关规则:对所有输入数据都进行检验;检查输入项重要组合的合法性;

保持输入格式的简单;用数据结构标记,不要要求用户指定数据的数目;明确提示交互式输入的请求,详细说明可用的选择或边界数值;当程序设计语言的格式有严格要求时,保持输入格式一致;设计良好的输出报表;给所有输出数据加标志。

52编码规范程序布局

程序布局是计算机编程上的美学问题,组织很好的代码不仅让人感到发自内心的愉悦,并且还能清晰地显示出程序的逻辑结构,提高程序的可读性,易于修改。相反,不好的布局不仅不能让人产生美感,反而在可读性、可修改性上大打折扣。52编码规范程序布局程序布局常用技巧

阶梯(即缩进)形式:利用适当会使程序逻辑结构清晰明显。

空格:包括空格、制表符、空行等,使用适当可使程序结构清晰,提高可读性。分组:把完成某一功能的相关语句组织在一起。对齐:把同属性的元素对齐。例如把同一类的一组赋值号对齐排成一条直线下来,直观上让一看就知道这些语句是同属性的。括号:在有多个运算符的表达式中尽量多使用括号,以免产生运算优先级的人机理解不一致。52编码规范注释

注释是程序员和程序读者通信的重要手段,正确的注释非常有助于对程序的理解。重复的注释

解释性注释标记注释代码的总结注释意图注释用不同的词重申了代码的内容,它没有给读者提供代码的附加信息。

典型用于解释复杂的,有效的和灵敏的代码段它是给开发者的注释,表示工作还未做

解释代码的目的

注释有以下五类53结构化程序设计结构化程序设计的原则顺序结构选择结构循环结构基本原则自顶向下,逐步求精,单入口单出口程序三种基本流程结构不足系统是实现模块功能的函数和过程的集合。由于用户的需求和软、硬件技术的不断发展变化,按照功能划分设计的系统模块必然是易变的和不稳定的。这样开发出来的模块可重用性不高

53结构化程序设计结构化程序设计的方法一、程序流程的语句描述

在软件设计阶段,我们得到了各个系统的图形表示模型,或者用流程图,或者用N-S图或者PAD图。一般来说,每种高级语言都有针对程序基本控制结构的语句,现以N-S图及C语言为例进行说明。

53结构化程序设计结构化程序设计的方法顺序结构顺序结构是最简单的一种,即语句按照书写的顺序依次执行。…语句组A语句组B…语句组A语句组B说明N-S图语句格式53结构化程序设计结构化程序设计的方法选择结构TPFABTPFAPP1P2…Pn缺省A1A2…AnAn+1if(条件P)

语句组Aif(条件P)

语句组A

else

语句组BSwitch(表达式P)

{

case常量表达式P1:语句组A1

case常量表达式P2:语句组A2

case常量表达式Pn:语句组An

default:语句组An+1

}NS图语句格式单分支双分支多分支53结构化程序设计结构化程序设计的方法循环结构while(条件表达式P)

循环体SDOWHILEPSSUNTILPDO

循环体SUNTILPNS图语句格式

二、自顶向下逐步求精

结构化程序设计遵循的是自顶而下,逐步求精的设计方法。在分析一个问题的编程思路时,先将该问题分成若干个大的步骤,然后对每一步骤再进行细化分成若干个小的步骤,这样逐级细分,直到最后能将每一个步骤直接翻译成为相应的计算机语言的指令。53结构化程序设计结构化程序设计的方法53结构化程序设计结构化程序设计的方法举例分析“计算某一个班级平均成绩”的算法

(1)基本算法分析

要完成该题要考虑三个方面的问题:成绩的输入方法(班级人数的不确定)平均成绩的计算(循环结构)输出

53结构化程序设计结构化程序设计的方法(2)算法的设计(用N-S图描述)总体功能描述

计算一个班的平均成绩存入到变量中第一次细化

初始化变量输入成绩,求和与计数计算与打印班级平均成绩第二次细化(分步)

经过以上两步的细化以后,每一小步已经与具体语言的指令非常接近了,此时再进行程序编码的工作不再是件难事

见下页53结构化程序设计结构化程序设计的方法计数器不等于零?初始化变量输入成绩,求和与计数计算、打印平均成绩初始化成绩总和变量并清零初始化计数器变量并清零(存放平均成绩与单个成绩不需要初始化)输入第一个成绩(可能就是标记值)当输入的成绩不是结束标记时将该成绩累计到总和变量中

计数器加1输入下一个成绩TF计算平均值输出提示信息打印输出54面向对象的设计—面向对象程序设计语言一、面向对象程序设计语言的特点

面向对象语言支持面向对象的概念,如封装、继承、多态、将数据抽象化等特点。如C++中一般用类来实现封装;Java的类有层次之分,子类继承父类的属性和方法,重用性较好。大多数面向对象语言都提供一个实用的类库。某些语言本身并没有规定提供什么样的类库,而是由实现这种语言的编译系统自行提供类库。

54面向对象的设计—面向对象程序设计语言二、面向对象程序设计过程(1)选择一种合适的面向对象的编程语言

(2)用选定语言编码实现软件设计步骤所得到的公式、图表、说明和规则等软件系统各对象类的详尽描述。(3)将编写好的各个类代码模块根据类的相互关系集成(4)利用开发人员提供的测试用例和用户提供的测试用例分别检验编码完成的各个模块和整个软件系统。面向对象程序设计过程是具体的编码阶段,其主要任务有54面向对象的设计—面向对象程序设计语言将来能否占主导地位

重用性

库和开发环境

其他因素

选择具体的语言时应考虑的因素重用提高软件生产率

占主导地位的编程语言是软件生命力的重要因素能

温馨提示

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

评论

0/150

提交评论