软件工程专题读书报告笔记

发布 2019-08-21 05:40:37 阅读 7512

s201325016 赵鹏飞。

一软件要素。

软件工程包括三个要素:方法、工具和过程。

软件工程方法为软件开发提供了“如何做”的技术。它包括了多方面的任务,如项目计划与估算、软件系统需求分析、数据结构、系统总体结构的设计、算法过程的设计、编码、测试以及维护等。

软件工具为软件工程方法提供了自动的或半自动的软件支撑环境。目前,已经推出了许多软件工具,这些软件工具集成起来,建立起称之为计算机辅助软件工程(case)的软件开发支撑系统。case将各种软件工具、开发机器和一个存放开发过程信息的工程数据库组合起来形成一个软件工程环境。

软件工程的过程则是将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的。过程定义了方法使用的顺序、要求交付的文档资料、为保证质量和协调变化所需要的管理、及软件开发各个阶段完成的里程碑。

软件工程是一种层次化的技术。任何工程方法(包括软件工程)必须以有组织的质量保证为基础。全面的质量管理和类似的理念刺激了不断的过程改进,正是这种改进导致了更加成熟的软件工程方法的不断出现。

支持软件工程的根基就在于对质量的关注。

二软件过程。

软件过程为一个为建造高质量软件所需完成的任务的框架,即形成软件产品的一系列步骤,包括中间产品、资源、角色及过程中采取的方法、工具等范畴。

软件过程(software process)是指一套关于项目的阶段、状态、方法、技术和开发、维护软件的人员以及相关artifacts(计划、文档、模型、编码、测试、手册等)组成。目前有三种方法:up(the unified process),the open process,oosp(theobject-oriented software process)。

软件过程(software procedure)是指软件生存周期所涉及的一系列相关过程。过程是活动的集合;活动是任务的集合;任务要起着把输入进行加工然后输出的作用。活动的执行可以是顺序的、重复的、并行的、嵌套的或者是有条件地引发的。

软件过程可概括为三类:基本过程类、支持过程类和组织过程类。基本过程类包括获取过程、**过程、开发过程、运作过程、维护过程和管理过程。

支持过程类包括文档过程、配置管理过程、质量保证过程、验证过程、确认过程、联合评审过程、审计过程以及问题解决过程。组织过程类包括基础设施过程、改进过程以及培训过程。

软件过程主要针对软件生产和管理进行研究。为了获得满足工程目标的软件,不仅涉及工程开发,而且还涉及工程支持和工程管理。对于一个特定的项目,可以通过剪裁过程定义所需的活动和任务,并可使活动并发执行。

与软件有关的单位,根据需要和目标,可采用不同的过程、活动和任务。

软件过程是指软件整个生命周期,从需求获取,需求分析,设计,实现,测试,发布和维护一个过程模型。一个软件过程定义了软件开发中采用的方法,但软件工程还包含该过程中应用的技术——技术方法和自动化工具。过程定义一个框架,为有效交付软件工程技术,这个框架必须创建。

软件过程构成了软件项目管理控制的基础,并且创建了一个环境以便于技术方法的采用、工作产品(模型、文档、报告、**等)的产生、里程碑的创建、质量的保证、正常变更的正确管理。

所谓软件过程模型就是一种开发策略,这种策略针对软件工程的各个阶段提供了一套范形,使工程的进展达到预期的目的。对一个软件的开发无论其大小,我们都需要选择一个合适的软件过程模型,这种选择基于项目和应用的性质、采用的方法、需要的控制,以及要交付的产品的特点。一个错误模型的选择,将迷失我们的开发方向。

对于下面的模型,希望能够给开发者们一个参考和一点启示。

它有时也称为传统生存周期模型或瀑布模型。它提出了软件开发的系统。

化的、顺序的方法。其流程从系统开始,随后是需求分析、设计、编码、测试、支持。这种模型是最早也是应用最广泛的软件过程模型(虽然这种模型会引起“堵赛状态”)。

缺点:1、实际的项目大部分情况难以按照该模型给出的顺序进行,而且这种模型的迭代是间接的,这很容易由微小的变化而造成大的混乱。

2、 经常情况下客户难以表达真正的需求,而这种模型却要求如此,这种模型是不欢迎具有二义性问题存在的。

3、 客户要等到开发周期的晚期才能看到程序运行的测试版本,而在这时发现大的错误时,可能引起客户的惊慌,而后果也可能是灾难性的。

4、采用这种线性模型,会经常在过程的开始和结束时碰到等待其他成员完成其所依赖的任务才能进行下去,有可能花在等待的时间比开发的时间要长。我们称之为“堵赛状态”。

优点:1、它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该摸板下有一个共同的指导。

2、虽然有不少缺陷但比在软件开发中随意的状态要好得多。

原型实现。从需求收集开始,开发者和客户在一起定义软件的总体目标,标识已知的需求并且规划出需要进一步定义的区域。然后是“快速设计”,它集中于软件中那些对客户可见的部分的表示,这将导致原型的创建,并由客户评估并进一步精化待开发软件的需求。

逐步调整原型使其满足客户的需求,这个过程是迭代的。其流程从听取客户意见开始、随后是建造/修改原型、客户测试运行原型、然后回头往复循环直到客户对原型满意为止。由于这种模型可以让客户快速的感受到实际的系统(虽然这个系统不带有任何质量的保证),所以客户和开发者都比较喜欢这种过程模型(对于那些仅仅用来演示软件功能的公司而言或从来不考虑软件质量和不害怕长期维护的公司而言)。

缺点:1、没有考虑软件的整体质量和长期的可维护性。

2、大部分情况是不合适的操作算法被采用目的为了演示功能,不合适的开发工具被采用仅仅为了它的方便,还有不合适的操作系统被选择等等。

3、由于达不到质量要求产品可能被抛弃,而采用新的模型重新设计。

优点:1、如果客户和开发者达成一致协议:原型被建造仅为了定义需求,之后就被抛弃或者部分抛弃, 那么这种模型很合适了。

2、迷惑客户抢占市场,这是一个首选的模型。

快速应用。这是一个增量型的软件开发过程模型,强调极短的开发周期,它是线性模型的一个“高速”变种,通过使用构件的建造方法赢得了快速开发。如果需求理解的好而且约束了项目的范围,利用这种模型可以很快的创建出功能完善的“信息系统”。

其流程从业务建模开始,随后是数据建模、过程建模、应用生成、测试及反复。rad过程强调的是复用,复用已有的或开发可复用的构件。实际上rad采用***技术。

缺点:1、只能用于信息系统。

2、对于较大的项目需要足够的人力资源去建造足够的rad组。

3、开发者和客户必须在很短的时间完成一系列的需求分析, 任何一方配合不当都会导致rad项目失败。

4、这种模型对模块化要求比较高,如果有哪一功能不能被模块化,那么建造rad所需要的构件就会有问题。

5、技术风险很高的情况下不适合这种模型。

优点:1、开发速度快,质量***。

2、对信息系统特别有效。

增量。这种模型融合了线性顺序模型的基本成份和原型实现模型的迭代特征。增量模型采用随着日程时间的进展而交错的线性序列。

每一个线性序列产生软件的一个可发布的“增量”。当使用增量模型时,第一个增量往往是核心的产品,也就是说第一个增量实现了基本的需求,但很多补充的特征还没有发布。客户对每一个增量的使用和评估,都做为下一个增量发布的新特征和功能。

这个过程在每一个增量发布后不断从复,直到产生了最终的完善产品。增量模型强调每一个增量均发布一个可操作的产品。

缺点:1、至始至终开发者和客户纠缠在一起,直到完全版本出来。

优点:1、人员分配灵活,刚开始不用投入大量人力资源,当核心产品很受欢迎时,可增加人力实现下一个增量。

2、当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径,这样就可以先发布部分功能给客户,对客户起到镇静剂的作用。

3、具有一定的市场。

螺旋。这是一个演化软件过程模型,它将原型实现的迭代特征和线性顺序模型中控制的和系统化的方面结合起来。使得软件的增量版本的快速开发成为可能。

在螺旋模型中,软件开发是一系列的增量发布。在每一个迭代中,被开发系统的更加完善的版本逐步产生。螺旋模型被划分为若干框架活动,也称为任务区域。

典型地,有3到6个任务区域:

1、客户交流:建立开发者和客户之间有效通信所需要的任务。

2、计划:定义资源、进度、及其它相关项目信息所需要的任务。

3、风险分析:评估技术的及管理的风险所需要的任务。

4、工程:建立应用的一个或多个表示说需要的任务。

5、构造及发布:构造、测试、安装和提供用户支持所需要的任务。

6、客户评估:基于对在工程阶段产生的或在安装阶段实现的软件表示的评估,获得客户反馈所需要的任务。

这是一个相对较新的模型,它的功效还需要经历若干年的使用方能确定下来。

缺点:1、需要相当的风险分析评估的专门技术,且成功依赖于这种技术。

2、很明显一个大的没有被发现的风险问题,将会导致问题的发生,可能导致演化的方法失去控制。

3、这种模型相对比较新,应用不广泛,其功效需要进一步的验证。

优点:1、对于大型系统及软件的开发,这种模型是一个很好的方法。开发者和客户能够较好地对待和理解每一个演化级别上的风险。

螺旋。螺旋模型提出了强调客户交流的一个框架活动。该活动的目标是从客户处诱导项目需求。

在理想情况下,开发者简单地询问客户需要什么,而客户提供足够的细节进行下去。不幸的是这种情形很少发生。在现实中,客户和开发者进入一个谈判过程,客户被要求在成本和应市之间的约束下平衡功能、性能、和其它产品或系统特征。

最好的谈判追求“双赢”结果,也就是说通过谈判客户获得大部份系统的功能,而开发者则获得现实的和可达到的预算和时限。对客户的交流定义了下面的活动:

1、系统或子系统的关键“风险承担者”的标识。

2、风险承担者的“赢条件”的确定。

3、风险承担者的赢条件谈判,以将它们协调为一组满足各方考虑的双赢条件。

缺点:1、需要额外的谈判技巧。

优点:1、客户和开发者达到一种平衡。

并发任务。这种模型关注于多个任务的并发执行,表示为一系列的主要技术活动、任务及它们的相关状态。并发过程模型是由客户要求、管理决策、评审结果驱动的。

该模型不是将软件工程活动限定为一个顺序的事件序列,而是定义了一个活动网络。网络上的每一个活动均可于其它活动同时发生。这种模型可以提供一个项目的当前状态的准确视图。

缺点:暂时无。

优点:1、可用于所有类型的软件开发,而对于客户/服务器结构更加有效。

乡土中国读书报告

第九章 无讼 点明了中国在从乡土社会蜕变的过程中法治秩序与礼治秩序的矛盾,现行的司法制度在乡下发生了很多的 第十章 无为政治 论述了社会冲突中的 横暴权力 与社会合作中的 同意权力 但在农业性的乡土社会中 无为 的政治是最现实也是最理想的。第十一章 长老统治 指明在中国传统乡土社会的权力结构中,与 ...

读书报告格式与规范

关于读书报告的格式和规范。读书报告格式 1 引言。简要交代本文撰写的缘起,开宗明义点明话题。2 内容概述。概括性地归纳书的主要内容,包括作者陈述的基本观点。3 思路辨析。根据阅历,清理本书思想脉络,并与其他相关著述做比较分析。4 引申性 结合文本现象或个案对总体问题进行引申性把握。5 评价与结语。对...

新数值分析读书报告

第四章数值积分和数值微分。考虑了函数逼近之后,我们现在要考虑的就是对于一些较麻烦的函数怎么求。它的某些运算。例如函数的积分运算,如果函数的性质不好的话,我们就不能求出它的原函数,从而不能用牛顿莱布尼茨公式计算积分函数的值,那么我们就要找一个运算来逼近它,我们介绍的方法是公式 f x dx akf x...

论犯罪与刑罚读书报告

读 论犯罪与刑罚 有感。近期读完了贝卡里亚所写的刑法学专著 论犯罪与刑罚 深感启发。贝卡利亚并不是以某类实在法为基础对其法律条文和精神进行剖析,而是从刑法哲学和刑事政策这两个层次阐释自己的思想。在阅读过程中,我可以明显感觉到作者的思想不局限于法律,而是包含了哲学 社会 自然等多个学科的内容。贝卡利亚...