学习资料汇总—大三


参考网址

tcp/ip

[socket编程](socket是什么意思_C语言中文网 (biancheng.net))

windows socket编程五种模型_u012842273的博客-CSDN博客)

软件工程

1、什么是软件危机

软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。

2、软件生存期,各阶段工作

1、软件生命周期

软件生命周期又称为软件生存周期或系统开发生命周期,是软件的产生直到报废的生命周期,周期内有可行性分析和项目开发计划、需求分析、概要设计,详细设计,软件构造,测试,维护,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。 但随着新的面向对象的设计方法和技术的成熟,软件生命周期设计方法的指导意义正在逐步减少。 生命周期的每一个周期都有确定的任务,并产生一定规格的文档(资料),提交给下一个周期作为继续工作的依据。 按照软件的生命周期,软件的开发不再只单单强调“编码”,而是概括了软件开发的全过程。

2、各阶段工作

1、可行性研究和项目开发计划

确定好要解决的问题是什么(what),通过对客户的访问调查,系统分析员扼要的写出关于问题性质、工程目标和工程规模的书面报告,经过讨论和必要的修改之后这份报告应该得到客户的确认

确定该问题是否存在一个可以解决的方案。可行性研究的结果是客户做出是否继续进行这项工程的决定的重要依据,一般来说,只有投资可能取得较大的效益的那些工程项目才值得继续进行下去。

3、需求分析

深入具体的了解用户的需求,在所开发的系统要做什么这个问题上和用户想法完全一致。明确目标系统必须做什么,确定目标系统必须具备哪些功能。通常用数据流图、数据字典和简要的算法表示系统的逻辑模型。用《规格说明书》记录对目标系统的需求。

4、概要设计(总体设计)

概括的说,应该怎样实现目标系统,设计出实现目标系统的几种可能方案,设计程序的体系结构,也就是确定程序由哪些模块组成以及模块之间的关系。

5、详细设计

实现系统的具体工作,编写详细规格说明,程序员可以根据它们写出实际的程序代码。详细设计也称模块设计,在这个阶段将详细的设计每个模块,确定实现模块功能所需的算法和数据结构。

6、软件维护

通过各种必要的维护活动使系统持久的满足用户的需求。主要分为 改正性维护、适应性维护、完善性维护、预防性维护。

3、软件过程模型,几种模型的特点和适应情况

软件工程之软件过程模型_hzqing的博客-CSDN博客_软件工程过程模型

软件过程模型(软件开发模型) - jason小蜗牛 - 博客园 (cnblogs.com)

模型特点和适应情况

瀑布模型

瀑布模型

增量模型

非整体性开发模型。有基于瀑布的逐渐增量模型和基于原型的快速原型模型

它推迟了某一些阶段或者整个阶段中的细节从而较早的产生工作软件

增量模型

螺旋模型

螺旋模型将开发分为几个螺旋周期,每一个螺旋周期课分为四个步骤

1、制定计划:确定莫表,方案,和限制条件

2、风险分析:评估方案,标识风险和解决风险

3、实施工程:开发确认产品

4、客户评价:计划下一周期的工作

螺旋模型

喷泉模型

可以使开发过程具有迭代性,和无间歇性

喷泉模型

原型模型

快速原型模型

4、需求分析的任务

需求分析任务

软件工程:3.需求分析 - 简书 (jianshu.com)

5、需求工程包括哪些基本活动

image-20211202195936857

需求工程的基本过程 - 鸿鹄当高远 - 博客园 (cnblogs.com)

6、面向对象方法的特点

对象具有封装性、继承性和 多态性 。 面向对象开发方法是以用例驱动的、以体系结构为中心的、迭代的和渐增式的开发过程,主要包括 需求分析 、系统分析、系统设计和系统实现四个阶段,但是各个阶段的划分不像结构化开发方法那样清晰,而是在各个阶段之间迭代进行的。

6、类之间的关系(UML中),如何表示,能够从UML类图ßà类的伪代码

UML类和类之间的关系详解_smilehappiness的博客-CSDN博客_类与类之间的关系

7、用例模型的作用,用例规约的写法

用例模型主要用于表述系统的功能性需求,系统的设计主要由对象模型来记录表述。 另外,用例定义了系统功能的使用环境与上下文,每一个用例描述的是一个完整的系统服务。

软件开发中描述用例的书写规约_wanwanwan123的专栏-CSDN博客

用例规约的例子

8、各种UML图的画法(分析问题画图,这个是重点)面向对象的分析的主要活动

(59条消息) UML画图总结_Victor -CSDN博客_uml 画图

9、软件设计的作用

软件设计是把许多事物和问题抽象起来,并且抽象它们不同的层次和角度。 将问题或事物分解并模块化使得解决问题变得容易,分解的越细模块数量也就越多,它的副作用就是使得设计者考虑更多的模块之间耦合度的情况 。 软件设计是从软件需求规格说明出发,形成软件的具体设计方案的过程,也就是说在需求分析阶段明确软件是“做什么”的基础上,解决软件“怎么做”的问题。

10、模块层次结构的扇入、扇出、宽度、深度的概念

扇入:是指直接调用该模块的上级模块的个数。扇入大表示模块的复用程序高。
扇出:是指该模块直接调用的下级模块的个数。扇出大表示模块的复杂度高,需要控制和协调过多的下级模块;但扇出过小(例如总是1)也不好。扇出过
大一般是因为缺乏中间层次,应该适当增加中间层次的模块。扇出太小时可以把下级模块进一步分解成若干个子功能模块,或者合并到它的上级模块中去。
设计良好的软件结构,通常顶层扇出比较大,中间扇出小,底层模块则有大扇入。

深度:指结构图控制的层次,即模块的层数。
宽度:指一层中最大的模块个数。
扇出:指一个模块直接下属模块的个数。如模块M的扇出为3。
扇入:指一个模块直接上属模块的个数。如模块T的扇入为4。

软件工程第八章思考题 - lsj_1221 - 博客园 (cnblogs.com)

11、能够运用界面设计原则

总原则就是:以人为本,以用户的体验为准。

  1. 争取保持一致性。

  2. 满足普遍可用性的需求。

  3. 提供信息反馈。

  4. 设计对话框以产生结束信息。

  5. 预防错误。

  6. 允许动作回退。

  7. 支持内部控制点。

  8. 减轻短期记忆负担。

    当然以上原则不应生搬硬套,具体问题具体分析

11、几种耦合的概念

耦合性是指软件结构中模块之间的相互连接的紧密程度,是模块间相互连接性的度量。

模块间的联系尽可能地要少。

耦合性由高到低有:

  • 内容耦合:其一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一个模块的内部;一个模块有多个入口或者两个模块都有部分代码重叠。
  • 公共耦合:若干模块访问一个公共的数据环境,则称之为公共耦合。公共环境可为全局数据结构、共享的通信区、内存的公共覆盖区等。当然,公共数据区的变化将影响所有的公共耦合模块,严重影响模块的可靠性和可实用性,降低软件的可读性。
  • 控制耦合:是一个模块传递给另一个模块的信息,是用于控制该模块内部逻辑的控制信号。显然,对被控制模块的任何修改,都会影响控制模块。
  • 复合耦合:是一个模块传送给另一个模块的参数,是一个复合的数据结构,例如:包括几个数据单项的记录。
  • 数据耦合:一个模块传送给另一个模块的参数,是一个单个的数据项或者单个数据项组成的数组。

12、详细设计的N-S图、PAD图的使用(能完成代码和图的互相转换)

N - S图:又称为盒图,是一种结构化的流程图。由而且仅由顺序、选择、循环三种基本结构组成。

PAD 图:即问题分析图,是一种结构化的图,其基本控制结构如图所示。也由三种基本结构组成,其中选择结构分为两分支和多分支,循环结构分为WHILE型循环和UNTIL型循环两类。

N-S盒图 E-R图 PAD图 程序流程图 - 测试文摘-凡竹 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园

13、软件测试的基本步骤

白盒测试、黑盒测试的标准,测试用例的设计

测试过程从一个相对独立的步骤越来越紧密地贯穿在软件整个生命周期中,即软件测试应该贯穿于整个软件开发的全过程。

软件项目测试计划:大多包含以下步骤:项目背景,测试范围和内容;确定测试的质量、目标,对测试风险进行评估;测试资源需求;测试进度安排;测试策略。

分阶段测试:单元测试;集成测试;确认测试;系统测试;验收测试。

软件测试的文档:测试计划书;测试规范;测试用例;缺陷报告。

还需要专业的软件测试人员

14、软件维护的目的

主要工作就是在软件运行和维护阶段对软件产品进行必要的调整和修改。原因主要有如下:

  • 在运行中发现在测试阶段未能发现的潜在软件错误和设计缺陷。

  • 根据实际情况,需要改进软件设计,以增强软件的功能,提高软件的性能。

  • 要求在某环境下已运行的软件能适应特定的硬件、软件、外部设备和通信设备等新的工作环境,或适应已经变动的数据或文件。

  • 使投入运行的软件与其他相关的程序有良好的接口,以利于协调工作。

  • 使运行软件的应用范围得到必要的扩充。

    对软件进行维护的摸底是为了纠正软件开发过程中未发现的错误,增强、改进和完善软件的功能和性能,以适应软件的发展,延长软件的寿命,使其创造更多的价值。

15、软件维护的特性

软件维护过程是软件生存期中最长,并且相当困难的阶段。软件维护的工作量占整个软件生存期的70%以上,且在逐年增加。

维护虽然可以延长软件的寿命,但是也是危险的。每修改一次,可能会产生新的潜在错误。

副作用

维护的困难

主要是由于软件需求分析和开发方法的缺陷造成的。体现在:

  1. 读懂别人编的程序困难。
  2. 文档的不一致性。
  3. 软件开发人员和软件维护人员在时间上的差异。
  4. 软件维护工作是一项难出成果,都不愿意做的工作。

16、影响软件可维护性的因素

影响软件可维护性的因素有很多,设计、编码和测试中的疏忽和低劣的软件配置,以及缺少文档等都会对软件的可维护性产生不良影响。

17、重点掌握用例模型、时序(顺序)图、状态图、类图的设计。参考书上第三、四章例题以及第10章的案例一、二

18、重点掌握测试用例的构造方法,理解6.6.4中面向对象测试用例的设计

  • 每个测试用例都应定义明确的测试目的。

  • 每个测试用例都应定义唯一的标识,并指明与之关联的被测试类。

  • 每个测试用例都应定义相应的测试步骤、被测试对象的状态、测试所使用的详细和操作,以及测试可能产生的错误等。

    在面向对象的测试用例的设计中,通常采用两种设计方法:

    基于故障的方法和基于用例的方法。

    P174例6-3P177

软件工程用的15种图_赵民强 乌托派 黑石的博客-CSDN博客

软件工程(第三版) 期末复习_Haipai1998的博客-CSDN博客

计算机组成原理

计算机组成原理重点总结(学习笔记)含计算公式_aching_的博客-CSDN博客_计算机组成原理公式总结

《计算机组成原理》—-2.5 乘除法简介-阿里云开发者社区 (aliyun.com)

第一章 数据信息表示法

进制转换

image-20211209094533897

源码反码补码移码


文章作者: 毛豆不逗比
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 毛豆不逗比 !
  目录
{% include '_third-party/exturl.swig' %} {% include '_third-party/bookmark.swig' %} {% include '_third-party/copy-code.swig' %} + {% include '_custom/custom.swig' %}