软件工程作业.docx

上传人:b****8 文档编号:10587624 上传时间:2023-02-21 格式:DOCX 页数:18 大小:442.78KB
下载 相关 举报
软件工程作业.docx_第1页
第1页 / 共18页
软件工程作业.docx_第2页
第2页 / 共18页
软件工程作业.docx_第3页
第3页 / 共18页
软件工程作业.docx_第4页
第4页 / 共18页
软件工程作业.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

软件工程作业.docx

《软件工程作业.docx》由会员分享,可在线阅读,更多相关《软件工程作业.docx(18页珍藏版)》请在冰豆网上搜索。

软件工程作业.docx

软件工程作业

第一章

1.什么是软件危机?

它有哪些典型表现?

为什么会出现软件危机?

答:

软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

    

软件工程主要有以下一些典型表现:

   

(1)用户对开发出的软件很难满意。

   

(2)软件产品的质量往往靠不住。

   (3)一般软件很难维护。

   

   (4)软件生产效率很低。

   (5)软件开发成本越来越大。

   (6)软件成本与开发进度难以估计。

   (7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。

产生软件危机原因主要有:

   

(1)开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。

造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。

   

(2)软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。

   (3)尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。

 

3.什么是软件工程?

它有哪些本质特征?

怎么用软件工程消除软件危机?

答:

软件工程:

用科学知识和技术原理来定义、开发、维护软件的一门学科。

其本质特征:

(1)软件工程关注于大型程序的构造

(2)软件工程的中心课题是控制复杂性

(3)软件经常变化

(4)开发软件的效率非常重要

(5)和谐的合作是开发软件的关键

(6)软件必须有效的支持它的用户

(7)在软件工程领域中通常由具有一种文化背景的人替代具有另一种文化背景的人创造产品

用软件工程消除软件危机:

(1)充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。

在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。

(2)推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。

(3)根据不同的应用领域,开发更好的软件工具并使用这些工具。

将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。

 

6.什么是软件过程?

它与软件工程方法学有何关系?

答:

软件过程:

是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

  软件工程方法学的三要素是指方法、工具和过程,其中的过程就是指软件过程,可见,软件过程是软件工程方法学的三要素之一。

 

7.什么是软件生命周期模型?

试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的适用范围。

答:

软件生存周期模型:

是描述软件开发过程中各种活动如何执行的模型。

其中模型是为了理解事物而对事物做出一种抽象,它忽略不必要的细节,它也是事物的一种抽象形式、一个规划、一个程序。

  瀑布模型的优势在于它是规范的、文档驱动的方法;这种模型的问题是,最终开发出的软件产品可能并不是用户真正需要的。

  快速原型模型正是为了克服瀑布模型的缺点而提出来的。

它通过快速构建起一个可在计算机上运行的原型系统,让用户试用原型并收集用户的反馈意见的办法,获取用户的真正需求。

  增量模型具有可在软件开发的早期阶段使投资获得明显回报和较容易维护的优点,但是,要求软件具有开放的结构是使用这种模型时固有的困难。

  风险驱动的螺旋模型适用于内部开发的大型软件项目,但是,只有在开发人员具有风险分析和排除风险的经验及专门知识时,使用这种模型才会获得成功。

 

习题二

1.在软件开发的早期阶段为什么要进行可行性研究?

应该从哪些方面研究目标系统的可行性?

答:

可行性研究的目的就是,用最小的代价在尽可能短的时间内研究并确定所有面临的问题是否能够解决。

首先需要分析和澄清问题定义。

然后分析员应该到处系统的逻辑模型。

研究目标系统的可行性分为以下三方面:

(1)技术可行性:

使用现有的技术能实现这个系统吗?

(2)经济可行性:

这个性同的经济效益能超过他的开发成本吗?

(3)操作可行性:

系统的操作方式在这个拥护住址内性的通吗?

3.为方便旅客,某航空公司拟开发一个机票预订系统。

旅行社把预订机票的旅客信息(姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地等)输入该系统,系统为旅客安排航班,印出取票通知和账单,旅客在飞机起飞的前一天凭取票通知和账单交款取票,系统校对无误即印出机票给旅客。

写出问题定义并分析此系统的可行性。

答:

(1)问题定义:

a)数据流图:

b)数据字典:

旅客信息:

姓名:

xxx

性别:

描述:

旅客订票时所填的资料(省份证号、所需机票的基本信息、乘机时间)

定义:

订票申请表单(旅客姓名、旅客性别、起飞日期、飞行目的地、座位类型)

位置:

位置:

在客户端由旅客填写

 

航班名称:

航班类型:

描述:

所有从本地起飞的航班信息(航班号、起飞时间、到达的目的地、空出的座位数、票价)

定义:

航班信息(航班号、起飞日期、飞行目的地、空出的座位数、票价)

位置:

从服务器端查询后,发送到客户端

航班信息:

账单名称:

账单号:

描述:

已定票的旅客信息资料(帐单号、旅客姓名、旅客性别、旅客身份证号)

定义:

账单基本信息(订票旅客的姓名、性别、省份证号、航班号)

位置:

在服务器端产生,发送回客户端

账单信息:

机票编号:

航班号:

描述:

所有机票信息(已出售的机票、剩余机票、航班号、起飞时间)

定义:

机票基本信息(旅客姓名、旅客性别、身份证号码、航班号、起飞时间、飞行目的地、座位号)

位置:

发送到客户端

机票信息:

(2)可行性分析:

技术可行性:

经过调查分析,得到目前航空公司机票预定系统流程图如下:

图一

图二

经济可行性:

成本估算:

打印机1台(2000元)+开发费(3500元)=5500元,可承担。

效益估算:

该系统有很好的社会效益,提高了航空公司售票效率,方便了旅客,售票方便化,科学化。

操作可行性:

比较图一图二可以看出,与人工系统相比,计算机保留了原系统的主要工作流程,可以看出计算机系统是工系统的优化,操作也不复杂,工作人员在短时间经过培训就可熟练掌握。

结论:

通过以上分析可知,该系统是可行的。

5.北京某高校可用的电话号码有以下几类:

校内电话号码由4位数字组成,第1位数字不是0;校外电话又分为本市电话和外地电话两类,拨校外电话需先拨0,若是本市电话则再接着拨8位数字(第1位不是0),若是外地电话则拨3位区码再拨8位电话号码(第1位不是0)。

请用定义数据的方法,定义上述的电话号码。

答:

电话号码=[校内电话号码|校外电话号码]

校内电话号码=非零数字+3位数字

校外电话号码=[本市号码|外地号码]

本市号码=0+8位数字

外地号码=0+3位数字+8位数字

非零数字=[1|2|3|4|5|6|7|8|9]

3位数字=3{数字}3

8位数字=非零数字+7位数字

7位数字=7{数字}7

数字=[0|1|2|3|4|5|6|7|8|9]

 

第三章

1.为什么要进行需求分析?

通常对软件系统有什么需求?

答:

为了真正满足客户要求的软件产品,首先必须知道用户的需求。

所以要进行需求分析。

对系统的需求包括:

1功能需求2性能需求3可靠性与可用性需求4出错处理需求

5接口需求6约束7逆向需求8将来可能提出的要求

4.分析习题2地3题所述的机票预订系统,试用实体-联系图描绘本系统中的数据对象并用数据流图描绘本系统的功能。

答:

实体-联系图

数据流图:

6复印机的工作过程大致如下:

未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现没纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告等待维修人员来排除故障,故障排除后回到闲置状态。

请用状态转换图描绘复印机的行为。

答:

从问题陈述可知,复印机的状态主要有“闲置”、“复印”、“缺纸”和“卡纸”。

引起状态转换的事件主要是“复印命令”、“完成复印命令”、“发现缺纸”、“装满纸”、“发生卡纸故障”和“排除了卡纸故障”。

第四章

1.举例对比形式化方法和欠形式化方法的优缺点。

答:

非形式化方法的缺点:

用自然语言书写的系统规格说明书,可能存在矛盾,二义性,含糊性,不完整性及抽象层次混乱等问题。

形式化方法的优点:

把数学引入软件开发过程,创造了基于数学的形式化方法,能够简洁准确地描述物理现象。

对象或动作的结果。

数学比自然语言更适于描述详细的需求,它准确到几乎没有二义性。

在软件开发过程中使用数学的另一个优点是,可以在不同的软件工程活动之间平滑地过渡。

以一个简单的俄罗斯方块游戏系统规格说明为例,用自然语言描述如下:

游戏的每个状态对应一个游戏界面,开始状态下,但变量cd_start=1是进入正常游戏的状态,cd_start=2时进入读取游戏状态,cd_start=3是进入得分榜界面查看。

在得分榜界面按任意键返回开始界面,在读取游戏界面,当游戏数据读取完成后进入正常游戏状态,正常游戏状态下,同时按下左键和右键进入储存游戏界面,数据储存结束后返回正常游戏状态,在正常游戏状态下,如果变量game_res=0,则游戏结束,进入游戏结束画面。

可见,用自然语言书写的系统规格说明书,罗嗦繁杂,并且可能存在矛盾,二义性,含糊性,不完整性及抽象层次混乱等问题。

用有穷状态的描述如下:

状态机J:

{开始,正常游戏(游戏进行中),得分榜,读取游戏,储存游戏,游戏结束}

输入集K:

{按键UP,按键DOWN,按键LEFT,按键RIGHT,寄存器变量cd_start,寄存器变量game_res}

转换函数T:

如图4.1所示

初始态S:

{开始}

终态集F:

{游戏结束}

可见用形式化语言描述,更加简洁,准确,无歧义。

4.考虑下述的自动化图书馆流通系统:

每本书都有一个条形码,每个人都有一个带条形码的卡片。

但一个借阅人想借一本书时,图书管理员扫描书上的条形码和借阅人卡片的条形码,然后在计算机终端上输入C;当归还一本书时,图书管理员将再次扫描,并输入R。

图书管理员可以把一些书加到(+)图书集合中,也可以删除(—)它们。

借阅人可以再终端上查找到某个作者所有的书(输入“A=”和作者名字),或具有指定标题的所有书籍(输入“T=”和标题),或属于特定主题范围内的所有图书(输入“S=”加主题范围)。

最后,如果借阅人想借的书已被别人借走,图书管理员将给这本书设置一个预约,以便书归还时把书留给预约的借阅人(输入“H=”加书号)。

试用有穷状态机说明上述的图书流通系统。

答:

图书馆流通系统的有穷状态机描述如下:

(一)图书状态的有穷状态机描述

状态机J:

{书在图书馆S1,书被借出S2,书被预约S3}

输入集K:

{书上条形码,借阅卡条形码,终端输入各种命令}

转换函数T:

如图4.4.1所示

初始态S:

{书在图书馆S1,书被借出S2}

终态集F:

{书被借出S2,书被预约S3}

(二)图书馆终端管理员模式的有穷状态机描述

状态机J:

{管理员设置状态,书入库,书出库(删除),预约}

输入集K:

{终端输入管理员命令,书的各种状态(S1,S2,S3}

转换函数T:

如图4.4.2所示

初始态S:

{管理员设置状态}

终态集F:

{书入库,书出库(删除),预约,}

(二)图书馆终端用户模式的有穷状态机描述

状态机J:

{读者查询状态,查询结果}

输入集K:

{终端输入用户查询命令,书的各种状态(S1,S2,S3)}

转换函数T:

如图4.4.3所示

初始态S:

{读者查询状态}

终态集F:

{查询结果}

5.试用Petri网说明第四题所述图书馆中一本书的循环过程。

在规格说明中应该包括操作H、C及R。

答:

图书馆流通系统中一本书的巡回过程的Petri图如下:

其中P1表示书在图书馆P2表示书在读者手上,P3书被预约

第五章

1.为每种类型的模块耦合举一个具体例子。

答:

计算机网络属于松耦合系统,即是数据耦合。

遥控器与电器是控制耦合

多机系统是公共环境耦合系统

汇编程序模块是内容耦合

2.为每种类型的模块内聚举一个具体例子。

答:

逻辑内聚:

一个子程序将打印季度开支报告、月份开支报告和日开支报告.具体打印哪一个,将由传入的控制标志决定,这个子程序具有逻辑内聚性,因为它的内部逻辑是由输进去的外部控制标志决定的。

时间内聚:

若一个模块包含了需要在同一时间段中执行的多个任务,则称该模块的内聚为时间内聚。

例如,将多个变量的初始化放在同一个模块中实现,或将需要同时使用的多个库文件的打开操作放在同一个模块中,都会产生时间内聚的模块。

过程内聚:

假设有一个子程序,它产生读取雇员的名字,然后是地址,最后是它的电话号码。

这种顺序之所以重要,仅仅是因为它符合用户的要求,用户希望按这种顺序进行屏幕输入。

另外一个子程序将读取关于雇员的其它信息。

这个子程序是过程内聚性,因为是由一个特定顺序而不是其它任何原因,把这些操作组合在一起的。

顺序内聚:

假设有一个按给出的生日计算雇员年龄、退休时间的子程序,如果它是利用所计算的年龄来确定雇员将要退休的时间,那么它就具有顺序内聚性。

而如果它是分别计算年龄和退休时间的,但使用相同生日数据,那它就只具有通讯内聚性。

功能内聚:

比如计算雇员年龄并给出生日的子程序就是功能内聚性的,因为它只完成一项工作,而且完成得很好。

偶然内聚:

如果一个模块完成一组任务,这些任务彼此间即使有关系,关系也比较松散,就叫做偶然内聚。

3.用面向数据流的方法设计下列系统的软件结构。

(2)机票预订系统。

 

答:

(2)

 

 

 

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1