软件工程阶段性作业1
- 格式:doc
- 大小:79.00 KB
- 文档页数:6
软件工程作业1一、选择题:1.开发软件所需高成本和产物的低质量之间有着锋利的矛盾,这种现象称做〔C〕。
2.瀑布模型本质上是一种〔A 〕模型。
3.瀑布模型存在的问题是〔B 〕。
A.用户容易参与开发 B.缺乏灵活性C.用户与开发者易沟通 D.适用可变需求4.螺旋模型是一种将瀑布模型和〔A〕结合起来的软件开发模型。
A.增量模型B.专家系统C.喷泉模型D.变换模型5.原型化方法是用户和设计者之间执行的一种交互构成,适用于〔A〕系统。
A.需求不确定性高的 B.需求确定的C.打点信息 D.实时6.以下有关软件工程的尺度,属于国际尺度的是(D )7.布局化方法是一种基于〔D〕的方法。
A.数据布局B.程序布局C.算法D.数据流8.软件可行性研究本色上是要进行一次( A)需求阐发、设计过程。
A、简化、压缩的B、详细的C、彻底的D、深入的9.可行性研究的目的是〔D〕A、阐发开发系统的必要性B、确定系统建设的方案C、阐发系统风险D、确定是否值得开发系统10.设年利率为i,现存入p元,不计复利,n年后可得钱数为〔C〕。
A、P×(1+i*n)B、P× (i+1)*nC、p×(1+i)nD、p×(i+n)11.可行性研究是在〔A〕之前A、系统开发B、测试C、试运行D、集成测试12.可行性研究需要的时间长短取决于系统的规模,一般来说,可行性研究的成本只是预期总成本的〔C〕。
A、1%B、20%C、8%D、50%13.我国正式发布实施的〔B〕对计算机病毒的定义具有法律性、权威性。
A.计算机软件庇护条例B.中华人民共和国计算机信息系统安然庇护条例C.中华人民共和国著作权法D.计算机病毒防治打点方法14.效率是一个性能要求,因此应当在以下哪个阶段规定?BA、可行性阐发B、需求阐发C、概要设计D、详细设计15.需求规格说明书的作用不包罗〔D〕A、软件验收的依据B、用户与开发人员对软件要做什么的共同理解C、软件可行性研究的依据D、软件设计的依据16.数据字典是用来定义〔D〕中的各个成份的具体含义的。
软件工程第1次作业一、填空题(每空2分,共20分)二、单项选取题(将一种对的答案代码填入括号中,每小题3分,共15分) 1.( )是顾客和设计互换最频繁办法。
A. 原型化办法B.瀑布模型办法C. 螺旋模型办法D. 构件组装模型办法2.下列哪个阶段不是软件生存期三个阶段中内容( )。
A. 筹划阶段B.开发阶段C. 编码阶段D. 维护阶段3.下列( )操作产生副作用属于数据副作用。
A. 修改子程序B.局部变量再定义C. 删除标记符D.修改对编辑条件测试4.软件测试目( )。
A. 避免软件开发中浮现错误B.发现软件开发中浮现错误C.尽量发现并排除软件中潜藏错误,提高软件可靠性D.修改软件中浮现错误5.完毕详细设计工具不涉及( )。
A.PAD图B.数据流图C.HlP()图D.程序流程图三、多项选取题(将一种以上对的答案代码填入括号中,每小题3 分,共15分) 1.应从( )等方面研究可行性。
A. 经济可行性B.技术可行性C. 运营可行性D.法律可行性2.对于下列数据流图局部,关于描述中对的是( )。
A. 该图为第一层数据流图3.需求分析阶段结束后,交出文档中应当涉及( )。
A. 数据流图B.数据字典C. 简要算法描述D.项目经费预算4.软件管理工作涉及到直接对象涉及( )。
A. 软件开发人员B.硬件设备C. 项目经费D.软件项目5.在软件设计中,( )耦合应尽量避免。
A. 控制B.数据C.内容 D. 标记四、判断题(对的在括号内打上“√”,错误打上“X”。
每小题2分,共10分)1。
软件危机是指在软件开发和维护过程中遇到一系列严重问题。
( )2,构造化分析办法就是用抽象模型概念,按照软件内部数据传递、变换关系,自顶向下逐级分解,直到找到满足功能规定所有可实现软件为止。
( )3.UML只能应用于软件系统模型建立。
( )4.程序设计语言中应绝对禁止使用GOTO语句。
( ) 5.模块越小,模块长处越大。
( )五、问答题(每小题10分,共20分)1.什么是软件?什么是软件工程?2.什么是编码风格?为什么要强调编码风格?六、分析题(共20分)依照下列N—S图,写出其相应伪码。
1.软件危机的概念:软件危机是计算机软件开发和维护过程中所遇到的一系列严重问题。
主要包括下列两个方面的问题:如何开发软件,以满足对软件的日益增长的需求;如何维护不断增多的已有软件。
典型表现:对软件开发成本和进度的估计常常很不准确;用户对交付的软件经常不满意;软件产品的质量往往达不到要求;开发出来的软件通常难以维护;软件产品文档资料不适用和不完善;软件成本在整个系统总成本中所占比例逐年上升;软件开发生产率的提高不能满足对软件需求的增长;出现软件危机的原因:与软件本身的特点有关成本高、风险大、难于维护、逻辑复杂。
软件是计算机系统中的逻辑实体而不是物理实体,软件生产与硬件不同,在它的开发过程中没有明显的制造过程。
软件是通过人们的智力活动,把知识与技术转化成信息的一种产品。
在软件的运行过程中,没有“用坏”的问题。
软件维护意味着修正原来的设计,较为困难。
与软件开发与维护的方法不正确有关软件专业人员对软件开发和维护存在糊涂观念,在实践过程中采用了错误的方法和技术。
如忽视软件需求分析的重要性;轻视软件维护。
3.软件工程的概念:软件工程是指导计算机软件开发与维护的一门工程学科。
采用工程的概念、原理、方法和技术来开发和维护软件。
将经过时间和实践考验而证明正确的管理方法和最好的技术手段结合起来,经济有效地开发和维护软件。
软件工程是一门不断发展的学科。
软件工程就是建立和使用一套合理的工程原理,从而经济地获得可靠的、可以在实际机器上高效运行的软件。
软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。
它采用经过实践验证的工程的原则、方法,以提高质量,降低成本为目的。
本质特征:关注于大型程序的构造控制软件复杂性适应软件的经常变化性提高软件开发的效率和谐合作开发软件使软件有效地支持它的用户需求软件是有一种文化背景的人为另一种文化背景的人开发的产品。
用软件工程来消除软件危机:(1) 对计算机软件有一个正确的认识(软件≠程序)(2) 必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目(3) 推广使用在实践中总结出来的开发软件的成功技术和方法(4) 开发和使用更好的软件工具6.软件过程的概念:软件过程是为了获得高质量的软件需要完成的一系列任务的框架,规定了完成各项任务的工作步骤。
软件工程作业1软件工程作业1====================1-引言--------------------2-项目背景--------------------在此章节中,需要详细介绍软件工程作业1的项目背景和项目的目标。
描述项目的背景信息,包括相关的行业、应用领域和目标用户群体等。
明确项目的目标,即开发一个什么样的软件或系统,并说明该软件或系统的主要功能和优势。
3-需求分析--------------------在本章节中,将对项目的需求进行详细的分析和规格说明。
包括用户需求和系统需求的分析,将用户需求转化为可量化和可测量的系统需求。
在此章节中,需要明确项目的功能需求、性能需求、安全需求等各个方面的需求。
4-设计在此章节中,将进行系统的整体设计和详细设计的说明。
首先,进行系统的整体架构设计,包括模块划分、功能划分和模块间的关系等。
然后,对各个模块进行详细设计,并给出相应的设计文档,包括类图、时序图、状态图等。
最后,说明系统的界面设计和用户界面的交互。
5-开发--------------------在本章节中,将详细介绍项目的开发过程和开发环境的配置。
描述项目的开发过程中所采用的开发方法和开发工具。
对于项目的开发环境,包括开发语言、开发框架、集成开发环境等的配置和使用,都需要进行详细的说明。
6-测试--------------------在此章节中,将介绍软件工程作业1的测试策略和测试计划。
描述测试的范围、测试的方法和测试的步骤等。
针对不同的测试阶段,包括单元测试、集成测试、系统测试等,都需要给出相应的测试计划和测试用例。
7-附件本文档附带的附件包括项目的相关文档、设计图纸、测试样例等。
这些附件能够更加全面地展示软件工程作业1的开发过程和实现结果。
8-法律名词及注释--------------------在此章节中,列出本文档涉及的法律名词及其相应的注释解释。
这些法律名词的注释将有助于读者更好地理解和解释相关内容。
软件工程作业1在当今数字化的时代,软件工程已经成为了推动科技发展和社会进步的重要力量。
从我们日常使用的手机应用到复杂的企业级系统,软件工程都在其中发挥着关键作用。
软件工程是一门研究如何用系统化、规范化、可定量的方法来开发、运行和维护软件的学科。
它不仅仅是编写代码,还涵盖了从需求分析、设计、编码、测试到维护的整个软件生命周期。
在需求分析阶段,软件工程师需要与客户或用户进行深入的沟通,了解他们的期望和需求。
这就像是建筑师在设计大楼之前,要先明白住户的居住需求一样。
工程师们要仔细倾听,捕捉每一个细节,将模糊的想法转化为清晰的、可衡量的需求规格说明书。
这个过程中,可能会遇到用户需求不明确、需求变更频繁等问题。
这就需要工程师具备良好的沟通能力和应变能力,能够引导用户明确需求,并合理管理需求的变更。
设计阶段则是在需求明确的基础上,构建软件的架构和模块。
这就好比是为大楼搭建框架,确定每个房间的布局。
好的设计能够提高软件的可扩展性、可维护性和性能。
在这个阶段,工程师要考虑软件的整体结构、模块之间的关系、数据的存储和处理方式等。
同时,还要选择合适的设计模式和算法,以满足软件的功能和性能要求。
编码阶段就是将设计转化为实际的代码。
这就像是建筑工人根据设计图纸进行施工。
在编码过程中,工程师要遵循编程规范,确保代码的可读性、可维护性和可重用性。
同时,还要注意代码的效率和安全性,避免出现漏洞和错误。
测试是软件工程中不可或缺的环节。
就像大楼建成后需要进行各种质量检测一样,软件也要经过严格的测试,以确保其功能的正确性和稳定性。
测试包括单元测试、集成测试、系统测试和用户验收测试等。
通过测试,可以发现软件中的缺陷和问题,并及时进行修复。
维护阶段则是在软件交付使用后,对其进行持续的改进和优化。
随着用户需求的变化和技术的更新,软件需要不断地进行升级和维护。
这就要求工程师能够快速响应问题,有效地解决故障,并对软件进行持续的优化,以提高用户体验。
《软件工程》作业第一章1.什么是软件危机,它有哪些典型表现?答: 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
概括地说,软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
软件危机典型表现:对软件开发成本和进度的估计常常很不准确。
用户对“已完成的”软件系统不满意的现象经常发生。
软件产品的质量往往靠不住。
软件常常是不可维护的。
软件通常没有适当的文档资料。
软件成本在计算机系统总成本中所占的比例逐年上升。
软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
产生软件危机的原因:一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。
软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。
管理和控制软件开发过程相当困难。
软件是规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。
目前相当多的软件专业人员对软件开发和维护还有不省糊涂观念,在实践过程中或多或少地采用了错误的方法和技术,这是使软件问题发展成软件危机的主要原因。
2.简述产生软件危机的原因和解决的思路。
答:软件危机产生的原因一方面与软件本身的特点有关,另一方面,是与已有软件开发、维护的方法不正确有密切关系。
解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。
即采用工程化的原则和方法组织软件开发是摆脱软件危机的一个主要出路。
3.什么是软件工程?它有哪些本质特性?答: 软件工程是指导计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。
软件工程本质特性:1、软件工程关注于大型程序的构造;2、软件工程的中心课题是控制复杂性;3、软件经常变化;4、开发软件的效率非常重要;5、和谐地合作是开发软件的关键;6、软件必须有效地支持它的用户;7、在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品。
江南大学现代远程教育第一阶段测试卷考试科目:《软件工程》第1章至第3章(总分100分)时间:90分钟__________学习中心(教学点)批次:层次:专业:学号:身份证号:姓名:得分:一、单选题(每小题1分,共计20分)1.软件是一种( )产品。
A.物质B.逻辑C.有形D.消耗2.软件产品的开发主要是( )。
A.复制B.再生产C.拷贝D.研制3.个体手工劳动生产方式的时代是( )。
A.程序设计B.软件生产自动化C.程序系统D.软件工程4.软件工程是一门( )学科。
A.理论性B.原理性C.工程性D.心理性5.软件开发费用只占整个软件系统费用的( )。
(软件维护占55%~70%)A.1/2 B.1/3C.1/4 D.2/36.软件开发中大约要付出( )的工作量进行测试和排错。
(测试占40%~50% 编写占10%~20%)A.20%B.30%C.40%D.50%7.同一软件的大量软件产品的生产主要是通过( )而得到。
A.研究B.复制C.开发D.研制8.软件生命周期一般都被划分为若干个独立的阶段,其中占用精力和费用最多的阶段往往是( )。
A.运行和维护阶段B.设计阶段C.代码实现阶段D.测试阶段9.下列不属于软件工程方法学三要素的是( )。
A.方法B.工具C.过程D.操作10.下列属于软件的特点的是( )。
A.软件是一种逻辑实体,具有抽象性B.软件在使用过程中没有磨损、老化的问题C.软件不同于一般程序,它的一个显著特点是规模庞大,复杂程度高D.以上都正确11.软件工程的出现是由于( )。
A.软件危机的出现B.计算机硬件技术的发展C.软件社会化的需要D.计算机软件技术的发展12.( )分批地逐步向用户提交产品,每次提交一个满足用户需求子集的可运行的产品。
A.增量模型B.喷泉模型C.原型模型D.螺旋模型13.软件开发技术不包含( )。
A.软件开发方法学B.软件工程环境C.软件工具D.软件质量度量14.结构化生命周期法实施的前提和依据是( )。
软件工程作业1软件工程作业11. 前言本文档旨在描述软件工程作业1的内容和要求,并提供相应的解决方案。
作业1主要涉及软件需求工程的一些基本概念和方法。
2. 背景软件需求工程是软件开发过程中的关键环节,它旨在识别和定义用户的需求,为软件开发团队提供指导,确保开发出符合用户期望的软件产品。
在软件工程作业1中,我们将通过一个简单的实例来了解需求工程的基本概念和方法。
3. 需求分析3.1 需求定义本作业要求开发一个简单的待办事项管理系统,主要功能包括:- 记录待办事项的标题和描述- 根据优先级对待办事项进行排序- 标记已完成的待办事项3.2 功能需求根据需求定义,我们可以确定系统的功能需求如下:- 用户能够添加新的待办事项,并提供相应的标题和描述信息。
- 用户能够查看已有的待办事项列表,并能够根据优先级进行排序。
- 用户能够标记已完成的待办事项,并将其从列表中移除。
3.3 非功能需求除了功能需求外,我们还需要考虑一些重要的非功能需求:- 界面友好:用户界面应该简洁明了,方便用户操作。
- 性能高效:系统应该能够迅速处理大量待办事项的增删改查操作。
- 可靠性:系统需要具备一定的容错能力,确保数据不会丢失,应对异常情况。
4. 系统设计4.1 架构设计本系统采用简单的三层架构设计,包括表示层、业务逻辑层和数据访问层。
- 表示层:负责与用户进行交互,接收用户的输入并显示相关信息。
- 业务逻辑层:负责处理用户的请求,进行待办事项的增删改查操作。
- 数据访问层:负责与数据库进行交互,存储和检索待办事项的信息。
4.2 数据库设计本系统采用关系型数据库来存储待办事项的信息,数据库中主要包含以下两个表格:- todos 表:用于存储待办事项的基本信息,包括标题、描述和优先级。
- completed 表:用于存储已完成的待办事项信息,包括标题、描述和完成时间。
4.3 用户界面设计用户界面应该简洁而直观。
主要包括下面几个界面:- 待办事项列表界面:显示用户添加的待办事项列表,并可根据优先级排序。
中国地质大学(武汉)远程与继续教育学院软件工程课程作业1(共 4 次作业)学习层次:专升本涉及章节:第1章一、选择填空题1、从供选择的答案中选出与下列有关软件需求分析叙述相对应的正确答案,将其编号填入到相应的括弧()内。
软件是计算机系统中与硬件相互依存的另一部分,它是包括( A )、 ( B )及( C )的完整集合。
其中, ( A )是按事先设计的功能和性能要求执行的指令序列。
( B )是使程序能够正确操纵信息的数据结构。
( C )是与程序开发、维护和使用有关的图文材料。
供选择的答案:A~C. ①软件②程序③代码④硬件⑤文档⑥外设⑦数据⑧图表2、从供选择的答案中选出与下列有关软件需求分析叙述相对应的正确答案,将其编号填入到相应的括弧()内。
开发软件时对提高软件开发人员工作效率至关重要的是( A )。
软件工程中描述生存周期的瀑布模型一般包括计划、( B )、设计、编码、测试、维护等几个阶段,其中设计阶段在管理上又可以依次分成( C )和( D )两步。
供选择的答案:A.①程序开发环境②操作系统的资源管理功能③程序人员数量④计算机的并行处理能力B.①需求分析②需求调查③可行性分析④问题定义C、 D.①方案设计②代码设计③概要设计④数据设计⑤运行设计⑥详细设计⑦故障处理设计⑧软件体系结构设计3、从供选择的答案中选出与下列有关软件需求分析叙述相对应的正确答案,将其编号填入到相应的括弧()内。
有人将软件的发展过程划分为 4 个阶段:第一阶段(1950~1950 年代末)称为“程序设计的原始时期”,这时既没有( A ),也没有( B ),程序员只能用机器指令编写程序。
第二阶段(1950 年代末~1960 年代末)称为“基本软件期”。
出现了( A ),并逐渐普及。
随着( B )的发展,编译技术也有较大的发展。
第三阶段(1960 年代末~1970 年代中期)称为“程序设计方法时代”。
这一时期,与硬件费用下降相反,软件开发费急剧上升。
软件工程_第一阶段练习在当今数字化的时代,软件工程扮演着至关重要的角色。
它不仅仅是编写代码,更是一门涉及系统设计、开发、测试、维护和管理的综合性学科。
当我们踏入软件工程的领域,第一阶段的练习犹如基石,为后续的深入学习和实践奠定坚实基础。
第一阶段练习中,理解软件开发的流程是关键的一步。
从需求分析开始,我们需要与客户或项目相关方进行深入的沟通,明确他们的期望和目标。
这可不是简单的聊天,而是要挖掘出潜在的需求,理解业务流程,甚至预测可能出现的变化。
比如,开发一个电商平台,我们不仅要考虑用户的购物流程,还要考虑库存管理、支付安全、物流跟踪等多个方面。
这要求我们具备敏锐的洞察力和良好的沟通技巧,确保我们捕捉到的需求准确无误。
在需求明确之后,就是系统设计阶段。
这就像是为一座大楼绘制蓝图。
我们要决定采用什么样的架构,是单体架构、微服务架构还是其他的?数据库如何设计,是关系型数据库还是非关系型数据库?接口如何定义,才能保证系统的灵活性和可扩展性?以一个社交应用为例,我们需要设计用户信息模块、消息推送模块、好友关系模块等,每个模块之间的交互和数据流动都需要精心规划。
编程实现是接下来的重要环节。
选择合适的编程语言和开发工具至关重要。
对于初学者来说,可能会从一些常见的语言如 Python、Java等入手。
在编写代码的过程中,要遵循良好的编程规范和设计原则。
代码的可读性、可维护性和可扩展性是我们始终要追求的目标。
比如,使用有意义的变量名和函数名,合理的注释,以及适当的代码结构。
同时,要注意代码的效率和性能,避免不必要的资源浪费。
测试是软件开发中不可或缺的一部分。
单元测试、集成测试、系统测试等多种测试手段,确保软件的质量和稳定性。
在单元测试中,我们要对每个函数、每个模块进行单独的测试,确保其功能的正确性。
集成测试则是检查不同模块之间的协作是否顺畅。
系统测试则是从整体上模拟真实的使用场景,检验软件是否满足用户的需求。
就像一辆汽车在出厂前,要经过各种路况的测试一样,我们的软件也需要经受各种考验。
中国地质大学(武汉)远程与继续教育学院软件工程课程作业1(共 4 次作业)学习层次:专升本涉及章节:第1章一、选择填空题1、从供选择的答案中选出与下列有关软件需求分析叙述相对应的正确答案,将其编号填入到相应的括弧()内。
软件是计算机系统中与硬件相互依存的另一部分,它是包括( A )、 ( B )及( C )的完整集合。
其中, ( A )是按事先设计的功能和性能要求执行的指令序列。
( B )是使程序能够正确操纵信息的数据结构。
( C )是与程序开发、维护和使用有关的图文材料。
供选择的答案:A~C. ①软件②程序③代码④硬件⑤文档⑥外设⑦数据⑧图表2、从供选择的答案中选出与下列有关软件需求分析叙述相对应的正确答案,将其编号填入到相应的括弧()内。
开发软件时对提高软件开发人员工作效率至关重要的是( A )。
软件工程中描述生存周期的瀑布模型一般包括计划、( B )、设计、编码、测试、维护等几个阶段,其中设计阶段在管理上又可以依次分成( C )和( D )两步。
供选择的答案:A.①程序开发环境②操作系统的资源管理功能③程序人员数量④计算机的并行处理能力B.①需求分析②需求调查③可行性分析④问题定义C、 D.①方案设计②代码设计③概要设计④数据设计⑤运行设计⑥详细设计⑦故障处理设计⑧软件体系结构设计3、从供选择的答案中选出与下列有关软件需求分析叙述相对应的正确答案,将其编号填入到相应的括弧()内。
有人将软件的发展过程划分为 4 个阶段:第一阶段(1950~1950 年代末)称为“程序设计的原始时期”,这时既没有( A ),也没有( B ),程序员只能用机器指令编写程序。
第二阶段(1950 年代末~1960 年代末)称为“基本软件期”。
出现了( A ),并逐渐普及。
随着( B )的发展,编译技术也有较大的发展。
第三阶段(1960 年代末~1970 年代中期)称为“程序设计方法时代”。
这一时期,与硬件费用下降相反,软件开发费急剧上升。
人们提出了( C )和( D )等程序设计方法,设法降低软件的开发费用。
第四阶段(1970 年代中期~现在)称为“软件工程时期”。
软件开发技术不再仅仅是程序设计技术,而是包括了与软件开发的各个阶段,如( E )、( F )、编码、单元测试、综合测试、( G )及其整体有关的各种管理技术。
供选择的答案:A~D:①汇编语言②操作系统③虚拟存储器概念④高级语言⑤结构式程序设计⑥数据库概念⑦固件⑧模块化程序设计E~G:①使用和维护②兼容性的确认③完整性的确认④设计⑤需求定义⑥图象处理4、从供选择的答案中选出与下列有关软件需求分析叙述相对应的正确答案,将其编号填入到相应的括弧()内。
软件工程的最终目的是以较少的投资获得可维护的、可靠的、高效率的和可理解的软件产品。
软件工程技术应遵循( A )、( B )、( C )、( D )、一致性、确定性、完备性、可验证性、抽象和信息隐蔽。
原型法适用于开发较复杂的系统,原型可分为三种:( E )、( F )和( G )。
供选择的答案:A~D:①有效性②合理性③局部化④协同性⑤实用性⑥模块化⑦抽象⑧信息隐蔽E~G:①复用型②实验型③废弃型④演化型⑤探索型二、问答题1、什么是软件?它的特性是什么?2、(选做)试比较软件发展的三个时期的特点,从软件所指、软件工作范围、软件开发组织、决定质量的因素、开发技术和手段等几个方面说明它们的差别。
3、软件工程是开发、运行、维护和修复软件的系统化方法,它包含哪些要素?试说明之。
4、软件工程过程有哪几个基本过程活动?试说明之。
5、试说明“软件生存期”的概念。
6、试论述瀑布模型软件开发方法的基本过程,比较它的优点和缺点。
7、(选做)试说明演化模型软件开发方法的基本过程,比较它的优点和缺点。
8、(选做)试说明螺旋模型软件开发方法的基本过程,比较它的优点和缺点。
9、软件工程的基本目标有哪些?试说明它们之间的关系。
10、软件工程的基本原则有哪些?试说明之。
11、(选做)软件工程的基本原理有哪些?试说明之。
12、有人说:软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大。
对否?请解释你的回答。
参考答案一、选择填空题1、解答:A. , ② B. , ⑦ C. ⑤2、解答:A. , ① B. , ① C. ③, D. ⑥3、解答:A. , ① B. , C. , D. , E. , F. , G. ④⑤⑧⑤④①。
注意,C 与D的答案顺序可互换。
4、解答:A. , B. , C. , D. , E. , F. , G. ⑦⑧⑥③②⑤④。
注意,A、B、C、D的答案顺序可互换。
E、F、G的答案顺序可互换。
二、问答题1、答:软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。
其中,程序是按事先设计的功能和性能要求执行的指令序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发,维护和使用有关的图文材料。
软件的特点是:(1) 软件是一种逻辑实体,而不是具体的物理实体。
它具有抽象性。
(2) 软件的生产与硬件不同,它没有明显的制造过程。
(3) 在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。
然而它存在退化问题。
(4) 软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。
(5) 软件的开发至今尚未完全摆脱手工艺的开发方式。
(6) 软件本身是复杂的。
软件的复杂性可能来自它所反映的实际问题的复杂性,也可能来自程序逻辑结构的复杂性。
(7) 软件成本相当昂贵。
2、解答:3、解答:软件工程包括三个要素:方法、工具和过程。
软件工程方法为软件开发提供了“如何做”的技术。
它包括了多方面的任务,如项目计划与估算、软件系统需求分析、数据结构、系统总体结构的设计、算法过程的设计、编码、测试以及维护等。
软件工具为软件工程方法提供了自动的或半自动的软件支撑环境。
软件工程的过程则将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的。
过程定义了方法使用的顺序、要求交付的文档资料、为保证质量和协调变化所需要的管理、及软件开发各个阶段完成的里程碑。
4、解答:软件工程过程的基本过程活动有4 步:·P (Plan) : 软件规格说明。
规定软件的功能及其运行的限制;·D (Do) : 软件开发。
产生满足规格说明的软件;·C (Check) : 软件确认。
确认软件能够完成客户提出的要求;·A (Action) : 软件演进。
为满足客户的变更要求,软件必须在使用的过程中演进。
5、解答:软件与任何一个事物一样,有它的孕育、诞生、成长、成熟、衰亡的生存过程。
这就是软件的生存期。
它分为 6 个阶段:(1) 软件项目计划:在这一步要确定软件工作范围,进行软件风险分析,预计软件开发所需要的资源,建立成本与进度的估算。
根据有关成本与进度的限制分析项目的可行性。
(2) 软件需求分析和定义:在这一步详细定义分配给软件的系统元素。
可以用以下两种方式中的一种对需求进行分析和定义。
一种是正式的信息域分析,可用于建立信息流和信息结构的模型,然后逐渐扩充这些模型成为软件的规格说明。
另一种是软件原型化方法,即建立软件原型,并由用户进行评价,从而确定软件需求。
(3) 软件设计:软件的设计过程分两步走。
第一步进行概要设计,以结构设计和数据设计开始,建立程序的模块结构,定义接口并建立数据结构。
第二步做详细设计,考虑设计每一个模块部件的过程描述。
经过评审后,把每一个加细的过程性描述加到设计规格说明中去。
(4) 程序编码:在设计完成之后,用一种适当的程序设计语言或CASE 工具生成源程序。
应当就风格及清晰性对代码进行评审,而且反过来应能直接追溯到详细设计描述。
(5) 软件测试:单元测试检查每一单独的模块部件的功能和性能。
组装测试提供了构造软件模块结构的手段,同时测试其功能和接口。
确认测试检查所有的需求是否都得到满足。
在每一个测试步骤之后,要进行调试,以诊断和纠正软件的故障。
(6) 软件维护:为改正错误,适应环境变化及功能增强而进行的一系列修改活动。
与软件维护相关联的那些任务依赖于所要实施的维护的类型。
6、解答:瀑布模型规定了各项软件工程活动,包括:制定软件项目计划,进行需求分析和定义,软件设计,程序编码,测试及运行维护。
并且规定了它们自上而下,相互衔接的固定次序,如同瀑布流水,逐级下落。
瀑布模型为软件开发和软件维护提供了一种有效的管理图式。
根据这一图式制定开发计划、进行成本预算、组织开发力量,以项目的阶段评审和文档控制为手段有效地对整个开发过程进行指导,从而保证了软件产品及时交付,并达到预期的质量要求。
瀑布模型的缺点是缺乏灵活性,特别无法解决软件需求本身不明确或不准确的问题。
这些问题的存在对软件开发会带来严重影响,最终可能导致开发出的软件并不是用户真正需要的软件,并且这一点在开发过程完成后才有所察觉。
面对这些情况,无疑需要进行返工或是不得不在维护中纠正需求的偏差。
但无论上述哪一种情况都必须付出高额的代价,并将为软件开发带来不必要的损失。
7、解答:由于在项目开发的初始阶段人们对软件的需求认识常常不够清晰,因而使得开发项目难于做到一次开发成功,出现返工再开发在所难免。
因此,可以先做试验开发,其目标只是在于探索可行性,弄清软件需求;然后在此基础上获得较为满意的软件产品。
通常把第一次得到的试验性产品称为“原型”。
演化模型从需求分析开始。
软件开发人员与用户一起定义待开发软件系统的总目标,定义需求,确定软件的工作范围。
然后快速设计软件中对使用者可见部分的表示,进而建造原型,再让用户或客户评估原型,根据评估结果,修改和细化待开发软件系统的需求,使之满足用户的需求。
这个过程是一个迭代的过程。
演化模型的优点是:·演化模型能够得到更好的软件需求,它不仅能够处理模糊的需求,而且开发人员与用户可通过原型充分进行交流;·演化模型给用户提供了机会,以更改用户原来设想的不尽合理的最终系统;·演化模型使得开发出来的最终系统更容易维护,对用户更友好;·演化模型可以降低总的开发费用,缩短开发时间。
演化模型的缺点是:·对于开发人员不熟悉的领域,演化模型可能误导开发者把系统的次要部分当作主要框架,作出不切题的原型;·原型过快地收敛于需求集合,使得某些基本方面被忽视;·长期在原型环境下开发,只注意得到令人满意的原型,容易“遗忘”用户环境与实际客户环境之间的差别。
8、解答:对于复杂的大型软件,开发一个原型往往达不到要求。
螺旋模型将瀑布模型与演化模型结合起来,并且加入两种模型均忽略了的风险分析,弥补了两者的不足。