软件工程

      软件工程_第1张图片

       什么是软件工程?简单的说,软件工程是一门通过一定的方法制造出高质量的软件的学科。不过,既然是一门学科,肯定是包含很多知识,那就先了解一下软件吧。


       软件就是咱们平常使用的QQ/Office等等,用来方便我们生活的一类东西,具体来说由程序,数据,文档组成。软件是由计算机程序程序设计的概念发展演化而来的,是在程序和程序设计发展到一定规模并且逐步商品化的过程中形成的。


       软件开发,软件的形成肯定离不开开发技术。不过软件开发经历了什么过程呢?顺序是程序设计阶段、软件设计阶段和软件工程阶段。


       在程序设计阶段,没有软件的概念,程序设计阶段的特性有:规模小,主要用于科学计算。在软件设计阶段,特性是:硬件环境相对稳定,出现了“软件作坊”的开发组织形式。不过,随着计算机的发展和日益普及,软件系统的规模越来越大,高级编程语言层出不穷,社会对软件的需求量剧增。但软件开发技术没有重大的突破,软件产品的质量低下,软件的生产效率不高,然后就导致了软件危机的产生。


       软件危机的表现有:不能满足客户的需要,产品质量差,成本,进度估计不准确,软件的可维护性差,文档不完整,价格昂贵等等。由于“软件危机”的产生,迫使人们不得不研究、改变软件开发的技术手段和管理方法。所以,就进入了软件工程阶段。


       说到软件工程,咱们需要先了解下其遵循的七条原理,就是在提到软件工程的时候,你就得知道的东西。就像你要深入的去了解一个人一样,看他有什么原则就大概知道他是个什么样的人了。


       这七条原理是由美国著名的软件工程专家巴利·玻姆(Barry Boehm)综合这些专家的意见,并总结了美国天合公司(TRW)多年的开发软件的经验,于1983年提出的,很具有权威性。分别是用分阶段的生命周期计划进行严格管理坚持进行阶段评审实施严格的产品控制采用现代程序设计技术结果应能清楚的审查开发小组的人员应少而精承认不断改进软件工程实践的必要性。对于软件开发来说,这需要认真了解下。


      还有软件工程的目标为什么要了解它呢?有目标才有动力嘛,咱得知道它能完成的最好的效果吧(不过,对于我好像主要是多学了一些专业术语而已):在给定成本、进度的前提下,开发出具有适用性、有效性、可修改性、可靠性、可理解性、可维护性、可重用性、可移植性、可追踪性、可互操作性和满足用户需求的软件产品。追求这些目标有助于提高软件产品的质量和开发效率,减少维护的困难。软件开发人员需要以这个为动力去改善自己的软件。


       另外,在软件工程中下面的几个概念也挺重要的,先了解一下:


       软件需求分析软件需求分析是准确的回答系统必须做什么。它的主要过程是问题识别、分析与综合、编制需求分析阶段的文档、需求分析评审、选择需求分析方法。结构化分析方法,数据流图(表示信息在系统中的流动和处理的情况),数据字典(对数据流图中的元素加以定义)。


       面向过程的设计方法:就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。


       面向对象的设计方法面向对象是由:对象、类、继承、通信等部分组成。


       对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。


       ,是一组具有相同数据结构和相同操作的对象的集合,它为属于该类的全部对象提供了统一的数据描述,内部包括属性和服务两个主要部分。如果非要比喻一下的话,类和对象的关系可以用模具和产品来阐述,类是模具,对象是产品。继承,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。


       通信,对象之间进行通信的结构叫做消息。


       方法,类中操作的实现过程叫做方法,方法有方法名、返回值、参数、方法体。


       随着计算机技术的不断提高,计算机被用于解决越来越复杂的问题。一切事物皆对象,通过面向对象的方式,将现实世界的事物抽象成对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数字建模,更利于用人理解的方式对复杂系统进行分析、设计与编程。同时,面向对象能有效提高编程的效率,通过封装技术,消息机制可以像搭积木的一样快速开发出一个全新的系统。面向对象是指一种程序设计范型,同时也是一种程序开发的方法。


       程序编码,首先要做的是选择程序语言,有两个语言可以选择,分别是汇编语言和高级语言,选择语言的根本原则是:容易维护和成本低。

       在这里面需要注意,编写程序要有个良好的程序设计风格,像写文章也有风格一样,你的程序设计也要注意程序的结构清晰等等。输入输出方法也要做到方便用户的使用,如输出给必要的说明和提示等等。程序正确是首要要求,再就是也要注意效率,you know ,效率越高肯定越好,就像你希望你的手机反应越快越好一样。


       程序设计的质量评价标准:正确性,结构清晰性,易修改性,易读性,简单性。程序复杂度的度量标准:代码行度量法和McCabe度量法。代码行度量法就不用说了,代码行越少越好;McCabe度量法是一种基于程序控制流的复杂性度量方法,他需要画出程序结构和功能图去度量。


       用户界面设计,肯定要美观,符合用户的习惯,简单易懂等。


       软件测试,软件测试的目的在于发现错误,测试的原则是尽早和不断的进行测试,测试用例(Test Case)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。软件测试用例设计的方法有两种,黑盒测试和白盒测试。


       黑盒测试,又叫数据驱动测试,是把测试对象看作一个黑盒子,检查程序的功能是否符合它的功能说明。具体方法是输入一组数据,查看数据结果。


       白盒测试,又叫逻辑驱动测试,是把测试对象看作一个透明的盒子,对程序所有逻辑路径进行测试。测试完成之后,程序调试,它是在进行了成功的测试之后才开始的工作,它与软件测试不同,调试的任务是进一步诊断和改正程序中潜在的错误。一个好的测试用例能发现至今没有发现的错误,一个成功的测试时发现了至今没有发现的错误的测试。


       软件维护,概念是指在软件产品发布后,因修正错误、提升性能或其他属性而进行的软件修改。软件维护的成本一般都比较高,远远大于开发成本。


       软件工程管理,它包括:软件项目计划,成本估算,进度计算,风险分析,人员的组织形式,什么都需要有个管理员嘛,是不是,这就是软工的管理员职能。


       软件项目管理,对象是软件工程项目,包括,起始过程,计划过程,实施过程,控制过程,结束过程。软件生产率和质量的度量,目的在于对此加以理解、预测、评估、控制和改善,软件度量的根本目的是管理的需要。软件开发中的资源:人力资源和工具资源。它就是某个项目的管理员,比软件工程管理管的事情要更集中。


       总结这些就是我在学习软件工程阶段收获的东西,不管收获了多少,重在过程,体会到很多东西,同时也希望这篇博客可以给你带来些灵感。微笑


你可能感兴趣的:(软件工程)