软件工程
什么是软件危机?主要表现形式?如何解决软件危机?
软件危机是指在计算机软件开发和维护时所遇到的一系列问题。软件危机主要包含两个方面问题:一是如何开发软件以满足社会对软件日益增长的需求;二是如何维护数量不断增长的已有软件。
产生原因:
(1)软件是计算机系统中的逻辑部件,软件产品往往规模庞大,给软件的开发和维护带来客观的困难。
(2)软件一般要使用5-10年,在这段时间里,很可能出现开发时没有预料到的问题。
(3)软件开发技术落后,生产方式和开发工具落后。
(4)软件开发人员忽视软件需求分析的重要性,对软件可维护性不重视,也是造成软件危机的原因之一。
主要表现形式:
软件的发展速度跟不上硬件的发展和用户的需求
软件的开发成本和开发进度不能预先估计,用户不满意。
软件产品质量差,可靠性不能保证。
软件产品可维护性差
软件没有合适的文档资料
解决软件危机的途径:
使用好的软件开发技术和方法。
使用好的软件开发工具,提高软件生产率。
开发软件时有良好的组织、严密的管理,各方面人员相互配合共同完成任务。
什么是模块,有哪些属性?
模块是能够单独命名,由边界元素限定的程序元素的序列。在软件的体系结构中,模块能独立地完成一定的功能,是可以组合、分解和更换的单元。
模块具有以下基本属性:
名称:模块的名称必须表达该模块的功能,指明每次调用它时应完成的功能。模块的名称由一个动词和 一个名词组成,如计算成绩总评分、计算日销售额等。
接口:模块的输入和输出
功能:模块所实现的功能
逻辑:模块内部如何实现功能及所需要的数据
状态:模块的调用与被调用关系
模块化是指把系统分割成能完成独立功能的模块,明确规定各模块及其输入输出规格,使模块的界面不会产生任何混乱。
模块独立性要求模块之间低耦合、模块内部高內聚。
软件开发过程的每一阶段都在采用逐步求精方法,用自顶向下、由抽象到具体的逐步求精方法,进行软件的设计与实现。
软件测试的目标
软件分析、设计过程中难免有各种各样的错误,需要通过测试查找错误,以保证软件的质量。软件测试是由人工或计算机来执行或评价软件的过程,以验证软件是否满足规定的需求或识别期望的结果和实际结果之间有无差别。
软件测试的目标:
测试是为了发现程序中的错误而执行程序的过程
好的测试方案能够发现尚未发现的错误
成功的测试时发现了尚未发现的错误的测试。
总之,软件测试是指通过人工或计算机执行程序,来有意识地发现程序中的设计错误和编码错误的过程。
黑盒测试和白盒测试的区别
黑盒法又称功能测试,其测试用例完全是根据程序的功能说明来设计的。在应用这种测试法时,测试者完全不考虑程序的内部结构和内部特性,而是把软件看成是一个黑盒,测试时仅关心如何寻找出可能使程序不按要求运行的情况,因而测试是在程序接口进行的。
黑盒法是最基本的测试法,主要测试软件能否满足功能要求,检查输入能否被正确地接收,软件能否正确地输出结果。
白盒法又称结构测试,其测试用例是根据程序内部的逻辑结构和执行路径来设计的。用白盒法测试时,从检查程序的逻辑着手。
在软件测试时,常把黑盒法和白盒法结合起来进行,这也称为灰盒法。
UML图有哪些
用例图:定义了系统的功能需求。用例图从用户的角度描述系统功能,并指出各功能的操作者。
类图:描述类与类之间的静态关系。
对象图:可以看做是类图的实例,能帮助人们理解比较复杂的类图。
状态图:画出状态图,才可正确地认识对象的行为并定义它的服务。
顺序图:描述对象之间动态交互的情况,着重表示对象间消息传递的时间顺序。
活动图:是状态图的一种特殊情况。无需指明任何事件,只要动作被执行,活动图中的状态就自动开始转换。
协作图:用于描述系统中相互协作的对象之间的交互关系和关联链接关系,它以对象图的形式来描述。
构建图:描述软件构件之间的相互依赖关系。
部署图:描述计算机系统硬件的物理拓扑结构及在此结构上执行的软件。
软件工程学的主要内容和基本原理
软件工程学的主要内容是软件开发技术和软件工程管理。其中,软件开发技术包括软件工程方法学、软件工具和软件开发环境;软件工程管理包括软件工程经济学和软件管理学。
基本原理:
用分阶段的生存周期计划进行严格的管理
坚持进行阶段评审
实行严格的产品控制
采用现代程序设计技术
软件工程结构应能清楚地审查
开发小组的人员应该少而精
承认不断改进软件工程实践的必要性
Web有哪几种层次,画图说明
二层C/S结构:(客户机*n ↔ 网络 ↔ 服务器)
是一个平等环境,双方都可以是服务端或客户端
组成:客户机、后端服务器、网络
优点:
用户使用简单、直观
编程、调试和维护成本低
负载比较均衡,资源利用率高
允许在一个客户机上运行不同计算机平台上的多种应用
扩展性、可用性、适用性好
三层C/S结构:(客户机*n ↔网络 ↔Web服务器 ↔ 数据库服务器)
可维护性高
将整个系统划分成3个部分;表示层(Web浏览器)、应用逻辑层(Web服务器)、数据存储层
四层C/S结构:(客户机*n ↔网络 ↔Web服务器 ↔ 应用服务器 ↔ 数据库服务器)
应用服务器负责将应用编程接口提供给程序使用
将整个系统划分成4个部分;表示层(Web浏览器)、应用逻辑层(Web服务器)、应用层 、数据存储层
B/S结构:(客户浏览器*n ↔ Web服务器 ↔ 数据库服务器)
是C/S架构的特例,优点是不需要安装任何专门的软件,只要一台能上网的电脑即可
画图
3.拟开发火车票订票系统。列车运行目录上存放车次、始发站、终点站、途经站的 站名。每次列车分别属于以下类型之一:动车、高铁、特快、快速和普快,每次列车分别 设硬座、软座、软卧和硬卧车厢若干,软卧分上铺和下铺,硬卧分上铺、中铺和下铺,铺 位编号为车厢号、铺位号,如8车厢5号上铺。车票价格随列车类型、铺位类型而各不相 同。旅客可预订 15天内的火车票,预订时需输入日期、车次、出发站、到达站,并提供 旅客姓名和身份证号。请为该系统编写数据字典,并画出数据流图和IPO图。
数据字典:(数据元素、数据流、数据存储、数据处理)=等价于 +和 [x|y] x或y {} 重复 ()可选
列车类型=[动车|高铁|特快|快速|普快】
停靠站=站名+(到达时间,发车时间)
车次=车次号+列车类型+{停靠站}
列车运行情况={车次}
硬卧=[上铺|中铺|下铺]
铺位类型=[软卧|硬卧|软座|硬座]
车票号=车厢号+{铺位号},5车8号上铺,记为“5车8号上”。
售票情况=1{日期+{车次+{车票号+[已售|未售]}}}15
票价=出发站+{到达站+{列车类型+{铺位类型+价格+[全|半]}}}
火车票=日期+车次+出发站+到达站+列车类型+铺位类型+价格+车票号+[全|半]+身份证号+姓名
数据流图(*与关系、+或关系、⊕互斥关系(二者选一))

IPO图:(输入+处理+输出)

测试用例
一个关于判别三角形种类的程序,输入3个整数,作为三角形的3条边,程序根据输入值,判定这3条边可以组成的是一般三角形、等腰三角形、等边三角形还是不能组成三角形,并将判定结果输出。请根据这个程序的功能要求编写测试用例。
| 操作步骤 | 输入 | 期望输出 |
|---|---|---|
| 1 | 输入三个整数,其中两个数相等,第三个数不等于前两个数之一 | 输出“等腰三角形” |
| 2 | 输入三个整数,其中三个数相等 | 输出“等边三角形” |
| 3 | 输入三个整数,其中任意两个数之和大于第三个数,输出“一般三角形”。 | 输出“一般三角形” |
| 4 | 输入三个整数,其中任意两个数之和小于或等于第三个数 | 输出“不能组成三角形” |
瀑布模型

快速原型

增量模型


喷泉模型

螺旋模型

实体关系图


数据流图



状态转换图


层次图

IPO图

HIPO

结构图

流程图



NS图

PAD图


判定表

判定树

用例图


浙公网安备 33010602011771号