首页 > 其他分享 >软件工程

软件工程

时间:2023-06-08 13:45:39浏览次数:33  
标签:Web 模块 软件工程 测试 服务器 软件

软件工程

什么是软件危机?主要表现形式?如何解决软件危机?

软件危机是指在计算机软件开发和维护时所遇到的一系列问题。软件危机主要包含两个方面问题:一是如何开发软件以满足社会对软件日益增长的需求;二是如何维护数量不断增长的已有软件。

产生原因:

(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架构的特例,优点是不需要安装任何专门的软件,只要一台能上网的电脑即可

画图

P63 3

测试用例P151 12

标签:Web,模块,软件工程,测试,服务器,软件
From: https://www.cnblogs.com/cghk002/p/17466225.html

相关文章

  • 本学期软件工程课总结
    本学期课程计划:阅读笔记:每个月三篇日总结:每天对自己进行工作的回顾和总结,学习内容的总结;团队计划,有计划性的完成一个android系统的开发:历经两个阶段、近一个月的团队冲刺,在队内大佬的带领下,顺利的完成了整个项目的开发。与此同时,自己也算是小有收获开始尝试自己思考问题,自己进......
  • 软件工程个人总结
    回顾第一周的计划,我觉得完成度大概在80%,每天有时间便编程什么是构建之法?构建之法是指在软件开发过程中,采用一系列固定的方法和规则来保证软件质量、可维护性和可扩展性。该方法强调“定义-构建-验证-改进”的循环过程,并倡导使用自动化工具和流程来增强软件开发的效率和质量......
  • 软件工程课堂评价
    这学期的软件工程课马上就要结束了。对于这门课,确实有很多要说的。1.总体来说,这门课是十分忙碌的,平时布置的课后作业,还有最后的大作业,占据了我们很多的课余时间,我们需要抽出很多时间和精力来完成这门课。不过,这门课确实对我们挺有帮助的,提升了我们的编程水平,还有团队合作能力。2......
  • 软件工程日报——个人总结
    今天,我想对自己进行一次个人总结1、回顾课程在我刚开始本学期的学习时,我写了一个开课博客,在博客中,我提到了本学期的目标:在保证软件工程不挂科的前提下,完成更多的安卓应用的开发,了解更多的软件知识,加强增删改查的练习;目标就是能够完成安卓应用的开发在结课之余,回顾这个学期的表......
  • 《软件工程》结课总结
    经过一个学期的努力奋斗,我们的《软件工程》这一门课终于迎来了结束,回顾这一学期,我从这门课中不仅仅学到了我们需要的的专业知识,对于与人打交道的方法、软件程序设计的思想也有很大的提高,这与学期的努力与挫折,对于我的个人成长的意义是重大的。接下来我会从我在在一个学期学到了什......
  • 2023.6.3——软件工程日报
    所花时间(包括上课):6h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习。我了解到的知识点:1.了解了一些数据库的知识;2.了解了一些python的知识;3.了解了一些英语知识;5.了解了一些Javaweb的知识;4.了解了一些数学建模的知识;6.了解了一些计算机网络的知识;......
  • 软件工程课程申请加分项目
      谢谢王老师送来的加分......
  • 解锁软件工程新角色
    云计算、微服务、人工智能等技术正在高速发展与进步,软件开发变得越来越复杂与多样化。传统的软件开发模式已经不能满足现代企业对于快速交付、高质量、低成本的期望与需求。企业渐渐开始通过创建可重用、自助式平台的实践,使开发人员能够以最小的摩擦构建、部署和运行其应用程序,这......
  • 软件工程课程总结
    软件工程是计算机科学中的一个重要分支,它主要研究如何组织、设计、开发和维护大规模复杂软件系统。在本学期的软件工程课程中,我们深入了解了软件工程的基本概念和方法,学习了软件开发的生命周期、需求工程、软件设计、测试和维护等方面的知识。在这门课程中,我收获颇丰,以下是......
  • 软件工程课程个人总结
        先说一下这学期这门课程的收获吧,本学期所学习的软件工程这门科目让我从理论上掌握软件工程的一些相关知识(大部分还是得靠自学),还有从不同的实例,让理论和实践得到了很好的结合。整一个学期下来,总的来说还是学到了很多东西的,有很多地方是值得肯定的,其实在我看来,软件工......