软件工程

软件开发生命周期

  1. 软件定义时期:包括可行性研究和详细需求分析过程
  2. 软件开发时期:软件的设计与实现
  3. 软件运行和维护

软件系统文档

  • 用户文档:描述系统功能和使用方法
  • 系统文档:描述系统设计、实现和测试等各方面的内容

软件系统工具

  • 软件开发工具:需求分析工具、设计工具、编码和排错工具
  • 软件维护工具:版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工程工具
  • 软件管理和软件支持工具:项目管理工具、配置管理工具、软件评价工具、软件开发工具的评价和选择

软件设计

四个活动

  • 数据设计
  • 架构(体系结构)设计
  • 人机界面(接口)设计
  • 过程设计

能力成熟度模型

CMM(能力成熟度模型)

CMM(Capability Maturity Model) 是一个用于评估和改进软件开发过程成熟度的模型。最初由美国卡内基梅隆大学软件工程研究所(SEI)提出,主要用于软件开发过程的改进,后来发展为 CMMI(能力成熟度模型集成),应用范围更广。CMM 将软件开发过程的成熟度划分为五个级别,每个级别代表更高水平的过程优化和控制能力。

1. 初始级(Initial,Level 1)

  • 过程是无序的、不可预测的,依赖个人能力。
  • 成功取决于个人英雄主义,而不是组织的标准化流程。
  • 项目可能会超预算、延期,质量难以保证。

2. 可重复级(Repeatable,Level 2)

  • 组织建立了基本的项目管理流程,能够重复过去成功的经验。
  • 采用软件项目管理实践,如需求管理、配置管理、质量保证等。
  • 过程可重复,但仍然依赖于具体项目或个人,可能缺乏一致性。

3. 已定义级(Defined,Level 3)

  • 组织已制定和文档化标准的软件开发过程,并在全组织范围内执行。
  • 过程标准化,不同项目遵循统一的方法,减少依赖个人经验。
  • 强调软件工程管理和组织级的过程改进。

4. 已管理级(Managed,Level 4)

  • 组织使用量化数据监控和控制软件开发过程,关键过程变量(如质量、生产率)可预测。
  • 过程绩效的度量和分析成为核心,数据驱动决策,减少过程的变异性。
  • 目标是提升可预测性,提高软件产品质量。

5. 优化级(Optimizing,Level 5)

  • 组织持续优化软件开发过程,能够自适应变更,持续改进。
  • 采用先进的技术和方法,如根因分析、缺陷预防、过程自动化等。
  • 关注创新,持续提升生产率和质量。

敏捷模型

开发宣言:个体和交互胜过过程和工具、可以工作的软件胜过面面俱到的文档、客户合作胜过合同谈判、响应变化胜过遵循计划

逆向工程

软件的逆向工程是分析程序,力图在比源代码更高抽象层次上建立程序的表示过程,逆向工程是程序的恢复过程。逆向工程的四个级别

  1. 实现级
  2. 结构级
  3. 功能级
  4. 领域级

其中,领域级抽象级别最高,完备性最低,实现级抽象级别最低,完备性最高

内聚程度

系统设计

系统设计的主要目的:为系统制定蓝图,在各种技术和实施方法中权衡利弊,精心设计,合理地使用各种资源,最终勾画出新系统的详细设计方法
系统设计方法:结构化设计方法面向对象设计方法
系统设计的主要内容:概要设计详细设计
概要设计基本任务:又成为系统总体结构设计,是将系统的功能需求分配给软件模块,确定每个模块的功能和调用关系,形成软件的模块结构图,即系统结构图,产出概念设计说明书
详细设计基本任务:模块内详细算法设计模块内数据结构设计数据库的物理设计其他设计(代码、输入/输出格式、用户界面)、编写详细设计说明书,评审
系统设计基本原理:抽象化、自顶而下,逐步求精、信息隐蔽(封装)、模块独立(高内聚低耦合)
系统设计原则:保持模块的大小适中、尽可能减少调用的深度、多扇入少扇出(扇入:其他模块调用我,扇出:我调用其他模块)、单入口单出口、模块的作用域应该在模块之内、功能应该是可预测的
系统结构图(SC):又称为模块结构图,它是软件概要设计阶段的工具,反应系统的功能实现和模块之间的联系与通信,包括各模块之间的层次结构,即反映了系统的总体结构

内聚性

针对单个模块,内聚程度

内聚程度

耦合性

针对模块之间,耦合程度

耦合程度

详细设计

基本步骤:

  1. 分析并确定**输入/输出数据的逻辑结构
  2. 找出输入数据结构和输出数据结构中有对应关系的数据单元
  3. 按一定的规则由输入、输出的数据结构导出程序结构
  4. 列出基本操作与条件,并把它们分配到程序结构图的适当为止
  5. 用伪代码写出程序

详细设计的表示工具有图形工具表格工具语言工具。其中图形工具有业务流图程序流程图PAD图NS流程图

  • 程序流程图:又称为程序框图。用方框表示一个处理步骤,菱形表示一个逻辑条件,箭头表示控制流向。其优点是:结构清晰易于理解易于修改。其缺点是:只能**描述执行过程而不能描述有关的数据
  • NS流程图:又称为盒图。是一种强制使用结构化构造的图示工具,也称为方框图。其具有以下特点:功能域明确、不可能任意转移控制、很容易确定局部和全局数据的作用域、很容易表示嵌套关系及模块的层次关系
  • PAD图:一种改进的图形描述方式,可以用来取代程序流程图,相比程序流程图更直观,结构更清晰。其最大的优点是能够反应和描述自顶向下的历史和过程。PAD图提供了5种基本控制结构的图示,并允许递归使用

人机界面设计

三大黄金原则

  1. 置于用户控制之下
  2. 减少用户的记忆负担
  3. 保持界面的一致性
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容