软件设计师复习笔记__软件工程与软件过程

软件设计师笔记公告(备考攻略) 软件设计师说明文档 阅读详情

1.软件工程的基本知识.

软件包含3部分: 1.计算机程序 2.数据结构 3.描述程序的操作和使用文档.

(1)软件生存周期和开发方法.

<1> 软件生存周期.

软件生存周期包括: 需求阶段, 设计阶段,实现阶段,测试阶段,安装阶段和运行维护阶段.

*1.可行性分析与项目开发阶段.

参与者: 用户, 项目负责人, 系统分析师.

产生: 可行性分析报告和项目开发计划.

*2.需求分析

参与者: 用户,项目负责人,系统分析师.

产生: 软件需求说明书.

*3.概要设计

参与者: 系统分析师与软件设计师

产生: 概要设计说明书.

*4.详细设计.

参与者: 软件设计师和程序员.

产生: 详细设计文档

*5.编码.

*6.测试.

*7.维护.

<2>软件生存周期模型.

常见的: 瀑布模型,螺旋模型,演化模型,喷泉模型等,目前流行的有: 统一过程和敏捷方法.

<3>软件开发方法

*1.结构化方法

由结构化分析,结构化设计,结构化程序设计组成.它是一种面向数据流的开发方法.

结构化方法指导思想: 自顶向下和逐层分解,他的基本原则是功能的分解与抽象.

特别适合于解决数据处理领域的问题,但不适用于解决大规模和特别复杂的项目且难以适应需求变化.

*2.Jackson方法.

它是一种面向数据结构的开发方法.

JSP方法: 是以数据结构为驱动,适用于小规模项目,当输入数据结构和输出数据结构没有对应关系的时候,难以使用该方法.

JSD方法: JSP的扩充,是一种完整的系统开发方法.它特别强调操作之间的时序性,以事件作为驱动,是一种基于进程的开发方法.适用

时序性较强的系统.如数据处理系统和实时控制系统.

*3.原型化方法.

适用于用户需求不清,业务理论不确定和需求经常变化的情况.

*4.面向对象的开发方法.

主要是: 按照人类思维方法和认识世界的方法来分析和解决问题,主要有Booch方法,Coad方法和OMT方法.

*5.基于构件的开发方法.

*6.面向服务的软件开发方法.

(2)系统分析的基础知识.

<1>需求的分类.

*1.功能需求.

*2.非功能需求:可靠性,性能,响应时间,容错性和扩展性,可移植性等.

*3.设计约束.

<2>需求工程.

*1.需求开发: 需求获取,需求分析,编写规格说明书和需求验证4方面的工作.

*2.需求管理: 包括定义需求基线,处理需求变更和需求跟踪等方面的工作.

(3)系统设计知识.

<1>.系统设计的任务.

A.概要设计

*1.软件系统总体结构设计.

模块的划分.调用关系和接口.

*2.数据结构的设计.

*3.数据库的设计.

概念设计(ER图),逻辑设计,物理设计

*4.概要设计文档编写.

*5.评审

B.详细设计

<2>.系统设计的基本原理.

*1.抽象

*2.模块化

*3.信息隐藏

*4.模块独立.

a.耦合性

无直接耦合,数据耦合,标记耦合,控制耦合,公共耦合,内容耦合.

b.内聚性

偶然内聚,逻辑内聚,时间内聚,通信内聚,顺序内聚,功能内聚.

(4).总体结构设计.

<1>.系统总体结构设计原则.

*1.分解--协调原则

*2.自顶向下原则

*3.信息隐藏抽象原则

*4.一致性原则

*5.明确性原则

*6.模块间要低耦合,模块要高内聚

*7.模块的扇入系数和扇出系数要合理

一个模块调用其他模块的个数称为该模块的扇出系数.

一个模块被其他模块直接调用的个数称为扇入系数.

平均扇入系数和扇出系数一般为3或4,不超过7

*8.模块规模要适当

<2>子系统的划分原则.

*1.子系统要具有相对独立性.

*2.子系统之间的数据的依赖性要尽量少.

*3.子系统的划分的结果应该是的数据冗余较小.

*4.子系统的设计应该考虑今后管理发展的需要.

*5.子系统划分应该便于系统分阶段实现.

*6.子系统的划分应考虑到各类资源的充分利用

<3>子系统的结构设计.

必须考虑以下几个问题:

*1.每个子系统如何划分成多个模块

*2.如何确定子系统之间,模块之间传送的数据及其调用关系.

*3.如何评价并改进模块结构的质量.

*4.如何从数据流图导入模块结构图.

<4>.系统模块的结构设计.

4个要素:

*1.输入和输出

*2.处理功能

*3.内部数据

*4.程序代码

<5>结构化系统设计方法(SD)

这一部分主要是数据流图的设计与分析.

<6>面向数据结构的系统设计方法

主要介绍Jackson方法.

<7>系统详细设计

*1.代码设计

*2.输出设计

*3.输入设计

*4.处理过程设计

对于数据流图中加工的处理

a.程序流程图.

b.盒图(N-S图)

c.决策树

d.决策表

*5.用户界面处理

*6.安全控制设计

环境性因素和数据处理因素

(5)系统实施知识

<1>系统实施的主要任务

购置设备,软件准备,培训,数据准备,投入转换和试运行.

<2>系统实施的步骤

购置设备,数据库搭建,程序设计,输入数据并进行系统测试,人员培训

<3>程序设计

依据: 层次式-处理-输出图(HIPO图)

*1.程序设计方法

结构化程序设计方法,快速原型式程序开发,面向对象程序设计方法.

*2.程序设计的基本模块

*3.程序设计语言的选择

(6)测试与调试

<1>.系统测试的意义,目的及原则.

意义: 为了发现软件的错误.

目的: 以最少的人力和时间发现潜在的各种错误和缺陷.

<2>.测试过程

a.制定测试计划.

b.编写测试大纲

c.根据测试大纲设计和生成测试用例,产生测试设计说明文档

d.实施测试

e.生成测试报告.

<3>.测试策略

*1.单元测试(一般采用白盒测试)

模块接口,局部数据结构,重要的执行路径,出错处理和边界条件

编写驱动模块和桩模块

*2.集成测试

a.非增量式集成

先测试每个模块,最后整合起来一起在测试一遍.

优点: 可以对模块进行并行测试,能充分利用人力物力并加快工程进度

缺点: 出现错误时不容易查找和定位

b.增量式集成

把下一个需要测试的模块组合到已测试好的模块中,测试完后再将下一个需要测试的模块组合起来进行测试.逐步把所有的模块组合在

一起并完成测试

优点:范围一步一步扩大,容易定位且已测试的模块可在新的条件下再测试,测试更彻底.

c.面对对象的测试.

基于集成的测试和基于使用的测试.

*3.确认测试

进一步检查软件的功能和性能是否与用户要求的一样.

分为:

a.有效性测试: 在模拟的环境下,通过黑盒测试验证所开发的软件是否和需求规格说明书一样.

b.软件配置审查

c.验收测试:以用户为主的测试.

d.安装测试.

*4.系统测试

将已经确认的软件,计算机硬件,外设和网络等结合在一起进行信息系统的各种集成测试和确认测试.

a.恢复能力测试,

b.安全性测试.

c.压力测试.

d.性能测试.

e.可靠性.

f.安装测试

<4>测试用例的设计

*1.等价类

*2.边界值

*3.错误推断

*4.因果图

<5>调试

试探法,回溯法,对分查找法,归纳法,演绎法

2.软件过程的基本知识

(1)软件过程模型

<1>瀑布模型

以文档为驱动,适用于需求明确的项目.但缺乏灵活性

<2>演化模型

通过开发原型,然后根据客户的反馈和意见改进原型.适用于需求模糊的情况.

<3>螺旋模型

结合了瀑布模型和演化模型,并加入了风险分析.

过程: 1.制定计划. 2.风险分析. 3.实施工程. 4.用户评估.

<4>喷泉模型

以用户需求为动力,以对象为驱动的模型.适合于面向对象开发方法.

使得开发过程具有跌代谢和无间隙性(使得各个过程没有明确的界线).

<5>统一过程(UP)

以用例驱动,以架构为中心,迭代并且增量

<6>敏捷方法

(2)统一过程(UP)

<1>用例驱动

<2>以架构为中心.

<3>迭代和增量

<4>统一过程的生命周期

分为: 初始阶段, 精化阶段, 构建阶段, 移交阶段, 产生阶段.

<5>RUP

(3)敏捷方法

目标: 尽可能早的,持续的对有价值的软件的交付使客户满意.

4条宣言与12条原则.

<1>极限编程(XP)

四大价值观: 沟通,简单,反馈和勇气

<2>水晶法

她认为每个不同的项目都需要一套不同的策略,约定和方法论,适用于规模在100-500个功能点的软件.

<3>并列争球法

她使用迭代的方法,把每30天一次的迭代称为一个冲刺并按需求的优先级来实现产品.

<4>自适应软件开发.

<5>特征驱动软件开发

(4)软件过程改进

<1>软件过程评估的意义

*1.软件过程改进的需要

*2.降低软件风险的需要

*3.集成各种过程改进工作的需要.

<2>软件能力成熟度摸得简介(CMM)

他是对软件进化阶段的描述

理解关键过程域

软件过程成熟度分为:

初始化级,可重复级,已定义级,已管理级,优化级

<3>能力成熟度集成模型(CMMI)

能力等级0-5.

3.软件开发计划与管理

(1)软件项目管理

<1>成本预算

*1.自顶向下估算法.

优点: 重视系统级工作,工作量小,速度快.

缺点: 忽视低级别上的技术困难,使得成本上升.

*2.自顶向上估算法.

将软件细分并由负责该部分子任务的人员来负责估算

优点: 估算精准

缺点: 估算缺乏各个子项目之间

*3.差别估算法.

与已经完成的项目进行比较,找出不同之处并估算其对成本的影响.

优点: 提高估算准确度/缺点: 不容易明确差别的界线.

*4.其他: 专家估算法,类推估算法算式估算法.

*5.常见的估算模型: Putnam模型和COCOMO模型

<2>风险分析

*1.风险识别.

建立风险条目检查表

*2.风险预测.

*3.风险评估.

*4.风险控制.

<3>进度管理

*1.甘特图(Gantt)

01300000291092124133739769845

优点: 能清晰地描述任务的开始,结束以及进展

缺点: 无法反映各个任务之间的依赖关系,难以确定其关键所在.

*2. 项目计划评审技术(PERT图)

anli4-7

能准确的反映出各个任务之间的关系与找出关键路径.

<4>人员管理.

人员能力成熟度模型(P-CMM)

(2)软件配置管理(SCM)

<1>基线

<2>软件配置项<SCI>

<3>软件版本控制

<4>变更控制

(3)软件质量管理

<1>软件质量的特性

*1.功能性: 适应性,准确性,互用性,依从性,安全性

*2.可靠性: 成熟性,容错性,易恢复性

*3.易使用性: 易理解性,易学性,易操作性

*4.效率: 时间特性,资源特性

*5.可维护性: 易改变性,易分析性,稳定性,易测试性

*6.可移植性: 适应性,易安装性,一致性,易替换性

<2>Mc Call软件质量模型

<3>软件质量保证

<4>软件复杂度

*1.代码行度量法

*2.McCabe度量法

公式: V(G)=m-n+2p 其中: m 弧数, n 节点数, p=1

<5>软件评审

<6>软件容错技术

4.系统运行和维护知识

(1)系统维护概述

<1>系统可维护性概念

维护人员理解,改正,改动和改进软件的难易程度.

*1.系统可维护性的评价指标

可理解性,可测试性,可修改性

*2.维护与软件文档

*3.软件文档的修改

<2>系统维护的内容及类型

*1.硬件维护

*2.软件维护

*3.数据维护

<3>系统维护的管理和步骤

(2)系统评价

(3)系统评价的指标

【软考-软件设计师精华知识点笔记】考试大纲及题型介绍 前言 今年上半年参加了软件设计师考试,考完感觉稳了,考试内容与我学习的内容基本一致,因此感觉自己的笔记可以帮助其他准备考试的童鞋。 《软件设计师教程(第5版)》 + 真题 + 大纲 链接:https://pan.baidu.com/s/1P21GKMk8QP7XxSsU-TH9Cg?pwd=优快云 提取码:优快云 考试大纲及题型 考试总纲: 掌握计算机内的数据表示、算术和逻辑运算方法; 掌握相关的应用数学及离散数学基础知识; 掌握计算机体系结构以及各主要部件的性能和基本工作原理; ...... 阅读详情

相关推荐

软考中级软件设计师--考试准备

准备参加软考–中级软件设计师,作为非计算机专业的前端开发,前期多准备一些是很有必要的。

mjzhang1993的博客 4639

软考 - 软件设计师 - 完整知识点笔记 - 按考频整理

说明: 此笔记是在使用软考真题APP过程中做的,按照考点频率高 到 低的排列,考点后的数字为真题数量。 我是用来查缺补漏用的,知识点并不完整,如果需要完整的笔记,请移步到我的其他笔记:完整笔记地址专业英语(110)业务用例,业务对象:在采用面向对象方法进行业务建模时,业务用例和参与者一起描述(组织或企业所支持的业务过程) 而业务对象模型描述( 业务结构以及结构元素如何完成业务用例)。面向对象分析阶段:认定对象,组织对象,对象间的相互作用,基于对象的操作。 面向对象设计阶段:识别类及对象、定义属性、定义服务、

weixin_44934104的博客 6871

软考中级-软件设计师 知识点整理(一篇就过了 建议收藏)

软考中级-软件设计师上午题知识点总结

片言可决讼,半纸能缚龙 17万+

软考《软件设计师》内容知识点(背)--个人笔记

软考记录笔记()更新

Single_minde的博客 5290

软件设计师---软件工程

软件设计师---软件工程

我从不打没有准备的仗! 2万+

全面备战软考软件设计师的复习宝典

本文还有配套的精品资源,点击获取 简介:备考软考软件设计师涉及诸多核心知识点,包括数据结构、算法、编程语言原理、软件工程方法等。复习资料应包含全真模拟试题、考试考点深度分析、历年真题详解、操作系统知识、专业辅导材料、专业教材推荐以及软件设计全过程。这些资料有助于考生全面理解考试内容,熟悉考试题型和趋势,提升解题技巧和实际能力,为考试做好充分准备。 1. 全真模拟试...

weixin_32925455的博客 1240

软件设计师笔记(精简)

软件设计师笔记(精简)

CC的博客 2040

软考中级 软件设计师 复习笔记 [已过]

软考中级 软件设计师 笔记

ADEXOM的博客 6523

软件设计师备考知识点笔记

软件设计师知识点笔记 1.数据的表示 a.考点1:进制转换 数据的表示-按权展开法(将其他进制数转化为10进制) 思路: R进制转十进制使用按权展开法,其具体操作方式为:将R进制数的每一位数值用R形式表示,即幂的底数是R,指数为k,k与该位和小数点之间的距离有关。当该位位于小数点左边,k值是该位和小数点之间数码的个数,而当该位位于小数点右边,k值是负值,其绝对值是该位和小数点之间数码的个数加1。 数据的表示-短除法 十进制转R进制使用短除法(除基取余法) 例如将94转化为二进制数 注意:上图需除到零

m0_45210394的博客 4733

软件设计师 考试(复习笔记+重点总结)

软件设计师考试是计算机职业资格证的最重要的一个认证

数学建模美赛O奖论文研读启示录——从模仿开始

数学建模美赛O奖论文哪些地方比较出彩?我们可以从中学到什么东西?可以从哪些地方进行模仿?我总结了一些O奖论文里我认为比较好的地方,跟大家一起学习交流!

小宇的修炼之路 5429

《软件设计师》复习笔记(1)——考试介绍和目录

考试科目>考题形式>考试时长>合格标准计算机与软件工程知识75道单选题(每题1分,总分75分)2023年11月改革机试后,合并考试,总时间240分钟45分及以上软件设计6道问答题,其中前4道必做,后两道题选做一题(每题15分,总分75分)45分及以上两门考试必须同时通过,才能拿到证书。否则下次重考两门。

一些知识和经验 1529

自动驾驶IDM与MOBIL模型

IDM模型,自动驾驶

不想学好数学的汽车工程师不是一个好的程序员 1万+

软件设计师(中级)详细复习过程总结

上周末刚刚参加完软件设计师中级考试,趁热打铁写一篇详细的总结作为记录,同时和小伙伴分享一下整个复习过程,希望对大家有帮助。

李赛男 2800

五子棋AI实战:极大极小搜索、Alpha-Beta剪枝与禁手实现

博弈树搜索是双人零和博弈AI的经典决策框架,其核心思想是假设对手最优应对,通过递归遍历走法空间寻找最优解。极大极小搜索配合Alpha-Beta剪枝,能在不影响决策结果的前提下将搜索量降至平方根级别,大幅提升搜索效率。在五子棋场景中,还需处理黑棋禁手规则,包括双三、双四和长连判定,并将其融入搜索框架。评估函数基于棋型识别对局面打分,走法排序和迭代加深进一步优化剪枝效果。这些技术共同构成了一个可运行的五子棋AI,适用于棋类AI入门与博弈搜索实践。

weixin_29054399的博客 128

DRAM刷新refresh相关知识归类-基础小知识(三)

RAM每一位数据都是通过芯片内的一个小电容充电(或低电平)存储的。但随着时间的推移,电容逐渐失去电荷。为避免丢失存储的数据,必须定期刷新以将电荷(如果存在)恢复到其原始级别。此刷新过程包括读取每个位的值,然后将其写回。在此“刷新”期间,内存被占用,无法执行加载或存储位等正常操作。知道了应该这么做,但怎么去做以及有什么办法更有效率去做,就是接下来要整理的内容。

Paul 安的博客 1万+

20天通过中级软件设计师攻略(附资料)

这种方式进行复习,效率极大的提高,最终在20天内完成复习,通过考试。

Victor.Chang 2万+

YOLOv11 改进入门篇 | 轻量级涨点技巧:GhostConv 替代普通卷积的实战指南

摘要: 本文介绍如何通过GhostConv改进YOLOv11,实现轻量化涨点。YOLOv11深度增加导致参数量、延迟和内存占用上升,GhostConv通过“本征特征+线性变换”策略,在精度几乎无损的情况下降低30%-50%计算量。文章详细解析GhostConv原理,对比普通卷积的参数量和FLOPs优势,并提供完整的代码级改造流程,包括模块实现、注册及网络配置。实验表明,该方法有效提升边缘端推理效率,适用于移动端等资源受限场景。

shrgegrb的博客 1653

2023下软件设计师备考分享(机考改革)

一、机考最大的感受(⭐⭐⭐) 1、个人情况说明 2、试卷难易程度 3、机考作答情况 4、考场内部情况 二、学习备考方案(⭐⭐⭐) 1、大纲要求 2、b站up主zst 3、准备工作 4、复习计划 三、软件设计师笔记(⭐⭐⭐) 1、软件设计师笔记 2、章节分值占比 四、总结建议(⭐⭐⭐) 1、踏踏实实学习 2、稳稳当当考试

你相信光吗 7846

history 历史命令记录功能如何防坏人(高级)

在 Linux 下面可以使用 history 命令查看用户的所有历史操作,同时 shell 命令操作记录默认保存在用户目录的 .bash_history 文件中。通过这个文件可以查询 shell 命令的执行历史,有助于运维人员进行系统审计和问题排查,同时在服务器遭受黑客攻击后,也可以查询黑客登录服务器的历史命令操作。但是黑客在入侵后,为了抹除痕迹,会删除 .bash_history 文件,这个就需...

墨痕诉清风的博客 1656

VN5620以太网测试——DoIP配置

CANoe(CAN open environment)VN5620 :是一个紧凑而强大的接口,用于以太网网络的分析、仿真、测试和验证。VN5620 接口支持各种可能的应用。它适用于与其他总线系统、网络参与(例如在模拟和生成帧、测试中的负载和错误)的同步以太网监控。在2021年Vector公司的以太网接口卡VN5610和VN5640设备已经陆续停产,相应被VN5620和VN5650代替。参考文章了解DoIP协议——汽车以太网应用介绍。

诊断协议那些事儿's blog 3006

软件设计师笔记

PS:非原创!辛苦原作者的整理 作者序言 为什么要分享软设笔记? 一直以来,我都认为人类世界最美好的事情莫过于用一个生命去影响另一个生命(前提是正面影响)。如果我的一点点努力,能够帮助你通过软考,我想,这将是很有意义的一件事情。考软设的人很多,我作为过来人,希望能够给予你们一些帮助。 为什么要写序言? 每一位读者,都不是我本人。看这本笔记,未必知道如何去看,所以我写下想说的话,希望你们在...

Toky_min的博客 2914

高级数据结构之R树(R-tree)

R树(R-tree)是一种将B树扩展到多维情况下得到的数据结构,它最初由Antonin Guttman于1984年提出。B树的结点中会存储一个键的集合,这些键把线分成片段,沿着那条线的点仅属于一个片段。因此,B树使得我们可以很容易地找到点。如果把沿线各处的点表示成B树结点,我们就能够确定点所属唯一子结点,在那里可以找到该点。 Antonin Guttman在他提出R树的经典论文中给出的R树例子...

白马负金羁 1万+

2024年软件设计师中级(软考中级)详细笔记【5】软件工程基础知识上(分值10+)

最新超详细软考中级笔记,适合备考软考、零基础小白、就业提升考证等人群。本篇主要阐述关于软件工程概述、软件过程模型(瀑布模型、增量模型、演化模型、喷泉模型、统一过程、敏捷方法)、需求分析、概要设计、详细设计等知识点。

XFanny的博客 8125

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

软件设计师备考攻略

软件设计师题目广,深度浅,主要会考到几乎计算机所有的专业课,对于非计算机科班报考难度较大。

许晨的博客 7413

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

软件设计师考试详细介绍(最全)

一 报名考试及复习 1 考试简介 软件设计师考试属于全国计算机技术与软件专业技术资格考试(即软考)中的一个中级考试。通过本考试的合格人员能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计;能够编写程序设计规格说明书等相应的文档;能够组织和指导程序员编写、调试程序,并对软件进行优化和集成测试,开发出符合系统总体设计要求的高质量软件;具有工程师的实际工作能力和业务水平

u010859228的博客 5万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: 大小之差
下一篇: 软件设计师复习笔记__面向对象基础
橘子局
博客等级 码龄14年 70粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值