软件工程课后习题答案中文翻译版(第八版)

合集下载

软件工程课后习题答案

软件工程课后习题答案

软件工程课后习题答案第一章1.1举出至少5个例子来说明“意外效应法则”在计算机软件方面的应用。

答:典型的例子包括使用“数字汽车仪表板”的软件,赋予高科技,高品质的图像的软件;如广泛的消费类电子产品的软件;个人电脑,工业仪器仪表和机器的软件。

软件分化出的在电子商务方面的应用。

1.2举例说明软件对社会的影响(包括正面影响和负面影响)。

答:这是一个很好的课堂讨论问题(如果时间允许),而不是专注于老生常谈的(但很重要)隐私问题,生活质量等问题。

您可能想要讨论关于”技术恐惧“方面的问题,软件也许会使它恶化但也可能减少”技术恐惧“。

另一个有趣的方面是使用诺依曼的“风险”列在SEN中做重点讨论。

你也可以考虑基于软件的“现金”经济,新模式的互动娱乐,虚拟现实,电子商务等方面来思考软件对社会的影响。

1.3针对1.1节提出的5个问题,请给出你的答案,并与同学讨论。

答:软件需要如此长的开发时间:a)设施不上线b)开发工具并不如预期般运作c)客户提出的新要求,需要重新设计和返工d)产品依赖于政府的规定,被意外更改。

e)严格的要求,与现有系统的兼容性需要超过预期更多的测试,设计和实现。

f)多个操作系统下运行的任务需求比预期需要更长的时间。

g)软件项目风险管理比预期需要更多的时间。

h)依赖的技术仍处于开发阶段,从而延长日程安排。

开发成本高:a)比当时预期低得令人无法接受的质量,需要进行更多的测试,设计和实施工作。

b)制定了错误的软件功能需要重新设计和实施。

c)开发错误的用户界面,而导致重新设计和实施。

d)开发了不需要的额外的软件功能而延长了开发日程安排。

在将软件交付顾客使用之前,我们无法找到所有错误:a)产品依赖于政府监管,意外而改变。

b)产品技术标准草案,会意外更改。

c)有时会在项目后期添加新的开发人员。

d)因为团队内的冲突有时会导致沟通不畅,而产生糟糕的设计。

e)破坏高效调度产生的项目管理成果和无效的规划f)有时装备部件质量差,导致额外的测试,设计和集成工作和管理额外的客户关系。

软件工程课后习题答案

软件工程课后习题答案

第一章一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机?软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。

它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。

软件危机的典型表现:(1) 对软件开发成本和进度的估计常常很不准确。

常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。

而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。

这些都降低了开发商的信誉,引起用户不满。

(2) 用户对已完成的软件不满意的现象时有发生。

(3) 软件产品的质量往往是靠不住的。

(4) 软件常常是不可维护的。

(5) 软件通常没有适当的文档资料。

文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。

(6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。

(7) 开发生产率提高的速度远跟不上计算机应用普及的需求。

软件危机出现的原因:(1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。

(2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。

(3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。

二、假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他?答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。

软件工程课后习题答案(第八版)

软件工程课后习题答案(第八版)

软件工程课后习题:⏹What are the differences between generic software product development and custom software development?⏹Solution:The essential difference is that in generic software product development, the specification is owned by the product developer. For custom product development, the specification is owned by the customer. Of course, there may be differences in development processes but this is not necessarily the case.重要区别为:在通用软件的开发过程中,详细说明(规格说明书)由产品开发者来制定,在定制软件产品开发过程中,详细说明(规格说明书)由客户来制定。

⏹What are the four important attributes which all software products should have? Suggest four other attributes that may sometimes be significant.⏹Solution:For important attributes are maintainability可维护性,dependability 可靠性, performance(efficiency)有效性andusability可用性.Other attributes that may be significant could be reusability可复用性 (can it be reused in other applications),distributability 可分发性(can it be distributed over a networkof processors), portability可移植性 (can it operate onmultiple platforms) and inter-operability互用性 (can it workwith a wide range of other software systems).⏹What is the difference between a software process model and a software process? Suggest two ways in which a software process model might be helpful in identifying possible process improvements.⏹Solution:A software process is what actually goes on when software isdeveloped. A software process model is an abstraction andsimplification of a process. Process models can be used to helpunderstand real processes and to identify which aspects of theseprocesses could be supported by CASE tools. 软件过程就是指在软件开发过程中所做的一些事情。

软件工程第八版(英文)机械工业出版社 课后习题

软件工程第八版(英文)机械工业出版社  课后习题

Part 1 OverviewChapter 1 Introduction1.1 FAQs about software engineering1.2 Professional and ethical responsibility Chapter 2 Socio-technical systems2.1 Emergent system properties2.2 Systems engineering2.3 Organisations, people and computer systems 2.4 legacy systemsChapter 3 Critical systems3.1 A simple safety-critical system 463.2 System dependability 473.3 Availability and reliability 513.4 Safety 553.5 Security 58Chapter 4 Software processes4.1 Software process models 654.2 Process iteration 714.3 Process activities 744.4 The Rational Unified Process 824.5 Computer-Aided Software Engineering 85 Chapter 5 Project management 925.1 Management activities 945.2 Project planning 965.3 Project scheduling 995.4 Risk management 104 RequirementsChapter 6 Software requirements 6.1 Functional and non-functional requirements6.2 User requirements6.3 System requirements6.4 Interface specification6.5 The software requirements document Chapter 7 Requirements engineering processes7.1 Feasibility studies7.2 Requirements elicitation and analysis7.3 Requirements validation7.4 Requirements managementChapter 8 System models 8.1 Context models8.2 Behavioural models8.3 Data models8.4 Object models8.5 Structured methodsChapter 9 Critical systems specification9.1 Risk-driven specification9.2 Safety specification9.3 Security specification9.4 Software reliability specificationChapter 10 Formal specification 10.1 Formal specification in the software process 10.2 Sub-system interface specification10.3 Behavioural specificationPart 3 DesignChapter 11 Architectural design 11.1 Architectural design decisions11.2 System organisation11.3 Modular decomposition styles11.4 Control styles11.5 Reference architecturesChapter 12 Distributed systems architectures12.1 Multiprocessor architectures12.2 Client-server architectures12.3 Distributed object architectures12.4 Inter-organisational distributed computing Chapter 13 Application architectures13.1 Data processing systems13.2 Transaction processing systems13.3 Event processing systems13.4 Language processing systems Chapter 14 Object-oriented design14.1 Objects and object classes14.2 An object-oriented design process14.3 Design evolutionKey PointsFurther ReadingExercisesChapter 15 Real-time software design15.1 System design15.2 Real-time operating systems15.3 Monitoring and control systems15.4 Data acquisition systemsChapter 16 User interface design 36216.1 Design issues 36616.2 The UI design process 37616.3 User analysis 37816.4 User interface prototyping 38116.5 Interface evaluation 383Part 4 Development 389 Chapter 17 Rapid software development 39117.1 Agile methods 39617.2 Extreme programming 39817.3 Rapid application development 40517.4 Software prototyping 409Chapter 18 Software reuse 415 18.1 The reuse landscape 41818.2 Design patterns 42118.3 Generator-based reuse 42318.4 Application frameworks 42618.5 Application system reuse 428 Chapter 19 Component-based software engineering19.1 Components and component models 19.2 The CBSE process19.3 Component compositionChapter 20 Critical systems development20.1 Dependable processes20.2 Dependable programming20.3 Fault tolerance20.4 Fault-tolerant architecturesChapter 21 Software evolution 21.1 Program evolution dynamics21.2 Software maintenance21.3 Evolution processes21.4 Legacy system evolutionPart 5 Verification and ValidationChapter 22 Verification and validation22.1 Planning verification and validation 22.2 Software inspections22.3 Automated static analysis22.4 Verification and formal methods Chapter 23 Software testing23.1 System testing23.2 Component testing23.3 Tes1 case design23.4 Tes1 automationChapter 24 Critical systems validation24.1 Reliability validation24.2 Safety assurance24.3 Security assessment24.4 Safety and dependability case's ManagementChapter 25 Managing people25.1 Selecting staff25.2 Motivating people25.3 Managing groups25.4 The People Capability Maturity Model Chapter 26 Software cost estimation 61226.1 Software productivity 61426.2 Estimation techniques 62026.3 Algorithmic cost modelling 62326.4 Project duration and staffing 637 Chapter 27 Quality management 64127.1 Process and product quality 64427.2 Quality assurance and standards 645 27.3 Quality planning 65227.4 Quality control 65327.5 Software measurement and metrics 655 Chapter 28 Process improvement 66528.1 Process and product quality 66728.2 Process classification 66928.3 Process measurement 67228.4 Process analysis and modelling 67328.5· Process change 67828.6 The CMMI process improvement framework 680Chapter 29 Configuration management29.1 Configuration management plclnning 29.2 Change management29.3 Version and release management 29.4 System building29.5 CASE tools for configuration managementEmerging TechnologiesSecurity engineering30.1 Security concepts30.2 Security risk management 30.3 Design for security 30.4 System survivabilityService-oriented software e:ngineering31.1 Services as reusable components 31.2 Service engineering31.3 Software development with servicesAspect-oriented software development32.1 The separation of concerns 32.2 Aspects, join points and pointcuts 32.3 Software engineering with aspectsChapter 1 ' IntroductionChapter 2 Socio-technical systemsChapter 3 iii Critical systemsChapter 6 • Software requirementsChapter 7 Requirements engineering processesChapter 8 System modelsChapter 9 Critical systems specificationChapter 10 Formal specificationChapter 11 Architectural designChapter 12 Distributed systems architecturesChapter 13 Application architecturesChapter 14 Object-oriented designChapter 15 Real-time software designChapter 16 User interface designChapter 17 Rapid software developmentChapter 18 Software reuseChapter 19 Component-based software engineeringChapter 20 Critical systems developmentChapter 21 Software evolutionChapter 22 Verification and validationChapter 23 Software testingChapter 24 Critical systems validationChapter 25 Managing people。

软件工程课后习题答案

软件工程课后习题答案

软件⼯程课后习题答案习题答案习题⼀答案⼀、选择题1. 软件的主要特性是(A B C)。

A) ⽆形 B) ⾼成本C) 包括程序和⽂档D) 可独⽴构成计算机系统2. 软件⼯程三要素是(C D)。

A) 技术、⽅法和⼯具B) ⽅法、⼯具和过程C) ⽅法、对象和类D) 过程、模型、⽅法3. 包含风险分析的软件⼯程模型是(A)。

A) 螺旋模型 B) 瀑布模型C) 增量模型 D) 喷泉模型4. 软件⼯程的主要⽬标是(C)。

A) 软件需求B) 软件设计C) 风险分析D) 软件实现5. 下列属于⾯向对象开发⽅法的是(A B C D)。

A) Booch B) UML C) Coad D) OMT6. 软件危机的主要表现是(B D)。

A) 软件成本太⾼B) 软件产品的质量低劣C) 软件开发⼈员明显不⾜D) 软件⽣产率低下7. 软件开发⽅法的主要⼯作模型有(A B C)A) 螺旋模型B) 循环模型C) 瀑布模型D) 专家模型8. 软件⼯程的⽬标有(A B C)。

A) 易于维护B) 低的开发成本C) ⾼性能D) 短的开发期9. 软件⼯程学的⽬的和意义是( )。

A) 应⽤科学的⽅法和⼯程化的规范管理来指导软件开发B) 克服软件危机C) 作好软件开发的培训⼯作D) 以较低的成本开发出⾼质量的软件⼆、判断题1. 软件就是程序,编写软件就是编写程序。

(×)2. 瀑布模型的最⼤优点是将软件开发的各个阶段划分得⼗分清晰。

(×)3. 结构化⽅法的⼯作模型是使⽤螺旋模型进⾏开发。

(×)4. 结构化⽅法和JSP⽅法都不适合于⼤型软件的开发。

(√)5. 原型化开发⽅法包括⽣成原型和实现原型两个步骤。

(×)6. ⾯向对象的开发⽅法包括⾯向对象的分析、⾯向对象的设计和⾯向对象的程序设计。

( √)7. 软件危机的主要表现是软件的需求量迅速增加,软件价格上升。

(×)8. 软件⼯具的作⽤是为了延长软件产品的寿命。

软件工程课后习题答案

软件工程课后习题答案

第一章习题参考答案1﹑软件产品的特性是什么?答:软件产品特性:⑴是一种逻辑产品,与物质产品有很大的区别。

⑵软件产品的生产主要是研制,生产成本主要在开发和研制,开发研制完成后,通过复制就产生了大量软件产品。

⑶软件产品不会用坏,不存在磨损,消耗。

⑷生产主要是脑力劳动,还末完全摆脱手工开发方式,大部分产品是"定做"的⑸开发软件的费用不断增加,致使生产成本相当昂贵。

2﹑软件生产有几个阶段?各有何特征?答:⑴程序设计时代:这个阶段生产方式是个体劳动,使用的生产工具是机器语言,汇编语言。

⑵程序系统时代:这个阶段生产方式是小集团合作生产,使用的生产工具是高级语言,开发方法仍依靠个人技巧,但开始提出结构化方法。

⑶软件工程时代:这个阶段生产方式是工程化的生产,使用数据库﹑开发工具﹑开发环境﹑网络﹑分布式﹑面向对象技术来开发软件。

3﹑什么是软件危机?产生原因是什么?答:软件开发技术的进步未能满足发展的要求。

在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。

产生原因:⑴软件规模越来越大,结构越来越复杂。

⑵软件开发管理困难而复杂。

⑶软件包开发费用不断增加。

⑷软件开发技术落后。

⑸生产方式落后,仍采用手工方式。

⑹开发工具落后,生产率提高缓慢。

4﹑什么是软件工程?它目标和内容是什么?答:软件工程就是用科学的知识程和技术原理来定义,开发,维护软件的一门学科。

软件工程目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。

软件工程内容:研究内容包括开发技术和开发管理两个方面。

开发技术主要研究:软件开发方法,开发过程,开发工具和环境。

开发管理主要研究:软件管理学,软件经济学,软件心理学。

5﹑软件工程面临的问题是什么?答:软件工程需要解决的问题:软件的费用,可靠性,可维护性,软件生产率和软件的重用。

软件工程课后习题答案(第八版)

软件工程课后习题答案(第八版)

软件工程课后习题:⏹What are the differences between generic software product development and custom software development?⏹Solution:The essential difference is that in generic software product development, the specification is owned by the product developer. For custom product development, the specification is owned by the customer. Of course, there may be differences in development processes but this is not necessarily the case.重要区别为:在通用软件的开发过程中,详细说明(规格说明书)由产品开发者来制定,在定制软件产品开发过程中,详细说明(规格说明书)由客户来制定。

⏹What are the four important attributes which all software products should have? Suggest four other attributes that may sometimes be significant.⏹Solution:For important attributes are maintainability可维护性,dependability 可靠性, performance(efficiency)有效性andusability可用性.Other attributes that may be significant could be reusability可复用性 (can it be reused in other applications),distributability 可分发性(can it be distributed over a networkof processors), portability可移植性 (can it operate onmultiple platforms) and inter-operability互用性 (can it workwith a wide range of other software systems).⏹What is the difference between a software process model and a software process? Suggest two ways in which a software process model might be helpful in identifying possible process improvements.⏹Solution:A software process is what actually goes on when software isdeveloped. A software process model is an abstraction andsimplification of a process. Process models can be used to helpunderstand real processes and to identify which aspects of theseprocesses could be supported by CASE tools. 软件过程就是指在软件开发过程中所做的一些事情。

软件工程课后参考答案

软件工程课后参考答案

第一章课后参考答案1.什么是软件危机?它们有哪些典型表现?为什么会出现软件危机?“软件危机”是指计算机软件的“开发”和“维护”过程中所遇到的一系列“严重问题”。

这些问题决不仅仅是不能正常运行的软件才具有的,实际上,几乎“所有软件”都不同程度地存在这些问题。

“软件危机”包含两方面的问题:(1)如何开发软件,以满足对软件日益增长的需求;(2)如何维护数量不断膨胀的已有软件。

它们有以下表现:(1)对软件开发成本和进度的估计常常很不准确;(2)用户对“已完成的”软件系统不满意的现象经常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的;(5)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比例逐年上升;(7)软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。

出现软件危机的原因(1)开发人员与客户认识之间的矛盾(2)开发人员能力与开发目标之间的矛盾(3)预估与实际工作量之间的矛盾(4)客户认识的提高与软件维护之间的矛盾(5)遗产系统与实施软件之间的矛盾2.假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他?答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。

一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。

3.什么是软件工程?它有哪些本质特征?怎么用软件工程消除软件危机?软件工程是指导知道计算机软件开发和维护的一门工程学科。

软件工程课后习题答案(第八版)

软件工程课后习题答案(第八版)

软件工程课后习题:⏹What are the differences between generic software product development and custom software development?⏹Solution:The essential difference is that in generic software product development, the specification is owned by the product developer. For custom product development, the specification is owned by the customer. Of course, there may be differences in development processes but this is not necessarily the case.重要区别为:在通用软件的开发过程中,详细说明(规格说明书)由产品开发者来制定,在定制软件产品开发过程中,详细说明(规格说明书)由客户来制定。

⏹What are the four important attributes which all software products should have? Suggest four other attributes that may sometimes be significant.⏹Solution:For important attributes are maintainability可维护性,dependability 可靠性, performance(efficiency)有效性andusability可用性.Other attributes that may be significant could be reusability可复用性 (can it be reused in other applications),distributability 可分发性(can it be distributed over a networkof processors), portability可移植性 (can it operate onmultiple platforms) and inter-operability互用性 (can it workwith a wide range of other software systems).⏹What is the difference between a software process model and a software process? Suggest two ways in which a software process model might be helpful in identifying possible process improvements.⏹Solution:A software process is what actually goes on when software isdeveloped. A software process model is an abstraction andsimplification of a process. Process models can be used to helpunderstand real processes and to identify which aspects of theseprocesses could be supported by CASE tools. 软件过程就是指在软件开发过程中所做的一些事情。

软件工程课后题答案

软件工程课后题答案

软件工程课后题答案1. 简答题1.1 软件过程模型软件过程模型是一种描述软件开发过程中活动、任务和工作产品之间关系的抽象模型。

常见的软件过程模型包括瀑布模型、迭代模型、增量模型和敏捷开发模型等。

每种模型都有其适用的场景和特点。

1.2 软件需求软件需求是指用户对软件系统的功能、性能等方面的要求和约束。

需求分析是软件开发过程中非常重要的一步,它包括需求获取、需求分析、需求规格说明等活动。

需求分析的目标是理解用户需求,为软件开发提供指导。

1.3 需求规格说明需求规格说明是对软件需求进行详细描述和说明的文档。

它包括功能需求、性能需求、界面需求以及其他约束条件等。

需求规格说明的编写要求准确、清晰、可验证,并且要与用户和开发人员达成一致。

1.4 软件设计原则软件设计原则是指在软件设计过程中应该遵循的一些基本原则,以提高软件系统的可维护性、可扩展性和可重用性。

常见的软件设计原则包括单一职责原则、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则和迪米特法则等。

2.1 敏捷开发方法敏捷开发是一种迭代、逐步开发软件的方法。

它强调快速响应用户需求的变化,通过频繁发布可用的软件版本来获得反馈,并根据反馈进行调整。

敏捷开发方法更加灵活,适用于需求变化频繁的项目。

2.2 结构化程序设计结构化程序设计是一种通过模块化和流程控制来组织程序的方法。

它强调程序应该具有清晰的结构,模块之间的耦合度应该尽量低。

结构化程序设计可以提高程序的可读性和可维护性,减少错误引入的可能性。

2.3 UML建模UML是一种用于面向对象系统开发的建模语言。

它提供了一套丰富的图形符号和建模工具,用于描述系统的结构、行为和交互。

UML建模可以帮助开发人员清晰地表达设计意图,提高沟通效率,并且可以生成可执行代码。

2.4 软件测试技术软件测试是评估软件质量的过程,旨在发现软件中的缺陷和错误。

常见的软件测试技术包括黑盒测试和白盒测试。

黑盒测试关注软件功能是否符合需求,白盒测试则关注程序内部的逻辑结构和代码覆盖率。

《软件工程》课后习题答案

《软件工程》课后习题答案

1、可行性研究的目的是用最小的代价,在尽可能短的时间内,确定该项目是否能够开发。

2、程序设计时代的生产方式是个体手工,程序系统时代的生产方式是作坊式小团体,软件工程时代的生产方式是工程化。

3、喷泉模型是一种以需求分析为动力,以对象为驱动的模型。

4、需求分析阶段,分析人员要确定对问题的综合需求,其中最主要的是功能需求。

5、可行性研究需要从以下三个方面分析研究每种解决方法的可行性:技术可行性、经济可行性、社会可行性。

6、可行性研究的目的不是去开发一个软件项目,而是研究这个软件项目是否值得开发,其中的问题能否解决。

7、判定树较判定表直观易读,判定表进行逻辑验证较严格,能把所有的可能性全部都考虑到。

可将两种工具结合起来,先用判定表做底稿,在此基础上产生判定树。

8、软件工具的发展特点是软件工具有单一工具向多个工具集成化方向发展。

重视用户界面的设计,不断的采用新理论和新技术。

软件工具的商品化推动了软件产业的发展,而软件产业的发展,又增加了对软件工具的需求,促进了软件工具的商品化进程。

9、环境集成主要有数据集成、界面集成、控制集成、平台集成、过程集成。

10、可行性研究实质上是进行一项简化、压缩了的需求分析、设计过程。

11、结构化方法有结构化分析、结构化设计、结构化程序设计构成,它是一种面向数据流的开发方法。

12、投资回收期就是累计的经济效益等于最初的项目投资所需的时间。

13、详细描述处理过程常用三种描述工具:图形、表格和语言。

14、数据流图中,每个加工至少有一个输入流和一个输出流。

15、结构化设计以数据流为基础映射成软件结构。

16、当数据流图中某个加工的一组动作存在着多个条件复杂组合的判断时,使用判定表或判定树较好。

17、由于运用原型的目的和方式不同,在使用原型时也采取不同的策略,有抛弃策略和附加策略。

18、有两类维护技术:在开发阶段是用来减少错误、提高软件可维护性面向维护的技术,在维护阶段用来提高维护的效率和质量的维护支援技术。

软件工程课后习题答案

软件工程课后习题答案

软件工程课后习题答案一、项目规划和管理1. 项目规划和管理的重要性在软件工程中,项目规划和管理是确保项目成功的关键因素。

它涉及到确定项目的目标、范围和需求,制定项目计划和时间表,分配资源,通过有效的沟通和协作来管理团队,以满足项目的要求和客户的期望。

良好的项目规划和管理可以提高项目的成功率,避免项目变更和延迟,保证项目在预算和时间范围内完成。

2. 项目规划的步骤和内容项目规划是项目管理的第一步,它包括以下步骤和内容:(1)确定项目目标和范围:明确项目的目标和范围,包括项目的可交付成果、所需功能和业务需求。

(2)需求分析和定义:详细收集和分析项目的需求,明确项目的功能和非功能性要求。

(3)制定项目计划:制定项目的时间表和里程碑,安排项目的活动和任务,确定资源需求和预算。

(4)风险评估和管理:评估项目的风险和不确定性,制定相应的风险管理策略。

(5)团队组建和管理:确定项目的团队成员,指定责任和职责,建立有效的沟通和协作机制。

(6)制定项目管理计划和报告:制定项目管理的具体计划和报告,包括项目的进度、成本和质量控制。

3. 项目管理的工具和技术项目管理涉及到各种工具和技术的应用,以支持项目规划和管理。

其中一些常用的工具和技术包括:(1)甘特图:可视化展示项目的时间表和活动,帮助团队成员了解任务的分配和完成情况。

(2)里程碑图:标记项目关键节点和重要事件的图表,用于跟踪项目进展和提醒项目重要里程碑的达成。

(3)网络图:图示项目活动之间的依赖关系和先后顺序,帮助确定活动的优先级和关键路径。

(4)资源分配和调度:根据项目需求和资源可用性,合理分配和调度团队成员和其他资源。

(5)决策分析:采用定性和定量的方法,评估项目决策的风险和效益,以支持决策过程。

(6)变更管理:制定变更管理程序和流程,确保变更的合理性和对项目的影响进行评估和控制。

二、软件需求分析与设计1. 软件需求分析的目的和方法软件需求分析是在指导下进行的,对于定义用户需求、开发软件系统和确保软件质量都非常重要。

软件工程课本习题答案

软件工程课本习题答案
2.3形式化方法的特点是什么?
形式化方法的主要特点是:
(1)软件需求规格说明被细化为用数学记号表达的详细的形式化规格说明;
(2)设计、实现和单元测试等开辟过程由一个变换开辟过程代替。通过一系列变换将形式的规格说明细化成为程序。
2.5安装RationalRose2000/2002/2003,并练习基本操作。
缺点:RUP只是一个开辟过程,并没有涵盖软件过程的全部内容,例如它缺少关于软件运行和支持等方面的内容;此外,它没有支持多项目的开辟结构,这在一定程度上降低了在开辟组织内大范围实现重用的可能性。
合用范围:合用于基于构件的软件开辟。
2软件工程方法与工具
2.1软件工程的三种基本要素是什么,各自的作用是什么?
术问题,更重要的是必须有科学严格的管理。
(5)缺少有效的软件评测手段,提交给用户的软件的质量不能彻底保证。
1.5什么是软件工程?
第1章 作业参考答案
软件工程是指导计算机软件开辟和维护的工程学科。采用工程的概念、原理、技术和方法来开辟和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开辟出高质量的软件并有效地维护它,这就是软件工程。
产生软件危机的原因:除了软件本身的特点,其原因主要有以下几个方面:
(1)缺乏软件开辟的经验和有关软件开辟数据的积累,使得开辟工作计划很难制定。
(2)软件人员与用户的交流存在障碍,使得获取的需求不充分或者存在错误。
(3)软件开辟过程不规范。如,没有真正了解用户的需求就开始编程序。
(4)随着软件规模的增大,其复杂性往往会呈指数级升高。需要不少人分工协作,不仅涉及技
必须做什么”这个问题。
(3)软件设计:本阶段要回答的关键问题是“目标系统如何做?”为此,必须在设计阶段中制

软件工程课后习题答案中文翻译版(第八版)

软件工程课后习题答案中文翻译版(第八版)

软件⼯程课后习题答案中⽂翻译版(第⼋版)软件⼯程课后习题:1.解释为什么专业化软件不仅仅包括为⽤户所开发程序?专业化软件在开发上与在与软件就有所不同。

专业软件通常是由团队开发⽽⾮个⼈,除了开发者外还有其他的⽤户使⽤。

如果你的软件有别的⽤户,别的⼯程师会去修改的话,你就必须提供除了程序源码之外的其它附带信息。

因此,系统通常除了包含⼀些单独的程序还有⽤于这些程序的配置⽂件,可能还包括描述系统结构的系统⽂档和解释如何使⽤该系统的⽤户⽂档,以及告知⽤户下载最新产品的Web站点。

2.通⽤软件产品开发和定制软件开发直接有什么不同?这在实际应⽤中对通⽤软件产品⽤户意味着什么?(1)重要区别为:在通⽤软件的开发过程中,详细说明(规格说明书)由产品开发者来制定,在定制软件产品开发过程中,详细说明(规格说明书)由客户来制定开发者必须按客户要求进⾏开发。

(2)意味着通⽤软件很难满⾜通⽤软件客户的特殊需求。

如可靠性、安全性、快捷性。

3.软件产品应该具有与的4重要属性是那些?另外列举出4个可能有意义的属性。

重要属性:可维护性、可依赖性和安全性、有效性和可⽤性。

可能有意义的属性:可复⽤性、可分发性、可移植性和互⽤性。

4.除了异质性挑战、业务和社会的变⾰、安全和可信,说出软件⼯程在21世纪的可能⾯临的其它问题和挑战。

交付上的挑战:许多传统的软件⼯程技术需要耗费⼤量的时间,⽤于提⾼软件质量。

⽽今天的软件制作必须响应快、更换迅速,⽀持软件也必须同样快地进⾏更换。

交付上的挑战是:在不损及系统质量的前提下,缩短⼤型、复杂系统的移交时间。

5.参论的应⽤类型,照1.1.2节讨举例介绍为什么设计和开发不同类型的应⽤需要专门的软件技术。

如汽车上年的嵌⼊式控制系统对安全性要求极⾼,在车上安装是要烧制到ROM 中在这⾥的交互在这⾥是很少的(或许根本就没有)。

基于Web式系统更适合⽤于迭代式开发和交互。

⽽基于Web的系统编程使⽤的如Ruby⼀类的脚本语⾔,完全不适合嵌⼊式系统⼯程。

软件工程课后习题参考答案

软件工程课后习题参考答案

软件工程课后习题参考答案1.简述软件开发的本质答: 软件开发的本质就是实现问题空间的概念和处理逻辑到解空间的概念和处理逻辑之间的映射。

P192.简述实施软件开发的基本途径。

答: 实施软件开发的基本途径是系统建模。

所谓系统建模,是指运用所掌握的知识,通过抽象,给出该系统的一个结构——系统模型。

P193.简述何谓模型以及软件开发中所涉及的模型。

答: 模型是一个抽象。

该抽象是在意图所确定的角度和抽象层次对物理系统的一个描述,描述其中的成分和成分之间所具有的特定语义的关系,还包括对该系统边界的描述。

软件开发中所涉及的模型可分为两大类,一类称为概念模型,描述了系统是什么;另一类统称为软件模型,描述了实现概念模型的软件解决方案。

4.简述软件开发所涉及的两大类技术。

答: 软件开发所涉及的两大类技术为: 一是求解软件的开发逻辑,二是求解软件的开发手段。

5、简述需求与需求规约的基本性质。

答:需求的基本性质:1) 必要的,该需求是用户所要求的。

2) 无歧义的,该需求只能用一种方式解释。

3) 可测的,该需求是可进行测试的。

4) 可跟踪的,该需求可从一个开发阶段跟踪到另一个阶段。

5) 可测量的,该需求是可测量的。

需求规约的基本性质:1) 重要性和稳定性程度: 按需求的重要性和稳定性,对需求进行分级。

2) 可修改的: 在不过多地影响其他需求的前提下,可以容易地修改一个单一需求。

3)完整的:没有被遗漏的需求。

4)一致的:不存在互斥的需求。

6、简述软件需求的分类答:软件需求可以分为两大类:一类是功能需求,一类是非公能需求,而非公能需求可分为性能需求,外部接口需求、功能需求7、举例说明功能需求和非功能需求之间的基本关系。

答:非功能需求可作用于一个或多个功能需求,例如非功能需求可作用于一个或多个功能需求其中,非功能需求1作用于功能需求1和功能需求3等;非功能需求2作用于功能需求2等。

P248、有哪几种常用的初始需求发现技术?答:有5种常用的需求发现技术:自悟、交谈、观察、小组会和提炼。

软件工程课后习题答案

软件工程课后习题答案

软件工程课后习题答案习题1 略。

习题2 略。

习题3 略。

习题42.在什么情况下应该使用形式化说明技术?使用形式化说明技术时应遵守哪些准则?人们在理解用自然语言描述的规格说明时,容易产生二义性。

为了克服非形式化方法的缺点,人们把数学引入软件开发工程,创造了基于数学的形式化说明技术。

应用形式化方法的准则:(1)应该选用释放的表示方法;(2)应该形式化,但不要过分形式化;(3)应该估算成本;(4)应该有形式化方法顾问随时提供咨询;(5)不应该放弃传统的开发方法;(6)应该建立详尽的文档;(7)不应该放弃质量标准;(8)不应该盲目依赖形式化方法;(9)应该测试、测试再测试;(10)应该重用。

4.用有穷状态机说明自动化图书馆流通系统习题5 略。

习题6 略。

习题7 略。

习题8 略。

习题91.什么是面向对象方法学?它有哪些优点?面向对象方法学,是尽可能模拟人类习惯的思维方式,使开发软件的方法和过程尽可能接近人类认识世界解决问题的方法和过程,从而使得实现解法的解空间(也称为求解域)与描述问题的问题空间(也称为问题域)在结构上尽可能一致。

优点:1.与人类习惯的思维方法一致;2.稳定性好;3.可重用性好;4.较易开发大型软件产品;5.可维护性好10.建立订货系统的用例模型。

分析如下:从对这个订货系统的需求可以知道,仓库管理员通过放在仓库中的终端把零件入库/出库市事务报告给订货系统,系统接受到事务信息之后应该处理事务;采购员需要使用订货系统提供的产生报表功能,以获取订货报表。

综上所述,用例如下:习题101.用面向对象方法分析研究本书习题2第2题中描述的储蓄系统,试建立它的对象模型、动态模型和功能模型。

对象模型参考:以上还需将关联关系说明补全。

动态模型参考:(1)脚本正常情况脚本:储户有存款要求,填写存款单,包含储户个人信息,存款金额和存款类型;业务员查收存款,审核存款与存款单存款金额吻合;存款单生效;储户有取款要求,填写取款单,包含个人账号、密码(待定)和存款金额;业务员审核存款,验证储户身份,确定储户存款金额> = 取款金额;审核通过,取款单生效;系统打印利息清单,业务员把本金和利息返回储户。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件工程课后习题:1.解释为什么专业化软件不仅仅包括为用户所开发程序?专业化软件在开发上与在与软件就有所不同。

专业软件通常是由团队开发而非个人,除了开发者外还有其他的用户使用。

如果你的软件有别的用户,别的工程师会去修改的话,你就必须提供除了程序源码之外的其它附带信息。

因此,系统通常除了包含一些单独的程序还有用于这些程序的配置文件,可能还包括描述系统结构的系统文档和解释如何使用该系统的用户文档,以及告知用户下载最新产品的Web站点。

2.通用软件产品开发和定制软件开发直接有什么不同?这在实际应用中对通用软件产品用户意味着什么?(1)重要区别为:在通用软件的开发过程中,详细说明(规格说明书)由产品开发者来制定,在定制软件产品开发过程中,详细说明(规格说明书)由客户来制定开发者必须按客户要求进行开发。

(2)意味着通用软件很难满足通用软件客户的特殊需求。

如可靠性、安全性、快捷性。

3.软件产品应该具有与的4重要属性是那些?另外列举出4个可能有意义的属性。

重要属性:可维护性、可依赖性和安全性、有效性和可用性。

可能有意义的属性:可复用性、可分发性、可移植性和互用性。

4.除了异质性挑战、业务和社会的变革、安全和可信,说出软件工程在21世纪的可能面临的其它问题和挑战。

交付上的挑战:许多传统的软件工程技术需要耗费大量的时间,用于提高软件质量。

而今天的软件制作必须响应快、更换迅速,支持软件也必须同样快地进行更换。

交付上的挑战是:在不损及系统质量的前提下,缩短大型、复杂系统的移交时间。

5.参论的应用类型,照1.1.2节讨举例介绍为什么设计和开发不同类型的应用需要专门的软件技术。

如汽车上年的嵌入式控制系统对安全性要求极高,在车上安装是要烧制到ROM 中在这里的交互在这里是很少的(或许根本就没有)。

基于Web式系统更适合用于迭代式开发和交互。

而基于Web的系统编程使用的如Ruby一类的脚本语言,完全不适合嵌入式系统工程。

6.解释为什么软件工程的基本思想适用于所有的软件系统。

软件工程的基本思想:1.应使用有管理和理解了的开发过程进行开发。

2.可依赖性和性能对所有类型的系统来说都很重要。

3.理解和管理系统描述和需求是很重要,你必须知道不同的客户和用户的期望是什么。

4.赢尽可能搞笑地使用档期存在资源。

软件工程也是从无数实践中提炼出来的一门科学,沟通、需求分析、设计建模、编程、测试和支持都是软件工程方法所依赖于一组的本原则。

这些思想和原则涵盖了软件工程所有技术,是软件开发不可缺少的一部分。

所以软件工程的基本思想适用于所有的软件系统。

7.解释Web的普遍使用是怎么改变软件系统的。

(1)软件复用已经成为构建基于Web的系统的主要技术。

当你在够着这样的系统是就需要考虑在学校恩怨从已有的软件组件和系统开始工作。

(2)基于Web的系统的开发和交付应逐步完成,提前制定这些系统的所以需求是不切实际的。

(3)用户界面搜到浏览器能力和实用性约束,基于Web的系统上的应用界面通常比专门为Pc系列产品专门设计的用户界面要差。

(通俗点讲就是:实用是实用,就是有点丑。

)8.职业人员是否应该和医生或律师一样要颁发资格证书?讨论一下。

我认为:可以给职业人员颁发某种软件技术方面的资格证书以便公司能够快速确认从业人员具备的技能和让社会大众对从业人员的技术资质有更简单直观的了解。

当然,这个证书不能成为他职业道德的证书,软件工程从业人员的职业道德和行为准则因由此方面协会和机构引导,从业人员自己严加自律。

9.对吐1-3的ACM/IEEE职业道德准则中的每一条款,举出一个恰当的例子加以说明。

(1)公众感:软件工程从业人员应该始终与公众利益保持一致。

不应该通过软件给某些利益集团谋取私利从而损害广大人民群众的利益。

(2)客户和雇主:不能只站在雇主这边为雇主最求利益最大化而不顾客户利益。

(3)产品:不能做一个没有完成或某方面如安全性、稳定性未达标的产品给客户。

(4)判断力:软件从业人员应具备达到判断力,知道自己做的产品不是刻意用来危害社会的。

(5)管理:合理管理软件开发方法,不能官僚主义全听领导一句话。

(6)职业感:大家都是从事正当行业的,要多想想怎么为社会谋取福利。

(7)同事:黑社会都说以和为贵,团队成员都是奔着一个目标去的不要由于一些小小分歧就那个啥...周恩来说要求同存异。

(8)自己:注意要有健康积极的职业和生活方式。

什么是四个重要的属性,所有的软件产品应该有?建议四其他属性,有时可能是重要的。

可维护性, 可靠性,有效性,可用性.Other可复用性,可分发性,可移植性,互用性给你的答案基于系统正在开发的类型的原因,建议最适当的通用的软件过程模型,可以用来管理跟踪系统发展的基础:1)防抱死制动系统2)的虚拟现实系统3)高校会计制度4)互动的时间表(一)防抱死制动系统:安全关键安全鉴定系统方法的基础上,正式的转换等价每段之间的等价证明。

(b)的虚拟现实系统:系统的要求,事先无法预测预先地预知所以探索性编程模型是合适的。

(C)大学会计系统:系统的要求应稳定是因为现有的系统因此瀑布模型是合适的。

(d)互动的时间表交互式时间表:系统复杂的用户界面,但它必须是稳定的,可靠的。

应根据丢弃原型找到要求然后增量开发或瀑布模型。

为什么一个软件系统,用一个真实的世界环境必须改变或成为progressivelyless 有用吗?这种适应自然生成新的系统需求系统的环境是动态的,不断产生新的要求,作为对业务变化的后果,业务目标和业务政策。

商务的目标以及政治相关除非系统适于反映这些要求,其设施将成为了所需要的设施支持业务和步骤,因此,它将变得不那么有用。

为什么一个好的程序员不一定是一个好的软件管理者?管理活动包括提出书面建议,项目规划和进度,人员选择和评价,项目监督和评审,和其他队友的交流能力等。

程序设计者的任务就不是这些,他们不需要和人交流的能力,如果按照做好一个程序设计者的要求去做管理者的话,他肯定不是一个号的管理者。

为什么项目策划的过程是迭代的,为什么一个计划必须不断审查软件项目中。

软件项目地规划取决于有用地信息。

在项目进行期间不断产生新的信息,所以必须经常性的修改原有的计划。

原本有用的信息可能会不再有用,而原本一些不确定的信息反而会变得有用。

最初对象目本身的估算是实验性的,所以计划需要不断的修改。

表明他们可能会在一所大学的学生记录系统中的利益相关者。

在一个学生记录系统的利益相关者包括:大学管理中心,包括报到,交纳学费,考试,作业和毕业等记录在这个系统中的学生大学部门管理者,需要提供和使用这些信息使用系统信息的学院成员数据保护工作者潜在的学生中的雇佣者在学生记录系统中的参与者包括:。

学校管理中心包括负责学生注册,缴费,考试,评估,毕业事宜的相关人员。

那些被记录具体信息的学生。

把学生信息录入到系统并使用系统信息的学校部门人员。

使用这些信息的学术人员。

数据安全人员(本地和国家的)。

潜在的雇用学生的人(或许需要用到这个系统里面的信息)7.3三在图书馆系统中发现的观点。

libysy,建议三的要求,可以通过与相关的利益相关者提出的观点。

你可以解决这个问题用头脑风暴的方法。

显然,有许多替代解决方案建议,这里。

注意印刷冲突是故意的。

观点:图书馆管理要求:进入汇文系统应限于认可的图书馆用户。

要求:在汇文系统必须提供一个报告的设施,允许使用报告(谁使用系统,多久,是什么库访问)来创建和打印。

要求:在汇文系统的配置应使特定的库服务器允许打印文档。

观点:用户要求:在汇文系统应可从任何位置,包括地点离大学校园。

要求:应能保存汇文系统查询,回忆和修改后使用。

要求:在汇文系统应允许文件被打印在用户的打印机。

观点:系统管理员要求:重新启动时间的汇文系统失败后不得超过5分钟。

要求:在汇文系统必须提供一个用户的个人工作空间的备份设备。

要求:在汇文系统应提供一系列平台包括Windows 2000,Windows XP和MAC OS X。

7.4汇文系统支持包括编目工作的新文件系统目录可以分布在多台机器。

可能是非功能需求与编目设施有关的最重要的类型?重要的非功能属性的编目服务的可能:•可用性(因为系统可以在任何需要的时间)•安全(因为图书数据库不能损坏)•效率(因为系统必须迅速作出反应,每个交易)为浏览服务,这些服务的可用性也是非常重要的应该是易于使用,没有广泛的培训。

讨论了一个例子,一个类型的系统的社会和政治因素可能强烈地影响系统的要求。

解释为什么这些因素是重要的在你的例子。

社会和政治因素影响系统需求的一个例子是管理成本和公共卫生保健的系统。

政治家们对控制成本和确保提供最好的卫生保健系统都很关心。

在这样一个系统中这本来就是一对潜在的矛盾,系统管理人员关心的治疗成本而医生们关心的治疗效果。

此时系统需求可能要建立在特殊的包括一系列组织因素的政策上而不是技术需求。

11.1为什么它可能需要在规范设计系统的体系结构是写的吗?体系结构设计过程输出了一个体系结构的设计文档,这样的设计文档包含了一系列图形化的系统模型描述和一些相关的描述文本。

该文当描述了系统如何有子系统构成以及每个子系统如何有模块构成。

11.4给你答案的原因,建议以下系统的一个合适的结构模型:11.4.1一个在铁路站旁,供乘客使用的自动售票系统答:自动售票系统。

最合适的架构模型是有共享数据仓库和定价信息的集中式控制模型。

当使用这种模型时,所有机子能立即获取改变的信息。

由于没有局部处理的必要,所以使用客户/服务架构没有什么优势。

集中式控制系统允许全局信息和路径被收集和处理。

一个允许在同一时间段,视频,音频,计算机数据对很多参与者是可见的计算机控制视频会议系统答:视频会议系统。

最合适的是使用客户/服务模型。

很多局部过程用来处理多媒体数据。

11.4.3一个清洁机器人,主要用来清理一些地方比如走廊。

该清洁机器人必须能感应墙和其他的障碍物。

答:清洁机器人。

最适合的模型是贮藏式模型。

这时所有的子系统把信息存放在其他子系统得贮藏室,以备后用。

以AI系统为例,一种特殊的贮藏室叫做“黑板”被使用11.8 就分布性讨论数据流模型和对象模型的优点和缺点。

假设应用程序的淡季和分布式版本都是必需的。

两种模型都能作为分布式,数据流程图中的每个转换都可以看作是个分离的过程,而每个对象也可以作为过程实现。

函数的分解需要共享状态,并表示为一个或多个过程。

在对象模型中分布对象是个问题,对象如果继承的话就如同它的创建一样会造成很多网络阻塞。

用例子,解释对象和对象类之间的不同。

对象类就是定义实体(或者说对象)的类型说明,包含可以被识别的相似的公共特征。

对象是真实世界或是在系统中的通过对象类对其属性进行赋值的特殊实例。

给对象的赋值操作可用于识别与其他所有对象的区别,尽管不需如此。

相关文档
最新文档