计算机软件工程简介

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1计算机软件工程简介软件工程是在人们总结了软件危机产生原因的基础上诞生的新的学科,它将计算机科学技术、数学、管理学的原理运用到软件开发的整个过程中。运用数学中的理论和方法来构造软件模型和算法,运用管理科学的思想和方法指导软件的项目、资源、质量、成本等工作。软件工程学科包括软件工程原理、软件工程过程、软件工程方法、软件工程技术、软件工程模型、软件工程管理、软件工程度量、软件工程环境、软件工程应用等内容。软件工程学的目的是有效地组织软件开发过程,提高软件开发效率,尽量降低软件开发的成本。软件工程学将工程化的观点融会贯通于软件生存周期中。软件生存周期是一个软件从生到灭所历经的整个过程。具体来说是从提出软件开发(即软件策划)开始,历经分析、设计、实现、演化,一直到被其他软件所替换的全过程。软件策划是一个软件产品“生命“的起始点,是对要开发的软件项目进行的总体规划。软件策划包括问题定义、可行性分析、软件规划和制定软件开发计划等工作。软件策划从客户提出需求开始,对需求进行初步调查、分析。并在此基础上形成用户和开发人员认同的问题定义报告。再针对此报告进行可行性分析,从经济、技术和社会等方面对项目的必要性、可行性、合理性和重大风险性进行分析和评价,得出项目是否可行的结论。如果可行,则制定具体的软件开发计划。《软件开发计划书》是软件开发工作的指导纲领。软件开发计划书的内容包括:软件项目总述:包括软件项目名称,项目提出的背景、软件目标、软件性质、范围、基本需求、基本环境、基础条件和时限要求等软件开发的总体问题:包括软件开发的总时间要求、软件开发方式和软件开发方法等。工作任务软件开发阶段:软件策划(初始)、细化、构建和移交;软件策划阶段:问题定义、可行性分析、软件规划、制定软件开发计划书;软件细化阶段和构建阶段:领域分析、需求分析、系统设计、编程和调试;软件移交阶段:用户培训、数据转移、试运行和验收与评价;资源需求:包括人力资源和环境资源进度计划:制定软件开发的进度经过上面的准备工作后,接下来就要进入软件项目的具体分析阶段了。软件分析是软件设计的基础。软件分析包括领域分析和需求分析两项工作。领域分析是对软件所服务的应用领域进行的分析工作。也就是说,如果想开发某个专业领域的软件,设计者首先要对该领域的业务流程、业务特点充分掌握。现在软件的服务领域具有广阔性和多样性,不同软件的应用领域差异很大。多采取的做法是开发人员深入到企业内部,进行实地2调查,了解企业的业务及流程。这是非常关键的一步,关系到软件产品的正确性和实用性。在充分了解用户的领域特点后,就可以进行针对特定用户的需求分析了软件需求可以分为功能需求、性能需求和其他需求三种类型。需求分析工作包括需求获取、需求分析、需求描述和需求验证四项工作。需求获取可以采用面谈、走访、问卷调查和召开座谈会等方法,并可以辅助采取启发法、观摩法和原形法。需求分析需要从总体需求、系统功能和技术性能等方面进行。需求分析完成后需要编写《软件需求说明书》,并对需求进行验证。《软件需求说明书》也是非常关键性的文档,是指导开发人员进行软件设计的重要依据。在做好了软件的分析后,就开始设计阶段软件设计是对软件分析的深化和细化,目的是为实现软件需求分析所规定的功能和性能要求,提出能够指导软件实现的设计方案。主要包括平台设计、软件体系结构设计、详细设计和界面设计等。软件设计要经过概括设计和详细设计两个阶段。前者是将软件的模块、整体架构设计出来;后者是针对每个模块进行的具体设计,是更细化的设计。根据详细设计写出《软件详细设计说明书》。它是指导下一步软件编码的纲领。前面的策划、分析、设计都是为后面的编码工作做准备。一个好的开发人员写出的程序不但能完成系统的功能,而且代码简单、执行效率高。这对提高整个系统的运行效率具有重要意义。现在流行的软件编程工具很多,要根据实际的软件项目特点选择最合适的、最经济、最高效的编程工具。编码完成后,一个成形的软件产品就诞生了。但这个软件产品还不能交给用户使用,因为它还不完善,还存在许多问题。如何能准确地找出这些问题并正确地修改恰恰就是软件测试阶段的主要任务。软件测试是通过人工或自动手段来检测软件的过程。软件测试包括静态测试和动态测试。软件测试是保证软件品质的重要工作。完整的软件测试包括模型测试、单元测试、集成测试、系统测试、验收测试。★单元测试单元测试是最小粒度的测试,测试某个功能和代码模块。在华信凡是用java编写的程序都是用Junit来做单元测试的。Junit是一个开放原代码的java测试框架,用于编写和运行可重复的测试。可根据实际的代码模块中的方法编写测试程序。可反复使用,大大提高了测试效率。★集成测试集成测试是在单元测试的基础上进行的针对软件总体功能的测试。在实际的程序开发中,这个测试阶段由项目小组的所有开发人员共同参与。☹华信项目小组一般由5~10人组成。在各自对自己开发的程序作了单元测试后,就会把它们结合在一起统一运行,看是否存在不匹配或相矛盾的地方。★系统测试3系统测试是在集成测试的基础上,把软件系统与实际运行的软硬件环境相结合,看是否存在不相容的问题。有时,用户也参与到系统测试过程中,实际察看软件整体的功能于性能,如不满意,就会提出改进意见。这样及时改正软件存在的问题。★验收测试是真正在用户环境中的测试。是把软件安装在用户的实际运行环境中来查看软件的运行状态。☀在软件企业中,执行测试现在多采用自动运行工具。比如Ant.它是一个开源的软件。是由一些内置任务和可选择的任务组成,还可以编写自己的目标任务。它把软件的编译、打包、测试和部署都录制下来,可多次反复执行。测试的目的测试是为了发现错误而执行程序的过程测试是为了证明程序有错,而不是证明程序无错误一个成功的测试是发现了至今未发现过的错误测试不仅仅是为了要找出错误,此外通过分析错误产生的原因和错误的分布特征,测试还可以帮助项目管理者发现当前所采用软件过程的缺陷以便改进测试的对象软件测试的对象主要有:文档和程序测试包括的活动制定测试计划(包括人员、时间、资源、目标等)构建测试环境实施测试确认测试和回归测试(在程序或文档发生修改的情况下)完成测试报告测试的原则测试应该尽早和不断地进行不应该把测试看成是软件开发的独立阶段,而应该把它贯穿到软件开发的各个阶段中。坚持在软件开发的各个阶段的技术评审,这样才能在开发过程中尽早发现和预防错误,把出现的错误克服在早期,杜绝某些发生错误的隐患。所有测试都应该追溯到用户需求80%的错误都起源于20%的程序模块中(Pareto原则)为了达到最佳效果,应该由独立的第三方来设计并实施测试程序员应尽可能避免测试自己编写的程序,程序开发小组也应尽可能避免测试本小组开发的程序。若条件允许,最好建立独立的软件测试小组或测试机构。4对程序的调试由程序员自己来做。保证测试用例的完整性和有效性测试用例应由测试输入数据和与之对应的预期输出结果两部分组成。测试之前应当根据测试的要求选择测试用例,用来检验程序员编制的程序,因此不但需要测试的输入数据,而且需要针对这些输入数据的预期输出结果。在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。合理的输入条件是指能验证程序正确的输入条件,不合理的输入条件是指异常的、临界的,可能引起问题异变的输入条件。软件系统处理非法命令的能力必须在测试时受到检验。用不合理的输入条件测试程序时,往往比用合理的输入条件进行测试能发现更多的错误。要充分注意测试中的群集现象在被测试程序段中,若发现错误数目多,则残存错误数目也比较多。这种错误群集性现象,已为许多程序的测试实践所证实。根据这个规律,应当对错误群集的程序段进行重点测试,以提高测试投资的效益。严格执行测试计划,排除测试的随意性测试之前应仔细考虑测试的项目,对每一项的测试做出周密的计划,包括测试观点,被测试程序的功能、输入和输出、测试内容、进度安排、资源要求等。应当对每一个测试结果作全面检查有些错误的征兆在输出实测结果时已经明显出现,但是如果不仔细全面地检查测试结果,就会使这些错误被遗漏掉。只检查程序是否作了它应该做的事仅仅完成了测试工作的一半,另一半则是要检查程序是否做了它不该做的事情。尽量详细的纪录测试过程,包括测试用例,测试结果,缺陷报告按照测试计划要求,将所有测试过程进行仔细纪录,并将测试文档资料完整保存,以便在以后的系统维护中查阅。测试方法程序测试静态分析(程序不被执行)静态分析器分析(测试工具)代码评审(人工方式)代码会审代码走查桌面检查动态测试(程序被执行)黑盒测试(测试程序功能)白盒测试(测试程序结构)5软件测试中,静态测试是由人工对设计文档和软件模型以及程序代码进行的测试。它是一个不容忽视的环节,成功的静态测试可以检查出的80%的隐藏问题,会大幅度节约软件开发的成本。静态测试主要方法是审查和走查。审查:通过阅读,讨论各种设计文档以及程序代码审查通过两种形式进行:个人审查和会议审查走查:只适用于代码由被指定为测试员的小组成员提供软干测试用例,让参加会的成员充当计算机的角色,在会议上对每个测试用例由人工来模拟跟踪程序的执行。动态测试法通过运行被测试程序而发现问题的一种测试方法。分为:白盒测试法和黑盒测试法白盒测试是为了测试代码完整的执行路径主要方法有:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖以及路径覆盖黑盒测试主要是从功能、性能等角度进行的测试。测试的主要方法有:等价分类、边界值分析软件测试往往要占到软件开发总过程近乎一半的时间。由此可见测试阶段的重要性绝对是不亚于开发初期的分析,设计与实现等工作。完成测试工作以后软件就可以交付给用户了。但作为软件开发人员,他的工作并没有结束。在软件移交给用户后,由于实际运行的软硬件环境的改变,软件很可能会产生一些新问题。比如与运行的硬件环境不相容、与软件版本不匹配等。另外,在使用了一段时间后,用户很可能又有了新的要求,需要增加软件功能。这就需要开发人员进行软件的维护工作。软件维护是指软件交付使用之后,因软件中存在的缺陷,以及因需求和环境的变化,对软件进行修正的过程。除去修正软件中潜藏的错误之外,更多的工作是根据需求和技术的变化,对软件进行调整以满足用户的新需要。软件维护的目的确保软件交付后的品质:改正在特定使用条件下暴露出来的潜在程序错误或设计缺陷。提高下一期软件开发的品质:维护阶段的结果可以回馈到下期的开发过程,提高下期开发的品质。提高客户的满意度软件维护的种类纠错性维护:诊断和改正用户在使用过程中暴露出的软件错误。适应性维护:使软件能适应用户环境而引起的程序修改和扩充活动完善性维护:为了满足用户新的需求而增加软件功能的活动。6预防性维护:为了改进未来可维护性、可靠性,对软件重新设计、重新编码和测试的活动。软件维护是软件生命周期中最后一个阶段,软件的维护占到一个开发组织所花费的全部工作量的60%以上。软件的可理解性、可测试性、可修改性是衡量软件可维护性的几个主要技术指标软件的维护是一项持续性的工作。从软件交付给用户开始,直到这个软件被淘汰,在整个过程中都要历经多次维护工作。华信开发部门是很注重软件维护这个阶段的,因为维护工作的好坏,直接关系到企业的对外形象和品牌。在华信这段时间,我亲身体会到了软件编程人员严谨的工作作风以及互帮互助的团队精神。所以说这段时间不但是对我知识上的扩充,同时也是对我精神上的激励。专业职务发展示意图项目组长(TL)项目担当(PL)(行政系列)程序员(PG)项目经理(PM)开发部经理系统工程师(SE)项目架构师(BSE)(技术系列)

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功