笔记(软件工程第二章+第三章部分)

第二章 软件项目计划

软件项目计划是做什么的?

1.一个软件是否值得开发:

需要多长开发时间和多少投资成本?使用多少资源?

存在哪些风险,如何预防这些风险?

————————————————————————可行性分析

2.如何制定计划,安排人员,分配任务,安排进度?

————————————————————————项目计划

2.1问题定义

目的:

  • 弄清楚用户需要解决的问题——系统总目标是什么?

  • 项目所需要的资源和经费(粗略估计)

任务:

编写“系统目标与范围的说明”

实例:学生到教材科购书

人工教材销售中,学生购教材,要先到系里根据教学计划用书开购书证明,然后去教材科购买学生要跑两个地方——烦!系里——烦!如果直接到教材科,为防止学生多买或错买,影响计划供应,教材科在开发票前要审查购书单,(书种类多,学生专业多!),手续繁琐效率低下!

系统目标与范围的说明——示例

在这里插入图片描述

2.2可行性研究

目的:

  • 研究项目是否可能实现和值得进行(不是解决问题,而是分析存在风险,确定是否值得投入巨大的人力物力去做)

  • 回答why to do?&YES or NO

开销:

可行性研究的成本只占预期工程总成本的5%-10%

2.2.1可行性研究步骤:

推陈出新、几套备选方案、可行性分析

1.细化和修改"系统目标和范围",得出新系统逻辑模型

  • 复查"系统目标和范围",弄清用户的意图
  • 研究目前正在使用的系统流程图(旧的模型,现有模型)
  • 导出新系统逻辑模型——数据流图简化版(我们想要设计的模型)

2.导出新系统的几种可能的解决方案

  • 提供多种开发方案,评价,择一

提出推荐的方案

  • 本项目的开发价值
  • 推荐这个方案的理由

3.可行性分析

  • (经济可行性、技术可行性、法律可行性、用户使用可行性)

4.书写文档提交审查,给出结论意见(做or放弃?)

2.2.1.1推陈出新——>使用系统流程图:
  • 描述系统物理模型
  • 表达了数据在系统各部件之间的流动情况
  • 包含人员、硬件、软件等子系统
  • 符号:借用程序流程图符号

在这里插入图片描述

  • 复查"系统目标和范围",弄清用户的意图

需要把系里开购书证明去掉,将审查购买的任务划归教材科的计算机售书系统。

  • 研究目前正在使用的系统流程图(旧的模型,现有模型)

在这里插入图片描述

  • 导出新系统逻辑模型——数据流图简化版(我们想要设计的模型)

在这里插入图片描述

2.2.1.2推荐方案,方案选择:

系统的分解和实现方案是不唯一的,

  • 不同方案开发出的系统在系统功能和性能方面会有很大的差异(精度,安全性,可靠性)
  • 不同方案对成本、时间、人员、技术、设备的要求不同(设计,开发,设备,编码,测试,评审,运行,维护成本……)
  • 直接购买类似的商业软件VS自行开发(钱!)

反复比较

eg:停车位系统

2.2.1.3可行性分析的内容

1.可行性分析:

(1)经济可行性

  • 这个系统有无经济效益,多久能收回开发成本?(投资—回报期
  • 通过成本—效益估算,确定系统是否值得投资开发

(2)技术可行性

  • 风险分析:给定约束下能否设计并实现系统所需功能?
  • 资源分析:现有资源下(硬、软件,技术力量)能否实现?
  • 技术分析:现有科学技术能否实现?有哪些技术难点?

(3)法律可行性:

  • 侵权、破坏、责任,是否与法律相抵触?

法律可行性案例:

1)邮箱进入后,30分钟后,再次刷新——能再看到原来的邮件内容么?——no,session默认为30分钟

(2)网银的动态口令的输入允许时间为60秒

(3)手机余额可以直接查询,而手机通信详单要二次手机验证码验证

2.成本——效益分析

估计新系统所需的成本和可能产生的效益,以便从经济上衡量这个项目的价值

  • 系统成本:
  1. 开发成本
  2. 运行维护成本
  • 系统效益:
  1. 经济效益—有形(按货币)
  2. 社会效益—无形(学生节约购书时间)
  • 分析内容:
  1. 成本估计:
  • 计算系统的成本组成

  • 成本估计使用的几个概念

  • 成本估计方法

    1)基于代码行技术

    2)基于工作量的任务分解技术

    3)基于经验公式的估算模型

    ​ a)静态单变量模型

    ​ b)动态多变量模型

    ​ c)COCOMO模型

​ 2.效益分析

  • 货币的时间价值
  • 纯收入
  • 投资回报期

计算系统的成本组成(四部分)

  • 购置并安装软,硬件及其相关设备成本
  • 系统开发费用(成本估计)
  • 人员培训费用
  • 系统安装、运行和维护费用

成本估计方法

  • 开发成本估计使用的几个单位:

  • 代码行L

  • 工作量E(人—月,人—年)

  • 人员数量(人)

  • 开发时间T(月)

  • 成本率(元/行)

  • 生产率(行/月)

  • 工资(元/人—月)

  • 估算方法:

  • 基于代码行技术

1)思想:

​ 简单自底向上的定量的估算方法,把开发每个软件功能的成本和源程序代码行数联系起来. 若有历史数据作参考的话,方法还是有效的。

2)最佳期望行数:

​ L=(a+4m+b)/6 ;a:可能最小行数,b:可能最大行数,m:最可能的行数

3)行数的总误差:

L d = ∑ i = 1 n ( b − a 6 ) 2 L_d=\sum_{i=1}^{n}{(\frac{b-a}{6})}^2 Ld=i=1n(6ba)2 n为所划分的子系统数目

4)计算成本:

​ 软件成本(元)=代码行(行数)*成本率(元/行)

​ 其中成本率取决于软件的复杂程度和工资水平

  • 基于工作量的任务分解技术

把软件开发工程分解为若干个相对独立的子任务,分别估计每个子任务的成本,累加起来得到软件工程的总成本:

T = ∑ α ∗ B T=\sum{\alpha*B} T=αB T:软件总成本 B:每个单独开发任务的成本 α:系数

​ B=C*D

​ C:完成该子任务所需人力(人—月)

​ D:每人每月的平均工资(元/月—人)

​ 所以: T = ∑ α ∗ C ∗ D T=\sum{\alpha*C*D} T=αCD

在这里插入图片描述

  • 基于经验公式的估算模型

    • 静态单变量模型:

    面向KLOC的估算模型:

    1. Walston_Felix模型(L->E和T)

      E = 5.2 ∗ ( K L O C ) 0.91 ( 人月 ) E=5.2*(KLOC)^{0.91}(人月) E=5.2(KLOC)0.91(人月)

      T = 2.5 ∗ E 0.35 T=2.5*E^{0.35} T=2.5E0.35

      其中KLOC为代码行数的单位(千行)

    2. Doty模型(在KLOC>9适用)

      E = 5.288 ∗ ( K L O C ) 1.047 E=5.288*(KLOC)^{1.047} E=5.288(KLOC)1.047

    3. 动态多变量模型:

    ———————————人力资源的Rayleigh—Norden曲线

    ———————————Putnam模型提出的基础

    在这里插入图片描述

    1. Peyleigh曲线:

      1. ​ 横坐标表示距开发起点的时间,
      2. 纵坐标表示在不同时间点需要的人力
      3. td位于曲线的峰点
    2. 从Rayleigh曲线上看出,若平均使用人力(虚线),则:

      1. ​ 开始阶段人力过剩,如图①
      2. 中间人手不足,②
      3. 后期补偿为时已晚,③,造成人员浪费
    3. 信息系统的人力分配大致如Rayleigh曲线,td两边约为4:6

    4. Putnam模型

      1. 基于Rgleigh曲线,Putanam结合4000多个当代软件项目中手机的生产率数据,推导出来动态多变量模型

      2. E = ( L O C ∗ B 0.333 / P ) 3 ∗ ( 1 / t ) 4 E=(LOC*B^{0.333}/P)^3*(1/t)^4 E=(LOCB0.333/P)3(1/t)4

        LOC:由前面基于LOC估算出的代码行(行)

        E:工作量 单位:(人月)或(人年)

        t>1:开发时间(月)或(年)

        B:特殊技术因子,随规模和要求的增加而缓慢增加:

        ​ 小的程序(KLOC=5~15),B=0.16

        ​ 超过70KLOC的程序,B=0.39

        P:生产率参数(2000—30000),

        ​ P=2000,实时嵌入式开发

        ​ P=10000,电信及系统软件

        ​ P=12000,科学计算软件

        ​ P=28000,商业系统应用软件

      Putnam模型揭示了工作量与实践的四次方成反比

    5. COCOMO模型:

效益分析:

  1. 系统效益:

    1. 经济效益—有形(按货币)
    2. 社会效益—无形(学生节约购书时间)
  2. 一般设生命周期为5年

  3. 经济效益分析涉及重要概念

    1. 货币的时间价值(折算成当前的,现在)

      1. 成本估算的目的是要对项目投资,但投资在前取得效益在后,因此,要考虑货币的时间价值

      2. 通常用利率来表示货币的时间价值

        设年利率为i,现存入钱为P,则 n年后可以获得的钱数为:

        F = P ( 1 + i ) n F=P(1+i)^n F=P(1+i)n这就是P元钱在n年后的价值

        反之,若n年后能收入F元,则这些钱折合到现在价值为: P = F / ( 1 + i ) n P=F/(1+i)^n P=F/(1+i)n

      3. eg:CAD系统的效益分析:

        CAD模型每年节省多少钱?

        t_draw:平均绘图时间=4小时

        c:每个绘图小时的成本=20元

        n:每年的绘图量=8000

        p:CAD系统中已完成的绘图比=60%

        采用CAD绘图时间缩减比为1/4

        则每年节省的绘图费用为:

        ​ 缩减比*t_draw*c*n*p=9.6万元

        五年节省多少钱?(折算到现在)

        在这里插入图片描述

    2. 纯收入

      是指在整个生存周期之内系统的累计经济效益(折合成现在值)与投资之差

      假如上例投资20万:纯收入=41.5630-20=21.5630

    3. 投资回报期

      使累计的经济效益等于最初投资所需的时间。

      显然投资回收期越短,就能越快地获得利润,因此这项工程也就越值得投资

      在这里插入图片描述

    CAD成本效益—分析图:

    在这里插入图片描述


3.可行性研究报告(FAR)

在这里插入图片描述

2.2.1.4可行性论证报告
  1. 系统概述:

    1. 简述当前系统及其问题
    2. 新系统功能及新旧系统比较
  2. 可行性分析:

    1. 经济、技术、法律上的可行性
    2. 建立新系统的主客观条件分析
  3. 结论意见:

    YES or NO

2.3软件计划

在这里插入图片描述

  1. 项目组人员安排:

    在这里插入图片描述

  2. 角色细化

  3. 项目组成员表

    在这里插入图片描述

  4. 软件开发进度的安排

    1. 甘特图

    2. Pert图(工程网络图)

      机动时间=该任务结束事件的LET-该任务开始事件的EET-任务持续时间

  5. ​ 软件开发计划:

    在这里插入图片描述

第三章 软件需求分析

3.1需求分析概述

3.1.1需求分析的任务和步骤:

  1. 任务:让用户和开发者共同明确将要开发的是什么样的系统
  2. 步骤:
    1. 获取需求
    2. 提炼:建立分析模型
    3. 描述:编写SRS 需求规格说明书
    4. 验证

3.1.2需求获取的常用方法:

  1. 收集资料

    1. 原有系统的数据(账册,报表)

    2. 借鉴已有的类似软件产品

  2. 联合分析小组

    1. 用户代表、领域专家和系统分析员
  3. 客户访谈&会议

    1. 充分准备,寻找共同语言
    2. 事先准备一些问题
    3. 交流时循序渐进、逐步逼近
    4. 每次访谈后及时分析、整理、汇总
  4. 实地考察——观察用户工作流程

  5. 快速原型法

3.1.3需求说明

是需求分析应获取的内容,写SRS的依据

  1. 功能需求:

    1. 分析用户要求实现的全部功能(分析建模DFD,DD)
  2. 性能需求:

    1. 时间特性
    2. 时间精确性(响应时间,更新时间,数据转换时间,数据传输时间)
    3. 存储容量及后援存储
    4. 系统安全性
  3. 外部接口需求

    1. 用户接口(人机界面)
    2. 硬件接口
    3. 软件接口
    4. 通信接口
  4. 属性(可靠性,可用性,可维护性)

  5. 约束(精度,标准,语言,硬件平台)

3.1.4分析建模模型:

  1. 分析方法的种类:
    1. 传统的分析方法:
      1. 面向数据流的结构化分析方法(SA)
      2. 面向数据结构的Jackson方法(JSD)
      3. 结构化数据系统开发方法(DSSD)
    2. 面向对象的分析方法:
  2. 各种分析模型中均包括:
    1. 信息(或数据)模型
    2. 功能模型
    3. 行为模型

3.2结构化分析方法:

思想:自顶向下,逐步细化

适于数据处理类型软件的需求分析

步骤:

  1. 自顶向下对系统进行功能分解,画出分层DFD
  2. 由后向前定义系统的数据
  3. 编制DD和PSPEC
  4. 最终写出SRS

3.2.1结构化分析模型

在这里插入图片描述

3.2.2结构化分析描述工具:

功能模型:DFD和PSPEC

行为模型:CFD、CSPEC和STD

数据模型:DD,E-R图

3.2.2.1数据流图DFD:
3.2.2.1.1什么事数据流图DFD

描述系统逻辑模型:信息在系统中的流动和处理。

在这里插入图片描述

  • 文件与加工之间用箭头线连接,单项表示只读或只写,双向表示又读又写
  • 每一图形符号都必须标上名字
  • 加工框还应加上编号
  • 同流程图的区别:
    • 程序流程图表示程序的设计过程——怎么干
    • DFD是用来软件需求分析的工具,不表示程序的控制结构(选择/循环)——干什么
  • 分层:从高层到低层,分解前后的数据流必须一致

实例:学生购书系统

张秘书开购书证明,学生凭证明到教材科王会计开购书发票向李出纳员交纳书款,拿领书单到书库找保管员领书

在这里插入图片描述

去掉模型中非计算机本质的因素后得到的购书逻辑模型:

  • 如张、王。。人是可能变动的,但是他们的工作岗位是不变的,归结为审查、开发票、开书单、发书
  • 确定人工和目标系统的功能划分,其中收费、发书必须是由人工完成的,所以在计算机目标系统模型中去掉发书。
  • 经过复审需求,学生不该购买或书已经卖完,则“无效书单“

在这里插入图片描述

改进后的学生购买教材的系统模型:

在这里插入图片描述

3.2.2.1.2DFD绘制步骤:

1.找到外部实体,确定系统边界

2.从数据源出发,按系统的逻辑需求,逐步画出加工框,直至数据终点

3.DFD分层,自顶向下

在这里插入图片描述

4.对DFD进行复审

3.2.2.1.3DFD绘制一般原则
  1. 每个加工必须有输入输出流

  2. 两个加工之间可以有多股数据流

  3. 每个数据流必须有一个合适的名字

  4. DFD描述的是数据流不是控制流

  5. 分解中的**父子平衡**

    平衡:子图的所有输入(输出)数据流必须是父图中相应加工的输入(输出)(4号

    在这里插入图片描述

    不平衡:

    在这里插入图片描述

    特殊的平衡:父图只称为“订货单”的数据流是由“客户”、“帐号”和“数量”三部分数据组成的

    在这里插入图片描述

  6. 局部文件

    合理运用局部文件进行信息隐蔽:

    在这里插入图片描述

    例:子图中的文件ALPHA完全局部于加工4根据“抽象”原则,父图只需画出加工和加工之间的联系,而不必画出各个加工内部的细节,所以父图中不必画文件ALPHA,数据流XXX、YYY也不必画出。

    当文件被用作数据流图中某些加工之间的交界面时,才必须画出来

  7. 注意分解速度

    1. 最多不要超过7个
    2. 上层快些,下层慢些
  8. 当每个加工都已足够简单时,分解就可以结束

3.2.2.1.4**数据流图的基本图元素:**

附加符号:

  • *表示数据流之间是AND关系(同时存在)
  •  +表示数据流之间是OR关系
    
  • $$\bigoplus$$表示数据流之间是XOR关系(互斥关系)
    

在这里插入图片描述

输入:

与:

​ 登陆界面:只有用户名和密码都输对了才能登陆

​ 火车实名制:只有乘客拿着身份证A 和钱(数额)才能买票成功(C车票)

或:

​ 教材销售(超市)付款:要么付现金(A),要么刷卡(B),也可以刷卡+余额现金,输出是付款成功(C)

​ 考勤系统的门禁:输密码A或刷卡B,进入实验室的门禁(门开状态C)

异或:要么开、要么关:

​ 水闸的关闭系统 开:A ,关:B ,输出C:闸的位置

输出:

与:

​ 教材系统:发票这个数据流(A),购买模块输出购买记录(B),并领书单(C)

​ 订票系统,订票成功这个模块,同时写入车票购买记录(B),并打印输出车票(C)

或:

​ 教材销售记录查询之后(A),显示报表输出(B)或者流向提示是否打印报表(C)

​ 存折查询也查询之后(A),提示要么显示输出(B)或者要么提示打印存折(C)

异或:

​ 教材系统的入口功能选择 功能选择(A),销售(B)、采购(C)

​ 销售系统的付款加工(A),结果,要么成功(B)、要么付款失败(C),这种异或案例也见网上付款。

3.2.2.1.5实例1-1:教材购销系统:

(1)顶层DFD:

在这里插入图片描述

这个数据流图只是一个高层的系统逻辑模型,它反映了目标系统要实现的功能

  • 首先确定系统的输入和输出

  • 顶层数据流图,反映最主要业务处理流程

(2)第一层DFD:

在这里插入图片描述

(3)第二层DFD:1销售子系统:

分成两部分:补售、初售

在这里插入图片描述
在这里插入图片描述

3.2.2.2数据字典DD

与DFD配合,给出DFD中所有数据的定义和属性:

  1. DD的用途:

    1. 分析阶段的交流工具
    2. 包含控制信息
    3. 数据库设计的基础
  2. 内容:

    1. 数据项(一个数据元素)
    2. 数据流(包含多个数据项)
    3. 数据文件或数据库
  3. 定义数据的方法:自顶向下分解数据

  4. 表示方法:表格、公式法

    • 表格:(自顶向下:从文件->数据流->数据项)

      在这里插入图片描述
      在这里插入图片描述

    • 公式法定义DD:

      在这里插入图片描述

      • 存折=户名+帐号+性质+(印密) //存折由户名、帐号、性质和可选印密组成

      • 户名=2{字母}24 //户名为2-24个字母

      • 账号 = 账号码+“*”

      • 帐号码=“00000001”…“99999999” // 帐号位于1-99999999的区间

      • 性质=[普通用户|工资用户|结算用户] //帐户性质为普通用户、工资用户中一种

      • 印密=“0” // 默认无印密

    • 课堂练习:

( 笔记本)

3.2.2.3 E—R图:对复杂数据分析和建模

一对一、一对多、多对多————>>>>产生第三张表

主码(唯一标识记录),外码

教师:主码为工号

课程:主码为课程号

在这里插入图片描述

详见:笔记本(E-R图)

3.2.2.4加工说明PSPEC

在这里插入图片描述

###判定树:

在这里插入图片描述

###结构化语言:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

###判定表:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值