视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
软件工程(东华理工大学)重点
2025-10-02 13:58:45 责编:小OO
文档
3.1 软件需求分析

例:有一个大学图书管理系统,该系统除了一般的图书管理功能外,还能够为学生和教工从其他图书馆借阅图书和文献资料提供服务。

因此系统应该具备以下功能:

    ⑴ 基本数据维护功能

    ⑵ 基本业务功能

    ⑶ 数据库管理功能

⑷ 信息查询功能

---- 功能需求

⑴基本数据维护功能

        提供使用者录入、修改并维护基本数据的途径。基本数据包括读者的信息、图书资料的相关信息,可以对这些信息进行修改,更新。

⑵基本业务功能

        读者借、还书籍的登记管理功能,随时根据读者借、还书籍的情况更新数据库系统,如果书籍已经借出,可以进行预留操作以及书籍的编目、入库、更新等操作。

⑶数据库管理功能

        对所有图书信息及读者信息进行统一管理维护的功能,对书籍的借还也要进行详细的登记,以便协调整个图书馆的运作。

⑷信息查询功能

        提供对各类信息的查询功能,如对本图书馆的用户借书信息、还书的信息、书籍源信息、预留信息等进行查询,对其他图书馆的书籍、资料源信息的查询功能。

----非功能需求

    ① 系统安全性需求:为保证系统安全性,对本图书馆的各项功能进行分级、分权限操作,对各类用户进行确认。对其他图书馆借阅图书和文献资料服务控制访问范围:如限IP、限用户等。

    ② 对系统可用性的需求:为了方便使用者,要求对所有交互操作提供在线帮助功能。

    ③ 对系统查询速度的需求:要求系统在20 s之内响应查询服务请求。

    ④ 对系统可靠性的需求:要求系统失败发生率小于1%。

-----  领域需求

        例如:对“大学图书管理系统”,提出一些与图书管理的业务相关的需求:

   ⑴ 图书编目要求按照《中国图书馆分类法》进行;

   ⑵ 由于版权,某些文献资料只能在图书馆规定的阅览室阅读,并复制和打印。

         第一条需求是遵循我国图书管理的规定,执行对图书的分类管理的标准。而第二条需求则是版权法对图书馆文献资料的保护的需要,描述了对一类文献资料有的使用和服务。 

3.2 软件需求分析方法

酒店管理系统

按照功能分解为以下子系统:

1.客房预定系统         2.前台接待系统  3.前台收银系统         4.账务系统 

     5.管家系统      6.电话系统     7.客房系统                 8.合约系统

       9.经理系统  10.总经理系统11.密码管理系统       12.报表系统

         13.账务报表

例:盘存/销售系统,用户提出系统应有以下功能:

    ① 计算买主订单                         ② 准备销售报表  

    ③ 建立买主文件和应收账 ④ 运行更新的盘存文件

    ⑤ 产生托运单和包装单             ⑥ 保证库存及时订货

 1、 结构化分析方法

    是一种以数据、数据的封闭性为基础,从问题空

间到某种表示的映射方法,由数据流图(DFD图)表示。

 结构化分析方法—图书预订系统

例:学生成绩管理系统 

        在该系统中,教务人员录入学生信息、课程信息和成绩信息,学生可以随时查询自己所选课程的成绩。由于学生成绩属于敏感信息,系统必须提供必要的安全措施以防非法存取。

第1层

第2层

需求案例分析

案例一      医院病房监护系统

                    (采用结构化分析方法)

案例二      网上竞拍系统

                       (采用基于用例的方法)

案 例 一   医院病房监护系统

一、问题的描述

  在医院ICU病房里,将病症监视器安置在每个病床,对病人进行监护。监视器将病人的组合病症信号实时地传送到监护系统进行分析处理。

        在中心值班室里,值班护士使用监护系统对病人的情况进行监控,监护系统实时地将病人的病症信号与标准的病诊信号进行比较分析,当病症出现异常时,系统会立即自动报警,并打印病情报告和更新病历。

        根据医生的要求随时打印病人的病情报告,系统还定期自动更新病历。

经过初步的需求分析,得到系统功能要求:

1. 监视病人的病症(血压、体温、脉搏等)。

2. 定时更新病历。

3. 病情出现异常情况时报警。

4. 随机地产生某一病人的病情报告。

二、系统功能需求

1. 监视病员的病症      

 ♦ 采集病症信号(血压、体温、脉搏等)。

 ♦ 组合病症信号。

 ♦ 将模拟病症信号转换为数字信号(A/D转换)。

2. 定时更新病历

 ♦ 将病症信号进行格式化并加入更新日期、时间。

 ♦ 更新病历库中病人的信息。

 ♦ 可人工设定更新病历的时间间隔。

二、系统功能需求

3. 病情出现异常情况时报警

 ♦ 根据标准病症信号库中的值,判断是否报警。

 ♦ 将报警信号转换为各种模拟信号(D/A转换)。

 ♦ 实时打印病情报告,立即更新病历。

4. 随机地产生某一病员的病情报告

非功能需求

1. 监视器与网络的可靠性要求,涉及人的生命安全。

2. 效率需求中对时间、空间的需求,所采集的病症信号数据量大。

3. 互操作需求--如要求监视器采样频率可人工调整等。

4. 对病人病历的隐私的要求。

医院病房监护系统分层DFD图

顶层确定了系统的范围,其外部实体为病人和护士。

伪代码

    S1;

if (x>5) then S2

                else  S3;

while (y<0) S4;

    S5;

if u>0 then

          { 

              S6;

while (k>5) S7;

               }

    S8;

顺序结构对应的伪码,其中‘seq’和‘end’是关键字:

A seq

   do B;

   do C;

   do D;

A end

选择结构对应的伪码,其中‘select’、‘or’ 、‘do’和‘end’是关键字,cond1、cond2和cond3分别是执行B、C或D的条件:

  A select 

      cond1 do B;

   or cond2 do C;

     or cond3 do D;

  A end

重复结构对应的伪码,其中‘iter’、‘until’、‘while’和‘end’是关键字(重复结构有until和while两种形式),cond是条件:

  A iter until(或while)cond

   do B;

  A end

 程序1  

     if ( A < B ) goto 120;

if ( B < C ) goto 110;

  100   write ( C ); 

        goto 140;

  110   write ( B );

        goto 140;

120 if ( A < C ) goto 130; 

        goto 100;

  130   write ( A );

  140   end 

   程序2  

if ( A < B ) and ( A < C ) then

        write ( A )

  else

         if ( A  B ) and ( B < C ) then

        write ( B )

     else

        write ( C )

        endif

     endif

程序1

f0 = f (a); f1 = f (b);

if ( f0 * f1 <= 0 ) {

    x0 = a; x1 = b;

    for  ( i = 1;i <= n;i++ ){

        xm = ( x0+x1 ) / 2; fm = f (xm);

if ( abs (fm) < eps || abs (x1-x0) < eps)

            goto  finish; 

if ( f0 * fm > 0 ) { x0 = xm; f0 = fm;}  

        else x1 = xm;

    }

    finish:printf ();

}

程序2

f0 = f (a); f1 = f (b);

if ( f0 * f1 <= 0 ) {

    x0 = a; x1 = b;

    for  ( i = 1;i <= n;i++ ){

        xm = ( x0+x1 ) / 2; fm = f (xm);

if ( abs (fm) < eps || abs (x1-x0) < eps)

            break; 

if ( f0 * fm > 0 ) { x0 = xm; f0 = fm;}  

        else x1 = xm;

    }

    printf ();

}

例:二分法求方程 f (x)=0 在区间[a,b]中的根

程序3

f0 = f (a); f1 = f (b);

if ( f0 * f1 <= 0 ) {

    x0 = a; x1 = b;i == 1;finished = 0;

while ( i <= n && 0 == finished){

        xm = ( x0+x1 ) / 2; fm = f (xm);

if ( abs (fm) < eps || abs (x1-x0) < eps)

            finished = 1;

        if  ( 0 == finished) {

if ( f0 * fm > 0 ) { x0 = xm; f0 = fm;}  

            else x1 = xm;

        }

    }

    printf ();

}

main ( ) {              //程序框架

  建立2到100的数组A[ ],其中A[i]=i;

         -----------------------------------1

  建立2到10的素数表 B[ ],其中存放2

         到10以内的素数;-----------2

  若A[i]=i是B[ ]中任一数的倍数,则

         剔除A[i];---------------------3

  输出A[ ]中所有没有被剔除的数;

         -----------------------------------4

}

main ( ) {

/*建立2到100的数组A[ ],其中A[i]=i*/

for ( i = 2;i <= 100;i++ ) A[i] = i;

/* 建立2到10的素数表B[ ],其中存放2到

        10以内的素数*/

B[1]= 2;B[2]= 3;B[3]= 5;B[4]= 7;

/*若A[i]=i是B[ ]中任一数的倍数,则剔

       除A[i]*/

for ( j = 1;j <= 4;j++ )

      检查A[ ]所有的数能否被B[j]整除并将

      能被整除的数从A[ ]中剔除; -----3.1 

    /*输出A[ ]中所有没有被剔除的数*/

    for ( i = 2;i <= 100;i++ )

   若A[i]没有被剔除,则输出之 ---4.1

}

对框架中的局部再做细化,得到整个程序。

     for ( i = 2;i <= 100;i++)

      if ( A[i]/B[j] * B[j] == A[i] )

          A[i] = 0;

      /*输出A[ ]中所有没有被剔除的数*/

  for ( i = 2; i <= 100;i++) 

      /*若A[i]没有被剔除,则输出之*/

  if ( A[i] != 0 )

     printf ( “A[%d]=%d\\n”, I, A[i] );

}  

例:打印A、B、C中的最小值

程序1

if ( A < B ) goto 120;

if ( B < C ) goto 110;

100   write ( C );goto 140;

110   write ( B );goto 140;

120 if ( A < C ) goto 130; 

goto 100;

130   write ( A );

140   end 

由于“正式成绩清单”中缺少“考生通知单”中的姓名、通信地址等数据,这些数据也无法由加工2.3自己产生,因此,加工2.3不满足数据守恒的条件

“统计成绩”第二级分解的结构图

下载本文

显示全文
专题