软件开发工具
2021-03-28 17:50:33 30 举报
AI智能生成
为你推荐
查看更多
本课程作为软件工程等专业的入门课程,理论较多,理解记忆即可
作者其他创作
大纲/内容
软件开发工具(2011年版教材)
绪论
六、软件开发工具的功能和性能要求
功能要求
(1)认识与描述客观系统(2)存储与管理开发过程中的信息(3)代码的编写与生成(4)文档的编制或生成(5)软件项目的管理
性能指标
(1)表达能力或描述能力(首先考虑)(2)保持信息一致性的能力(3)使用的方便程度(4)工具的可靠程度(5)对软、硬件环境的要求
七、软件开发工具的类别
按工作阶段:设计工具、分析工具、计划工具按集成度:专用工具、集成工具与软硬件关系:依赖软硬件(设计工具)、独立软硬件(分析工具、计划工具)
八、软件开发工具的研究与应用
一、常见考点1、关于软件开发工具的概念、分类及其功能与性能要求2、软件开发的步骤、各阶段产生的文档及各个角色承担的任务3、大型软件开发中的困难及困难产生的原因4、常见的软件开发方法及其基本思想5、常见的概念模式及其作用6、软件开发工具的一般结构及各部分的作用7、人机界面8、信息库技术9、项目管理及版本管理10、软件开发工具的使用与开发11、软件开发工具的现状与发展
第2章、软件开发过程及其组织
一、软件开发中的困难
1、软件开发的基本问题
两个转换第一个转换:从用户对软件功能的理解到程序员对软件功能的理解之间的转换。 采取的手段:利用尽可能标准化的方法编写程序设计任务书,用明确的语言或图形、表格,把程序要处理的信息的内容、格式、来源、去向、存储、处理清楚地表达出来,作为双方共同理解。第二个转换:从程序员的理解到程序的实现。 采取的手段:提高程序员的知识水平和实际经验
2、大型软件开发中的困难
(1)一致性的保持成为十分困难的问题(2)测试的困难大大增加(3)工作进度难以控制(4)文档与代码的协调十分困难(5)版本更新带来的困难
3、困难产生的原因
(1)大系统的复杂性; (2)个人之间的组织与协调; (3)各应用领域间的差别; (4)时间、变化的因素
二、大型软件开发的各种角色及其主要任务
用户-> 提出需求、验收软件、使用软件、提出修改要求程序员-> 编程、写文档、调试自己的程序、向项目负责人提交工作成果项目负责人-> 分析用户需求形成设计方案、向程序员分配任务、验收程序员的工作成果、对整个软件联调、向用户交付使用、接收与分析用户的修改要求、向程序员分配修改任务、验收修改成果、向用户提交新的版本或修改的结果硬件-> 运行、试运行
三、软件开发方法的发展
1、结构化程序设计
适用范围
主要是为程序员服务的
基本思想
程序结构分解成三种基本模块: 处理单元、循环机制、二分决策机制保证模块的划分符合“结构良好”的要求: (1) 模块的功能在逻辑上尽可能的单一化、明确 (2)模块间的耦合度低 (3)模块的规模应当足够小,以便其易于调试
模块划分的方法
自顶向下逐步分解,直到最底层的模块达到要求为止
实施的原则
(1)限制甚至不用GOTO语句,绝对禁止超越模块边界的GOTO语句。(2)子程序尽可能做到只有一个入口、一个出口;(3)程序风格应尽量明确、清晰,包括适当增加注释,书写格式体现层次结构,变量名要见名知意等;(4)在程序编写的同时完成有关的文档编撰,不要拖延时间
优缺点
缺点:增大了程序的工作量,增加了编程中的麻烦与琐碎的工作,降低了程序的运行效率。优点:保证软件的可靠性、准确性、易于修改
2 、软件工程的方法
借鉴传统工程的思想,从软件开发的经验中归纳出相应的工作步骤和交流标准,大家都来遵守和执行,从而保证软件开发的进度与质量
实施方法
首先,对软件开发的工作过程进行规范。如IBM的AD/Cycle把软件开发过程划分成五个阶段:第一阶段,需求分析。第二阶段,分析与设计。第三阶段,编程阶段。第四阶段,测试阶段。 第五阶段,使用及维护。
标准化方面
1)表达方式的标准化,如统一规格的数据流程图、数据字典、模块结构图等。2)对工作的质量及检查制定标准,在一定的时候作一定的检查。如著名的ISO9001标准
3、面向对象的程序设计方法
封装性
客观世界的任何事物都是对象,它们都有一些静态属性(相应于数据结构)和相关的操作(相应于程序模块)作为一个整体,这些对象不必对外公开这些属性与操作(封装性)
对象之间有抽象与具体、群体与个体、整体与部分等几种关系。这些关系构成对象概念之间的网络结构
遗传性
抽象的、较大的对象所具有的性质,包括静态属性和动态操作,自然地成为它的子类的性质,不必加以重复说明或规定。这就是“遗传性”
互送消息
对象之间可以互送消息,这一消息可以是传送一个参数,也可以是使这个对象开始某个操作
巨大影响
面向对象程序设计产生巨大影响的根本原因在于它提供的“认识框架”,摒弃了持续许久的“自顶向下”和“自底向上”的争论,把对于复杂系统的认识归结为对一批对象及其关系的认识,通过合理地选择认识的层次,使系统的复杂性保持在可控制的范围内
4、即插即用的程序设计方法
用制造硬件的思路来生产软件。一部分人专门生产软件组件,一部分人设计整个软件结构,并且把软件组件插入这个结构,以便迅速完成大型软件的研制工作
存在的困难
1)标准化的问题(2)软件部件的提供方式
5、面向开源软件的程序设计
利用开源软件进行程序设计
注意问题
(1)对应用领域充分了解是判断能否用开源软件的主要依据; (2)开源软件的质量,包括文档和代码的规范程度
四、软件开发过程的管理
1、什么样的软件才是好的
(1)正确地实现所要求的功能,准确地给出预定的输出结果;(2)用户界面友好,符合实际用户的使用习惯和知识水平;(3)具有足够的速度(不是越快越好),能在符合用户要求的时间限度内,给出所要求的结果;(4)具有足够的可靠性,能够在各种干扰下保持正常工作;(5)程序易读,结构良好,文档齐全,从而保证系统易于修改
2、好程序员与好项目组
单个程序员主要的指标
1)具有程序设计所需要的基本知识与技能,如关于数理逻辑的知识与训练,关于各类数据结构的概念及处理方法等;2)对本项目所在的那个领域有较深入的了解,从而能够准确的理解用户的信息需求,正确地把握有关的信息流程与信息处理原则;3)对于软件开发的技术环境比较熟悉,包括硬件设备、软件环境和网络环境,特别是对于所用的语言,应当有足够的、实际运用的经验。
作为项目组的一员
1)保证严格在本模块内操作,绝不要使用可能干扰其它模块的命令或函数。2)严格按总体设计的要求和理解去传递参数值,绝不要随意修改其内容或含义。3)在对公用的文件或数据库进行存取时,必须完全地、准确地按统一规定的格式去操作, 绝不能擅自改变。4)在使用标识符时,应按照统一的原则尽量使用易于看出逻辑含义的名称。特别是涉及公用数据及参数的时候。5)严格按照统一的要求编写文档,在内容、格式、表达方式、符号使用上遵循项目组的统一规定。 6)尽量保持程序风格的一致。如注释行的安排,行首空格的使用等。
一个好的项目组
1)有严格的、成文的工作规范和文档标准,而且应当为全体成员所熟知,并切实得到遵守。 2)人员之间有严格的分工,除了程序员之外,必须有专门的秘书(负责文档的收集、审核及保管),必须有专门的测试人员(负责测试和验收有关的部分),特别是要有专职的、不陷入具体编程的项目负责人。3)每个项目都要事先制定详细的时间表,并且得到严格执行,每一项目完成之后都有完整的资料,并得到妥善保存,一但需要修改或更新版本时可以立即使用。
无论是建立一体化的软件开发工具,还是把单项功能的工具集成起来,总控部分和人机界面都处于中心位置
第3章 软件开发工具的理论基础
一、软件开发过程的信息需求
1、软件开发过程的信息流通情况
信息流通模型——描述了软件开发过程中,各种信息在各种人员(用户、分析人员、程序员、维护人员)与计算机之间的流通状况
信息流通模型的四类信息
第一类,有关环境、现状及需求的信息。第二类,有关软件的功能设计与物理设计的各种信息。第三类,软件成果本身,包括程序和文档。 第四类,用户对系统的各种变更要求,以及系统的各种变更记录(是跨越开发周期的信息)
2、软件开发过程中的信息管理工作
信息的存储
数据的转换与加工
① 手工形式和计算机形式之间的相互转换; ② 计算机内部不同形式数据的转换
人与人之间的信息交流(分析人员、程序员、用户和维护人员)
软件开发工具正是为前面提到的四类信息的合理存储、正确转化和顺畅流通提供帮助
3、软件开发工具用到的理论和方法
第一,认知科学中关于概念模式的概念与方法。第二,数据库技术的理论与方法。 第三,编译技术的有关方法。 第四,关于人机界面的理论与方法。 第五,管理科学中关于项目管理与版本管理的理论与方法。 第六,系统科学与系统工程中的有关理论与方法
二、概念模式
概念模式——指人们在认识事物过程中,对某一事物或某一系统形成的抽象的、一般化的概念框架。
意义
既反映了客观现实,同时又具有主观性
作用
(1)概念模式是人们认识客观世界的一种方法和工具。概念模式是人们在长期实践活动中逐渐形成的。人们认识事物的过程就是概念模式不断修正、不断完善的过程。概念模式总是在一定的理论、思想指导下形成的,同时不断的根据实际情况得到修正。
(2)概念模式是人们进行交流与表达的重要工具。人们在互相配合、互相协调、共同完成某项任务的时候,需要统一认识、协同行动,就必须用某种公用的方式进行表述,概念模式正起到了这种作用。
软件开发中常用的概念模式
三、信息库及其一致性
1、信息库的概念
信息库(Repository)又译为:中心库、总库、主库,原意就是数据库,但不同于Database或Data Warehouse是针对软件开发或信息系统开发中的大量信息管理工作提出来的。是软件开发全过程的信息管理总枢纽。它的特点是数据结构相当复杂,而且会不断变化,保持一致性的任务十分艰巨。
2、对信息库的研究
信息库的内容
(1) 软件的工作环境、功能需求、性能要求,有关的各种信息来源的状况、用户状况、硬件环境以及在该领域中的作用等外部信息。(2)需求分析阶段中收集的有关用户的各种信息。 (3)逻辑设计阶段的各种调查材料和由此生成的各种文档——调查记录、原始数据、报表及单证的样本、绘制的各种图、系统说明书。(4)设计阶段的各种资料——数据库与数据文件格式、数据字典、程序模块的要求、总体结构、各种接口及参数的传递方式、设计方案。(5)编程阶段的所有成果——程序代码、框图、变量说明、测试情况、验收报告、使用说明。(6)运行及使用情况的详细记录。(7)维护及修改的情况。(8)项目管理的有关信息,版本信息。
信息库应当具备的管理功能
一般数据库的基本功能:增、删、改操作
特殊功能:(1)把计算机内外的信息存储统一起来管理——规定复杂的内部结构以存放信息。(2)面对分析人员、程序员和维护人员等不同的对象,他们有各自的权限和使用目标——需要认真设计有关的界面以便使用
信息库如何保持一致性
(1)信息库中的内容一般不删除,老信息加上时间标志移入历史信息中,并与新信息保持着历史的、逻辑的联系,在需要时可以随时调出来。 (2)由多个程序模块组成的大型软件系统中,如何保证某个模块更新后与其它模块一起构成一个新的版本。(3)保证程序和使用手册之间的一致性。(4)对国际性的大软件公司来说,各种语言的资料之间的一致性同样需要认真地、细致的组织与安排。
四、人机界面及其管理
1、人机界面设计的基本原则
(1)用户界面的主要功能是通信。 (2)界面必须始终一致。 (3)界面必须使用户随时掌握任务的进展情况。(4)界面必须能提供帮助。 (5)宁可让程序多干,不可让用户多干。
AD/Cycle应用系统框架SAA中,人机交互的手段
键盘操作、屏幕滚动、菜单选择、帮助系统、鼠标操作、色彩应用、数据录入、信息显示
五、项目管理与版本管理
1、项目管理
概念:指与固定的生产线上的日常生产活动不同的、具有更大变动性、时间性的一类管理任务
一般项目管理的特点
(1)子任务多,关系复杂。(2)任务不可重复,形势不断变更。(3)组织协调的任务十分突出,资源浪费闲置的风险与合理地优化组合、提高效益的机会并存。 (4)信息处理工作的作用与意义更为突出
项目管理的基本目标
(1)使产品(或工程)的质量得到有效的控制。 (2)保证整个系统按预定的进度完成。(3)有效的利用各种资源,尽可能使资源的闲置与浪费减少。(4)控制与降低成本。
方法
工程计划网络方法(计划评审技术),棒状图、检查点方法、排队论,水利工程的P3
2、版本管理
版本管理的核心(保持两个一致性)
从时间上说要保证系统的逐步完善,以前达到的结果不丢失,需要时可以回溯,必要时可以重用;每一步新的进步都要切实与以前的工作一致,是改进而不是破坏或者降低系统的已有功能
从系统各部分之间的关系上说要求局部与整体保持一致,合理地判断每一次修改的必要性及影响范围,合理地组成每一个新版本,并通过命名、编号等方法,使新的版本成为系统进步的漫长过程中的一个台阶,一个有目的、有方向的稳定的进步
版本管理的具体方法
规定长远的版本更新计划制定版本有关的信息范围及收集、管理方法在项目组内明确分工 在编程、测试、文档编写等工作中贯穿项目管理的思想及要求。
第4章 软件开发工具的技术要素
一、 基本功能与一般结构
基本功能
(1)提供描述软件状况及其开发过程的概念模式, 协助软件开发人员认识软件工作的环境与要求、合理地组织与管理软件开发的过程。(2)提供存储和管理有关信息的机制与手段。(3)帮助使用者编制、生成及修改各种文档。(4)帮助使用者编写程序代码,即代码生成。(5)对于历史信息进行跨生命周期的管理,把项目运行与版本更新的有关信息科学地管理起来
一般结构
(1)总控和人机界面——中心位置,使用者和工具间的桥梁,工具实用性和灵活性的保证。(2)信息库和信息库管理模块——工具功能与作用的最基本依据。(3)文档生成和代码生成——两个重要输出(4)项目管理和版本管理——跨周期信息共享、知识重用、软件重用的关键问题
二、 总控部分及人机界面
1、 总控部分和人机界面重要性
解决软件配置或集成问题的实质就是设立一个有效的总控部分,能够在各个具体工具之上实现信息的正确传递与转换,从而形成一个统一的、完整的支撑环境,并通过一个统一的、友好的人机界面与用户对话
2、总控部分及人机界面设计的原则
(1)面向使用者(用户)的原则(2)保证各部分之间信息的准确传递(3)保证系统的开放性或灵活性——理想的系统结构应当是模块式的,易于剪裁的。
3、IBM的AD/Cycle框架
AD/Cycle 提供了开发过程模型的典型例子:
1)描述了一般的应用软件的结构SAA——静态模型
2)提出了应用软件开发的各个阶段的模型AD/Cycle——动态模型
① 需求分析,建立逻辑模型(企业模型,数据模型,信息流通模型)。 ② 分析设计,完成系统的总体设计。 ③ 编码,具体编写软件的阶段。④ 测试,对已经完成的各个模块或子系统进行试算、调整,以最终形成完整的软件。⑤ 运行维护,组织和管理软件的日常运行,收集运行中的状态信息及出现的问题并及时进行局部修改与完善。
三、信息库及其管理
1、信息库的内容(4点)
(1)关于软件应用的领域与环境的状况。(2)设计成果,包括逻辑设计与物理设计的成果。(3)运行状况的记录。(4)有关项目管理与版本管理的信息。
2、信息库的组织方式
3、信息库的管理功能
与一般数据库管理系统相同的功能:录入更新、使用查询、一致性维护。与一般数据库不同的管理功能: (1)信息之间逻辑联系的识别与记录。(2)如何实现定量信息与文字信息的协调一致
4、历史信息的处理方法
信息库管理中历史信息的处理是一个重点和难点,主要存在两个困难:(1)历史信息的数据太大,占用存储设备过多;(2)历史信息格式不一致,难以有效利用。第一个问题的解决一般采用脱机备份的方法。第二个问题至今尚无令人满意的解决办法,加强标准化,稳定数据结构不能完全解决这个问题。需要用一些智能化方法,使得跨生命周期的信息得以相互转化、实现共享与重用
四、文档生成与代码生成
文档生成
文档生成的功能与代码生成相比,数量更大、内容更复杂,包括三大类:文章、表格、图形其中,最容易生成的是表格,其次是图形,最难处理的是文章
代码生成
代码生成器——根据设计要求,自动或半自动地生产相应的某种语言程序(某种高级语言代码和某种机器环境下可运行的机器指令)
生成代码依据三方面的资料(1)信息库里已有的有关资料(2)各种标准模块的框架和构件(3)使用者通过屏幕临时送入的信息
项目数据库
针对项目管理在信息处理上的困难,提出以项目数据库为中心解决问题的思路。项目数据库是信息库的一部分,记录项目本身进展的各种有关信息,如项目的预期进度、实际进展、验收情况等
项目管理的范围
(1)研究与确定开发工作的方针与方法。如采用什么样的阶段划分方法,什么样的系统描述方法等。(2)开发任务的划分与分工。整个开发任务如何逐层分解为具体任务,任务之间的相互关系(顺序、制约等),委托给什么人来做。(3)资源情况。有多少人力、物力、设备、软件、资金,是否得到充分利用,是否需要增加投入。 (4)人员情况。个人进度、技术水平如何,是否需要重新培训,是否需要调动工作。(5)变更情况。需求、环境、人员、设备、技术的变更。(6)质量情况。检验得标准是什么,如何检验,由谁来检验,用什么数据检验
版本管理的主要内容
各版本的编号,功能改变,模块组成,文档情况,推出时间,用户数量,用户反映,封存情况
第5章 软件开发工具的使用与开发
一、购置与开发的权衡
购置与开发的权衡,必须考虑以下四个因素:(1)准备开发的软件的性质与要求---权衡购置还是自行开发的最基本因素(2)开发人员对支持工作与支持程度的实际需要(3)工作环境(硬件配置、操作系统、数据库管理系统、网络通信等)(4)人员的因素
二、软件开发工具的选择与购置
1、明确目的与要求
在选择软件开发工具之前,首先要清楚此次引入工具要达到怎样的目标,下面几点必须明确:(1)为哪个软件开发项目而使用工具,为了一个项目还是为了一批项目而购置软件开发工具,为哪一种类型的项目而购置这些工具?(2)在哪个工作阶段使用工具,是单在代码生成或文档生成中使用工具,还是准备长期开发、不断更新版本?(3)工具将供哪些人使用,这些人以前用过工具没有,他们熟悉的语言、开发环境、表达图示、交流方式是什么?这些人对于使用工具的态度、期望、可塑性如何?(4)工具将在怎样的软件、硬件环境下运行,机器的速度、内存、外围设备、通信条件如何?
2、调查市场
(1)工具的功能。 (2)工具的性能。 (3)工具所使用或依据的开发方法或开发理论与自己的方法、理论是否一致。(4)工具的运行环境。(5)这些工具的文档资料是否齐全?使用时的学习、掌握是否简单易行?(6)这些工具的服务、培训条件如何? (7)价格。
3、软件开发工具的购置方法与步骤
(1)明确购买工具的目的与要求--正确使用工具的基础工作。(2)明确购买工具的环境条件与制约条件。(3)市场调查。 (4)对可供选择的各种工具进行综合比较。 (5)进行测试和检验。 (6)正式签约购置。包含了技术洽谈和各种服务条件的确认。(7)安装与试用。
三、软件开发工具的使用
1、组织管理工作
(1)制定严格的使用制度。(2)记录使用的详细过程。(3)培训使用人员。(4)经常进行审计与评价工作。
2、审计
对一个系统的运行状况及效率进行检测与评价,以便进一步用好这个系统
3、审计的范围
包括工具的使用环境、人员、工作负担、效果、存在的问题、改进的方向等
四、软件开发工具的开发
区分是为自己开发还是作为商品开发,至少在一个时期内二者必居其一
为自己使用而开发
(1)需要从实际出发,设定现实的、有限的目标。 (2)自行开发工具一定要坚持短小实用、逐步积累,避免期望过高、贪大求全。(3)要注意文档的齐全与资料的积累。
商品化
开发面向实际应用领域的、商品化的软件工具,其难度要比为自己开发工具的难度大得多。(1)必须十分谨慎地设定目标和要求,使之符合实际。(2)在前人工作的基础上,把精力集中于进一步的开拓方面,而不是低水平的重复别人已经做过的工作。(3)明确工具的适用范围与使用条件。工具的目标越具体、越明确越能发挥作用。(4)注重服务与文档---决定其成败的首要因素。
第6章 软件开发工具的现状与发展
一、软件开发工具的现状
1、国外发展状况
1)专项工具的出现
(如:管理数据字典的CDD、Dictionary/3000;画流程图的Flow;依赖各种机器的代码生成器和第四代语言)
2)一体化工具的出现
标志:IBM的AD/Cycle框架
用于特定平台的、主要用于设计阶段的工具——这种软件多依赖于软件平台,如某种数据库管理系统
侧重于分析方法的、独立于平台的工具
基于互联网和开源软件的工具
2、国内发展状况
国内软件开发工具的代表
专项工具如:清华大学Auto-DBaseⅢ和许多报表生成器、自动屏幕设计工具、自动菜单设计工具
一体化工具如:北大青鸟项目、Quick MIS
二、软件开发工具的发展方向与趋势
1、软件开发工具的发展方向
智能化
在软件开发工具的研究与使用中引用人工智能、神经网络等技术,使得软件开发工具对于不确定信息、模糊信息具有更强的处理能力如:Knowledge Ware公司开发的以知识处理为基础的工具
网络化
网络使人们更便于掌握项目的进展状况、质量状况等。利用网络提供条件提高工作效率的软件开发工具,以及在网络上开发应用软件的工具是当前发展的热点。如:专门用于网络环境的HTML、Java
一体化
只有对软件开发中涉及的各种信息以及开发过程中它们的发生、变化、关系、一致性等有了深刻的理解,才能真正实现软件开发工具的一体化。信息库的内容和处理功能的讨论,从理论上为实现一体化提供了基础
标准化
由软件部件、组合软件的想法引起的。为了解决大型软件开发的困难,需要把软件开发工作分成两部分:软件构件(如硬件的芯片)的开发,用这些构件组成大型软件(如用芯片组成主机)。做到这一点,软件构件必须实现标准化,用构件组成的大型软件的结构也必须符合一定的标准。围绕这一思想提出的一些标准如:CORBA、COM101
2、软件开发工具的发展轨迹
横轴是时间轴,跨越40年,三个时代——结构化时代、面向对象时代、互联网时代(P93图6-1)
纵轴表示抽象程度,随着软件技术的发展和应用领域的扩大,软件开发工具的抽象程度也在不断提高
谱系的一端是从某些计算机语言,通过增添各种辅助功能发展出来的工具
另一端是从较为抽象的概念模式或过程模式出发设计的开发平台或开发环境
3、从计算机语言发展而来的工具
较早的软件开发工具(谱系左端)基本是基于某种计算机语言,通过增添各种辅助功能发展出来的可以理解为计算机语言在开发方向上的一个延伸。典型代表:VB 、VC、 PB、C++ Builder/Delphi、JAVA
4、综合性的平台或开发环境
在大中型项目中,由于项目复杂,开发周期长,交互性高,大多数开发团队都倾向于使用集成开发环境(IDE) ,其中比较受欢迎的软件开发环境有Visual Studio(微软)和Eclipse
Visual Studio与微软公司其他产品的交互协同浑然一体,天衣无缝,并获得了更多Windows操作系统级的支持,速度上比Eclipse有较大的优势。如果基于操作系统是Windows,开发中又需要使用大量的微软公司的产品,那么可以优先考虑Visual Studio。
Eclipse是一款免费的、面向各平台开发者的软件开发环境,在各种操作系统上表现差异非常小。安装后的核心部分大小只有数十兆,开发者可以根据需求再添加同样免费的插件。Eclipse 具有“大平台,小核心,多插件”的特点,更富有灵活性,如果开发成果最终需要被部署在非Windows平台上而又希望开发环境最大程度模拟运行环境 ,使用Eclipse能够打消来自操作系统方面的忧虑
0 条评论
回复 删除
下一页