学习通作业一

选择题
软件工程最基本的目标是保证质量
软件工程是一种层次化技术,3个层次一般指过程、方法和工具
瀑布模型属于一种线性模型
“软件危机”是指开发出的软件不能满足需求
属于敏捷方法的是看板
属于风险驱动的软件生命周期模型的是螺旋模型
一种典型的工作量分布规则称为40-20-40,其中20%的工作量是指编码
如果不能明确需求,比较好的过程模型是原型模型
软件产品与硬件产品有很大的区别,软件产品是一种( 逻辑 )产品
关于软件工程过程的说法,错误的是
A.每个活动(activities)由一系列任务(tasks)组成,每个任务由一系列动作(actions)来定义。
B.每个任务集(task sets)都应明确要完成的工作和要产生的工作产品
C.过程可以定义为沟通、策划、建模、构建和部署5种框架活动
D.活动(activities)可以按顺序执行,也可以并行执行或迭代执行。
简答题
1.统一过程和统一建模语言是同一概念吗?解释你的答案。
统一过程(RUP)是一种用例驱动的,以架构为中心的,采用迭代增量方式开发的软件工程过程。(5分)
统一建模语言(UML)是用图形方式描述一个系统的静态结构和动态行为的一种可视化的面向对象建模语言。从不同的角度为系统建模。(5分)
RUP和UML不是同一概念。
按软件工程的层次体系,RUP是过程,UML是工具。理论上二者彼此独立。不过RUP是一种特别适应于UML的过程。RUP提供了一整套以UML为基础的开发准则,用以指导软件开发人员以UML为基础进行软件开发。
2.用自己的话解释什么是敏捷。
敏捷软件开发是指一组基于迭代开发的软件开发方法,其中需求和解决方案通过自组织的跨功能团队之间的协作来开发的。敏捷方法或敏捷过程通常可以推进一个严格的项目管理过程,鼓励频繁的检查和适应,鼓励一个领导哲理的团队协作,自组织和问责制,一组工程最佳实践旨在允许快速交付高质量的软件,将客户需求和公司目标作为企业经营决策。
敏捷是一种思想,一种态度,倡导简单设计,快速交付,价值导向,响应变化。这里的价值需要注意一下,一定是用户能感知到的。敏捷是促进变革并响应变化以便在动荡的商业环境中创造利润的能力,是平衡稳定性和灵活性的能力。
学习通作业二 需求分析
选择题
用例图 是从用户使用系统的角度描述系统功能的方法
软件可行性研究的目的是( 阐述软件开发项目值得或不值得做 )
DFD中,每个泡泡(加工)有(一个输入流和一个输出流 )
在数据词典中,以下哪一项表示允许重复0至任意次( { } )
软件需求规格说明书不应包括对(算法 )的描述
结构化分析方法的主要建模手段有(数据字典和数据流图 )
ERD的基本要素包括(实体,属性,关系 )
不属于 UML 行为模型的是(类图 )
需求分析阶段的工作,可以分为:对问题的识别,分析和建模,编写相关文档,以及(需求分析复审 )
需求分析人员必须从用户那里了解到的是( 软件要做什么 )
简答题
1.如何获取需求?至少给出5种获取需求的方法并适当描述(不少于50字)
(1) 协作收集需求,由软件工程师和利益相关者共同举办参与的正式或非正式会议;
(2) 质量功能部署,用会议获取常规需求,通过客户访谈和观察、调查以及历史数据检查等犯法获取需求数据,然后形成客户意见表由客户评审,抽取期望的需求,并尽可能获取兴奋需求;
(3) 使用场景和用例来获取需求;
(4) 面向服务的方法,通过研究人类行为,创造低精度的原型等;
(5) 开发原型,由用户评估并获得反馈意见,迭代式地获取需求。
2. 可行性研究一般会分析哪些方面。答案不少于50字
(1) 经济可行性:
成本估算、成本-效益分析、货币的时间价值、纯收入、投资回收期、投资回收率等。
(2) 技术可行性:
在当前的限制条件下,该系统的功能目标能否达到;
利用现有的技术,该系统的功能能否实现;
对开发人员的数量和质量的要求并说明这些要求能否满足;
规定的期限内,本系统的开发能否完成。
(3) 社会因素可行性:
法律因素、使用因素、其它因素等。

学习通作业二 设计

选择题
详细设计的主要任务是确定每个模块的( 算法和使用的数据结构)
为了提高模块的独立性,模块之间最好是(数据耦合 )
概要设计的主要成果是(概要设计说明 )
面向对象设计中,对象的信息隐蔽是通过(封装 )来实现的
在面向数据流的软件设计方法中,一般将信息流分为( 交换流和数据流 )
软件设计和开发中实现映射的最基本手段是( 抽象 )
概要设计的目的是确定整个系统的( 功能及模块结构)
为了提高模块的独立性,模块最好是( 功能内聚 )
下面描述中,符合结构化程序设计风格的是(使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 )
结构图中,如果两个模块之间有直接连线,表示他们之间存在(关联 )关系
判断题
软件结构图可以利用数据流图映射出来。 √
在设计模块时,应使一个模块尽量包括多个功能。×
在设计输出界面时,要尽可能使用代码或缩写,以求简洁。×
在需求分析报告通过审查之前不应开始软件的设计工作。×
系统结构图是精确表达程序结构的图形表示法。因此,有时也可将系统结构当作程序流程图使用。×
简答题
列举本学期学到的设计阶段的模型(至少5种),以及该模型的用途。
用例模型、需求模型、设计模型、实现模型、部署模型。

学习通作业三 质量管理

选择题
白盒测试以程序的( 内部逻辑 )为基础设计测试用例。
对源代码来说,下列特性最重要的是( 可读性 )
检查软件产品是否符合需求定义的过程称为(确认测试)
黑盒测试不能发现下面的哪种类型的错误。( 代码冗余 )

成功的测试是指运行测试用例后( 发现了程序错误 )。
集成测试主要是为了发现( 接口错误 )
只有顺序结构的程序,其环路复杂度是( 1 )
黑盒测试是根据软件的( 功能 )来设计测试用例的。
编制一个好的程序应强调良好的编程风格,例如,选择标识符的名字时应考虑(选择含义明确的名字,以正确提示所代表的实体)
下列逻辑覆盖标准中,覆盖能力最强的是( 条件组合覆盖 )
判断题
集成测试计划是在概要设计阶段制定的。√
软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大。√
国家标准体系中,安全性标准是强制标准,相关产品和服务必须遵守。√
软件测试最好由熟悉项目的开发人员亲自承担,以提高测试的效果。×
对一个程序模块,如果发现的错误多,则残留在模块中的错误也多。√
对小的程序进行穷举测试是可能的,用穷举测试能保证程序是百分之百正确。×
简答题
1.黑盒测试与白盒测试两种方法,各有什么优缺点?
黑盒测试优点(任意一条即可,5分):
从产品功能角度有针对性的发现产品问题,容易生成测试数据。
对测试人员的技术要求相对较低。
测试团队和开发团队可以并行完成各自的任务。
缺点(任意一条即可,5分):
由于看不到代码构造,测试结果的准确性取决于测试用例的设计。

白盒测试优点(任意一条即可,5分):
可以减少由于编码不规范而引入的错误,针对性强,测试效率高。
尽早的发现产品的缺陷,修复缺陷的成本低。
缺点(任意一条即可,5分):
白盒测试并不能覆盖所有的路径。
会漏掉一些功能需求。

学习通作业四 软件项目管理

选择题
质量控制(项目生存期的各个阶段都需要实施 )。
下列( 数据库设计 )不是项目计划的一部分。
考虑各种软件开发资源时,( 人 )是最重要的资源。
下列中( 数据结构 )不属于软件配置项。
为获取正确软件,下列因素中最为关键的是( 明确的需求 )。
软件项目管理( 从项目一开始 )介入。
使用( 口头 )沟通解决复杂问题的效率最高。
下列属于软件配置管理的是( 版本控制 )。
判断题
沟通计划是项目计划的一部分。√
对软件项目做度量和估算务必精确 ×
甘特图常用于项目计划的建模。√
一个好的项目计划应该是渐进和迭代的。√
对软件的质量属性必须要给出定量的可度量指标。√
无法证明从非形式化的需求说明到源程序的转换是正确的,只能使用评审、测试等各种方法来验证软件。√
软件配置管理的目的是建立和维护整个生存期中软件项目产品的完整性和可追朔性。√
简答题
本学期软件工程的平时作业要求分组完成,你所在项目组属于哪种小组模式,回答你的小组完成了哪些工作产品,并简述项目组内各成员的分工。
小组一般应属于主程序员制或民主制。(5分)
作业有4部分,包括项目范围与视图说明、需求分析、设计和测试计划(还可能包括原型或源代码)。(5分)
简述分工再给9-15分。
按自己所在小组完成作业的情况回答即可。

2018~2019 期末考试试卷

一,单选题

1、软件是包括( 程序、数据、相关文档 )的完整集合
2、软件工程的三个层次是( 方法、工具、过程 )
3、“软件危机”的最主要原因是( 软件本身的特点及其开发方法 )
4、关于软件工程的基本原理,下列说法有误的是( 开发人员多多益善 )
5、通常原型方法最适用于( 需求不太确定的 )系统
6、在软件开发的各种资源中,( 人员 )是最重要的资源。
7、一种典型的工作量分布规则被称为 40-20-40,其中 20%的是指( 编码 )。
8、软件项目的可行性研究一般不包括( 操作可行性 )。社会可行性、经济可行性、技术可行性。
9、ER 图的基本元素包括( 实体、属性、关系 )。
10、模块化设计追求(高内聚低耦合)
11、UML主要应用于(基于对象的面向对象的分析设计方法)
12、UML静态模型不包括(状态图)类图、对象图、包图、组件图、部署图
13、在面向对象技术中,一般说来,对象不应该是( 验证用户权限 )。系统或设备、数据报告、销售人员。
14、软件测试最早开始于(需求分析)阶段。
15、下列属于黑盒测试方法的是(等价类划分)还有边界值分析。

二,多选题

16、统一过程(RUP)的过程框架包含:初始、细化、交付、构造。
17、需求分析说明书可以作为(验收测试、合同、系统设计)的依据。
18、软件开发中设计模型包括(体系结构设计、数据/类设计、构件设计、接口设计)
19、类之间的关系可以有(依赖、泛化、关联、聚合、组合、实现)。
20、当某项目的进度有可能拖延时,应该(分析延迟原因加以补救、跟客户沟通尝试推迟预定完成时间)

三,判断题

21、软件不会磨损,但软件会退化。(√)
22、软件工程中每个任务过程都需要通过审核才能进入下一个个阶段。(√)
23、不是用户的任何要求都应被列入正式的需求,另一方面,也存在用户没有明确申明但是依然被列入的需求。(√)
24、尽可能多的在原代码各处前入注释,可以提高程序的可读性。(×)
25、对于模块化设计,分解是必要的,可以提高程序的可读性。(×)
26、测试只能证明错误的存在,不能证明错误不存在。(√)
27、国家标准是由政府或国家机构制定或批准,适用于全国的标准,这些标准都是强制性的,相关产品必须严格执行标准。(×)

四,简答题

28、你觉得有哪些方法或者原则体现了软件开发的敏捷精神?
(1)尽早、持续交付有价值的软件;
(2)即使在开发后期也欢迎需求变更;
(3)经常交付可运行软件,交付的时间间隔越短越好;
(4)项目开发期问业务人员和开发人员天天在一起;
(5)围绕有积极性的个人构建项目;
(6)最富有效率的沟通方式是面对面交谈;
(7)可运行软件是进度的首要度量标准;
(8)长期保持稳定的开发速度;
(9)不断关注优秀的技能和好的设计;
(10)保持简洁;
(11)最好的架构、需求和设计出自自组织团队;
(12)经常反省自已的工作并相应调整自己的行为。

29、有哪些获取需求的方法?
(1)协作收集需求,由软件工程师和利益相关者共同举办参与的正式或非正式会议;
(2)质量功能部署;
(3)使用场景和用例来获取需求;
(4)面向服务的方法;
(5)开发原型。

30、界面设计中,怎样减轻用户的记忆负担?
(1)减轻对短期记忆的要求
(2)建立有意义的默认设置
(3)定义直接快捷方式
(4)置用户于控制之下
(5)保持界面一致性
31、如何衡量软件的质量?
(1)可读性:软件的设计文档是否轻易被其他程序员理解。可读性差的设计会给大型软件的开发和维护过程带来严重的危害。
(2)可复用性:软件系统的架构、类、组件等单元能否很容易被本项目的其它部分或者其它项目复用。
(3)可扩展性:软件面对需求变化时,功能或性能扩展的难易程度。
(4)可维护性:软件维护(主要是指软件错误的修改、遗漏功能的添加等)的难易程度。
(5)性能:处理速度快。

五,应用题

32.失物招领中心,失主可以持有效证件到中心,由工作人员负责登记失主个人信 息和所遗失物品信息;
拾到物品的人可将物品交到中心,工作人员存放物品并登记物品信息;
工作人员如果从库存物品中查询到和失物匹配的,则将失物归还并记录归还情况。
请画出该系统的第一层数据流图(5 分)。

  1. 图书馆管理系统的业务功能一般会涉及:
    用户管理功能:可以录入、修改、删除读者信息;
    图书管理功能:可以添加、修改、删除图书信息;
    书籍的借阅和归还管理,还可提供借阅预订的服务;
    信息查询功能:如图书基本信息查询,库存信息查询,借阅情况查询等。
    (1)请根据以上描述和自己对图书馆业务的理解,绘制用例图(5 分)

(2)绘制该系统的类图(5 分)

  1. 已知有如下的伪码程序:
    START
    INPUT (A, B, C)
    IF A > 1
    THEN C = A
    ELSE IF B > 1
    THEN C = B
    ENDIF
    ENDIF
    IF C < 1
    THEN C = A + B
    ENDIF
    STOP
    (1)请计算该程序的环复杂性(2 分)
    (2)使用独立路径方法(基本路径测试方法)设计测试用例(4 分)。

软件工程课本章节复习

第一章 软件工程概念

什么是软件,软件是:
(1) 能够完成预定功能和性能的可执行的指令(计算机程序);
(2) 使得程序能够适当地操作信息的数据;
(3) 描述程序的操作和使用的文档。

“软件危机”
一系列软件相关的问题在计算机的发展过程中一直存在并且还会继续恶化:
硬件的发展一直超过软件。
我们建造新程序的能力远远不能满足人们对新程序的需求,同时我们开发新程序的速度也不能满足商业和市场的要求。
计算机的普遍使用已使得社会越来越依赖于可靠的软件。如果软件失败,会造成巨大的经济损失,甚至有可能给人类带来灾难。
拙劣的设计和资源的缺乏使得我们难以支持和增强已有软件。

什么是工程,工程是(百度百科):
科学和数学的某种应用,通过这一应用,使自然界的物质和能源的特性能够通过各种结构、机器、产品、系统和过程,是以最短的时间和最少的人力、物力做出高效、可靠且对人类有用的东西。
将自然科学的理论应用到具体工农业生产部门中形成的各学科的总称。
(1) 将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。
(2) (1)中所述方法的研究。

软件工程的根本目标是保证和提高软件质量

第二章 软件工程过程

软件过程
是为一个为创建高质量软件所需要完成的活动、动作和任务的框架。
在软件过程中,技术工作的层次包括活动,活动由动作构成,动作由任务构成。
每一个任务集都由软件工程工作任务、相关工作产品、质量保证和项目里程碑组成。

提出过程模型是为了改变软件开发的混乱状况,使软件开发有序。
每个过程模型都试图在找出混乱世界中的秩序和适应不断变化这两种要求之间寻找平衡。
这些模型为软件工程工作提出了大量有用的结构 ,并为软件工程团队提供了有效的路线图。

瀑布模型
开发过程是通过一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈。
如果有信息未被覆盖或者发现了问题,那么最好返回上一个阶段并进行适当的修改

瀑布模型存在的问题:
实际很少的项目能遵守瀑布模型提出的顺序
客户通常难以清楚地描述所有的需求
客户必须要有耐心,因为只有在项目接近尾声时,他们才能得到可执行程序。
经典生命周期模型的线性特征在某些项目中会导致“阻塞”,由于任务之间的依赖性,开发团队的一些成员要等待其他一些成员工作工作完成后才能继续

RUP是一种基于用例驱动的,以系统架构为中心的迭代与增量开发软件的过程。

RUP 的分阶段:
初始
细化
构造
交付
每个阶段包含若干次迭代,每次迭代都按照一个核心工作流进行

第三章 敏捷开发

什么是敏捷?敏捷宣言的12条原则:
对我们而言,最重要的是通过尽早和不断交付有价值的软件满足客户需要。
我们欢迎需求的变化,即使在开发后期。敏捷过程能够驾驭变化,保持客户的竞争优势。
经常交付可以工作的软件,从几星期到几个月,时间尺度越短越好。
业务人员和开发者应该在整个项目过程中始终朝夕在一起工作。
围绕斗志高昂的人进行软件开发,给开发者提供适宜的环境,满足他们的需要,并相信他们能够完成任务。
在开发小组中最有效率也最有效果的信息传达方式是面对面的交谈。
可以工作的软件是进度的主要度量标准。
敏捷过程提倡可持续开发。出资人、开发人员和用户应该总是维持不变的节奏。
对卓越技术与良好设计的不断追求将有助于提高敏捷性。
简单——尽可能减少工作量的艺术至关重要。
最好的架构、需求和设计都源自自我组织的团队。
每隔一定时间,团队都要总结如何更有效率,然后相应地调整自己的行为

敏捷联盟主张:简单、拥抱变化、可持续性、递增、令投资最大化、有目的的建模、多种模型、高质量的工作、快速反馈、软件是你的主要目标、轻装前进。

什么是敏捷?
敏捷是一种态度,而不是一个说明性的过程。
敏捷是敏捷建模者们坚持的价值观、敏捷建模者们相信的原则、敏捷建模者们应用的实践组成的集合。
敏捷建模描述了一种建模的风格。当它应用于敏捷的环境中时,能够提高开发的质量和速度,同时能够避免过度简化和不切实际的期望。
敏捷是对已有方法的补充,而不是一个完整的方法论。敏捷建模的主要焦点是在建模上,其次是文档。

极限编程的价值观
沟通(Communication)
简单(Simplicity)
反馈(Feedback)
勇气(Courage)
谦逊(Modesty)

第五章 文档写作

GB 8567-88 文档的作用是:
(1)作为开发人员在一定阶段内的工作成果和结束标志;
(2)向管理人员提供软件开发过程中的进展和情况,把软件开发过程中的一些"不可见的"事物转换成"可见"文字资料。以便管理人员在各个阶段检查开发计划的实施进展,使之能够判断原定目标是 否已达到,还将继续耗用资源的种类和数量;
(3)记录开发过程中的技术信息,便于协调以后的软件开发、使用和修改;
(4)提供对软件的有关运行、维护和培训的信息,便于管理人员、开发人员、操作人员和用户之间相 互了解彼此的工作;
(5)向潜在用户报导软件的功能和性能,使他们能判定该软件能否服务于自己的需要。

GB/T 12504-90 文档一节:
必须列出在该软件的开发、验证与确认以及使用与维护等阶段中需要编制的文档,并描述对文档进行评审与检查的准则。
3.1基本文档
3.1.1软件需求规格说明书 software requirements specification
3.1.2软件设计说明书 software design description
3.1.3软件验证与确认计划 software verification and validation plan
3.1.4软件验证和确认报告 software verification and validation report
3.1.5用户文档 user documentation

文档的 重复性 和 灵活性
一个软件开发单位的领导机构应该根据本单位经营承包的应用软件的专业领域和本单位的管理能力,制定一个对文件编制要求的实施规定,主要是:
(1) 该编制哪几种文件,详细程度如何?
(2) 各个文件的编制负责人和进度要求;
(3) 审查、批准的负责人和时间进度安排;
(4) 在开发时期内,各文件的维护、修改和管理的负责人,以及批准手续。

可行性研究
GB 8566 《计算机软件开发规范》中指出
可行性研究的主要任务是“了解客户的要求及现实环境,从技术、经济和社会因素等三方面研究并论证本软件项目的可行性,编写可行性研究报告,制定初步项目开发计划。”
目的是“说明该软件开发项目的实现在技术上、经济上和社会条件上的可行性;评述为合理地达到开发目标可能选择的各种方案”。

经济可行性研究
成本估算:
购置并安装软硬件以及有关设备的费用
系统开发费用
系统安装、运行和维护费用
人员培训费用
成本-效益分析
货币的时间价值、纯收入、投资回收期、投资回收率等

技术可行性研究
在当前的限制条件下,该系统的功能目标能否达到;
利用现有的技术,该系统的功能能否实现;
对开发人员的数量和质量的要求并说明这些要求能否满足;
规定的期限内,本系统的开发能否完成。

社会因素可行性研究
法律因素
使用因素
其它因素

计算机软件需求说明编制指南
本指南适用对象:
软件客户(Customers),以便精确地描述他们想获得什么样的产品。
软件开发者(Suppliers),以便准确地理解客户需要什么样的产品。
对于任一要实现下列目标的单位和(或)个人:
a. 要提出开发规范化的SRS提纲;
b. 定义自己需要的具体的格式和内容;
c. 产生附加的局部使用条款,如SRS质量检查清单或者SRS作者手册等。

SRS 将完成下列目标:
(1) 在软件产品完成目标方面为客户和开发者之间建立共同协议创立一个基础;
(2) 提高开发效率。编制SRS的过程将使客户在设计开始之前周密地思考全部需求,从而减少事后重新设计、重新编码和重新测试的返工活动,还可以在开发早期发现若干遗漏、错误的理解和不一致性;
(3) 为成本计价和编制计划进度提供基础。SRS提供的对被开发软件产品的描述,是计算机软件产品成本核算的基础,并且可以为各方的要价和付费提供依据;
(4) 为确认和验证提供一个基准。任何组织将更有效地编制他们的确认和验证计划。作为开发合同的一部分,SRS还可以提供一个可以度量和遵循的基准(反之则不成立,即任一有关软件的合同都不能作为SRS);
(5) 便于移植。有了SRS就便于移值软件产品,以适应新的用户或新的机种。客户也易于移植其软件到其他部门,而开发者同样也易于把软件移植到新的客户;
(6) 作为不断提高的基础。由于SRS所讨论的是软件产品,而不是开发这个产品的设计。因此SRS是软件产品继续提高的基础(虽然SRS也可能要改变。

SRS 的基本要求
SRS是对要完成一定功能、性能的软件产品、程序或一组程序的说明。
对SRS的描述有两项基本要求:
(1) 必须描述一定的功能、性能;
(2) 必须用确定的方法叙述这些功能、性能。

SRS 的环境
必须认识到SRS在整个软件开发规范(见GB 8566)所规定的有关阶段都起作用。正因为如此,SRS的起草者必须特别注意不要超出这种作用的范围。这意味着要满足下列要求:
(1) SRS必须正确地定义所有的软件需求;
(2) 除了设计上的特殊限制之外,SRS中一般不描述任何设计、验证或项目管理细节。

第六章 需求工程

软件需求包括不同的层次
业务需求(business requirement
用户需求(user requirement)
功能需求(functional requirement)
非功能需求(non-functional requirement)

需求工程的任务:
深入描述软件的功能和性能
确定软件设计的约束和软件同其它系统元素的接口细节
定义软件的其它有效性需求

需求是:关于系统应该做什么,而不是如何做到的陈述
需求工程是:与陈述、商讨和制定最终需求规约相关的活动

需求获取
(1) 确定需求过程
确定如何组织需求的收集、分析、细化并核实的步骤,并将它编写成文档。对重要步骤要给予一定指导。
(2) 编写项目视图和范围文档
(3) 将用户群分类并归纳各自特点
用户群可能在使用频率、使用特性、优先等级或熟练程度等方面都有所差异。详细描述出它们的个性特点及任务状况,将有助于产品设计。
(4) 选择每类用户的产品代表
为每类用户至少选择一位能真正代表他们需求的人作为那一类用户的代表并能作出决策。
(5) 建立起典型用户的核心队伍
把同类产品或你的产品的先前版本用户代表召集起来,从他们那里收集目前产品的功能需求和非功能需求。与产品代表的区别在于,核心队伍成员通常没有决定权。
(6) 让用户代表确定使用实例
从用户代表处收集他们使用软件完成所需任务的描述,讨论用户与系统间的交互方式和对话要求。
(7) 召开应用程序开发联系会议
(8) 分析用户工作流程
观察用户执行业务任务的过程。画一张简单的示意图(数据流图)。。
(9) 确定质量属性和其它非功能需求
(10) 通过检查当前系统的问题报告来进一步完善需求
(11) 跨项目重用需求

需求分析(细化和协商)
(1) 绘制系统关联图
(2) 创建用户接口原型
用户通过评价原型将使项目参与者能更好地相互理解所要解决的问题。注意要找出需求文档与原型之间所有的冲突之处。
(3) 分析需求可行性
在允许的成本、性能要求下,分析每项需求实施的可行性,明确与每项需求实现相联系的风险,包括与其它需求的冲突,对外界因素的依赖和技术障碍。
(4) 确定需求的优先级别
(5) 为需求建立模型
这样的模型包括数据流图、实体关系图、状态变换图、对话框图、对象类及交互作用图。
(6) 创建数据字典
数据字典是对系统用到的所有数据项和结构的定义,以确保开发人员使用统一的数据定义。在需求阶段,数据字典至少应定义客户数据项以确保客户与开发小组是使用一致的定义和术语。分析和设计工具通常包括数据字典组件。
(7) 使用质量功能调配 (QFD)
一种高级系统技术,它将产品特性、属性与对客户的重要性联系起来。该技术提供了一种分析方法以明确那些是客户最为关注的特性。

需求规格说明
(1) 采用模板
许多组织都采用IEEE标准830-1998描述的SRS模板。要相信模板是很有用的,但有时要根据项目特点进行适当的改动。
(2) 指明需求的来源
要能追溯每项需求的来源,这可能是一种使用实例或其它客户要求,也可能是某项更高层系统需求、业务规范、政府法规、标准或别的外部来源。
(3) 为每项需求注上标号
(4) 记录业务规范/开展配置管理
(5) 创建需求跟踪能力矩阵
把每项需求与实现、测试它的设计和代码部分联系起来。这样的矩阵同时也把功能需求和高层的需求及其它相关需求联系起来了。

如何获取需求?
聆听用户的需求
分析人员应该与各层次的客户进行充分的交流和沟通,包括决策领导、使用部门的领导、具体使用人员、系统维护人员等,尽量清楚地理解用户的问题和要求。

数据建模 ERD
数据对象、关系、属性

DFD有四种元素:
外部实体:与系统进行交互,但系统不对其进行加工和处理的实体,用带标记的矩形表示;
加工:对数据进行的变换和处理,用带标记的圆圈表示;
数据流:在数据加工之间或数据存储和数据加工之间进行流动的数据,用带标记的箭头表示;
数据存储:在系统中需要存储的实体,用带标记的双实线表示。

数据流图不应反映处理的顺序

第七章 UML

Uml的内容在uml中考,基本不包括(大部分)在软工里面。

第十一章 实现

实现就是:将详细设计转化为某种编程语言的正确的程序。

实现不仅需要编写代码,也需要测试和调试代码,以及编译代码。通常还需要配置管理来跟踪代码的不同版本。

一个好的实现应该具备的特征:
可读性:代码可以被其他程序员轻松地阅读和理解
可维护性:可以被轻松地修改和维护
性能:运行速度尽可能块
可追溯性:代码元素和设计元素相对应,可以追溯回设计或者需求
正确性:应当完成打算做的事情(和需求相符)
完整性:满足所有的需求

软件工程项目对编码的要求
不仅仅是源程序语法上的正确性
也不只是源程序中没有各种错误
还要求源程序具有良好的结构性
和良好的程序设计风格。

缩写的技术
不要试图一次使用其中所有的技术。
使用标准的缩写(常用缩写,如列在字典缩写表中的)。
去掉所有的非大写元音字母(如Computer写成Cmptr,Screen写成Scrn,Integer写成Inter等)。
使用每个单词的头一个或头几个字母。
截掉每个单词头一至三个字母后面的其余字母。
使用变量名中每一个有典型意义的单词,最多可用三个单词。
每个单词的第一个和最后一个字母。
去掉无用的后缀:ing,ed等等。
保留每个音节中最易引起注意的发音。
反复交替地使用上述技术,直到变量名长度缩短至8到20个字母为止,或者到你所用语言规定的长度为止。

第十二章 软件质量

质量的定义是:“某一事物的特征或属性”

我们可以对软件质量做如下定义:
明确声明的功能和性能需求、明确文档化过的开发标准、以及专业人员开发的软件所应具有的所有隐含特征都得到满足。

“质量控制”是为了保证每一件工作产品都满足对它的需求而应用于整个开发周期中的一系列审查、复审和测试。

第十四章 安全工程

应把保密、信任和安全当作最重要的质量属性。

第十五章 度量与估算

应该满足于事物的本性所能容许的精确度,当只能近似于真理时,不要去寻求绝对的准确

数据流图

设计测试用例
等价类划分
有效等价类和无效等价类
边界值分析
等价类的边界

软工复习一万字资料大全总结超强无敌版稳过乱过相关推荐

  1. 【考研经验】19南京大学考研经验帖,软工从入门到入土

    转载于 王道论坛 原作者  纯捡垃圾恰的 抱歉这么长时间才出了经验帖,本来不是很想出这个经验帖,害怕误人子弟.因为考研复习是小马过河,盲信经验帖后果是很严重的,所以我下面提到的建议和教训,大家做一些借 ...

  2. 【软件工程】什么?你还在复习软工但是不知道背哪里?速看!--电子科技大学2023年期末考试

    特别提醒:此篇文章仅针对砂砖的软工考试! 再特别提醒!!!考试中的题目来自老师上课讲的,并无出入.如果考试内容不符 ,哥们也不知道说啥了. 写在前面:完整pdf版见Github Github-Trae ...

  3. 计算机828专业课包括哪些,上海海事大学计算机软工专业课828数据结构及程序设计复习指导...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 一.为什么选择二战海事? 因为一战调剂到海事参加复试,不仅有了复试数据库笔试题型以及熟悉笔试考察的侧重点,因当晚知道被刷,也在复试群向上岸的同学收集了一起 ...

  4. 西安电子科技大学833真题_21西安电子科技大学计算机/软工考研经验分享

    21西安电子科技大学计算机/软工考研经验分享. 推荐一个公众号[西电研梦],里面有833/834历年真题和讲解,还有西电951真题.更有数学学姐学长免费提供数学答疑,还有专业课学长提供专业课答疑 对西 ...

  5. 软工专硕考研_18武汉理工大学软工专硕考研经验分享(学渣版)

    本帖最后由 清泉流响 于 2018-4-10 08:14 编辑 2018年4月9号上午9.43分 地点:江苏昆山 在做的事情:上班摸鱼,2018考研已经告一段落,本着吃水不忘挖井人的理念,特此将学渣版 ...

  6. 2018软工实践作业一

    一.自我介绍 031602409:我是很佛的后敬甲:我的爱好是七七八八的运动:我最喜欢石锅拌饭:又要开学了,真刺激~ 二.问题回答 (1)回想一下你初入大学时对计算机专业的畅想 当初你是如何做出选择计 ...

  7. [软工导论③]实验报告三(机票预订系统的需求分析建模、总体结构设计、详细设计、测试))

    [软工导论③]实验报告二(教务管理系统之子系统的需求分析建模.总体结构设计.详细设计.测试)) 实验一 机票预订系统的需求分析 一.目的与任务 目的:确定项目要做什么及其可实施性,在此基础上完成系统的 ...

  8. 软工1816 · 第七次作业 - 需求分析报告

    软工1816 · 第七次作业 - 需求分析报告 组长本次作业的博客 评审表 <需求规格说明书> 成员分工明细以及TODO-list 负责人 分工明细 TODO-list 白晨曦 1.规划项 ...

  9. 软工实践第七次作业- 需求分析报告(第五组)

    软工1816 · 第七次作业 - 需求分析报告 组长本次作业的博客 评审表 <需求规格说明书> 成员分工明细以及TODO-list 负责人 分工明细 TODO-list 白晨曦 1.规划项 ...

最新文章

  1. tomcat的log日志乱码解决方案
  2. html怎样获取画面项目的坐标,如何使用HTML5实现地理位置的获取
  3. 超详细的2440中断机制分析
  4. 如何在Jsp上传图片
  5. 一步步学习 SAP CDS view Text Association 在 SAP Fiori Elements 中的应用
  6. php ajax实现分页效果
  7. 【HDU - 5015 】233 Matrix (矩阵快速幂)
  8. Mybatis源码阅读(四):核心接口4.2——Executor(下)
  9. java 类加载器-基础
  10. Reactor线程模型
  11. android studio 使用问题 解决方法
  12. UML用例图分析——铁路售票系统
  13. 必须了解的EXCEL常用函数都有哪些?【附动图详解】数据分析
  14. 布同:3D网游开发整体流程简述
  15. 我的2018---艰难的一年
  16. 计算机桌面壁纸小,电脑的桌面壁纸大小怎么设置
  17. 初二因式分解奥数竞赛题_初中数学因式分解(含答案)竞赛题精选.doc
  18. 电脑删除的文件如何找回?
  19. UnhandledPromiseRejectionWarning: MongoError: command insert requir es authentication
  20. 08---HTML+CSS---float浮动

热门文章

  1. 网络安全该从何入手?
  2. 安卓键盘加上数字_安卓键盘键值对照表
  3. HBaseAPI——IDEA操作HBase数据库HBase与Hive的集成
  4. 【Bootstrap】007-全局样式:按钮
  5. 场效应管和三极管对比
  6. Java Agent入门教程
  7. 向量的点乘与叉乘的几何意义
  8. 如何使用Excel管理项目?
  9. 代理网易云音乐,免费听歌与下载
  10. BAPI_ACC_DOCUMENT_CHECK BAPI_ACC_DOCUMENT_POST BAPI_TRANSACTION_COMMIT