软件设计师必考精华 - 软件工程和系统开发

本文详细探讨了软件工程的各个方面,包括软件开发模型、开发方法(如结构化、面向对象、敏捷开发)、软件过程改进、项目管理、系统设计、软件测试和软件维护。重点介绍了模块设计的合理原则、不同开发方法的特点、CMMI模型、风险管理和项目度量。文章旨在帮助软件设计师全面理解软件生命周期的关键环节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

软件工程和系统开发

1、软件开发模型

2、软件开发方法

3、软件过程改进

4、软件项目管理

5、软件项目度量

6、系统设计(内聚和耦合)

7、软件测试

8、软件维护


软件工程和系统开发

软件工程的基本要素:方法、工具和过程

1、软件开发模型

软件开发模型 解释 特点
瀑布模型 将开发过程分解为一系列的顺序,当某一阶段出现问题时,返回上一阶段进行修改。如正常发开,则从一个阶段流动到下一阶段 适用于需求比较稳定,很少需要变更项目 难以适应变化的需求
V模型 瀑布模型的一种,说明测试活动如何与分析和设计相联系 与测试活动结合
演化模型 具有迭代开发的特性,可以看成多个重复执行,且有反馈的“瀑布模型” 适用于对软件需求缺乏准确认知的情况,需求不明确
原型模型 沟通—制定开发计划—快速设计建模-构建原型—交付反馈 不适合大规模开发软件,比如火箭、卫星系统
螺旋模型 一般采用周期性开发,制定计划—风险分析—实事工程—客户评价 瀑布模型 + 快速原型模型 制定计划、风险分析、实施工程、客户评估 强调了风险分析,适合大型复杂系统开发
增量模型 本质上是迭代,采用若干有时间先后的序列,每个序列产生一个增量 模块划分是难点,当需要重新开发时,管理成本很大
喷泉模型 面向对象的开发模型 迭代无间隙 开发活动之间不存在明显的界限

设计软件结构模块时,应做到合理适中原则

  • 模块的扇入扇出要合理,尽量减少高扇入和高扇出

  • 模块大小要适中,相似功能的模块合并

  • 模块宽度和深度适中

    若一个模块的作用范围不在其控制范围,应:上移判断点或下移受判模块

2、软件开发方法

阶段 产物
环境搭建 开发环境搭建、开发工具、文档工具
需求分析阶段 (按优先级) 需求规格说明、项目开发计划、设计标准、验证测试计划等
系统设计阶段 (做什么?怎么做?) 系统设计规格说明、数据库设计、界面设计等
测试阶段 操作手册

2.1 结构化开发方法

特点:

  • 自顶向下,逐层分解

  • 基本原则是功能的分解和抽象

  • 特别适合于数据领域的项目

  • 不适合特别大规模的开发

结构化分析:

  • 结构化分析(一套数据流图,一本数据字典、一组加工逻辑(描述的是实现策略而不是细节),无外部实体

  • 结构化设计

  • 结构化程序设计组成

    • 体系结构设计:各部件、体系设计

    • 接口设计:主要依据需求分析阶段的数据流图,系统和模块间的调用,内部和外部交互设计

    • 数据设计:数据库设计

    • 过程设计:模块详细设计,包括数据结构、算法设计

遵循自顶而上的顺序,先进行整体、全局的设计,后进行细节、局部的设计,并将目标分解为一个个的模块


2.2 面向数据结构方法

原型方法:认为需求无法预先准确定义,可能需要反复修改,因此快速为用户搭建一个原型系统,反复修改,直到最后的产品

适用于需求不明确的情况

2.3 面相对象方法

迭代模型的生命周期:初级阶段—细化阶段—构建阶段—交付阶段

适合大规模、复杂开发

2.4 敏捷开发

不断快速迭代、改进、交流,强调个体和交互

  • 极限编程(EP)

    最佳实践 具体内容
    小型发布 设计尽早交付,可控制工作量和风险,尽早得到用户反馈 清楚发开进度,小而短的周期
    测试先行 先写单元测试代码,再开发
    重构 不改变系统行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值