首页 > 其他分享 >【CUMT】软件工程期末复习

【CUMT】软件工程期末复习

时间:2025-01-07 19:11:11浏览次数:1  
标签:复习 -- 面向对象 软件工程 详细 内聚 耦合 设计 CUMT

1.软件工程概述

1.2 计算机软件概述

软件分类:

  • 软件规模
  • 工作方式
  • 服务对象

1.4 软件生命周期

  • 问题定义
  • 可行性研究
  • 项目计划
    • 需求分析
    • 概要设计
    • 详细设计
    • 编码
    • 测试
  • 交付与运维

1.5 软件开发模型

  • 边做边改:直接根据功能编码,忽略需求分析
  • 瀑布(线性):先逻辑设计后物理设计的线性顺序,固定起始需求
    • 需求
    • 设计
    • 编码
    • 测试
    • 交付
  • 原型:先给demo
    • 需求
    • 原型
    • 评估
    • 调整
  • 增量(迭代):多重瀑布+快速原型,迭代周期固定,专注功能实现
    • 需求
    • 设计
    • 编码
    • 测试
    • 交付
    • 需求。。。
  • 螺旋:多重瀑布+快速原型,周期长度取决于风险评估
    • 制定计划
    • 风险分析
    • 实现工程
    • 用户评估

2.项目计划

2.2 可行性研究

构造性成本模型--基础COCOMO公式:

  • 需要工作量--E=ab(KLOC)^bb,人/月
  • 开发进度--Tdev=(LOC)/E,行/人/月
  • 开发时间--D=cb*(E)^db,月
  • 需要人数--P=E/D,人

经济可行性--费用估计:

  • 开发成本=开发工作量*开发费用
  • 开发工作量=Aστ
    • A估算工作量经验值
    • σ风险系数:1-1.5
    • τ复用系数:0.25-1
  • 开发费用=(P+Q+R)ST
    • P人头费=B*1.476
    • B平均工资
    • Q办公费=B/3
    • R税收及利润=B/3
    • S管理系数:1-1.2
    • T优质系数:[1.05,1.1,1.15,1.2]

3.需求分析

3.2 数据流图DFD

3.3 数据字典DD

3.4 加工逻辑描述工具

  1. 结构化语言

  2. 判定表:条件+动作

  3. 判定树

  4. IPO图

4.面向对象方法(OOA)

4.2 统一建模语言UML

202501041710434.png

4.3 用例模型

组成: actor(角色)+usecase(动作/功能)

5.概要设计

5.1 软件开发流程概念区分

具体描述
软件开发 需求分析(DFD/数据字典)、概要-详细设计、编码实现
软件开发模型 瀑布、快速原型、增量(迭代)、螺旋
软件设计 概要设计、详细设计
软件设计模式
框架、架构模式 特定软件可复用设计的一组相互协作类

5.2 软件结构设计

  1. 模块化
  2. 软件结构风格:各模块的组织情况,最好独立性高(低耦合、高内聚)
  3. 耦合与内聚
耦合 具体描述 内聚 具体描述
非直接耦合 没有信息传递 功能内聚 各成分结合在一起完成单一功能
数据耦合 传递简单参数 顺序内聚 该成分的输出是下一成分的输入
特征耦合 传递复合参数(数据结构) 通信内聚 成分的输入/输出相同
控制耦合 传递flag(控制信息) 过程内聚 成分有先后次序
外部耦合 访问同一全局变量 时间内聚 成分在同一时刻执行
公共耦合 访问同一全局数据 逻辑内聚 成分逻辑功能相似/相同(avg/max),可能有flag控制选择
内容耦合 两模块之间代码有交互 偶然内聚 模块内成分在功能上无关

5.3 图形工具

  1. 层次图(H图)

  2. HIPO图:带编号的H图+描绘模块处理过程的IPO图

  3. 结构图(Structure chart,SC):有数据的传入传出

20250103111910

5.4 结构化设计方法(Structure Design)

  1. 概念与步骤

基于数据流的系统分析、设计方法:SA、SD(系统逻辑模型DFD->软件结构图HIPO/SC)

  1. 变换型DFD--变换映射(P69)

变换控制模块--数据随时间的推移而流动:

  • 输入边界
  • 变换中心:计算
  • 输出边界

20250102222655

20250103145153

  1. 事务型DFD--事务映射

事务控制模块--以事务中心为核心:

  • 输入
  • 事务中心:扇出不同动作
  • 调度通路
    • 事务层
    • 操作层
    • 细节层

20250103112907

20250103112644

5.5 软件结构设计优化

  1. 改进结构,提倡模块独立:翁>塔>饼,观察耦合与内聚
  2. 模块规模适中
  3. 扇出(3-4)、扇入(the more the better)
  4. 控制域(自身+扇出的闭包)、作用域
  5. 接口简单化

6.详细设计

6.1 详细设计任务与内容

根据概要设计划分出的模块编码,给出明确的算法描述

6.2 详细设计工具

有图形、表格、语言三种工具,详细介绍三种图形工具

  1. 程序流程图

20250103154027

  1. N-S图(盒图)

20250103154137

  1. PAD图(问题分析图)

20250103154527

6.3 人机界面设计

7.面向对象方法(OOD)

7.1 面向对象的结构设计OOD

  1. 类图

找完系统的对象类之后,确定对象之间的关系:

  • 关联关系(没有箭头则为双向访问,否则单向)
  • 聚合/组合关系(类图中表示为空心/实心菱形)
  • 依赖关系(表示“使用”语义,弱关系)
  • 泛化关系 (表示父子类,是继承)

对象与接口之间的关系:

  • 实现关系
  1. 静态结构模型

主题和子系统

  1. 面向对象的架构设计

架构模式种类:

  • MVC(model/view/controller)--Spring
  • MVP(presenter)
  • MTV(template)
  • ORM(object/relational/mapping)
  • CBD(core/behavior/driver)

设计模式:

  • 构建型
  • 结构型
  • 行为型
  1. 构件图

20250104171345

  1. 部署图

7.2 面向对象的详细设计

  1. 顺序图
  2. 协作图
  3. 状态图
  4. 活动图

7.3 UML双向工程

  1. 从UML模型生成代码的正向工程
  2. 从代码生成UML模型的逆向工程

9.测试

  1. 概述

软件测试对象:需求分析报告、概要设计报告、详细设计报告、源程序清单

  1. 测试方法
  • 静态测试:代码复审
  • 动态测试(机器测试):白盒(覆盖)、黑盒(等价有效类)
  1. 测试用例设计(12.10)
逻辑覆盖法(程序流程图) 路径测试法(程序图) 测试规则
语句覆盖 点覆盖 每个语句(点)至少一次
判定覆盖 边覆盖 每个分支(边)至少一次,关注判断语句的复合条件
条件覆盖 关注判断语句每个单独条件
判定/条件覆盖
条件组合覆盖
路径覆盖 每种通路都走(2*2)

标签:复习,--,面向对象,软件工程,详细,内聚,耦合,设计,CUMT
From: https://www.cnblogs.com/W-enzy/p/18658180

相关文章

  • CSP -J 考前复习一文通
    前言本文算是作者的学习笔记,也可以用于CSP-J初赛考前复习,如有错误请在评论指出。本文写作时间比较紧张,参考了各种资料,包括但不限于百度百科、OI-wiki、洛谷专栏、各类参考书籍等等,在此一并感谢。如有侵权,请联系删除或更换。本文同步发表于:博客园:https://www.cnblogs.com/ny......
  • TypeScript语言的软件工程
    TypeScript语言的软件工程实践引言在现代软件工程中,编程语言的选择对项目的成功至关重要。近年来,JavaScript凭借其在Web开发中的广泛应用取得了巨大成功。然而,随着Web应用程序的复杂性不断增加,开发者渐渐发现纯JavaScript在可维护性、类型安全性和开发效率方面的不足。为......
  • CSS语言的软件工程
    CSS语言的软件工程引言在当今网页设计和开发的领域中,CSS(层叠样式表)扮演着至关重要的角色。尽管它的主要功能是描述HTML文档的外观和布局,但随着技术的发展,CSS的使用和应用场景变得越来越复杂,其在软件工程中的地位也日益凸显。本文将探讨CSS在软件工程中的关键角色,分析其设......
  • F#语言的软件工程
    F#语言的软件工程引言随着计算机科学的迅速发展,程序设计语言的选择变得愈加重要。F#语言作为一种功能性编程语言,凭借其简洁的语法和强大的类型系统,在软件工程领域逐渐崭露头角。本文将深入探讨F#语言的软件工程实践,包括其核心特性、开发模式、应用场景及行业现状。1.F#......
  • 数据结构的复习
    今天复习了顺序表,顺序表是线性表的一种存储结构,它把线性表中的所有元素按照其逻辑顺序,依次存储到从计算机存储器中指定存储位置开始的一块连续的存储单元中。简单来说,就是用一组连续的内存单元来存放数据元素,数据元素之间的逻辑关系通过物理存储位置相邻来体现。优点有:随机访问......
  • 计算机网络复习
    简答题第一章计算机网络和因特网访问带宽小于实际物理带宽1)网络协议限制了物理带宽的使用(如CSMA/CD、TCP可靠数据传输)2)信道利用率低3)分组的时延和丢失​时延:传输时延、传播时延、处理时延、排队时延​丢包:分组到达的速率大于链路传输的速率,缓冲已满造成丢失4)流......
  • 软件工程期末总结:开发程序的体会
    软件工程在优化模型项目中的应用反思本文总结了我在开发优化模型的项目过程中,对于软件工程相关原理的应用和体会。1.可行性研究在项目开发过程的一开始,我先对项目的可行性进行了研究,主要从技术可行性的方面进行了可行性分析。在可行性分析的过程中,我通过阅读相关的资料和论文,......
  • 计算机操作系统复习题
    一、单选题1.操作系统是一种 ()√A.系统软件  B.系统硬件C.应用软件D.支援软件2.进程从等待状态进入就绪状态的原因可能是(      )。A、被选中占有处理机B、等待某一事件C、时间片用完D、等待的事件已发生3.进程控制块中的现场信息是在(  )保存的。......
  • 区块链导论概念复习
    随便吧,整理不下去了………………………………………………1、 科学、技术-科学:运用范畴定理定律等思维形式反映现实世界各种现象本质和规律的知识体系-技术:技术是关于某领域有效的科学的全部,以及在该领域为实现公共或个体目标而解决设计问题的规则的全部。2、 工程的定义......
  • NO.1 《机器学习期末复习篇》以题(问答题)促习(人学习),满满干huo,大胆学大胆补!
    目录一、新手初学?该如何区分[人工智能][机器学习][深度学习]?[1]浅谈一下我的理解[2]深度交流一下人工智能(AI,ArtificialIntelligence)机器学习(ML,MachineLearning)深度学习(DL,DeepLearning)[3]三者之间的关系二、机器学习能用到实处?该怎么用? (1)推荐系统(2)......