软件工程概论.doc
软件工程概论计算机类和鼠标类之间的关系

软件工程概论计算机类和鼠标类之间的关系(原创实用版)目录1.软件工程的定义和重要性2.计算机类和鼠标类的概念3.计算机类和鼠标类之间的关系4.这种关系的实际应用正文【1.软件工程的定义和重要性】软件工程是一门专注于设计、开发、维护和测试软件系统的学科。
它是计算机科学的一个重要分支,旨在通过使用一系列工具、方法和技术来确保软件系统能够按时完成、满足用户需求,并且具有高质量、可靠性和可维护性。
在现代社会,软件已经深入到我们生活的方方面面,因此软件工程对于确保软件系统的可靠性和安全性至关重要。
【2.计算机类和鼠标类的概念】计算机类和鼠标类都是面向对象编程中的类。
类是一种抽象的数据类型,用于描述具有相同属性和行为的一组对象。
计算机类是一个抽象的类,它描述了一台计算机的基本属性和行为,例如 CPU、内存、硬盘等。
而鼠标类是一个具体的类,它继承自计算机类,并且描述了一只鼠标的具体属性和行为,例如左右键、滚轮等。
【3.计算机类和鼠标类之间的关系】计算机类和鼠标类之间的关系是继承关系。
鼠标类从计算机类继承而来,因此它具有计算机类的所有属性和行为。
同时,鼠标类也可以根据自己的特点,添加一些特有的属性和行为。
这种继承关系使得鼠标类可以复用计算机类的代码,减少了代码的冗余,提高了代码的可读性和可维护性。
【4.这种关系的实际应用】在实际的软件开发中,这种继承关系被广泛应用。
例如,在一个图形用户界面(GUI)的程序中,我们可以定义一个基类(如计算机类),用于描述计算机的基本属性和行为。
然后,我们可以定义一系列具体的子类(如鼠标类、键盘类等),用于描述不同设备的具体属性和行为。
(完整word版)软件工程概论知识点汇总,推荐文档(20210623230231)

软件危机是指在计算机软件的开发和维护过程中遇到一系列严重问题。
软件丄程是指导计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来 开发与维护软件,把经过时间考验而 证明是正确的 管理技术 和当前能够得到的最好的 技术方法 结合起来,以经济地开发岀 高质量 的软件并有效地 维护 它,这就是软 件工程。
软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门 软件工程方法学包含 3个要素:方法、工具和过程目前使用最广泛的软件工程方法学,分别是 |传统方法学|和面向对象方法学|软件报废|为止的整个时期。
通常把在软件生命周期全过程中使用的一整套技术方法的集合称为 方法学|,也称为[范型软件定义分3个阶段,即问题定义|、可行性研究和需求分析|。
可行性研究的目的就是 用最小的代价在尽可能短的时间内确定问题是否能够解决。
可行性研究的主要内容包括|技术|可行性、|经济|可行性和操归可行性3个方面。
开发时期由4个阶段组成:总体设计卜|详细设计卜编码和单元测试|综合测试卜其中前两个阶段称为系统设计,后两个阶段称为系统 实现。
系统流程图|是概括地描绘物理系统的传统工具;而 |数据流图|是系统逻辑功能的图形表示工具。
模型,就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。
通常,模型由一组图形符号和组织这些符号的 规则组成。
分析建模的用处是为了更好地理解复杂事物。
软件需求分析的吋卡深入描述软件的功能和性能, 确定软件设计的约束和软件同其它系统元素的接口细节, 求。
可行性研究的任务完成的过程? 1、首先需要进一步分析和澄清问题定义。
2、 在澄清了问题定义之后,分析员应该导岀系统的逻辑模型3、 然后从系统逻辑模型岀发,探索若干种可供选择的主要解法4、 为每个可行的解法制定一个粗略的实现进度(进度表)怎样进行可行性研究呢?(可行性研究过程有哪些?)软件生命周期由 个时期组成。
软件工程概论

软件工程概论软件工程是一个涉及软件开发、维护和管理的学科,它强调系统化的方法和标准化的过程,旨在提高软件的质量和效率。
本文将介绍软件工程的基本概念、重要原则和发展趋势,以及软件工程师的职责和技能要求。
一、软件工程的概念与意义软件工程是一门应用科学,它研究如何以系统化、规范化和可重复的方式开发和维护软件。
与传统的工程学科一样,软件工程通过运用各种工程原则和方法,使软件开发生命周期中的每个阶段都能得到有效管理和控制。
软件工程的意义在于提高软件质量和效率,减少开发成本和时间投入,同时满足用户需求,并保证软件的可靠性和安全性。
二、软件工程的原则与方法1. 需求分析:软件工程过程的第一步是准确理解和规范用户需求。
通过与用户的交流和分析,软件工程师能够明确软件的功能和特性,为后续开发阶段提供有力的指导。
2. 设计与建模:设计是软件工程的核心环节,它包括系统架构设计、模块设计和数据库设计等。
通过合理的设计和建模,软件工程师能够确保软件的可扩展性、灵活性和可维护性。
3. 编码与测试:编码是将设计的结果转化为可执行的程序代码,测试则是验证程序的正确性和稳定性。
软件工程师应该遵循规范的编程实践和测试方法,确保代码的质量和可靠性。
4. 配置管理:配置管理是软件工程中的重要过程,它涉及到对软件配置项的标识、控制和变更管理等。
通过配置管理,软件工程师能够管理软件的版本、变更和发布,确保软件的可追溯性和一致性。
5. 迭代与持续改进:软件工程是一个不断迭代和改进的过程。
软件工程师应该通过持续的监控和评估,发现软件开发过程中存在的问题和改进的空间,并及时调整和优化。
三、软件工程的发展趋势1. 敏捷开发:敏捷开发是一种反传统的软件开发方法,强调团队合作、迭代开发和快速反馈。
相比传统的瀑布模型,敏捷开发更加注重灵活性和快速交付,适应了快速变化的市场需求。
2. 云计算与大数据:随着云计算和大数据技术的发展,软件工程也面临着新的挑战和机遇。
软件工程概论课后习题答案

软件工程概论课后习题答案软件工程概论郑人杰等版第1章软件与软件工程的概念1.1 举出你所知道的应用软件的例子。
办公软件、嬉戏软件、财务软件、银行软件、人事管理软件、工资管理软件、学籍管理软件等。
1.2 认为“软件就是程序,软件开发就是编程序。
”这种观点是否正确?为什么?认为“软件就是程序,软件开发就是编程序。
”这种观点是错误的。
首先,软件是计算机系统中与硬件互相依存的另一部分,它是包括程序,数据及其相关文档的完整集合,程序只是软件的组成部分之一;第二,在软件开发中,编程只是软件开发过程的一个阶段。
1.3 假如将软件开发比作高楼大厦的建筑,可以将软件的设计比作什么?可以将软件的设计比作建造设计,软件设计的成绩相当于建造设计的设计图纸。
1.4 什么是软件危机?它有哪些典型表现?为什么会浮现软件危机?软件危机:软件危机是指在计算机软件的开发和维护过程中所碰到的一系列严峻问题。
典型表现:(1)对软件开发成本和进度的估量经常很不精确。
(2)用户对“已完成的”软件系统不惬意的现象常常发生。
(3)软件产品的质量往往靠不住。
(4)软件经常是不行维护的。
(5)软件通常没有适当的文档资料。
(6)软件成本在计算机系统总成本中所占的比例逐年升高。
(7)软件开发生产率提高的速度,既跟不上硬件的进展速度,也远远跟不上计算机应用快速普及深化的趋势。
产生软件危机的缘由:除了软件本身的特点,其缘由主要有以下几个方面:(1) 缺乏软件开发的阅历和有关软件开发数据的堆积,使得开发工作方案很难制定。
(2) 软件人员与用户的沟通存在障碍,使得猎取的需求不充分或存在错误。
(3) 软件开发过程不规范。
如,没有真正了解用户的需求就开头编程序。
(4) 随着软件规模的增大,其复杂性往往会呈指数级上升。
需要无数人分工配合,不仅涉及技术问题,更重要的是必需有科学严格的管理。
(5) 缺少有效的软件评测手段,提交给用户的软件的质量不能彻低保证。
1.5 什么是软件工程?软件工程是指导计算机软件开发和维护的工程学科。
软件工程概论,复合条件

软件工程概论,复合条件
复合条件是指由多个条件共同组成的判断条件。
在软件工程中,复合条件常常用于控制程序的流程和逻辑。
复合条件通常使用逻辑运算符(如与、或、非)来连接多个条件,以确定程序中不同的执行路径。
常见的复合条件控制结构有以下几种:
1. "与"(and)操作符:在复合条件中,使用"与"操作符时,只有当所有条件都为真时,整个条件表达式才会被认为为真。
例如,if语句中的判断条件可以使用"与"操作符连接多个条件,只有当所有条件都满足时,才会执行相应的代码块。
2. "或"(or)操作符:在复合条件中,使用"或"操作符时,只要有一个条件为真,整个条件表达式就会被认为为真。
例如,switch语句中的多个判断条件可以使用"或"操作符连接,只要有一个条件满足,就会执行相应的代码块。
3. "非"(not)操作符:在复合条件中,使用"非"操作符可以对条件进行取反操作。
例如,在if语句中使用"非"操作符可以判断某个条件不成立时执行相应的代码块。
复合条件的使用可以提高程序的可读性和灵活性,可以根据不同的条件组合来控制程序的执行。
但在使用复合条件时,需要注意条件的连接关系和运算符的顺序,以确保程序的逻辑正确性。
第一章软件工程概论

31
• 软件工程过程定义了:
– 方法使用的顺序 – 要求交付的文档资料 – 为保证质量和适应变化所需要的
管理 – 软件开发各个阶段完成的里程碑
2020/11/4
32
软件工程项目的基本目标
• 付出较低的开发成本
• 达到要求的软件功能
• 取得较好的软件性能
• 开发的软件易于移植
• 需要较低的维护费用
• 第二次则在此基础上获得较为满意的 软件产品
2020/11/4
25
螺旋模型
• 螺旋模型沿着螺线旋转,在四个象 限上分别表达四个方面的活动,即:
• 制定计划──确定软件目标,选定实 施方案,弄清项目开发的限制
• 风险分析──分析所选方案,考虑如 何识别和消除风险
• 实施工程──实施软件开发
• 客户评估──评价开发工作,提出修 正建议
• 软件的开发至今尚未完全摆脱手工 艺的开发方式
• 软件本身是复杂的
• 实际问题的复杂性
• 程序逻辑结构的复杂性
• 软件成本相当昂贵
• 相当多的软件工作涉及到社会因素
2020/11/4
4
2020/11/4
5
软件的分类
• 按软件的功能进行划分:
– 系统软件 • 操作系统 • 数据库管理系统 • 设备驱动程序 • 通信处理程序等
2020/11/4
6
– 支撑软件 • 文本编辑程序 • 文件格式化程序 • 磁盘向磁带向数据传输的程序 • 程序库系统 • 支持需求分析、设计、实现、 测试和支持管理的软件
2020/11/4
7
– 应用软件
• 商业数据处理软件 • 工程与科学计算软件 • 计算机辅助设计/制造软件 • 系统仿真软件 • 智能产品嵌入软件 • 医疗、制药软件 • 事务管理、办公自动化软件 • 计算机辅助教学软件
软件工程概论_8_面向对象需求分析
• 一.面向对象分析模型的组成结构 • 二.面向对象分析模型描述工具 • 三.面向对象分析的基本过程
• 四. 面向对象分析方法
• 五. 小结
一.面向对象分析模型的组成结构
数据模型
属性、操作、协作者
功能模型
类/对象 模型
对象关系模型
使用实例
对象-行为模型
行为模型
二.面向对象分析模型描述工具
1. 用例图
2.面向对象建模 (1)建模与模型 建模是将问题域的解空间定义成一种模型,以帮助系统分析 人员更好地理解问题。 模型是为了理解问题而对问题所做出的一种抽象,而且是对 问题的一种无歧义的描述。模型由一组图示符号和组织这些 符号的规则组成。利用它们来定义和描述问题域中的术语和 概念。 建模的目的主要是为了减少复杂性。 (2)面向对象模型
2) 面向对象分析的五个层次 面向对象分析由五个主要活动组成,即确定类-&-对象、识别 结构、识别主题、定义属性和定义服务(方法)。对于一个复杂 问题的面向对象的模型可用五个层次表示:类-&-对象层、结 构层,主题层、属性层和服务层,见图3.3.8。
主题层 subject level 类-&-对象层object 结构层 structure 属性层 attribute 服务层 serves
•使用具有确切含义的名词。
• 尽量使用能表示类的含义的日常用语作名字,不要使用空洞的或含 义模糊的词作名字。例如,“库房”比“房屋”或“存物场所”更确切。
•必要时用名词短语作名字。
• 为使名字的含义更准确,必要时用形容词加名词或其他形式的名词 短语作名字。例如,“最小的领土单元”、“储藏室”、“公司员工”等 都是比较恰当的名字。
签定保险单 销售统计
客户
软件工程概论
软件工程概论软件工程概论随着信息技术的不断发展,软件在我们的生活中扮演着越来越重要的角色。
同时,软件行业也成为了当今世界最具活力的产业之一,具有无限的发展前景。
为了能够更好的利用信息技术及其应用,软件工程应运而生。
软件工程是一门关于软件开发及其维护的学科,旨在建立一组标准化的方法,规范软件的生产过程,以确保软件的质量、可靠性、有效性和安全性。
本文将介绍软件工程的概念、软件生命周期、流程模型、软件开发方法以及软件工程中的人员角色。
一、软件工程的概念软件工程是一种系统化、规范化、可量化的软件开发方法。
它是应用工程的思想、方法、技术和经验,以满足用户需求为核心,从软件的开发到维护全过程的管理学科。
软件工程的主要任务是:掌握软件开发中必要的知识、方法和技能,理解软件开发中的困难和问题并寻求合理的解决方案。
软件工程要求软件开发人员从纯技术的视角上,向管理、计划和控制等方面发展,以满足软件市场日益增长的需求。
二、软件生命周期软件生命周期指软件开发从提出需求到废止使用的整个过程。
它包括五个基本阶段:计划阶段、需求分析阶段、设计阶段、编码阶段和测试阶段。
其中,计划阶段包括项目开始前的准备活动,需求分析阶段主要是明确用户对软件的需求,设计阶段则是将需求转化为软件模型,编码阶段是根据设计方案编写程序代码,测试阶段则是对软件进行系统测试以确保质量。
三、流程模型为了更好的管理和控制软件开发过程,人们提出了软件开发流程模型。
软件开发的游程模型是指软件建设过程中不断实施的各个阶段和活动的组合,基本上可以分为瀑布模型、原型模型、迭代模型、螺旋模型、敏捷模型等。
(1)瀑布模型瀑布模型是一种经典的、线性的软件开发流程模型。
它是按照顺序完成各个阶段的,即只有当上一个阶段完成后才能进入下一个阶段。
这种模型的优点是开发流程清晰明确,整个过程非常可控,但是也有缺点,即在后期发现问题,需要回到前一个阶段进行修改,费用和时间成本较高。
(2)原型模型原型模型的主要特点是在软件开发的初期,开发人员会根据用户的需求和建议,开发出一个草图性质的产品原型。
软件工程概论.doc
软件工程1、软件危机:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。
包含两方面的问题:(1)如何开发软件,以满足对软件日益增长的需求;(2)如何维护数量不断膨胀的已有软件。
2、软件危机的主要表现:(1)对软件开发成本和进度的估计经常很不准确;(2)用户对“已完成的”软件系统不满意的现象经常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的;(5)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比例逐年上升;(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
3、产生软件危机的原因(1)从软件特点上看,软件是逻辑部件,不是物理部件;(2)软件是很大的程序,复杂且有很多技术问题,但缺少严格而科学的管理;(3)软件的参与人员多且成分复杂(需求人员,开发人员,用户,维护人员等);(4)在软件实践过程中或多或少的采用的错误的(但当时无法知晓的)方法和技术(这是主要原因)4、消除软件危机的途径(1)首先应该对计算机软件有一个正确的认识;(2)更重要的是,必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目;(3)应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法;(4)应该开发和使用更好的软件工具总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。
5、软件工程:软件工程是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。
(1)1968年NATO会议:软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。
(2)1993IEEE定义:软件工程是①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。
软件工程(概论)生存期和开发模型-作业2
2.3 软件开发模型
4.模型的优点 开发阶段清晰,便于评审、审计、跟踪、管理和控制。
5.模型的缺点 传统的项目组织方法是按顺序完成每个工作流程,即瀑布式生命周期。瀑布
只能一个个台阶地往下流,不可能倒着往上流,这就是它致命的缺点。 瀑布式生命周期通常会导致在项目后期,出现“问题堆积”,更可怕的是,错
一阶段(活3)动用的户输使入用,环继境续很进稳行定下;一阶段的活动,否则返回上一阶段修改。 (4)用户除提出需求以外,很少参与开发工作。
2.模瀑型布的模特型点认为:项目经理或软件管理人员,只要控制好每级台阶的高度 (和1宽)度里,程在碑每或个基台线阶驱处动设,立或里者程说碑文或档基驱线动,;并组织好对基线的评审与审 (计2,)就过可程以逆控转制性好很项差目或的者开说发不成可本逆、转进,度因和为质根量据。上游的错误会在下游进行
误的传递会采取发散扩大的方式。
瀑布模型反馈环
CMM/CMMI采取阶段评审和不符合项(Noncompliance Items)的动态跟踪制度, 只有前一阶段不符合项全部改正,才允许开发人员进入后一阶段工作。
不符合项,就是在评审中发现的问题项,它不同于Bug。对于这些不符合项,软 件管理部门要列出表格,记录在案,确定责任人,限定改正时间,动态跟踪到底 。
可行性研究的结果是负责人作出是否继续进行这项工程的决定的重要依据。 可行性研究以后的各个阶段,将需要投入多少相应的人力物力。 及时终止不值得投资的工程项目,可以避免更大的浪费。
2.2 软件工程过程
3. 需求分析
这个阶段的任务仍然不是具体地解决问题,而是准确地确定“为了解决这个问题,目标系统必须做什么”,主要是确定目标系统必须 具备哪些功能。产生《需求规格说明书》。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程1、软件危机:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。
包含两方面的问题:(1)如何开发软件,以满足对软件日益增长的需求;(2)如何维护数量不断膨胀的已有软件。
2、软件危机的主要表现:(1)对软件开发成本和进度的估计经常很不准确;(2)用户对“已完成的”软件系统不满意的现象经常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的;(5)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比例逐年上升;(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
3、产生软件危机的原因(1)从软件特点上看,软件是逻辑部件,不是物理部件;(2)软件是很大的程序,复杂且有很多技术问题,但缺少严格而科学的管理;(3)软件的参与人员多且成分复杂(需求人员,开发人员,用户,维护人员等);(4)在软件实践过程中或多或少的采用的错误的(但当时无法知晓的)方法和技术(这是主要原因)4、消除软件危机的途径(1)首先应该对计算机软件有一个正确的认识;(2)更重要的是,必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目;(3)应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法;(4)应该开发和使用更好的软件工具总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。
5、软件工程:软件工程是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。
(1)1968年NATO会议:软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。
(2)1993IEEE定义:软件工程是①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。
6、软件工程的本质特征(1)软件工程关注于大型程序的构造;(2)软件工程的中心课题是控制复杂性;(3)软件经常变化;(4)开发软件的效率非常重要;(5)和谐地合作是开发软件的关键;(6)软件必须有效地支持它的用户;(7)在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。
7、软件工程的基本原理(1)用分阶段的生命周期计划严格管理(2)坚持进行阶段评审(3)实行严格的(阶段性)产品控制(4)采用现代程序设计技术(5)结果应能清楚地审查(6)开发小组的人员应该少而精8、软件生命周期:一个软件从定义、开发、使用和维护,直到最终被废弃,所历经的一个漫长的时期。
包括:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护。
(1)软件定义时期:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的相关策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并适当估计完成进度表。
(2)软件开发时期:总体设计;详细设计;编码和单元测试;综合测试。
(3)软件维护时期:主要任务是使软件更持久地满足用户需要。
具体地说,当软件在使用过程中发现错误时应该加以改正;当环境改变时应该修改软件以适应新的环境;当用户有新要求时应该及时改进软件以满足用户的新需要。
9、软件生命周期每个阶段的基本任务(1)问题定义:“要解决的问题是什么?”;(2)可行性研究:“对于上一个阶段所确定的问题有行得通的解决方案吗?”(3)需求分析:“为了解决这个问题,目标系统必须做什么。
”(4)总体设计:“概括地说,应该怎样实现目标系统?”(5)详细设计:“应该怎样具体地实现这个系统呢?”(6)编码和单元测试:关键任务是写出正确的容易理解、容易维护的程序模块。
(7)综合测试:关键任务是通过各种类型的测试(及相应的调试)使软件达到预定的要求。
(8)软件维护:通过各种必要的维护活动使系统持久地满足用户的需要。
10、什么是软件生命周期模型?有哪些主要模型?(1)生存周期模型:描述软件开发过程中各种活动如何执行的模型。
对软件开发提供强有力的支持,为开发过程中的活动提供统一的政策保证,为参与开发的人员提供帮助和指导,是软件生存周期模型化技术的基础,也是建立软件开发环境的核心。
(2)主要有:瀑布模型,增量模型,螺旋模型,喷泉模型,基于知识的模型,变换模型。
11、可行性研究的任务:用最小的代价在尽可能短的时间内确定问题是否能够解决。
技术可行性;经济可行性;操作可行性;法律、社会效益、道德、政治等诸多方面的因素。
12、可行性研究过程的步骤:(1)复查系统的规模和目标(2)研究目前正在使用的系统(3)导出新系统的高层逻辑模型(4)进一步定义问题(5)导出和评价供选择的解法(6)推荐行动方针(7)草拟开发计划(8)书写文档提交审查13、可行性分析报告的主要内容:项目背景;客户需求;商务前景;市场计划;技术方案;实施周期;财务分析;风险管理。
14、数据流图(DFD):以图形的方式描述数据在系统中流动和处理的过程。
只反映系统必须完成的逻辑功能,是一种功能模型。
15、画数据流图应注意的事项:(1)命名:不能使用缺乏具体含义的名字,加工名应能反映出处理的功能。
(2)画数据流而不是控制流,一般不画物质流。
(3)每个加工至少有一个输入数据流和一个输出数据流,反映出此加工数据的来源与加工的结果。
(4)编号:子图应编号子图上的所有加工也应编号,子图的编号应与父图的编号相对应。
(5)父图与子图的平衡:子图的输入输出数据流同父图相应加工的输入输出数据流必须一致。
(6)局部数据存储。
(7)注意数据流图的易理解性。
16、数据字典:数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。
17、需求分析的任务(1)确定对系统的综合要求(2)分析系统的数据要求(3)导出系统的逻辑模型(4)修正系统开发计划18、软件设计的目标和任务:根据用信息域表示的软件需求,以及功能和性能需求,进行数据设计、系统结构设计、过程设计、界面设计。
19、什么是软件概要设计?该阶段的基本任务是什么?(1)把一个软件需求转换为软件表示时,首先设计出软件总的体系结构。
称为概要设计或结构设计。
(2)基本任务:①设计软件系统结构②进行数据结构及数据库的设计③编写概要设计的文档④评审。
20、总体设计(概要设计)原理:(1)模块化:把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集总起来组成一个整体,可以完成指定的功能,满足问题的功能。
(2)抽象:抽出事物的本质特性而暂时不考虑它们的细节。
(3)逐步求精(4)信息隐蔽和局部化(5)模块独立:每个模块完成一个相对独立的子功能,并且和其他模块之间的关系很简单。
21、模块独立程度的衡量标准:耦合和内聚(1)耦合:也称块间联系,模块之间相互联系程度的度量,联系越紧密,耦合性越强,独立性越差,以低耦合为设计目标。
内容耦合、公共耦合、控制耦合、标记耦合、数据耦合、无耦合。
(2)内聚:又称为块内联系,指模块内部各成分之间相互关联的程度,以高内聚为设计目标。
偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚。
22、概要设计的启发式准则:(1)改进软件结构,提高模块独立性(2)模块规模应该适中(3)深度、宽度、扇出和扇入都应适当(4)模块的作用域应该在控制域之内(5)力争降低模块借口的复杂程度(6)设计单入口单出口的模块(7)模块功能应该可以预测23、面向数据流的设计方法:把信息流映射成软件结构。
有两种类型:(1)交换流:根据基本系统模型,信息通常以“外部世界”的形式进入软件系统,经过处理以后再以“外部世界”的形式离开系统。
由输入、输出、变换(或称处理)三部分组成,是一顺序结构。
(2)事务流:数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行,这类数据流称为事务流。
处理T称为事务中心。
24、详细设计的基本任务:(1)为每个模块进行详细的算法设计(2)为模块内的数据结构进行设计(3)对数据库进行物理设计(4)其他设计(5)编写详细设计说明书(6)评审25、结构程序设计:(1)如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。
(2)结构化程序设计的基本要点:26、选择程序设计语言基本原则:(1)系统用户的要求(2)可以使用的编译语言(3)可以得到的软件工具(4)工程规模(5)程序员的知识(6)软件可移植性要求(7)软件的应用领域27、为了编制出清晰、紧凑、高效的程序,一般应依次考虑下列原则:(1)编制易于修改和维护的代码(2)编制易于测试的代码(3)必须将编程和编文档的工作统一起来(4)编程中采用统一的标准和约定,降低程序复杂性(5)限定每一层的副作用,减少耦合度(6)尽可能地复用28、软件测试的目标:(1)测试是为了发现程序中的错误而执行程序的过程(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案(3)成功的测试是发现了至今为止尚未发现的错误的测试29、软件测试的准则:(1)所有测试都应该能追溯到用户需求(2)应该远在测试开始之前就制定出测试计划(3)把Pareto原理应用到软件测试中(4)应该从“小规模”测试开始,并逐步进行“大规模”测试(5)穷举测试是不可能的(6)为了达到最佳的测试效果,应该由独立的第三方从事测试工作。
30、测试的步骤:(1)模块测试:保证每个模块作为一个单元能够正确运行,又称为单元测试(2)子系统测试:集成测试、组装测试、联合测试;重点在于测试模块之间的接口;(3)系统测试:将经过测试的子系统装配成一个完整的系统来测试;发现设计和编码的错误,验证系统是否满足需求说明所定义的功能及其动态特性;也称为集成测试。
(4)验收测试:有用户参加的系统测试;验证是否满足用户的需要(5)平行运行:同时运行新旧两个系统,并且对处理的结果进行比较,以确定新系统是否满足相关性能指标。
31、非渐增式和渐增式测试方法(1)非渐增式测试方法:先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序,这种方法称为非渐增式测试方法。
(2)渐增式测试方法:把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试。
这种每次增加一个模块的方法称为渐增式测试。
(3)非渐增式和渐增式测试方法的优缺点比较:①非渐增式方法要对每个模块编写驱动模块和桩模块,工作量较大;而渐增式方法可以利用部分已测试过的模块作为测试软件;②非渐增式方法发现模块间的接口错误较晚,而渐增式方法则要早一些;③非渐增式方法发现错误后较难定位;而渐增式方法则要容易一些;④非渐增式方法可以并行测试所有模块,可充分利用人力,加快工程进度;⑤渐增式方法接近全真运行环境,需要较多的测试运行时间,但对程序模块的测试较为彻底。