跳到主要内容

随记

项目时间管理

过程:活动定义、活动排序、活动的资源估算、活动历时估算、制定进度计划以及进度控制。为了得到工作分解结构(Work Break down Structure,WBS)中最底层的交付物,必须执行一系列的活动,对这些活动的识别以及归档的过程就叫做活动定义。

软件质量保证

软件评审

需求工程

  • 1、需求开发:需求获取、需求分析、需求定义、需求验证
  • 2、需求管理:变更控制、版本控制、需求跟踪、需求状态跟踪

软件需求开发的最终文档经过评审批准后 : 开发工作的需求基线

软件开发方法

  • 敏捷方法:以原型开发方法为基础,采用迭代增量式开发 以人为核心、迭代、循序渐进 小而高度自主的项目团队
  • 结构化的方法:自顶而下,逐步求精和模块化设计 面向过程 不适用规模大复杂的系统开发 比较固定,难以使用需求的变化 设计工具:盒图HIPO图程序流程图
  • 面向对象的方法:符合人们的思维习惯,有利于系统开发过程中用户和开发人员的交流沟通 比较主流 顺序图
  • 面向服务的方法:粗粒度、松耦合和基于标准的服务为基础,增强了系统的灵活性、可复用性、可演化性

结合结构化面向对象

  • 先自顶而下整体划分 自底而上面向对象开发

结构化程序设计:顺序、分支、循环 三种基本控制结构可以构造出任何单入口单出口的程序

软件开发模型

  • RUP 统一过程模型

    • 九个核心工作流:
      • 1、商业建模(Business Modeling):
        • 商业建模工作流描述了如何为新的目标组织开发一个构想,并基于这个构想在商业用例模型和商业对象模型中定义组织的过程,角色和责任。
      • 2、需求(Requirements):
        • 需求工作流的目标是描述系统应该做什么,并使开发人员和用户就这一描述达成共识。为了达到该目标,要对需要的功能和约束进行提取、组织、文档化;最重要的是理解系统所解决问题的定义和范围
      • 3、分析和设计(Analysis& Design):
        • 分析和设计工作流将需求转化成未来系统的设计,为系统开发一个健壮的结构并调整设计使其与实现环境相匹配,优化其性能。
      • 4、实现(lmplementation):
        • 实现工作流的目的包括以层次化的子系统形式定义代码的组织结构;以组件的形式(源文件、二进制文件、可执行文件)实现类和对象;将开发出的组件作为单元进行测试以及集成由单个开发者(或小组)所产生的结果,使其成为可执行的系统。
      • 5、测试(Test):
        • 测试工作流要验证对象间的交互作用,验证软件中所有组件的正确集成,检验所有的需求已被正确的实现,识别并确认缺陷在软件部署之前被提出并处理。
      • 6、部署(Deployment):
        • 部署工作流的目的是成功的生成版本并将软件分发给最终用户
      • 7、配置和变更管理(Configuration & ChangeManagement):
        • 配置和变更管理工作流描绘了如何在多个成员组成的项目中控制大量的产物。
      • 8、项目管理(Project Management):
        • 软件项目管理平衡各种可能产生冲突的目标,管理风险,克服各种约束并成功交付使用户满意的产品。其目标包括:为项目的管理提供框架,为计划、人员配备执行和监控项目提供实用的准则,为管理风险提供框架等。
      • 9、环境(Environment):
        • 环境工作流的目的是向软件开发组织提供软件开发环境,包括过程和工具
    • RUP的4+1视图
      • 逻辑视图
        • 最终用户关心的是系统的功能,因此会侧重于逻辑视图;
      • 实现视图
        • 程序员关心的是系统的配置、装配等问题,因此会侧重于实现(开发)视图;
      • 进程视图
        • 系统集成人员关心的是系统的性能、可伸缩性、吞吐率等问题,因此会侧重于进程(处理)视图;
      • 部署视图
        • 系统工程师关心的是系统的发布、安装、拓扑结构等问题,因此会侧重于部署(物理)视图。
      • 用例视图 在中心
        • 分析人员和测试人员关心的是系统的行为,因此会侧重于用例(场景)视图;
    • 开发周期(RUP一个迭代过程 一个开发周期,每一轮迭代都要进行测试和集成)
      • 初始:为系统建立业务模型并确定项目的边界
      • 细化:分析问题领域,建立完善架构,淘汰项目中的最高风险元素
      • 构建:开发所有剩余的构件和应用程序功能,把构件集成成产品
      • 移交:确保软件对最终用户是可用的
  • 基于构件的软件开发模型(提高软件的可靠性和易维护性)

    • 阶段
      • 1、需求分析定义
      • 2、体系结构设计
      • 3、构件库建立
      • 4、应用软件构建
  • 瀑布模型

  • 演化模型

  • 原型模型

  • 螺旋模型

    • 开发流程
      • 目标设定
      • 风险分析 ★
      • 有效性验证
      • 评审
  • 喷泉模型

传统软件开发的生命周期:软件定义、软件开发、软件运行和维护 软件过程 软件活动:软件描述、软件开发、软件有效性验证、软件演化

软件维护

  • 1、改正性维护
    • 识别纠正软件错误
  • 2、适应性维护
    • 外部环境(新的软、硬件配置),数据环境(数据库、数据格式、输入输入方法、数据存储介质)变化而修改的软件
  • 3、完善性维护
    • 用户对软件提出新的功能和性能上的要求
  • 4、预防性维护
    • 预先提高软件的可维护性、可靠性等,为以后改进软件打下良好的基础。

软件系统工具

  • 软件开发工具
    • 需求分析工具
      • 基于自然语言或图形描述的工具
      • 基于形式化需求定义语言的工具
    • 设计工具
    • 编码和排错工具
    • 测试工具等
  • 软件维护工具
  • 软件管理工具
  • 软件支持工具

软件开发工具

  • 需求分析工具
    • 基于自然语言或图形描述的工具
    • 基于形式化需求定义语言的工具
  • 设计工具
  • 编码和排错工具
  • 测试工具等

逆向工程

四个层次

  • 实现级
  • 结构级
  • 功能级
  • 领域级 示例:
  • 逆向工程导出的信息可以分为实现级、结构级、功能级和领域级四个抽象层次。程序的抽象语法树属于( );反映程序分量之间相互依赖关系的信息属于( )。
    • A.实现级
    • B.结构级
    • C.功能级
    • D.领域级
  • 答案 A B
  • 实现级:包括程序的抽象语法树、符号表等信息。
  • 结构级:包括反映程序分量之间相互依赖关系的信息,例如调用图、结构图等。
  • 功能级:包括反映程序段功能及程序段之间关系的信息。
  • 领域级:包括反映程序分量或程序与应用领域概念之间对应关系的信息。

应用系统构建技术

  • 逆向工程:分析已有程序,寻求比源代码更高级的抽象表现形式
  • 重构:在统一抽象级别上转换系统描述形式
  • 设计恢复:设计相关的
  • 再工程:将

接口标准化

  • 消息的格式、模式和协议的标准化

信息隐蔽的好处

提高软件的

  • 可修改性
  • 可测试性
  • 可移植性

软件结构化设计

  • 模块:
    • 结构、功能 外部特性
    • 数据、代码 内部特性

UML2.0

  • 消息类型:
    • 简单消息
    • 同步消息
    • 异步消息
    • 对象创建消息
    • 对象销毁消息
    • 无触发对象和无接收对象的消息
  • 视图
    • 逻辑视图:设计视图 架构方面的
    • 进程视图
    • 实现视图
    • 部署视图
    • 用例视图:最基本的需求分析模型

软件模块的耦合性 内聚

CRM 整合了:人力资源 业务流程 专业技术 主要模块:销售自动化、营销自动化、客户服务与支持、商业智能

E-R图 冲突类型 解决办法

  • 属性冲突:包括属性域冲突和属性取值冲突
  • 命名冲突:包括同名异议和异名同义
  • 结构冲突:包括同一对象在不同的应用中具有不同的抽象,以及同一实体在不同的局部ER图中包含的属性个数和属性排列排列次序不完全相同

注意:没有实体冲突一说

关系模型中可以有三类完整性约束:

  • 实体完整性
  • 参照完整性
  • 用户定义的完整性

元组关系演算

Armstrong公理系统

Armstrong公理系统设关系模式R,其中U为属性集,F是U上的一组函数依赖,那么有如下推理规则: ①A1自反律:若YEXCU,则X→Y为F所蕴含, ②A2增广律:若X→Y为F所蕴含,且ZCU则XZ-YZ为F所蕴含;: ③A3传递律:若X→Y,Y→Z为F所蕴含,则X→Z为F所蕴含。 根据上面三条推理规则,又可推出下面三条推理规则: ④合并规则:若X→Y,X→Z,则X→YZ为F所蕴含; ⑤伪传递规则:若X→Y,WY→Z,则XW→Z为F所蕴含; ⑥分解规则:若X→Y,ZY,则X→Z为F所蕴

RAID6的容量计算

(N-2)*最低容量

操作系统优先级

操作系统低优先级进程被高优先级进程抢占或者时间片用光由执行状态变为就绪状态

信号量(Semaphore):

想象成一个计数器。它有一个数字,表示当前可以访问某个资源的“线程数量”。当数字是大于零时,就可以允许相应数量的线程进入临界区(即执行代码),每进一个线程就把数字减一,离开一个线程就加一。如果数字是零,那么其他线程就会被阻塞,直到有线程离开并释放信号量。

面向构件编程的基本支持

  • 多态性(可替代性)
  • 模块封装性(高层次信息的隐藏)
  • 后期的绑定与装载(部署独立性)
  • 安全性(类型和模块的安全性)

死锁相关:

不会死锁的条件:进程数*(所需资源数-1)+1

RTOS实时操作系统

任务的调度:时间分片式 轮流查询式、优先抢占式

软件结构设计

关注软件构件的 结构、属性、交互作用

软件架构设计生命周期

需求分析 设计阶段 实现阶段 构件组装阶段 部署阶段 后开发阶段

基于体系结构的软件设计 过程

体系结构需求 体系结构设计 体系结构文档化 体系结构复审 体系结构实现 体系结构演化

检错设计技术的四个要锁

检测对象 检测延时 实现方法 处理方式

软件架构的三大要素

组件 连接件 约束

软件工程基础知识

软件过程模型

1、瀑布模型

(结构化的开发方法使用的模型)

2、原型模型 快速原型

3、螺旋模型

强调风险分析 以原型为基础 结合瀑布模型

4、敏捷模型

极限编程xp 测试先行 水晶系列方法 并列争球法 特征驱动开发方法

5、软件的统一过程模型 RUP

常见协议

  • RARP 反向地址转换协议 局域网的物理地址从网关服务器的ARP表或者缓存上请求其IP地址
  • ARP 地址解析协议 ip地址获取物理地址
  • IGMP Internet组管理协议 定义组播中成员的加入退出的机制
  • ICMP 网间控制报文协议 允许主机或路由器报告差错情况和提供有关异常情况的报告

网桥和交换机

  • 二层数据链路层的转发设备
  • 交换机是一种多端口的网桥 一个端口就是一个冲突域
  • 网桥用软件实现分组过滤功能 交换机有专门的硬件实现 速度更快

结构化的设计

包含:架构设计、接口设计、数据设计、过程设计

SDN 软件定义网络

网络软件化 分为三层:应用层 控制层 数据转发层

  • 应用层:对应用户不同的业务和应用
  • 控制层:主要负责处理数据平面资源和编排,维护网络的拓扑、状态信息
  • 数据转发层:负责用户数据的转发

企业数字化转型

  • 初始级
  • 单元级
  • 流程级
  • 网络级
  • 生态级

环路复杂度

闭环个数+1

逆向工程

1、实现级:包括程序的抽象语法树、符号表等信息 2、结构级:反应程序分量之间的相互依赖关系的信息,例如调用图、结构图等 3、功能级:包括反映程序段功能与程序段之间关系的信息 4、领域级:包括反映程序分量或程序程序实体与应用领域概念之间的对应关系 详细解释示例:https://cloud.tencent.com/developer/article/2421184

耦合:

数据xxxx

COM对象复用

https://blog.csdn.net/w605283073/article/details/139073667

DSSA 特定领域软件架构

https://zhuanlan.zhihu.com/p/16622889039