软件工程课后答案
- 格式:doc
- 大小:94.00 KB
- 文档页数:6
软件工程课后习题答案软件工程课后习题答案软件工程是一门关于设计、开发和维护软件系统的学科。
在学习软件工程的过程中,课后习题是非常重要的一部分。
通过解答习题,我们可以巩固所学的知识,加深对软件工程的理解。
下面是一些常见的软件工程习题及其答案,供大家参考。
习题一:什么是软件生命周期?它包括哪些阶段?答案:软件生命周期是指软件从开始开发到最终废弃的整个过程。
它包括以下几个阶段:1. 需求分析阶段:确定软件系统的需求,包括功能需求、性能需求、安全需求等。
2. 设计阶段:根据需求分析的结果,设计软件系统的结构和功能。
3. 编码阶段:根据设计阶段的结果,编写代码实现软件系统的功能。
4. 测试阶段:对编写的代码进行测试,确保软件系统的正确性和稳定性。
5. 部署阶段:将测试通过的软件系统部署到生产环境中,供用户使用。
6. 维护阶段:对已经部署的软件系统进行修复漏洞、更新功能等维护工作。
习题二:什么是软件需求?软件需求可以分为哪几类?答案:软件需求是指对软件系统功能和性能的描述。
软件需求可以分为以下几类:1. 功能需求:描述软件系统应该具备的功能,比如用户登录、数据查询等。
2. 性能需求:描述软件系统在运行过程中的性能要求,比如响应时间、并发处理能力等。
3. 安全需求:描述软件系统对数据和系统的安全保护要求,比如用户权限控制、数据加密等。
4. 可靠性需求:描述软件系统的可靠性要求,比如系统的可用性、容错性等。
习题三:什么是软件设计模式?列举几个常见的软件设计模式。
答案:软件设计模式是指在软件设计过程中经常出现的一些问题的解决方案。
常见的软件设计模式包括:1. 单例模式:确保一个类只有一个实例,并提供一个全局访问点。
2. 工厂模式:将对象的创建和使用分离,通过工厂类来创建对象。
3. 观察者模式:定义了一种一对多的依赖关系,当一个对象状态发生改变时,所有依赖它的对象都会收到通知并自动更新。
4. 适配器模式:将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能在一起工作的类可以一起工作。
1、可行性研究的目的是用最小的代价,在尽可能短的时间内,确定该项目是否能够开发。
2、程序设计时代的生产方式是个体手工,程序系统时代的生产方式是作坊式小团体,软件工程时代的生产方式是工程化。
3、喷泉模型是一种以需求分析为动力,以对象为驱动的模型。
4、需求分析阶段,分析人员要确定对问题的综合需求,其中最主要的是功能需求。
5、可行性研究需要从以下三个方面分析研究每种解决方法的可行性:技术可行性、经济可行性、社会可行性。
6、可行性研究的目的不是去开发一个软件项目,而是研究这个软件项目是否值得开发,其中的问题能否解决。
7、判定树较判定表直观易读,判定表进行逻辑验证较严格,能把所有的可能性全部都考虑到。
可将两种工具结合起来,先用判定表做底稿,在此基础上产生判定树。
8、软件工具的发展特点是软件工具有单一工具向多个工具集成化方向发展。
重视用户界面的设计,不断的采用新理论和新技术。
软件工具的商品化推动了软件产业的发展,而软件产业的发展,又增加了对软件工具的需求,促进了软件工具的商品化进程。
9、环境集成主要有数据集成、界面集成、控制集成、平台集成、过程集成。
10、可行性研究实质上是进行一项简化、压缩了的需求分析、设计过程。
11、结构化方法有结构化分析、结构化设计、结构化程序设计构成,它是一种面向数据流的开发方法。
12、投资回收期就是累计的经济效益等于最初的项目投资所需的时间。
13、详细描述处理过程常用三种描述工具:图形、表格和语言。
14、数据流图中,每个加工至少有一个输入流和一个输出流。
15、结构化设计以数据流为基础映射成软件结构。
16、当数据流图中某个加工的一组动作存在着多个条件复杂组合的判断时,使用判定表或判定树较好。
17、由于运用原型的目的和方式不同,在使用原型时也采取不同的策略,有抛弃策略和附加策略。
18、有两类维护技术:在开发阶段是用来减少错误、提高软件可维护性面向维护的技术,在维护阶段用来提高维护的效率和质量的维护支援技术。
软件工程课后题答案第一章软件工程引论1. 在下列选项中,(D )不是软件的特征。
A .系统性与复制性 B. 可靠性与一致性 C. 抽象性与智能型 D.有形性与可控性2. 软件是一种(B )产品。
A .有形 B. 逻辑 C. 物质 D. 消耗3. 软件工程是一种(A )分阶段实现的软件程序开发方法。
A. 自顶向下B. 自底向上C. 逐步求精D. 面向数据流4. 与计算机科学的理论研究不同,软件工程是一门(B )学科。
A .理论性 B. 工程性 C. 原理性 D. 心理性5. 软件工程与计算机科学性质不同,软件工程着重于(C )。
A .原理探讨 B. 理论研究 C. 建造软件系统 D. 原理性的理论6. 下列说法正确的是(B )A. 软件工程的概念于20世纪50年代提出B. 软件工程的概念于20世纪60年代提出C. 20世纪70年代出现了客户机/服务器技术D. 20世纪80年代软件工程学科达到成熟7. 软件工程方法学中的软件工程管理是其中的一个重要内容,它包括软件管理学和软件工程经济学,它要达到的目标是(D )A .管理开发人员,以开发良好的软件B .采用先进的软件开发工具,开发优秀的软件C .消除软件危机,达到软件生产的规模效益D .以基本的社会效益为基础,工程化生产软件第二章软件生命周期及开发模型1. 软件生命周期包括可行性分析和项目开发计划、需求分析、总体设计、详细分析、编码、(B )、维护等活动。
A .应用 B. 测试 C. 检测 D. 以上答案都不正确2. 软件生命周期模型有多中,下列项目中,(C )不是软件生命周期模型。
A .螺旋模型 B. 增量模型 C. 功能模型 D. 瀑布模型3. 软件生命周期中时间最长的阶段时(D )A .需求分析阶段 B. 总体设计阶段 C. 测试阶段 D. 维护阶段4. 瀑布模型是一种(D )A. 软件开发方法B.软件生存周期C.程序设计方法学D.软件生存周期模型5. 软件开发中常采用的结构化生命周期方法,由于其特征而一般称其为(A )A. 瀑布模型B.对象模型C.螺旋模型D.层次模型6. 在结构化的瀑布模型中,(D )阶段定义的标准将成为软件测试中系统测试阶段的目标A. 详细设计阶段B.总体设计阶段C.可行性研究阶段D.需求分析7. 增量模型是一种(B )的模型A. 整体开发B.非整体开发C.灵活性差D.较晚产生工作软件8. (C )是指模拟某种产品的原始模型A. 模型B.最初模型C.原型D.进化模型9. 建立原型的目的不同,实现原型的途径也有所不同,下列不正确的类型是(B )A. 用于验证软件需求的原型B.垂直原型C.用于验证设计方案的原型D.用于演化出目标系统的原型10. 原型化方法是一种(A )型的设计过程。
软件工程课后习题参考答案1.简述软件开发的本质。
答:软件开发的本质就是实现问题空间的概念和处理逻辑到解空间的概念和处理逻辑之间的映射。
P192.简述实施软件开发的基本途径。
答:实施软件开发的基本途径是系统建模。
所谓系统建模,是指运用所掌握的知识,通过抽象,给出该系统的一个结构——系统模型。
P193.简述何谓模型以及软件开发中所涉及的模型。
答:模型是一个抽象。
该抽象是在意图所确定的角度和抽象层次对物理系统的一个描述,描述其中的成分和成分之间所具有的特定语义的关系,还包括对该系统边界的描述。
软件开发中所涉及的模型可分为两大类,一类称为概念模型,描述了系统是什么;另一类统称为软件模型,描述了实现概念模型的软件解决方案。
4.简述软件开发所涉及的两大类技术。
答:软件开发所涉及的两大类技术为:一是求解软件的开发逻辑,二是求解软件的开发手段。
5、简述需求与需求规约的基本性质。
答:需求的基本性质:1)必要的,该需求是用户所要求的。
2)无歧义的,该需求只能用一种方式解释。
3)可测的,该需求是可进行测试的。
4)可跟踪的,该需求可从一个开发阶段跟踪到另一个阶段。
5)可测量的,该需求是可测量的。
需求规约的基本性质:1)重要性和稳定性程度:按需求的重要性和稳定性,对需求进行分级。
2)可修改的:在不过多地影响其他需求的前提下,可以容易地修改一个单一需求。
3)完整的:没有被遗漏的需求。
4)一致的:不存在互斥的需求。
6、简述软件需求的分类。
答:软件需求可以分为两大类:一类是功能需求,一类是非公能需求,而非公能需求可分为性能需求,外部接口需求、设计约束和质量属性需求。
P237、举例说明功能需求和非功能需求之间的基本关系。
答:非功能需求可作用于一个或多个功能需求,例如非功能需求可作用于一个或多个功能需求其中,非功能需求1作用于功能需求1和功能需求38、有哪几种常用的初始需求发现技术?答:有5种常用的需求发现技术:自悟、交谈、观察、小组会和提炼。
1、Chapter 11.1 What is Software Engineering? Software engineering is the application of engineering principles and techniques to the development, operation, and maintenance of software systems. It is a discipline that involves the application of scientific and mathematical principles to the design, development, and maintenance of software products. Software engineering focuses on the development of efficient, reliable, and maintainable software systems thatmeet the needs of their users.1.2 What is the Software Life Cycle? The software life cycle is the set of stages that a software product goes through from its conception to its retirement. It typically consists of the following stages: Requirements Analysis, Design, Implementation, Testing, Deployment, Maintenance, and Retirement. Requirements Analysis involves gathering information from stakeholders and users to determine the needs of the software. Design involves creating a plan for the software thatmeets the requirements identified during Requirements Analysis. Implementation involves coding the software according to the plan created during Design. Testing involves verifying that the software works as expected. Deployment involves making the software available to its users. Maintenance involves making changes to the software to fix any bugs or to add new features. Retirement involves removing the software from use and archiving any important data or documents associated with it.1.3 What is the Difference Between Software Engineering and Computer Science?Software engineering and computer science are related disciplines, but they are not the same. Software engineering focuses on the development of software products, while computer science focuses on the study of computers and computing. Software engineering involves the design, development, and maintenance of software systems, while computer science involves the study of algorithms, data structures, and programming languages. Softwareengineering focuses on the practical application of engineering principles and techniques to the development of software products, while computer science focuses on the theoretical aspects of computing.2、Chapter 22.1 What is the System Development Life Cycle?The system development life cycle (SDLC) is a process used by software engineers to develop software products. The SDLC consists of six stages: planning, analysis, design, implementation, testing, andmaintenance. During the planning stage, the software engineer collects information from stakeholders and users to determine the scope and requirements of the software product. During the analysis stage, the software engineer analyzes the gathered information to determine the user’s needs and the software’s requirements. During the design stage, the software engineer creates a plan for the software product. During the implementation stage, the software engineer codes the software according to the plan created during the design stage. During thetesting stage, the software engineer verifies that the software works as expected. During the maintenance stage, the software engineer makes changes to the software to fix any bugs or to add new features.2.2 What is the Waterfall Model?The waterfall model is a software development process that follows a linear approach. It is a sequential process where each stage must be completed before the next stage can begin. The stages of the waterfall model are: requirements analysis, design,implementation, testing, deployment, and maintenance. During the requirements analysis stage, the software engineer collects information from stakeholders and users to determine the scope and requirements of the software product. During the design stage, the software engineer creates a plan for the software product. During the implementation stage, the software engineer codes the software according to the plan created during the design stage. During the testing stage, the software engineer verifies that the software works as expected. During thedeployment stage, the software engineer makes the software available to its users. During the maintenance stage, the software engineer makes changes to the software to fix any bugs or to add new features.2.3 What is the Spiral Model?The spiral model is a software development process that follows a cyclical approach. It is an iterative process where each stage is repeated multiple times until the desired result is achieved. The stages of the spiral model are: requirements analysis, design,implementation, testing, deployment, and maintenance. During the requirements analysis stage, the software engineer collects information from stakeholders and users to determine the scope and requirements of the software product. During the design stage, the software engineer creates a plan for the software product. During the implementation stage, the software engineer codes the software according to the plan created during the design stage. During the testing stage, the software engineer verifies that the software works as expected. During the软件工程第四版齐治昌课后答案deployment stage, the software engineer makes the software available to its users. During the maintenance stage, the software engineer makes changes to the software to fix any bugs or to add new features. The spiral model allows the software engineer to quickly make changes and adjustments to the software product as needed.。
第一章1 简述软件的开展过程。
共经历了四个阶段;第一阶段:〔20世纪50年代初期到60年代初期的十余年〕计算机系统开发的初期。
第二阶段:〔20世纪60年代中期到70年代中期的十余年〕软件产品和“软件作坊〞的概念开场出现。
软件开发人员不再像早期阶段那样只因个人工作需要而开发,而是为了用户更好地使用计算机。
第三阶段:〔20世纪70年代中期到80年代末期〕分布式系统嵌入“智能〞;硬件价格下降,软件价格急剧上升,导致了软件危机的加剧。
第四阶段:〔20世纪80年代末期开场〕强大的桌面系统和计算机网络迅速开展。
2 简述软件的定义和特点。
定义:软件是计算机程序、规程以及运行计算机系统可能需要的相关文档和数据。
特点:(1)是一种逻辑实体,具有抽象性;(2)软件的生产不存在明显的制造过程;(3)在软件的运行和使用的过程中,不会存在像硬件那样的机械磨损及老化问题;(4)由于对计算机系统的依赖性,对软件的通用性造成了一定的影响;(5)软件的开发方式还没有完全脱离手工开发方式,还不能完全采用组装的方式进展软件开发;(6)作为提高工作效率的逻辑产品,本身具有复杂性;(7)本钱相当昂贵;(8)相当多的软件工作设计社会因素。
3 软件有哪些种类1. 按功能特征进展划分(1)系统软件。
(2)支撑软件。
(3)应用软件2. 按规模大小进展划分微型、小型、中型、大型、甚大型、、极大型4 什么是软件危机?答:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
5 什么是软件工程?有哪些本质特性?怎样用软件工程消除软件危机?答:是指导计算机软件开发和维护的一门工程学科。
特性略。
技术措施和管理措施消除软件危机。
6 软件工程的三要素;方法、工具和过程。
7. 结合自己的亲身经历,谈谈软件工具在软件开发过程中的作用。
使软件开发更加模式化,工程化,从而提高软件开发的效率和封装性。
8. CASE 的研究和CASE 产品的开发是近年来软件工程领域的特点之一。
第一章练习题一、填空题1、软件工程三要素是:方法、工具、过程。
2、软件开发方法是指软件开发过程中所应遵循的方法和步骤。
二、名词(术语)解释:1、可靠性---是指在给定的时间间隔内,程序成功运行的概率。
可靠性是衡量软件质量的一个重要目标。
2、可理解性---指系统具有清晰的结构,能直接反映问题的需求。
可理解性有助于控制软件系统的复杂性,并支持软件的维护、移植和重用。
三、问答题1、面向对象方法的优点是什么?答:(1)将现实世界问题向面向对象解空间直接映射,实现对现实世界的直接模拟。
(2)以数据为中心,而不是基于对功能的分解,使得软件结构相对稳定,软件的重用性、可靠性、可维护等特性都较好。
2、可视化开发方法的优点有哪些?答:(1)简化了图形用户界面的设计和编码工作,将开发的注意力主要集中在程序的执行逻辑和工作流程上。
(2)软件开发简单,易学、易上手。
(3)专业或非专业人员都能参与软件开发活动。
第二章练习题一、填空题:1、软件工程过程是:为获得软件产品,在软件工具支持下由软件人员完成的一系列软件工程活动。
2、一个软件从定义、开发、使用和维护,直到最终被废弃,所经历的生存过程经历的生存过程称为软件生存期或叫生命期。
3、软件生命周期的阶段划分为3个时期是:定义时期、开发时期、维护时期。
4、软件工程标准的5个层次是:国际标准、国家标准、行业标准、企业规范、项目规范。
二、简答题:1、瀑布模型的优点有哪些?答:1、强迫开发人员采用规范的技术方法;2、严格地规定了每个阶段必须提交的文档;3、每个阶段结束前必须正式进行严格的技术审查和管理复审。
2、瀑布模型的缺点是什么?答:1、在软件开发的初期阶段就要求做出正确、全面、完整的需求分析对许多应用软件来说是极其困难的。
2、在需求分析阶段,当需求确定后,无法及时验证需求是否正确、完整。
3、作为整体开发的瀑布模型,由于不支持产品的演化,缺乏灵活性,对开发过程中很难发现的错误,只有在最终产品运行时才能暴露出来,从而使软件产品难以维护。
《软件工程》作业及答案1-1 什么是软件危机?它有哪些典型表现?为什么会出现软件危机?答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
概括地说,软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
软件危机典型表现:对软件开发成本和进度的估计常常很不准确。
用户对“已完成的”软件系统不满意的现象经常发生。
软件产品的质量往往靠不住。
软件常常是不可维护的。
软件通常没有适当的文档资料。
软件成本在计算机系统总成本中所占的比例逐年上升。
软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
产生软件危机的原因:一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。
软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。
管理和控制软件开发过程相当困难。
软件是规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。
目前相当多的软件专业人员对软件开发和维护还有不省糊涂观念,在实践过程中或多或少地采用了错误的方法和技术,这是使软件问题发展成软件危机的主要原因。
1-2 假设你是一家软件公司的总工程师,当你把图1.1给手下的软件工程师们观看,告诉他们及早发现并改正错误的重要性时,有人不同意你的观点,认为要求在错误进入软件之前就清除它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”你怎么反驳他?1-3 什么是软件工程?它有哪些本质特性?怎样用软件工程消除软件危机?答:软件工程是指导计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。
软件工程本质特性:1、软件工程关注于大型程序的构造;2、软件工程的中心课题是控制复杂性;3、软件经常变化;4、开发软件的效率非常重要;5、和谐地合作是开发软件的关键;6、软件必须有效地支持它的用户;7、在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品。
软件工程课后习题参考答案软件工程课后习题参考答案1.简答题1.1 什么是软件工程?软件工程是一门研究和应用如何以系统化、规范化、可量化的方式开发和维护软件的学科,涉及到软件的设计、构建、测试、部署和维护等全生命周期的过程。
1.2 软件工程的目标是什么?软件工程的目标是提高软件开发过程的效率和质量,确保软件项目按时、按需求交付,并且能够满足用户的期望。
1.3 软件生命周期有哪些阶段?常见的软件生命周期包括需求分析、系统设计、详细设计、编码、测试、部署和维护等阶段。
1.4 什么是软件需求?软件需求是指对于软件系统所需满足的问题或需求的描述,包括功能需求、性能需求、接口需求等。
1.5 软件开发过程有哪些模型?常见的软件开发过程模型包括瀑布模型、迭代模型、螺旋模型、敏捷开发等。
2.客观题2.1 软件测试的目的是什么?a) 发现软件中的错误和缺陷b) 验证软件是否符合需求和规格c) 提高软件的可靠性和质量d) 以上皆是答案:d) 以上皆是2.2 瀑布模型的特点是什么?a) 瀑布模型是一种线性顺序的软件开发过程模型b) 各个开发阶段是相互独立的c) 开发过程按照需求分析、设计、编码、测试等顺序进行d) 以上皆是答案:d) 以上皆是2.3 敏捷开发的原则是什么?a) 个体和交互胜过流程和工具b) 可工作的软件胜过详尽的文档c) 客户合作胜过合同谈判d) 响应变化胜过遵循计划e) 以上皆是答案:e) 以上皆是3.计算题3.1 请计算以下代码的覆盖率:(假设代码行数为100行,已执行代码行数为80行)覆盖率 = 已执行代码行数 / 代码行数 100% = 80 / 100 100% = 80%3.2 请计算以下缺陷密度的值:(假设代码行数为1000行,代码中的缺陷数为10个)缺陷密度 = 缺陷数 / 代码行数 1000 = 10 / 1000 1000 = 103.3 请计算以下代码的复杂度:(假设代码中包含的判断语句有20个,循环语句有5个)复杂度 = 判断语句数 2 + 循环语句数 3 = 20 2 + 5 3 = 40 + 15 = 554.附件本文档涉及附件:无5.法律名词及注释本文涉及的法律名词及注释:无。
《软件工程》作业及答案1-1 什么是软件危机?它有哪些典型表现?为什么会出现软件危机?答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
概括地说,软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
软件危机典型表现:对软件开发成本和进度的估计常常很不准确。
用户对“已完成的”软件系统不满意的现象经常发生。
软件产品的质量往往靠不住。
软件常常是不可维护的。
软件通常没有适当的文档资料。
软件成本在计算机系统总成本中所占的比例逐年上升。
软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
产生软件危机的原因:一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。
软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。
管理和控制软件开发过程相当困难。
软件是规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。
目前相当多的软件专业人员对软件开发和维护还有不省糊涂观念,在实践过程中或多或少地采用了错误的方法和技术,这是使软件问题发展成软件危机的主要原因。
1-2 假设你是一家软件公司的总工程师,当你把图1.1给手下的软件工程师们观看,告诉他们及早发现并改正错误的重要性时,有人不同意你的观点,认为要求在错误进入软件之前就清除它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”你怎么反驳他?1-3 什么是软件工程?它有哪些本质特性?怎样用软件工程消除软件危机?答:软件工程是指导计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。
软件工程本质特性:1、软件工程关注于大型程序的构造;2、软件工程的中心课题是控制复杂性;3、软件经常变化;4、开发软件的效率非常重要;5、和谐地合作是开发软件的关键;6、软件必须有效地支持它的用户;7、在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品。
消除软件危机的途径:为了消除软件危机,首先应该对计算机软件有一个正确的认识。
必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。
应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法。
应该开发和使用更好的软件工具。
为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。
1-6 什么是软件过程?它与软件工程方法学有何关系?答:软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
软件工程方法学包含软件过程。
1-7 什么是软件生命周期模型?试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的适用范围。
答:生命周期模型简洁地描述软件过程,规定了把生命周期划分成哪些阶段及各个阶段执行顺序。
瀑布模型历史悠久、广为人知,它的优势在于它是规范的、文档驱动的方法;这种模型的问题是,最终开发出的软件产品可能并不是用户真正需要的。
快速原型模型正是为了克服瀑布模型的缺点而提出来的。
它通过快速构建起一个可在计算机上运行的原型系统,让用户试用原型并收集用户反馈意见的办法,获取用户的真实需求。
增量模型具有可在软件开发的早期阶段使投资获得明显回报和较易维护的优点,但是,要求软件具有开放的结构是使用这种模型时固有的困难。
风险驱动的螺旋模型适用于内部开发的大型软件项目,但是,只有在开发人员具有风险分析和排除风险的经验及专门知识时,使用这种模型才会获得成功。
快速原型模型:适合小型软件;螺旋模型:适合内部开发的大规模软件项目。
2-1 在软件开发的早期阶段为什么要进行可行性研究?应该从哪些方面研究目标系统的可行性?答:可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决。
至少应该从下述三方面研究每种解法的可行性:(1)技术可行性;(2)经济可行性;(3)操作可行性。
2-5 北京某高校可用的电话号码有以下几类:校内电话号码由4位数字组成,第1位数字不是0;校外电话又分为本市电话和外地电话两类,拨校外电话需先拨0,若是本市电话则再接着拨8位数字(第1位不是0),若是外地电话则拨3位区码再拨8位电话号码(第1位不是0)。
请用2.5.2小节讲述的定义数据的方法,定义上述的电话号码。
答:电话号码=[校内电话|本市电话|外地电话]非零数字字符=[1|2|3|4|5|6|7|8|9]校内电话=非零数字字符+3{数字}3本市电话=0+非零数字字符+7{数字}7外地电话=0+区码+非零数字字符+7{数字}73-1 为什么要进行需求分析?通常对软件系统有哪些需求?答:为了开发出真正满足用户需求的软件产品,首先必须知道用户的需求。
对软件需求的深入理解是软件开发工作获得成功的前提条件,不论我们把设计和编码工作做得如何出色,不能真正满足用户需求的程序只会令用户失望,给开发者带来烦恼。
确定对系统的综合要求:1、功能需求;2、性能需求;3、可靠性和可用性需求;4、出错处理需求;5、接口需求;6、约束;7、逆向需求;8、将来可以提出的要求,分析系统的数据要求。
3-2 怎样与用户有效地沟通以获取用户的真实需求?答:与用户沟通获取需求的方法:访谈;面向数据流自顶向下求精;简易的应用规格说明技术;快速建立软件原型3-3 银行计算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业务员键入系统,如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并印出存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。
请用数据流图描绘本系统的功能,并用实体-联系图描绘系统中的数据对象。
答:数据流图:答:在开发大型软件系统的过程中应该使用形式化说明技术。
应用形式化方法的准则:(1)应该选用适当的表示方法。
(2)应该形式化,但不要过分形式化。
(3)应该估算成本。
(4)应该有形式化方法顾问随时提供咨询。
(5)不应该放弃传统的开发方法。
(6)应该建立详尽的文档。
(7)不应该放弃质量标准。
(8)不应该盲目依赖形式化方法。
(9)应该测试、测试再测试。
(10)应该重用。
5-4 美国某大学共有200名教师,校方与教师工会刚刚签订一项协议。
按照协议,所有年工资超过$26 000(含$26 000)的教师工资将保持不变,年工资少于$26 000的教师将增加工资,所增加的工资数按下述方法计算:给每个由此教师所赡养的人(包括教师本人)每年补助$100,此外,教师有一年工龄每年再多补助$50,但是,增加后的年工资总额不能多于$26 000。
教师的工资档案储存在行政办公室的磁带上,档案中有目前的年工资、赡养的人数、雇用日期等信息。
需要写一个程序计算并印出每名教师的原有工资和调整后的新工资。
要求:(1) 画出此系统的数据流图;(2) 写出需求说明;(3) 设计上述的工资调整程序(要求用HIPO图描绘设计结果),设计时请分别采用下述两种算法,并比较这两种算法的优缺点:(a) 搜索工资档案数据,找出年工资少于$26 000的人,计算新工资,校核是否超过$26 000,储存新工资,印出新旧工资对照表;(b) 把工资档案数据按工资从最低到最高的次序排序,当工资数额超过$26 000时即停止排序,计算新工资,校核是否超过限额,储存新工资,印出结果。
答:1. 任务概述:对于年工资未超过$2600的教师涨工资:每赡养1人补助$100,每有一年工龄补助$50,涨工资上限为$2600; 2. 数据描述:数据库描述:工资表、VF3.功能需求:对于年工资未超过$2600的教师涨工资:每赡养1人补助$100,每有一年(3)(4)所画的流程图适合(a )种算法.6-8 画出下列伪码程序的流图,计算它的环形复杂度。
你觉得这个程序的逻辑有什么问题吗? C EXAMPLELOOP:DO WHILE Z>0A=B+1 IF A>10 THEN X=A ELSE Y=Z END IF IF Y<5THEN PRINT X,Y ELSE IF Y=2THEN GOTO LOOP ELSE C=3 END IF END IF G=H+R END DO IF F>0THEN PRINT C ELSE PRINT K ENDIF STOP答:环形复杂度:V (G )=E-N+2=17-13+2=6存在的逻辑问题:1)当Z>0时易形成死循环. 2) 条件 Y<5 包含条件 Y=26-9 把统计空格程序的Jackson 图(下图)改画为等价的程序流程图和盒图。
答:盒图(N-S 图)7-8 对一个包含10000条机器指令的程序进行一个月集成测试后,总共改正了15个错误,此时MTTF=10h;经过两个月测试后,总共改正了25个错误(第二个月改正了10个错误),MTTF=15h 。
要求:(1) 根据上述数据确定MTTF 与测试时间之间的函数关系,画出MTTF 与测试时间τ的关系曲线。
在画这条曲线时做了什么假设?(2) 为做到MTTF=100h ,必须进行多长时间的集成测试?当集成测试结束时总共改正了多少个错误,还有多少个错误潜伏在程序中? 答:(1) 所做假设:1)单位长度里的错误数近似为常数;2)失效率正比于软件中剩余的错误数,而平均无故障时间与剩余的错误数成反比. 3)发现的每一个错误都立即正确地改正了. (2)由Shooman 公式:MTTF=I T /(K*(E T -E C (T)))其中,I T =104,MTTF 1=10,n 1=15,MTTF 2=15,n 2=25。
得:MTTF 1=I T /(K*(E T -E C (T 1)))10=10000/(K*(E T -15)) MTTF 2=I T /(K*(E T -E C (T 2)))15=10000/(K*(E T -25))(1) 解得程序中固有的错误总数E T =45,此外K=100/3。
(2)设MTTF=100,有100=10000/((100/3)*(45-x))解得x=42。
所以,当集成测试结束时,改正了42个错误,还剩3个错误。
7-9 如对一个长度为100000条指令的程序进行集成测试期间记录下下面的数据: (a) 7月1日:集成测试开始,没有发现错误。