西安工业大学软件工程作业含答案文档格式.docx
《西安工业大学软件工程作业含答案文档格式.docx》由会员分享,可在线阅读,更多相关《西安工业大学软件工程作业含答案文档格式.docx(34页珍藏版)》请在冰点文库上搜索。
B需求分析要紧解决待开发软件要“做什么”的问题,确信软件的功能、性能、数据、界面等要求,生成软件需求规约。
C软件设计只要解决待开发软件“怎么做”的问题。
软件设计通常可分为系统设计和详细设计。
系统设计的任务是设计软件系统的体系结构,包括软件系统的组成成份、各成份的功能和接口、成份间的连接和通信,同时设计全局数据结构。
详细设计的任务是设计各个组成成份的实现细节,包括局部数据结构和算法等。
D编码时期的任务是用某种程序设计语言,将设计的结果转换为可执行的程序代码。
E测试时期的任务是发觉并纠正软件中的错误和缺点。
测试要紧包括单元测试、集成测试、确认测试和系统测试。
F软件完成各类测试后就可交付利用,在软件运行期间,需对投入运行的软件进行保护,即可发觉了软件中潜藏的错误或需要增加新的功能或使软件适应外界环境的转变等情形显现时,对软件进行修改。
简述各类软件进程模型的特点。
典型的软件进程模型有:
瀑布模型、演化模型(增量模型、原型模型、螺旋模型)、喷泉模型、基于构件的开发模型和形式方式模型等。
A瀑布模型中,上一时期的活动完成并通过评审后才能开始下一时期的活动,其特点是:
同意上一时期活动的结果作为本时期活动的输入;
依据上一时期活动的结果实施本时期应完成的活动;
对本时期的活动进行评审;
将本时期活动的结果作为输出。
B增量模型将软件的开发进程分成假设干个日程时刻交织的线性序列,每一个线性序列产生软件的一个可发布的增量版本,后一个版本是对前一个版本的修改和补充,重复增量发布的进程,直至产生最终的完善产品。
C原型方式从软件工程师与客户的交流开始,其目的是概念软件的整体目标,标识需求。
然后快速制定原型开发的打算,确信原型的目标和范围,采纳快速设计的方式对其建模,并构建模型。
被开发的原型应交付给客户利用,并搜集客户的反馈意见,这些反馈意见可在下一轮迭代中对原型进行改良。
在前一个原型需要改良,或需要扩展其范围的时候,进入下一轮原型的迭代开发。
D螺旋模型将原型模型实现的迭代特点与瀑布模型中操纵的和系统化的方面结合起来,不仅表现了这两种模型的优势而且还增加了风险分析。
E喷泉模型是一种支持面向对象开发的进程模型。
类及对象是面向对象方式中的大体成份。
在分析时期,标识类及对象,概念类之间的关系,成立对象-关系模型和对象-行为模型。
在设计时期,从实现的角度对分析模型进行调整和扩充。
在编码时期,用面向对象语言实现类及对象,通过消息机制实现对象之间的通信,完成软件的功能。
在面向对象方式中,分析模型和设计模型采纳相同的符号表示体系,开发的各个活动没有明显的边界,各个活动常常重复,迭代地交替进行。
F基于构件的开发模型,基于构件的开发是指利用预先包装的构建来构造应用系统。
构件能够是组织内部开发的构建,也能够是商业化的、现存的软件构件。
G形式化方式是成立在严格数学基础上的一种软件开发方式。
软件开发的全进程中,从需求分析、规约、设计、编程、系统集成、测试、文档生成,直至保护等各个时期,凡是采纳严格的数学语言,具有精准的数学语义的方式,都称为形式化方式。
形式化方式用严格的数学语言和语义描述功能和设计规约,通过数学的分析和推导,易于发觉需求的歧义性、不完整性和不一致性,易于对分析模型、设计模型和程序进行验证。
通过数学的演算,使得从形式化功能规约到形式化设计规约,和从形式化设计规约到程序代码转换成为可能。
敏捷软件开发的特点是什么?
敏捷软件开发的特点有4个:
A个人和交互高于进程和工具;
B可运行软件高于详尽的文档;
C与客户协作高于合同谈判;
D对变更及时做出反映高于遵循打算。
简述敏捷软件开发的原那么。
敏捷软件开发必需遵循的12条原那么如下;
A最优先的是通过及早地和不断地提交有价值的软件来使客户中意;
B欢迎转变的需求,即便该转变出此刻开发的后期,为了提升对客户的竞争优势,Agile进程利用转变作为动力;
C以几周到几个月为周期,尽快、不断地发布可运行软件;
D在整个项目进程中,业务人员和开发人员必需天天一路工作;
E以踊跃向上的员工为中心成立项目组,给予他们所需要的环境和支持,对他们的工作予以充分的信任;
F项目组内效率最高、最有效的信息传递方式是面对面的交流;
G测量项目进展的首要依据是可运行的软件;
H敏捷进程提倡可持续的开发,项目发起者、开发者和用户应能长期维持恒定的速度;
I应该时刻关注技术上的精益求精和好的设计,以增强敏捷性;
J简单化是必不可少的,这是尽可能减少没必要要工作的艺术;
K最好的构架、需求和设计出自于自我组织的团队;
L团队要按期反思如何才能加倍有效,并据此调整自己的行为。
第2、3章
简述系统工程的任务。
系统工程是一个问题求解的活动,其目的是分析基于运算机的系统的功能、性能等要求,并把它们分派到基于运算机系统的各个系统元素中,确信它们的约束条件和接口。
要紧任务包括:
(1)识别用户要求;
(2)系统建模与模拟;
(3)本钱估算及进度安排;
(4)可行性分析;
(5)生成系统规格说明。
基于运算机的系统由哪些元素组成?
组成基于运算机系统的元素要紧有:
软件、硬件、人员、数据库、文档和规程。
简述可行性分析的任务。
可行性分析要紧从经济、技术、法律等方面分析所给出的解决方案是不是可行,可否在规定的资源和时刻的约束下完成。
(1)经济可行性要紧进行本钱效益分析,从经济角度,确信系统是不是值得开发。
包括本钱、效益、货币的时刻价值、投资回收期和纯收入。
(2)技术可行性要紧依照系统的功能、性能、约束条件等,分析在现有资源和技术条件下系统可否实现。
技术可行性分析通常包括风险分析、资源分析和技术分析。
(3)法律可行性要紧研究系统开发进程中可能涉及到的合同、侵权、责任和各类与法律相抵触的问题。
需求工程的重要性是什么?
举身世边由于需求分析失败而造成整个项目失败的例子。
重要性是应用已证明有效的技术、方式进行需求分析,确信客户需求、帮忙分析人员明白得问题,评估可行性,协商合理的解决方案,无歧视地规约方案,确认规约和将规约转换到可行性的系统时的治理要求,通过合理的工具和符号系统地描述待开发系统和其行为特点和相关约束,形成需求文档,并对用户不断转变的需求演进给予支持。
因需求分析失败而造成项目失败例子如下:
项目名称:
邮政资信治理系统
项目功能:
治理邮政方面业务的监督和治理,提高邮政的效劳效率。
失败缘故:
需求分析不足,需求内容不明确,把握不充分。
需求工程具体包括哪些步骤?
每一个步骤的具体任务是什么?
需求工程具体步骤包括:
需求获取、需求分析与协商、系统建模、需求规约、需求验证和需求治理六个步骤。
(1)需求获取
在需求获取时期系统分析人员通过与用户的交流、对现有系统的观看和对任务进行分析,确信系统或产品范围的限制性描述、与系统或产品有关的人员及特点列表、系统的技术环境的描述、系统功能的列表和应用于每一个需求的领域限制、一组描述不同运行条件下系统或产品利用状况的应用处景和为更好地概念需求而开发的原型。
需求获取的工作产品为进行需求分析提供了基础。
(2)需求分析与协商
现在期的任务是对需求进行分类组织,分析每一个需求与其他需求的关系以检查需求的一致性、重叠和遗漏的情形,并依照用户的需要对需求进行排序。
(3)系统建模
系统建模是为了在用户和系统分析人员之间成立统一的语言和明白得的桥梁,系统分析人员借助建模技术对获取的需求信息进行分析,排除错误和弥补不足,确保需求分析文档正确反映用户的真实用意。
(4)需求规约
软件需求规约是分析任务的最终产物,通过成立完整的信息描述、详细的功能和行为描述、性能和设计约束的说明、适合的验收标准,给出对目标软件的各类需求。
需求规约作为用户和开发者之间的一个协议,在以后的软件工程各个时期发挥重要作用。
(5)需求验证
现在期的任务是对功能的正确性、完整性和清楚性,和其他需求给予评判,保证软件需求概念的质量。
(6)需求治理
软件需求治理是对需求工程所有相关活动的计划和操纵。
换句话说,需求治理确实是:
一种获取、组织并记录系统需求的系统化方案,和一个利用户与项目团队对不断变更的系统需求达到并维持一致的进程。
一个系统分析员应该具有哪些思想素养和基础知识?
请说明理由。
(1)强烈的责任心和事业心
系统分析师由于必需保证分析的准确性,尤其是需求,因此责任更为重大。
一样来讲,不该以用户表述不明确,无法取得需求,或用户需求转变太多太快作为借口,更不能因为下面的研发技术人员技术水平不如自己而责备研发技术人员,同时也需要能够为保证企业利益而说服公司领导做出正确的决策;
(2)钻研精神
IT行业不同于其他行业,新理念新技术新方式层出不穷,系统分析师需要能够适时适本地引进新理念新技术新方式,为企业提高生产效率,为员工降低劳动强度,为客户提供更具竞争力和加倍有效的产品和效劳;
(3)优秀的协商谈判能力
复杂的系统有许多项目相关的人员,他们之间的需求必然会显现冲突,协商的进程确实是讨论需求,找出每一个人都中意的折衷方案。
分析人员是参与这当中的重要一分子,需要和谐这当中的各方利益,这就要求分析员必需要有优秀的协商谈判能力。
(4)普遍的知识面:
除具有大体的IT技术、知识外,需要普遍涉猎其他行业其他学科的知识方式,以系统工程的理念,借鉴和利用其他行业的为IT行业所用,也能够把IT行业的理念应用到其他行业;
(5)精湛的技术能力:
系统分析员往往需要分析可行性和解决研发人员的技术问题,因此必需具有普遍的技术涉猎面和较强的技术能力;
(6)财务能力:
系统分析员往往需要参与项目的招投标分析,为了保证企业的利润和客户的利益,必需进行财务核算,需要具有会计、财务,本钱计算等方面的能力;
(7)司法能力:
与其他大部份行业一样,IT行业也受到法律的约束,任何活动必需合情合理合法,任何违抗法律的项目最终都会失败,违抗伦理道德的事和人最终都将失去人心。
(8)超强超快的学习能力:
IT行业新技术层出不穷,同时其他相关必备知识、业务知识也是瞬息万变,系统分析师要能够快速学习并快速把握和灵活应用;
(9)灵敏的观看力:
由于IT行业项目的特殊性,项目复杂多变,系统分析师要能够先于其他人员发觉问题、发觉隐患,并提早做出规避风险的策略。
列出在制定需求获取策略时的3种要紧考虑因素。
(1)可否成立起顺畅的通信途径;
(2)是不是能够获取用户对系统的功能需求和非功能需求;
(3)是不是利于在可运行系统时的治理要求。
举例说明一个系统的3个不同类型的非功能需求
非功能性需求是指软件产品为知足用户业务需求而必需具有且除功能需求之外的特性。
软件产品的非功能性需求包括系统的性能、靠得住性、可保护性、可扩充性和对技术和对业务的适应性等。
例如在银行治理系统中,由于银行数据量的庞大和对银行账户的治理需求,用户对系统的性能、靠得住性、可保护性要求很高。
平安性是对银行用户个人信息保密的大体要求;
在利用系统时,由于用户庞大,要求能快速平安的执行要求,这就对系统的性能有高需求;
银行的用户的变更比较大,需求高要求的系统保护。
软件需求分析的操作性原那么和需求工程的指导性原那么是什么?
(1)必需能够表示和明白得问题的信息域;
(2)必需能够概念软件将完成的功能;
(3)必需划分描述数据、功能和行为的模型,从而能够分层次地揭露细节;
(4)分析进程应该从要素信息移向细节信息
软件需求规约要紧包括哪些内容?
自己寻觅一个实例,亲自写一个需求规约。
软件需求规约包括:
引言、信息描述、功能描述、行为描述、查验标准、参考书目、附录。
需求验证应该有哪些人参加?
画出一个进程模型,说明需求评审应该如何组织。
参与人员:
分析人员,用户,开发部门的治理者,软件设计、实现、测试的人员。
需求分析
分析人员用户
用户要求
获取系统系统
信息需求折衷方案
系统信息
开发部门治理者软件设计、实现、测试人员
系统需求
第4章
简述软件设计时期的大体任务
软件设计的输入是软件分析模型。
利用一种设计方式,软件分析模型中通过数据、功能和行为模型所展现的软件需求的信息被传送给设计时期,产生数据/类设计、体系结构设计、接口设计、部件及设计。
✧数据/类设计将分析类模型变换成类的实现和软件实现所需要的数据结构。
✧体系结构设计概念了软件的整体结构,由软件部件、外部可见的属性和他们之间的关系组成。
✧接口设计描述了软件内部、软件和协作系统之间和软件同人之间的通信方式。
✧部件级设计将软件体系结构的结构性元素变换为对软件部件的进程性描述。
软件设计与质量的关系是怎么样的?
设计是在软件开发中形成质量的时期,设计提供了能够用于质量评估的软件表示,是将用户需求准确的转化为完整的软件产品或系统的要紧途径。
简述模块、模块化及模块化设计的概念。
在软件工程中模块是数听说明、可执行语句等程序对象的集合,具出名字、参数、功能等外部特点和完成模块功能的程序代码和模块内部数据等内部特点。
模块化,即把软件依照规定原那么,划分为一个个较小的,彼此独立的但又彼此关联的部件,事实上是系统分解和抽象的进程。
模块化设计,简单地说确实是程序的编写不是开始就逐条录入运算机语句和指令,而是第一用主程序、子程序、子进程等框架把的要紧结构和流程描述出来,并概念和调试好各个框架之间的输入、输出链接关系。
慢慢求精的结果是取得一系列以功能块为单位的算法描述。
以功能块为单位进行程序设计,实现其求解算法的方式称为模块化。
模块化的目的是为了降低程序复杂度,使程序设计、调试和保护等操作简单化。
耦合和软件可移植性的概念有何关系?
举例说明自己的结论。
所谓“耦合性”是指模块之间联系的紧密程度的一种气宇,而软件的“可移植性”是指将一个软件系统从一个运算机系统或环境移植到另一个运算机系统或环境中运行时所需工作量的大小。
可移植性是用一组子特性,包括简明性、模块独立性、通用性、可扩充性、硬件独立性和软件系统独立性等,来衡量的。
若是一个软件具有可移植性,它必然耦合性低,如此模块独立性要强。
例如,有一个图形处置软件,它应具有二维几何图形处置、三维几何图形处置、图形显示、外设操纵、数据库治理、用户界面操纵、设计分析等模块。
若是这些模块之间都是通过参数表来传递信息,那么它们之间的的耦合确实是数据耦合或标记耦合等,都是低耦合。
以后若是想要把它们移植到另一个外部环境中,这些模块容易修改(功能内聚),且接口清楚,修改可局部化。
反言之,若是这些模块都是功能内聚或信息内聚的模块,模块之间的耦合都是低耦合,也对可移植性有增进。
但不能讲具有低耦合性模块结构的软件必然具有可移植性,因为是不是具有可移植性还有其它因素的阻碍。
用自己的话描述信息隐蔽概念,并讨论信息隐藏与模块独立两概念之间的关系。
信息隐藏指在设计和确信模块时,使得一个模块内包括的特定信息(进程或数据),关于不需要这些信息的其他模块来讲,是透明的。
“隐藏”的意思是,有效的模块化通过概念一组彼此独立的模块来实现,这些独立的模块彼此之间仅仅互换那些为了完成系统功能所必需的信息,而将那些自身的实现细节与数据“隐藏”起来。
信息隐蔽为软件系统的修改、测试及以后的保护都带来益处。
通过抽象,能够确信组成软件的进程实体。
通过信息隐藏,能够概念和实施对模块的进程细节和局部数据结构的存取限制。
模块独立的概念是模块化、抽象、信息隐藏和局部化概念的直接结果。
开发具有独建功能而且和其他模块之间没有过量的彼此作用的模块,就能够够做到模块独立。
什么是模块独立性?
设计中什么缘故模块要独立?
如何气宇独立性?
模块功能独立有何优势?
(1)模块的独立性是模块化、信息隐藏和局部化等概念的直接结果。
(2)模块的独立性是很重要的:
第一,功能被划分,而且接口被简化,因此具有有效模块化的软件易于开发。
第二,由于因设计和编码修改引发的副作用受到局限,错误传播被减小,而且模块复用成为可能,因此独立的模块更易于保护和测试。
总的来讲,模块独立是良好设计的关键,从而又是保证软件质量的关键。
(3)用内聚度与耦合度来气宇独立性。
内聚度气宇同一个模块内部各个元素彼此结合的紧密程度,耦合度气宇不同模块彼其间彼此以来的紧密程度。
(4)模块功能独立的优势:
系统容易开发,系统靠得住性高,系统易于保护,软件结构清楚。
软件设计规约要紧包括哪些内容?
1.工作范围
2.体系结构设计
3.数据设计
4.接口设计
5.各部件的进程设计
6.运行设计
7.犯错处置设计
8.平安保密设计
9.需求/设计交叉索引
10.测试部份
11.特殊注解
12.附录
第5章结构化分析与设计
简述数据流图的要紧思想,概述利用数据流图进行需求分析的进程。
数据流图(DFD)描述输入数据流到输出数据流的变换(即加工),用于对系统的功能建模。
数据流图能够用来抽象地表示系统或软件。
它从信息传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换进程,同时能够按自顶向下、慢慢分解的方式表示内容不断增加的数据流和功能细节。
因此,数据流图既提供了功能建模的机制,也提供了信息流建模的机制,从而能够成立起系统或软件的功能模型。
数据流图进行需求分析的进程:
1)画出系统的输入和输出
2)画出系统内部
3)画出加工内部
4)重复第三步,直至每一个尚未分解的加工都足够简单(即没必要再分解)
别离采纳数据流方式中得哪些技术来完成用户需求的精准化、一致化和完全化的任务。
1)父图和子图平稳
2)数据守恒
3)局部文件
4)一个加工的输入数据流不能与该加工的输入数据流同名
5)每一个加工至少有一个输入数据流和一个输出数据流。
6)在整套分层数据流中,每一个文件应至少有一个加工读该文件,有另一个加工写该文件。
7)分层数据流图中得每一个数据流和文件都必需命名(除流入或流出文件的数据流),而且与数据字典一致。
8)分层DFD中的每一个大体加工(即再也不分解子图的加工)都应有一个加工规约。
在数据流图中,可否将两个加工用一个数据流相连?
可否将两个源用一个数据流相连?
什么缘故?
两个加工能够直接用数据流相连,两个源不能直接用数据流相连。
因为数据流由一组固定成份的数据组成。
在DFD中,数据流的流向能够有以下几种:
从一个加工流向另一个加工,从加工流向文件(写文件),从文件流向加工(读文件),从源流向加工,从加工流向宿。
采纳结构化分析方式写出书店治理系统的需求文档,包括数据流图及数据字典。
看到那个题目,我想起了以前自己也在电话端Android平台写了一个书店的治理系统,只是那个时候全然没有什么需求分析,只是自己一厢甘心的模拟了一个简单的流程。
也没有采纳什么结构化分析方式,就仅仅描述了几个对象及其功能。
因此我感觉能够对照着新学的软件工程的知识运用到自己的实际项目中去,
同时也能够完成这道相识的题目。
以下图确实是以前的功能结构图:
还有一些程序运行的界面:
利用结构化方式分析:
1、数据流程图
第一,
存书分数据流图:
存书进货时刻
否
第二,进货分数据流图:
进货信息进货信息
进货信息
进货信息
第三,销售分数据流图:
销售信息
第四,会员分数据流图:
会员信息会员信息
会员信息
会员信息
总数据流图:
已售信息
进货信息进货信息销售
信息
进货信息销售销售
信息信息
进货信息进货
会员信息存
书
会员信息进
会员信息货
时
间
进货信息
是否
2、数据字典
存书数据字典:
属性名
类型
长度
备注
书号
char
10
书的编号
书名
30
书的名称
作者
20
书的写作者
书的类型
简述
150
书的简单介绍
单价
smallmoney
4
书的价格
现存数量
int
店内的现有存书数量
店内位置
书在店内的具体位置
出版社号
出版社的编号
特价书
2
是否为特价书(缺省值是“否”)
出版社数据字典:
出版社号
出版社名称
出版社的名称
所在城市
出版社所在的城市
电话
15
出版社的联系电话
进货数据字典:
进价
书的进价
进货数量
每本书的进货数量
日期
datetime
8
进货的日期
销售数据字典:
售货的日期
销售量
售出的书本数量
销售金额
money
销售金额=(单价*销售量)
会员信息数据字典:
客服号
会员卡的卡号
姓名
会员的姓名
地址
50
会员的家庭住址