软件工程

软件的生命周期:问题定义、可行性研究、需求分析、概要设计、详细设计、编码和单元测试、综合测试、软件维护。
软件特点:复杂性、不可见性、演化性。
软件危机的主要原因是软件本身的特点及开发的方法
软件危机:开发和维护过程中的一系列问题
软件工程的三要素:过程、方法、工具
软件工程:一门交叉学科。目的消除软件危机。

软件由程序、数据和相关文档构成,因此文档是软件不可或缺的重要组成部分。

可行性任务:经济可行性、技术可行性、操作可行性、法律可行性

需求分析方法:功能模型(DFD数据流图)、数据模型(ER图实体关系图)、行为模型(状态转换图)、模型核心(数据字典)。

根据ISO/IEC9126定义,软件的六大质量特性:功能性(适合性、准确性、互操作性)、易用性、效率性、可靠性 、可维护性(可理解性、可测试性和可修改性)、可移植性。





ER图的基本要素:实体、属性、联系

软件设计的两个定性度量标准(模块独立):耦合和内聚

体系结构设计图形工具—层次图
数据流图分为变换型数据流图和事务型数据流图。

变换型数据流图基本呈线性形状,由输入、变换、输出三部分组成。

事务型数据流图








测试分类:单元测试、集成测试、系统测试、验收测试。

单元测试:一般由开发人员执行,采用白盒测试(结构测试)。
集成测试:一般由测试人员执行,采用黑盒测试(功能测试)。
系统测试:在实际运行环境或模拟实际运行环境下,针对系统非功能特性所做的测试。
验收测试是目的验证软件的功能和性能是否满足用户预期的要求
回归测试:是指修改了旧代码,重新进行测试,已经确认修改没有引入新的错误。

黑盒测试主要测试功能,方法为等价类划分法,正交实验法,因果法,边界值分析、场景法、决策表法等。

状态转化图的组成:状态(初态、终态、中间终态)、事件。

非功能需求:性能需求(速度、容量、负载、吞吐量、实时性)、质量属性对外接口(硬件接口,软件接口等)、约束

数据流图结构化分析的工具,结构化方法就是采用自顶向下逐层分解的思想进行分析建模的。随着分解层次的增加,抽象的级别也越来越低,即越来越接近问题的解。数据流图建模应遵循:自顶向下、从抽象到具体的原则。

模块结构图的主要组成有:模块、调用、数据、控制信息和转接符号
结构图的基本成分:模块、调用、控制

程序设计语言的基本成分包括数据、运算、控制和传输等。程序设计语言的控制成分包括顺序、选择和循环3种结构。

原型模式不能用来指导代码优化

瞬时内聚:所包含的任务必须在同一时间间隔内执行(如初始化模块)。
逻辑内聚:完成逻辑上相关的一组任务
顺序内聚:处理元素相关,而且必须顺序执行。

数据耦合:一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制参数、公共数据结构或外部变量) 来交换输入、输出信息的。
公共耦合:若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。
外部耦合:一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。
标记耦合:一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。

人机交互“黄金三原则”包括:置于用户控制之下、减少用户的记忆负担、保持界面的一致性


A.因为一个高效的测试尽可能用少量的代码。

白盒测试:白盒测试中语句覆盖是覆盖度最弱的,所以路径覆盖往往能比语句覆盖发现更多的错误。



类图:展现了一组对象、接口、协作和它们之间的关系。在面向对象系统的建模中,最常见的就是类图,它给出系统的静态设计视图。
对象图:展现了某一时刻一组对象以及它们之间的关系
用例图:展现了一组用例、参与者(Actor)以及它们之间的关系
组件图:展现了一组组件之间的组织和依赖
序列图:强调消息时间顺序的交互图
通信图:也是一种交互图,它强调收发消息的对象或参与者的结构组织
部署图:是用来对面向对象系统的物理方面建模的方法,展现了运行时处理结点以及其中构件(制品)的配置。

顺序图也叫序列图,展示了一个用例和多个对象的行为。

什么是基本事件流和备选事件流?


数据字典有以下4类条目:数据流,数据项,数据存储和基本加工


辅助软件维护过程中的活动的软件称为“软件维护工具”,它辅助维护人员对软件代码及其文档进行各种维护活动。软件维护工具主要有:1、版本控制工具;2、文档分析工具;3、开发信息库工具;、4、逆向工程工具;5、再工程工具

概要设计文档主要包括:软件体系总体结构设计数据结构及数据库设计

类图:就是举了一个例子,有父类,有子类
组件图:各个组件之间的依赖关系
通信图:有路径有序号
部署图:面向对象的物理建模,是静态部署

通信图的好处就是方便观察对象之间的消息流及其顺序。

大题:实体联系图的联系表示:1:1、1:n 和 m:n (或 1:1、1:*和*:*)

软件工程的基本要素包括方法工具过程



瀑布模型:将软件生存周期各个活动规定为线性顺序连接的若干阶段的模型,规定了由前至后,相互衔接的固定次序,如同瀑布流水,逐级下落。这种方法是一种理想的开发模式,缺乏灵活性,特别是无法解决软件需求不明确或不准确的问题。
原型模型:从初始的原型逐步演化成最终软件产品,特别适用于对软件需求缺乏准确认识的情况。
增量模型:是把软件产品作为一系列的增量构件来设计、编码、集成和测试,可以在增量开发过程中逐步理解需求。
螺旋:将瀑布模型与快速原型模型结合起来,并且加入两种模型均忽略了的风险分析,适用于复杂的大型软件。


极限编程XP:是激发开发人员创造性、使得管理负担最小的一组技术.。
水晶法Crystal:认为每—个不同的项目都需要一套不同的策略、约定和方法论
并列争球法(Scrum)使用迭代的方法:其中把每30天一次的迭代称为个冲刺, 并按需求的优先级来实现产品多个自组织和自治小组并行地递增实现产品,协调是通过简短的日常情况会议进行


软件配置管理SCM:其主要内容包括版本管理配置支持变更支持过 程支持、团队支持、变化报告和审计支持等。


模块内聚类型从高到低依次为功能、通信、顺序、过程、时间、逻辑和偶然内聚

一个模块内的几个操作是相关的,而且必须以特定的次序执行,则该模块的内聚类型为过程内聚。
模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行, 则该模块的内聚类型为时间内聚。
若一个模块的各个部分只是通过代码的逻辑结构相关联,则该模块的内聚类型为逻辑内聚。
访问或操作在同一数据结构的操作放在一个模块中,则该模块的内聚类型为通信内聚。

面向对象的4个核心概念是对象、类、继承和消息传递




根据题意部门和员工关系进行自然连接运算,应该去掉一个重复属性“部门代码”,所以自然连接运算的结果集为7元关系。


人员管理是软件项目管理的一个重要部分,在组织开发团队时,应该考虑开发人员的工作能力、知识背景、工作风格、兴趣爱好等多方面的因素。每个成员的工作任务分配清楚,不应该参与所有阶段的工作。当项目进度滞后于项目计划时,增加开发人员不一定可以加快开发进度。


在这几种开发过程模型中,原型模型不适宜大规模软件的开发



逆向工程从源代码得到软件系统的规格说明和设计信息,属于软件维护阶段行为,因此逆向工程工具属于软件维护工具。






数据流图用来记录系统中的数据和数据在特定的过程中的流动,即数据如何被采集、处理、保存和使用的(围绕信息系统的功能)。
外部实体指系统之外又与系统有联系的人或事物。它表达了该系统数据的外部来源和去处。


软件体系结构图属于概要设计阶段的工作内容


采用了三明治的测试策略
从先测试A,再测试A、B、C、D可以看出集成测试时用到了自顶向下的方式。而从先测试E、F,再测试B、E、F可以看出集成测试时用到了自底向上的方式,两者结合即为三明治方式。
策略优点:
1.较早地验证了主要的控制和判断点且较早地验证了底层模块。
2.同时由于可以两端向中间发展,所以效率也是比较高的。
3.且运用一定的技巧,能够减少了桩模块和驱动模块的开发。


参与者是指存在于系统外部并直接与系统进行交互的人、系统、子系统或类的外部实体的抽象。




据库设计中规范化是在逻辑设计阶段进行的一项工作,该工作负责把关系模式进行规范,以减少冗余,以及一定程度上消除修改异常,插入异常及删除异常。


体系结构设计:主要是指要开发的系统中包含哪些部件,这些部件与部件之间的关系就是体系结构的设计。
数据设计:也称为数据库设计,主要包含数据库的设计和这个数据所包含的核心表的设计
接口设计:用于子系统和模块之间或者内部系统和外部系统之间的各种交互,如功能描述,输入输出的定义,错误处理的设计。
过程设计:也称为模块详细设计,主要是详细模块的实现算法,以及模块所使用的数据结构。



对于较大型软件系统的需求往往难以在前期确定,所以瀑布模型最不适合。


可移植性包含:适应性、易安装性、共存性和易替换性四个特性。


答案:C D
路径覆盖:检测流程图有多少种路径,总共有6种路径
环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。
V(G)=E-N+2=10-8+2=4。









巧合内聚也称偶然内聚,模块内各部分之间没有联系,或即使有联系,也很松散,是内聚程序最低的模块。




数据流图(Data Flow Diagram):简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。
E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。在实际情况中并非总有一个属性是键,为描述这类情况,E-R图引入了弱实体元素。即没有键属性的实体型。例如本地电话号码、寝室等(如果其仅按照顺序编号的话),对应地,存在键属性的实体型则为强实体型。


风险管理属于风险控制。


4大价值观:沟通,简单性,简单,反馈与勇气
5个原则:快速反馈,简单性假设,逐步修改,提倡更改和优质工作
12个最佳实践:计划游戏(快速制定计划、随着细节的不断变化而完善)、小型发布(系统的设计要能够尽可能早地交付)、隐喻(找到合适的比喻传达信息)、简单设计(只处理当前的需求,使设计保持简单)、测试现行(先写测试代码,然后再编写程序)、重构(重新审视需求和设计,重新明确地描述它们以符合新的和现有的需求)、结队编程集体代码所有制持续集成(可以按日甚至按小时为客户提供可运行的版本)、每周工作40个小时现场客户和编码标准


ISO/IEC9126软件质量模型由三个层次组成:第一层是质量特性,第二层是质量子特性,第三层是度量指标。可靠性是一个重要的质量特性,其子特性包括成熟性、容错性和易恢复性



各个阶段都需要考虑可维护性。



Putnam和COCOMO都是软件成本估算模型。
Putnam模型是一种动态多变量模型,假设在软件开发的整个生存期中工作量有特定的分布
结构性成本模型COCOMO模型分为基本COCOMO模型、中级COCOMO模型和详细COCOMO
1.基本COCOMO模型是一个静态单变量模型,对整个软件系统进行估算
2.中级COCOMO模型是一个静态多变量模型,将软件系统模型分为系统和部件两个层次,系统由部件构成
3.详细COCOMO模型将软件系统模型分为系统、子系统和模块三个层次,除了包括中级模型所考虑的因素外,还考虑了在需求分析、软件设计等每一步的成本驱动属性的影响。

软件维护一般包括四种类型:
正确性维护是指改正在系统开发阶段已发生而系统测试阶段尚未发现的错误
适应性维护是指使应用软件适应新型技术变化和管理需求变化而进行的修改;
完善性维护是指为扩充功能和改善性能而进行的修改,主要是指对己有的软件系统增加一些在系统分析和设计阶段中没有规定的功能与性能特征;
预防性维护是指为了改进应用软件的可靠性和可维护性,为了适应未来的软硬件环境的变化,主动增加预防性的功能,以使应用系统适应各类变化而不被淘汰。



分层的数据流图是结构化分析方法的重要组成部分。对数据流图中的每个基本加工,需要有一个加工规格说明,描述把输入数据流变换为输出数据流的加工规则,但不需要描述实现加工的具体流程。可以用结构化语言、判定表和判定树来表达基本加工。



软件的可维护性是指纠正软件系统出现的错误和缺陷,以及为满足新的要求进行修改、扩充或压缩的容易程度,是软件开发阶段各个时期的关键目标。其中,可理解性、可测试性和可修改性是衡量可维护性的重要指标。



check方法由Person实现



单元测试是在模块编写完成且无编译错误后进行,侧重于模块中的内部处理逻辑和数据结构。
接受测试主要是用户为主的测试。
安装测试是将软件系统安装在实际运行环境的测试。
回归测试是在系统有任何修改的情况下,需要重新对整个软件系统进行的测试。


软件的复杂性主要体现在程序的复杂性。代码行数是度量软件复杂性的一个主要参数。





单元测试主要检查模块的以下5个特征:模块接口、局部数据结构、重要的执行路径、出错处理和边界条件·




定义风险参照水准是风险评估的一类技术,对于大多数软件项目来说成本、速度和性能是三种典型的风险参照水准。


项目规模大、开发小组对项目需求理解并了解相关领域,因此可以采用瀑布开发模型。
演化模式适用于对软件需求缺乏准确认识的情况。
螺旋模型在开发过程中加入风险分析。
喷泉模型适合于面向对象的开发方法。



语句覆盖是指选择足够的测试数据使被测试程序中每条语句至少执行一次
判定覆盖是指选择足够的测试数据使被测试程序中每个判定表达式至少获得一次“真”值和“假”值
条件覆盖是指构造一组测试用例,使得每一判定语句中每个逻辑条件的各种可能的值至少满足一次
路径覆盖是指覆盖被测程序中所有可能的路径


①偶然内聚:指一个模块内的各个处理元素之间没有任何联系。
②逻辑内聚:指模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。
③时间内聚:把需要同时执行的动作组合在一起形成的模块。
④通信内聚:指模块内所有处理元素都在同一个数据结构上操作,或者指各处理使用相同的输入数据或者产生相同的输出数据。
⑤顺序内聚:指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行, 前一个功能元素的输出就是下一个功能元素的输入。
⑥功能内聚:是最强的内聚,指模块内所有元素共同完成一个功能,缺一不可。




产品运行方面包括正确性、可靠性、易使用性、效率和完整性;产品修正方面包括可维护性、灵活性和可测试性;产品转移方面包括可移植性、 复用性和互用性

软件工程软考题目总结相关推荐

  1. 软考java题目_软件工程软考题目总结

    软件工程 软件的生命周期: 问题定义.可行性研究.需求分析.概要设计.编码和单元测试.综合测试.软件维护. 软件特点:复杂性.不可见性.演化性. 软件危机的主要原因是 软件本身的特点及开发的方法. 软 ...

  2. 软考题目快速学习法(个人笔记)

    1.19下46 2.19下24 看标面号,现在是15,看和15接近的,15-12=3,19-15=4,所以选12比较好,那就是①⑤先,顺序无区分,然后答案就出来了,如果继续往下,就是19更接近12,所 ...

  3. 【软考题目】假设某磁盘的每个磁道划分成11个物理块,每块存放1个逻辑记录。

    题目: 假设某磁盘的每个磁道划分成11个物理块,每块存放1个逻辑记录.逻辑记录R0,R1, · · ·,R9,R10存放在同一个磁道上,记录的存放顺序如下表所示: 物理块 1 2 3 4 5 6 7 ...

  4. 软考题目之头结点、头指针和首元节点

    遇到一个让人迷惑的题目. 以下关于线性表采用链式存储时删除节点运算的描述,正确的是() A.带头结点的线性链表删除结点时,不需要更改头指针. B.带头结点的线性链表删除第一个结点时,需要更改头指针. ...

  5. 软考信息系统项目管理师_信息化与信息系统2_常规信息系统集成技术_软件工程---软考高级之信息系统项目管理师004

    然后我们继续看,信息化与信息系统,首先看常规信息系统集成技术,可以看到内容很多. 首先看网络交换,然后看一下定义,再看一下分类,不是特别重要,然后再看互联设备 互联设备也不是特别重要,但是,一般有个问 ...

  6. 软考之数字签名 对称加密 非对称加密

    /*如有不对 概不负责*/ 首先 对称加密:是指加密解密使用的密钥都是一样的,对称加密也称为 私钥密码体制.大概在实际生活中就是 你有一个消息要发给一个人类,你用对称加密后发给他,然后你们事先肯定得约 ...

  7. 软考是否有用?软考证书的价值有多大?为什么要软考?

    写在前面: 由于CSDN的审查机制的原因,更多博客内容请访问我的个人博客或GitHub: 个人博客地址:个人博客 GitHub地址:GitHub 1.软考是什么?什么人具备软考的资格? 软考全称是计算 ...

  8. 计算机软考的价值,软考是否有用?软考证书的价值有多大?为...

    1.软考是什么?什么人具备软考的资格? 软考全称是计算机技术与软件专业技术资格考试,通俗来说就是职称考试,也可以说是技术水平认定考试(当然这种认定标准并不是所有企业都认可的,本人也对其保持怀疑态度). ...

  9. 软件工程专业适合考软考中级哪个科目?

    大家都知道软考分为五个专业类别,一共有27个资格考试科目. 软考中级中科目是最多的,所以就会纠结到底选哪个比较好. 下面从两方面建议报考科目 一.个人发展方向 如果你一直都是想做纯技术类的工作,而且你 ...

最新文章

  1. 梳理一下我理解的aop
  2. Java中Map的entrySet()详解 || Map.Entry的详解
  3. 杰夫 · 贝佐斯:事情瞬息万变,需要马上行动
  4. javaweb项目中遇到的一些乱码问题
  5. Microsoft Windows Workflow Foundation 入门:开发人员演练
  6. LeetCode MySQL 1364. 顾客的可信联系人数量
  7. 第一百四十一节,JavaScript,封装库--DOM加载
  8. PLC控制系统设计的基本内容
  9. 网络摄像机(大华)不知道ip地址怎么办?查询IPC的ip地址?修改IPC的ip地址?
  10. Springboot 下 ModelAndView 的简单使用
  11. 一个dsp最小系统至少要有_DSP最小系统原理图设计
  12. eps、emf等图片格式转换
  13. 无透镜计算成像文章简介
  14. 网络类型NAT3改NAT1 基于(联通)光猫桥接、路由器红米AX5、win10系统
  15. 漫威系列-《复联4》
  16. 国外著名大学的开放资源
  17. Winform中给下拉框(ComboBox或LookUpEdit)添加内容
  18. tms web core 与 kbmmw 第一次亲密接触
  19. jquery.form 异步上传文件(写的不是很好,望大家多海涵)
  20. 网络测试软件多少算快,手机怎么测网速多少兆 用手机测网速准吗

热门文章

  1. 太原理工大学现代科技学院计算机专业,太原理工大学现代科技学院有哪些院系和专业-什么专业比较好...
  2. tcl电视安装鸿蒙os,TCL电视安装第三方软件的正确姿势!亲测有效
  3. 2020--12--18--XSS漏洞介绍
  4. VMware16的安装以及VMware安装Linux(CentOS7)虚拟机教程(超详细)
  5. Vmware中鼠标移动时滚轮失效没反应Ubuntu20.04.1
  6. Elasticsearch:Pinyin 分词器
  7. wordpress主题_ripro美化子主题资源模板素材下载主题
  8. List中的并集、交集、差集的使用(并阅读源码)
  9. 【云服务架构】阿里云ECS+RDS+OSS+SLB全域旅游营销推广解决方案
  10. Log Concave Sequences(矩阵快速幂求递推)