1、软件定义:问题定义、可行性研究,需求分析
2、软件开发:总体设计,详细设计,编码和单元测试,综合测试
3、软件维护:改正性维护、适应性维护、完善性维护、预防性维护
4、软件过程:瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型,Rational统一过程,敏捷过程与极限编程,微软过程
5、从3个方面研究每种解决的可行性:技术可行性、经济可行性、操作可行性
6、软件需求分析阶段的工作:可以分为以下4个方面:对问题的识别、分析与综合、编写需求分析文档以及需求分析评审
7、设计原理:模块化、抽象、逐步求精、信息隐藏和局部化、模块独立性(耦合、内聚)
8、决定软件可维护性的因素:可理解性、可测试性、可修改性、可移植性、可重用性
一、假设要求你开发一个软件,该软件的功能是把读入的浮点数开平方,所得到的结果应该精确到小数点后4位。一旦实现并测试完之后,该产品将被抛弃。你打算选用哪些软件生命周期模型?请说明你作出选择的理由。
答:对这个软件的需求很明确,实现开平方功能的算法也很成熟,因此,既无须通过原型来分析需求也无须用原型来验证设计方案。此外,一旦实现并测试完之后,该产品将被抛弃,因此也无须使用有助于提高软件可维护性的增量模型或螺旋模型来开发该软件。
综上所述,为了开发这个简单的软件,使用大多数人所熟悉的瀑布模型就可以了
二、假设你被任命为一家软件公司的项目负责人,你的工作是管理该公司已被广泛应
用的字处理软件的新版本开发。由于市场竞争激烈,公司规定了严格的完成期限并且已对外公布。你打算采用哪种软件生命周期模型?为什么?。
答:对这个项目的一个重要要求是,严格按照已对外公布了的日期完成产品开发工作,因此,选择生命周期模型时应该着重考虑哪些模型有助于加快产品开发的进度。使用增量模型开发软件时可以并行完成开发工作,因此能够加快开发进度。
这个项目是开发该公司已被广泛应用的字处理软件的新版本,从上述事实至少可以得出3点结论:第一,旧版本相当于一个原型,通过收集用户对旧版本的反映,较容易确定对新版本的需求,没必要再专门建立一个原型系统来分析用户的需求;第二,改公司的软件工程师对字处理软件很熟悉,有开发字处理软件的丰富经验,具有采用增量模型开发新版字处理软件所需要的技术水平;第三,该软件受到广大用户的喜爱,今后很可能还要开发更新的版本,因此,应该把该软件的体系结构设计成开放式的,以利于今后的改进和扩充。
综上所述,采用增量模型来完成这个项目比较恰当。
三、考虑一个修改磁带上主文件的系统。文件管理员把修改信息穿孔在卡片上,系统读入穿孔卡片上的信息并按照记录号把修改信息顺序排列好。然后系统逐个读入主文件上的记录,根据记录上的校验码校核每个读入的记录,丢掉出错的记录,按照修改信息修改余下的记录,产生的新文件存储在磁盘上。最后,系统输出一份修改报告供文件管理员参阅。
请分层次地画出上述主文件修改系统的数据流图。
答:本系统的数据源点和终点都是文件管理员,他既向系统提供修改信息,又接收系统生成的修改报告。系统功能主要有:接收修改信息,读主文件,校核记录,修改原始记录和产生报告。注意,问题陈述中所描述的“系统安装记录号把修改信息顺序排列好”,是具体的实现方法。在数据流图中无须描述具体实现方法,因此,在本系统的数据流图中不
需要包含“排序”功能。类似地,“文件管理员把修改信息穿孔在卡片上,系统读入穿孔卡片上的信息”,是系统接收修改信息的具体方法。在数据流图中无须描绘这个具体的实现方案,因此,在本系统的数据流图中不需要包含“穿卡片”和“读卡片”的功能。
本系统包含的数据存储是:修改信息,主文件和修改后的主文件。
图2.6是本系统的基本系统模型,图2.7是功能级数据流图。
四、用Jackson图描绘下述的一列火车的构成:
一列火车最多有两个火车头。只有一个火车头时则位于列车最前面,若还有第二个火车头时,则第二个火车头位于列车最后面。火车头既可能是内燃机车也可能是电气机车。车厢分为硬座车厢、硬卧车厢和软卧车厢等3种。硬座车厢在车内所有车厢的前面部分,软卧车厢在所有车厢的后面部分。此外,在硬卧车厢和软卧车厢之间还有一节餐车。
答:Jackson图善于描绘复杂事物的组成。用Jackson图描绘一列火车的构成的方法至少有两种,一种方法是把火车分为一个车头和两个车头两类,另一种方法是把后车头作为可选的。图3.29给出了描绘一列火车的构成的Jackson图。
解法1(b)解法2
五、为方便出乎,某银行拟开发计算机储蓄系统,储户填写的存款单或取款单由业务员输入系统,如果是存款,系统记录存款人姓名、住址、存款类型、存款日期、利率等信息,并印出存款单给储户,如果是取款,系统计算利息并印出利息清单给储户。写出问题定义并分析系统的可行性。
答:技术上的可行性:开发系统的计算机硬件已经非常普及,完全没有问题;现在的计算机各方面的技术都非常成熟,相对来说开发此系统的技术也要求比较简单,因此在技术方面是可行的;同时银行还必须有一定量的系统管理和维护的专业人员,在这方面可以通过培训原来的技术人员成为新的需要的技术人员,也可以雇用所需这方面的专业技术员;若按计划,在规定的期限内,本系统的开发是可以完成的。
操作可行性:开发的系统操作要非常简单,以便适合大人小孩老人各类人们都可以很方便操作使用。
还有,要有经过培训的专业人员在指导,以便当储户有什么疑难问题时能及时得到正确的答复
社会、政策允许的可行性:全部软件购买正版,机器设置通过正当途径购得
六、 分析图3.1所示的层次图,确定每个模块的内聚类型。分析图3.2,确定模块之间的耦合类型
图3.1 计算多地点日平均温度的程序
答:从图3.1所示的层次图可以看出,这个程序的功能是计算若干个指定地点的每日平均温度。变量sum保存某地一天之内在指定的时间取样点的温度之和。程序运行时首先初始化变量sum并打开文件,然后读取地点、时间和温度等原始数据,创建用于保存这些数据的温度记录,接下来计算特定地点的日平均温度,存储温度记录。重复调用“读取地
点、时间和温度”、“创建新的温度记录”、“计算特定地点的日平均温度”和“存储温度记录”等模块,直至计算出并保存好所有指定地点的日平均温度。最后,打印平均温度并关闭文件。
从上述叙述可知,“计算多个地点的日平均温度”、“读取地点、时间和温度”、“创建新的温度记录”、“计算特定地点的日平均温度”和“存储温度记录”等5个模块,每个都完成一个单一的功能,模块内所有元素都为完成同一个功能服务,彼此结合的十分紧密,因此,这5个模块的内聚类型都是功能内聚。
初看起来,由于初始化变量sum和打开文件这两个操作都是在程序运行的初始阶段完成的,“初始化变量sum和打开文件” 这个模块的内聚类型似乎是时间内聚。但是,初始化变量sum是本程序特有的操作,而打开文件是硬件要求的操作,是任何使用文件的程序都包含的一个操作,并非本程序特有的操作。当可以分配两个或更多个不同级别的内聚类型给一个模块时,规则是分配最低级别的内聚类型给该模块。因此,“初始化变量sum和打开文件”这个模块的内聚类型都是偶然内聚。同理,“关闭文件并打印平均温度” 这个模块的内聚类型也是偶然内聚。
分析图3.2,确定模块之间的耦合类型。
图3.2 一个程序的模块互连图
在图3.2中已经给模块之间的接口编了号码,表3.1描述了模块间的接口。
表3.1 模块接口描述
综合分析图3.2和表3.1所提供的信息可知各个模块之间的耦合情况。例如,当模块p调用模块 q时(接口1),它传递一个参数----飞机类型。当模块q把控制返还给模块p时,它传回一个状态标志。
某些模块之间的耦合类型是明显的,例如,模块p和q之间(接口1)、模块r和t之间(接口5)及模块s和u之间(接口6)都是数据耦合,因为它们传递的都是一个简单变量。
如果两个模块中的一个模块给另一个模块传递控制元素,也就是说,如果一个模块明显地控制另一个模块的逻辑,则它们之间具有控制耦合。例如,当给具有逻辑内聚的模块传递功能代码时就传递了控制元素。另一个控制耦合的例子是把控制开关作为一个参数传递。图3.2中模块q调用模块r时(接口3)传递一个功能代码,因此,这两个模块之间是控制耦合。
图3.2右侧文字说明,模块p、t和u更新同一个数据库,因此,它们之间具有公共环境耦合。
当模块p调用模块s时(接口2),如果模块s使用或更新模块p传递给它的零件清单中的所有元素,则模块p和s之间的耦合是数据耦合;但是,如果模块s只访问该清单中的一部分元素,,则模块p和s之间的耦合是特征耦合。模块q和s之间(接口4)的耦合情况与此类似。由于图3.2和表3.1中给出的信息尚不足以准确地描述各个模块的功能,所以不能确定这两对模块之间的耦合是数据耦合还是特征耦合。
因篇幅问题不能全部显示,请点此查看更多更全内容