【软件工程导论】课程作业记录

写在前面

  • 软件工程导论

第一次课程作业

软件复杂性问题

  • 任务:阅读ppt中关于软件复杂性问题的解释

软件复杂性的组成

  1. 软件固有复杂性
  2. 管理开发过程的困难
  3. 软件可能的灵活性
  4. 表征离散系统行为的困难

对软件科学的贡献

  • 任务:了解司马贺、图灵等科学家对软件科学的重要贡献

人月神话节选阅读

  • 任务:从人月神话中任选1章阅读

  • 读了人月神话那一章,有点启发

  • 附上AI提供的书籍概览:

    • 《人月神话》(“The Mythical Man-Month”)是计算机科学领域内的一本经典著作,由美国计算机科学家Frederick P. Brooks, Jr.撰写。这本书首次出版于1975年,基于Brooks在IBM期间作为系统/360家族和OS/360操作系统项目管理者的经验。书中探讨了软件项目管理中的诸多问题,特别是关于人员管理以及如何有效组织开发团队。
    • 书中的核心观点之一是“Brooks定律”,即:“向已经延迟的软件项目增加人手会使项目更加延迟。” 这一定律强调了在软件开发过程中盲目增加人力可能会带来的负面效果,因为新的团队成员需要时间来熟悉项目,而且随着团队规模的扩大,沟通的成本也会增加。
    • 此外,《人月神话》还讨论了诸如软件估算、模块化设计、可维护性以及个人在团队中的作用等主题。这本书不仅对软件项目经理有启发,对于所有参与软件开发过程的人来说都是必读的经典之作。

了解软件工程发展前沿

  • 任务:阅读软件工程论文,了解软件工程发展前沿

论文还没读

技能提升作业报告

需要实验内容和结果

甘特图

  • 任务:用甘特图制定完成某件事的计划

what is 甘特图

  • 一种条状图,直观展示项目进展随时间的走势及联系
  • 项目时间由横轴表示,项目活动由纵轴表示
  • 整体线条表示整个项目期间内,计划和实际的活动完成情况

甘特图制作流程

  1. 创建任务表。其中包含项目主要元素,任务名称持续时间、**工期**等
  2. (传统:用Excel制作)
  3. 我用的亿图图示,导入模板,进行调整

数据流图

  • 任务:根据你熟悉的某一应用,画出系统的数据流图

数据流图的概念

  • 数据流图(Data Flow Diagram,DFD)是一种图形化技术,它描绘信息流数据输入移动到输出的过程中所经受的变换

数据流图的优点

  • 没有任何具体的物理元素,只是描绘信息在软件中流动和被处理的情况
  • 是系统逻辑功能的图形表示,易理解,是分析员与用户之间极好的沟通工具
  • 必须完成的基本逻辑功能,不需考虑怎样具体实现
  • 可以在任何抽象层次上被用来表示系统或软件;可以被分层次地画,层次越低,表现出的信息流细节和功能细节也越多

数据流图的基本符号

  • 正方形(或立方体)表示数据的源点或终点
  • 圆角矩形(或圆形)代表变换数据的处理
  • 开口矩形(或两条平行横线)代表数据存储
  • 箭头表示数据流,即特定数据的流动方向

数据流图的注意事项

  • 在数据流图中应该描绘所有可能的数据流向,而不应该描绘出现某个数据流的条件
  • 处理并不一定是一个程序
    • 一个处理框可以代表一系列程序、单个程序或者程序的一个模块
  • 一个数据存储也并不等同于一个文件
    • 可以表示一个文件、文件的一部分、数据库的元素、记录的一部分等
  • 数据存储和数据流都是数据,仅仅所处的状态不同
    • 数据存储是处于静止状态的数据
    • 数据流是处于运动中的数据
  • 通常在数据流图中忽略出错处理,也不包括诸如打开或关闭文件之类的内务处理
    • 数据流图的基本要点:描绘“做什么”而不考虑“怎样做”

数据流图的成分分析

画数据流图

  • 按照上面四种数据类型进行成分分离后,开始着手画数据流图

计算机系统本质上都是把输入数据变换成输出数据

任何系统的基本模型都由若干个数据源点/终点以及一个处理组成

  • 顶层数据流图突出表明了数据的源点和终点
    • 是否列出了所有给定的数据源点 / 终点
  • 第0层数据流图描绘系统的主要功能
    • 给处理和数据存储都加了编号
    • 目的:便于引用和追踪
  • 第1层数据流图对功能级数据流图中描绘的系统主要功能进一步细化
    • 当进一步分解将涉及如何具体地实现一个功能时,就不应该再分解了
    • 在对数据流图分层细化时必须保持信息连续性,即当把一个处理分解为一系列处理时,分解前和分解后的输入/输出数据流必须相同

数据流图命名规范

数据流(或数据存储)命名

  • 应代表整个数据流(或数据存储)的内容,而不是仅反映某些成分
  • 不要使用空洞、缺乏具体含义的名字(如“数据”、“信息”、“输入”之类)
  • 如果在为某个数据流(或数据存储)起名字时遇到了困难,则很可能是因为对数据流图分解不恰当造成的,应该试试重新分解,看是否能克服这个困难

处理命名

  • 通常先为数据流命名,然后再为与之相关联的处理命名

    体现了人类习惯的“由表及里”的思考过程

  • 反映整个处理的功能,而不是它的一部分功能

  • 最好由一个具体的及物动词加上一个具体的宾语组成

    • 尽量避免使用“加工”、“处理”等空洞笼统的动词作为名字
  • 通常名字中仅包括一个动词

    • 如果必须用两个动词才能描述整个处理的功能,则把这个处理再分解成两个处理可能更恰当些
  • 如果在为某个处理命名时遇到困难,则很可能是发现了分解不当的迹象,应考虑重新分解

UML图中的类图和活动图

  • 任务:使用绘制数据流图的需求为背景,画出UML图中的类图和活动图

自动识别不合规范的代码

  • 任务:使用Java或其他代码格式控制工具,对不符合规范的代码进行自动识别,给出提示(java代码规范不做要求,但是应当具有权威性,如阿里的java代码规范)

软件测试

  • 任务:使用Junit 和 Jmeter对某一软件完成相应测试

Maven打包工具

  • 任务:使用Maven打包工具

结论分析

参考材料

甘特图

数据流图

  • Copyrights © 2024-2025 brocademaple
  • 访问人数: | 浏览次数:

      请我喝杯咖啡吧~

      支付宝
      微信