EagleBear2002 的博客

这里必须根绝一切犹豫,这里任何怯懦都无济于事

摘要

本文根据复习课录音和大模型总结了软件安全的期末考点。题目来自教材课后习题,仅提供简单题和阅读报告题,不提供实验题和复杂的阅读报告题。

如无特殊标注,本文的题目答案来源为 PPT 或教材。使用大模型生成的回答会有明确标注。

考试题型:只靠概念题,10 道简答;每章一道,来自书后概念习题(除去 3,9,10,11 章)。

本文参考了 南京大学软件学院-2023-软件安全(研究生)期末复习参考 - 知乎

阅读全文 »

摘要

本文总结了软件工程管理的期末考点。考虑到本课程为半开卷考试,本文只用有限的篇幅展示最重要的部分,读者自由复制打印。

点击链接下载:2024Fall-软件工程管理 v5 衬线字体带习题.docx

课程概念梳理:

\[ \text{敏捷} \left\{\begin{matrix} \text{Scrum 框架} \\ \text{XP 实践}\left\{\begin{matrix} \text{简单设计} \\ \text{(频繁)重构} \\ \text{持续集成} \\ \text{测试驱动开发} \\ \text{结对编程} \\ \end{matrix}\right. \end{matrix}\right. \]

阅读全文 »

摘要

课程目的

  • 阅读、思考软件工程历史中的经典书籍、论文,了解软件工程思想的来龙去脉。
  • 学习最新的软件工程管理方法论、实践、工具。
  • 知其然,知其所以然。
  • 学会自主的思考软件开发,自主判断
    • 需要广泛、深刻的知识学习;批判性思维习惯
    • “记忆”、“分析”这些相对低水平的认知
    • “综合”、“判断”和“运用”等深层次的学习

软件工程和其它相关学科关系

阅读全文 »

摘要

定义

看板方法,由 David Anderson 创立,它脱胎于大野耐一所创立的丰田生产方式(TPS),以及埃利亚胡·高德拉特(Eli Gol-dratt)的约束理论(TOC),并结合统计质量控制(SQC)、排队论(QT)、工业工程(IE)、软件成熟度模型(CMMI)等多个领域的知识,在软件开发社区中获得了极高的关注度,并迅速传播开来。

历史

大卫·J.安德森(David J. Anderson)

阅读全文 »

摘要

项目成功?

为什么敏捷与精益出现在软件开发行业?

  • 软件开发本质属性:复杂性、一致性、可变性、不可见性。
  • 敏捷与精益本质上是帮助我们处理软件开发的复杂性、可变性。
  • 敏捷的本质,是承认软件开发的复杂性。而且承认,这种复杂性,达到了这样一种程度:“无法通过足够充分的前期准备,而消除后续的风险。甚至于,前期准备得越是充分,后续的风险越大。”
  • 敏捷软件开发是当前应对模糊需求、快速变化需求的最佳方式。

敏捷软件开发很流行

阅读全文 »

摘要

敏捷思想存在很久

敏捷运动源自 1990 年代一些与软件开发过程打交道的人士的工作,他们发现需要寻找软件开发过程的新途径。其实,这些途径中的大部分思想并不是新的,许多人认为,很长一段时间以来的成功软件都是依据这些思想来建造的。但这些思想却被压抑了,没有受到足够的重视,特别是在那些从事软件开发过程的人士中。有一些根本性的原则是所有敏捷方法的共同之处,这些原则与那些传统软件工程方法的前提假设是截然相反的。

从无、到繁重、再到敏捷

多数软件开发仍然是一个显得混乱的活动,即典型的“边写边改”(code and fix)。设计过程充斥着短期的、即时的决定,而无完整的规划。这种模式对小系统开发其实很管用,但是当系统变得越大越复杂时,要想加入新的功能就越来越困难。同时错误故障越来越多,越来越难于排除。一个典型的标志就是当系统功能完成后有一个很长的测试阶段,有时甚至有遥遥无期之感,从而对项目的完成产生严重的影响。

阅读全文 »

摘要

坐到一起

  • 在大到足够容纳整个团队的开放空间中进行开发.
  • 为了满足隐私和自己的空间的需要,可以在附近设置一些私人空间,或者对工作时间做出限制,这样团队成员对隐私的需求可以在其他地方得到满足.

例子

  • Kent Beck 为芝加哥郊区一个陷入困境的项目做咨询.
  • 由公司里最好的技术天才组成,问题在哪?
  • 这些高级员工在建筑物不同层的不同角落都有自己的办公室. 团队成员每天只有少许时间进行交流.
  • 教训:坐到一起来,用我们所有的感官知觉进行交流,这一点太重要了.
阅读全文 »

摘要

概述

  • 持续集成(Continuous Integration, CI) 是一种软件开发实践,在实践中项目成员频繁地进行集成,通常每个成员每天都会做集成工作,如此,每天整个项目将会有多次集成。
  • 许多团队都发现这种方法大大地减少了集成问题,并且能够快速地开发出高内聚性的软件。

单次瀑布模型与敏捷软件开发:

  • 单次瀑布模型:软件集成是一个漫长并且无法预测的过程。
  • 敏捷软件开发:每个开发人员离共享的工程状态只有咫尺之遥,并且可以在几分钟之内将自己的代码集成进去。任何集成错误都能被快速地发现并得到快速的修正。
  • “持续集成” 源自于极限编程(XP),并且是 XP 最初的 12 种实践之一。
  • “持续集成”服务:Jenkins(https://jenkins.io/)
阅读全文 »

操作实验:熊猫烧香病毒分析。实验内容如下。

  1. 基于虚拟机软件及其快照功能,搭建一个恶意代码分析实验环境。
  2. 分析熊猫烧香病毒的程序结构和入侵过程。完成实验报告。

将病毒样本导入 win XP

解压病毒样本压缩包,并将文件后缀改为 .exe

阅读全文 »