软件工程—学习心得

软件工程

什么是软件工程?

在上世纪随着时代的发展,软件行业发展越加迅速,随之而来的软件危机,软件工程孕育而生,就是为了解决软件危机而诞生的科学。软件工程是指导软件开发和维护的一门科学。
软件工程方法学有两类,一类是传统的生命周期方法学,另外一种是新兴的面向对象方法学。软件工程方法学主要有三个要素:方法,工具,过程。

什么是软件的生命周期?

软件的生命周期分为软件定义,软件开发和软件维护三个方面。软件定义又可以分为问题定义,可行性研究,需求分析三个部分。软件开发可以分为总体设计,详细设计,实现三个部分。之后就是软件维护阶段。

软件过程

软件过程是为了获得高质量的软件所需要完成的一系列的任务的框架,它规定了各项任务的工作步骤。
常见的过程模型
瀑布模型:瀑布模型是最常见的一个软件过程模型,瀑布模型的每一个阶段之间都具有顺序性和依赖性。一个阶段的开展必须依靠上一个阶段的工作的成果。瀑布模型是一个具有推迟实现的观点的模型。瀑布模型的缺点是,再需求分析阶段,用户无法准确的描述自己的需求,从而需求分析阶段的成果十分模糊,造成接下来的工作难以展开,同时最后设计出来的软件产品与用户的预想有偏差,无法解决用户的需求。
快速原型模型:快速原型模型结局的瀑布模型的一大缺点,在需求分析阶段,快速的制作出软件的一个模型,该模型可以完成一系列的基本的核心功能,交予用户使用,这样用户在使用的过程中,可以提出一些建设性的意见,以及搞清楚用户的真正需求。
增量模型:增量模型与瀑布模型和快速原型模型有着很大的区别,快速原型模型和瀑布模型是将原件一次性交付给用户,而增量模型是将软件分成一系列的构件,每次只将部分的构件交予客户,这样的好处是使得用户有良好的适应时间。缺点是,增量模型具有较大的风险,在前期的设计阶段需要耗费大量的时间和精力,使得每次交予的构件能够很好的集成到原有的软件体系中。
螺旋模型:螺旋模型可以降低软件开发的风险,同时可以把螺旋模型看作是每个阶段都有一个风险分析的快速原型模型。
喷泉模型:喷泉模型是一个面向对象的过程模型,它体现了面向对象的一系列的性质。比如迭代和无缝的特性。喷泉模型的每一个阶段都是用圆来表示的,每个圆之间都会有重叠的部分,这个就体现了无缝的特性,同时每个圆内都有一个向下的箭头,这个体现了面向对象的迭代的特性。

软件生命周期方法学

问题定义阶段
问题定义阶段是根据需求寻找出问题,并对问题经行初步的分析。
可行性研究阶段
可行性研究阶段是为了研究当前问题在技术层面和经济层面能否实现的问题。
需求分析阶段
需求分析阶段的主要目的是对需求经行分析,并最后得出软件需求规格说明书。在分析的过程中常要建立三种分析模型,数据模型,功能模型,行为模型。其中数据模型可以用E-R图来表示,功能模型可以用数据流图来表示,行为模型可以用状态图来表示。为了可以更好的分析这三种模型,可以采用层次方框图来对着三种模型经行分析。
总体设计
总体设计的目的是得到软件的一个物理模型同时得到软件的一个总体的架构。总体设计可以分为两个部分,分别是系统设计和结构设计。在设计的过程中还要满足一系列的设计原理,比如模块化,抽象,逐步求精,信息隐藏和模块独立,其中模块独立的原则可以采用耦合和内聚来评价,设计一般要满足高内聚低耦合的原则。系统设计是根据在需求分析阶段建立的数据流图设计出一个物理模型,同时选择出合适的方案。结构设计的过程是确定软件是由哪些模块组成,同时确定模块之间的一个调用的关系。尝试用层次图和结构图进行分析。如果在需求分析阶段已经得到一个相当详细的数据流图,可以采用面向数据流的设计方法,这是一个结构化的设计方法。主要有两种形式,一种是变化流的设计方法,里面另外一种是事务流的设计方法。其中事务流是特殊的变化流,需要找到事务中心。
详细设计
详细设计的目的是将总体设计的设计出来的模块,去如何实现各个模块的功能。
详细设计的设计出来的各个模块的要简单已读,为了完成这个标准,常采用结构程序设计,也就是多使用顺序,选择,循环结构去设计程序,而不采用goto语句。
同时详细设计可以分为人机界面合计,过程设计,人机界面设计在交互式系统是十分的重要,人机界面设计直接影响了用户对软件的评价。过程设计是完成一个模块的功能的设计的过程,可以使用一系列的过程设计工具,比如系统结构图,盒图,PAD图,判定表,判定树,过程设计语言。还可以使用面向数据结构的设计方法,比如采用JACKSON方法。还可以使用MCcabe方法去计算程序的复杂度。
实现
实现分为两个部分,一个算是编码,另外一个是测试。编码的只是一个很小部分的内容。由于详细设计的结果通常是用过程设计工具表示出来,比如说是盒图,PAD图,只要将这些图形翻译成相关的程序设计语言即可。测试可以分为三个部分,单元测试,集成测试,确认测试。单元测试常采用白盒测试的方法。百合测试的方法有逻辑覆盖和控制结构测试。逻辑覆盖又有语句覆盖,判定覆盖,条件覆盖,判定条件覆盖,条件组合覆盖。其中条件组合覆盖是覆盖标准最强的。控制结构测试可以分为基本路径测试,条件测试,循环测试,其中基本路径测试需要计算环形复杂度。集成测试可以分为自顶向下的测试方法和自底向上的测试方法。确认测试通常采用黑盒测试方法,黑盒测试方法也成为功能测试,即只测试功能是否是正常的运行。黑盒测试的方法有等价划分,边界值分析,错误推测。
软件维护
软件维护是软件生命周期中,耗费人力物力最多的一个阶段。软件维护可以分为改正性维护,适应性维护,完善性维护,预防性维护。

你可能感兴趣的:(软件工程—学习心得)