三级信息管理技术分章节考试要点:软件工程(软件管理之进度安排)

三级信息管理技术分章节考试要点:软件工程(软件管理之进度安排),第1张

三级信息管理技术分章节考试要点:软件工程(软件管理之进度安排),第2张

行程安排

有两种方法可以考虑软件开发项目的进度。第一,系统最终交付的日期已经确定,软件开发机构必须在合同规定的时间内安排;第二,只确定大概寿命,最终交付日期由软件开发机构根据具体情况确定。后一种考虑可以对软件开发任务进行详细的分析;可以很好的利用资源,合理分配工作量,但是实际工作中经常会遇到第一种情况。问题是软件管理者如何在规定的时限内分配人力和进度。进度的好坏往往影响整个项目的按期完成和用户的使用。如果不能按期完成,用户会不满意,要赔偿损失。作为一种商品,它将失去市场竞争力。

进度的准确性有时比成本估算更重要。在商品生产社会中,某种商品的损失往往可以由其他商品承担或分期偿还。并且进度延误造成的损失无法补偿。讨论了软件开发项目进度中的以下问题。

1.软件工作的特殊性

制定软件时间表与其他项目没有太大的不同,所以使用一般的技术和工具就足够了。但是需要强调的是,软件产品是逻辑产品,和其他项目不一样。所以,当几个人共同完成一项任务时,就出现了人与人之间的交流问题,这种交流关系叫做沟通关系。沟通是要花钱的,不仅是时间,而且沟通中的疏忽往往会增加错误。例如,一个小组中有4个软件工程师,他们之间有6条通信路径。对于六个软件工程师,通信路径的数量增加到14。所以成本必然会增加,所以工作组不要太多人,一般3-5人就好。目前国外普遍采用硕士程序员群体制度。还有一点需要强调的是,软件工作不要中途临时添加,在安排进度的时候一定要考虑周全。

2.每个阶段的工作量分配

估算完总工作量后,我们需要一个模型,可以分配每个阶段的工作量。某一阶段的工作量百分比必须根据经验数据来确定。这里再次强调,开发过程中保存的记录将增加经验数据的存量,提高未来估计的准确性。

R.S.Pressman提出了一个叫做40-20-40的工作量分配规则,即前期工作(规划、需求分析、概要设计和详细设计阶段)40%,后期工作(测试阶段)40%,编码阶段20%。

重点要放在市场推广和后期工作上。前期工作容易被忽视,主要是因为:管理者认为即使不开始编码工作,也不了解前期工作的重要性;技术人员往往急于编码,以为写代码的任务完成了。后期的工作也容易被忽视,以为编码就完事了,对测试工作占用这么大的工作量没有思想准备。所以,要做好作息时间表,就要研究软件工作的规律。前期不做好基础工作,会给后期工作带来很大困难,往往会使项目进度一拖再拖,难以坚持下去,有的还得半途而废。

3.取得发展进步。

下一个涉及的未知量是开发进度。调度是软件规划中最困难的任务之一。计划者应该将可用资源与项目工作量相协调。需要考虑各种任务的相互依赖性,并尽可能并行进行;预见可能出现的问题和项目的“窄脖子”,提出处理意见;并指定进度、评审和要交付的文档。

假设作为变量的开发时间TD是线性变化的,总的开发工作量估算值ed已经得到,要求在规定的时间TD内完成,有一个参与项目的人的平均值M,即M=ED/TD,这将是一个非常有用的数据。遗憾的是,在上述公式中,项目的工作量和开发时间不能作为自变量。布鲁克斯定律描述了这种现象的极端案例:给一个延迟的软件项目增加人员会使其进度变慢。开发时间可以通过类似于工作量的估算方法来估算。有研究人员指出,开发时间与开发工作量之间的关系TD=a(ED) b如下,非常准确。

其中A和B是经验常数。如果ED以人-月为单位,TD以月为单位。A和B的尺寸分别为2至4和0.25至0.4。

公式TD=a(ED) b给出了标称开发时间。其他模型可以显示当名义开发时间改变时,开发工作量将如何改变。如COCOMO模型,最多只能压缩到名义开发时间的75%。这部分人员增加的工作量消耗在维护项目人员的通讯费用上。

4.软件开发组织

有多少软件开发组织,就有多少员工组织。无论这些组织是好是坏,一般都不可能轻易改变。虽然组织结构的改变不在软件规划人员的职责范围内。然而,直接参与新软件项目的人员组织可以而且应该在软件规划阶段认真考虑。

对于一个需要N个人工作K年的软件项目,如何使用人力资源可能有以下几种选择:

(1)将M个不同功能的软件分配给N个人来完成,他们之间不需要太多的配合,一个软件主管负责主要的协调任务。这样,软件主管可能需要同时管理几个不同的项目;

(2)将M件功能不同的软件分配给N个人来完成(m≤n),因此可能需要成立一些非正式的小组,并指定组长,而小组之间的协调则由软件主管负责;

(3)n个人被分成K个小组,每个小组被分配一个或多个职能,并有特定的组织。协调工作由小组和软件主管共同进行。

尽管有可能给出支持或反对上述每个方案的理由。然而,越来越多的证据表明,第三种方案,即正式群,是最有效的。

正式团队的方案来源于“主程序员团队”的概念。它首先由哈兰·米尔斯提出,并由贝克进一步阐述。团队核心由一名高级工程师(首席程序员)、2至5名技术人员和一名后备工程师组成。首席程序员负责团队所有技术活动的规划、协调和评审;技术人员负责项目的具体分析和开发;备份工程师支持主程序员的工作,必要时可以代替主程序员,让项目继续进行,损失降到最低。

主程序员团队有一名或多名专家(如数据库设计或通信专家)、若干辅助人员(如秘书和打字员)和一名图书管理员参与工作。图书管理员同时为几个组工作,具体完成以下任务:

(1)保存和管理所有软件配置(包括各种文档、源程序清单、数据和各种磁介质资料);

(2)协助收集和整理软件生产率数据;

(3)对可修改模块进行分类并编制索引;

(4)协助团队进行调查、评估和准备文件等工作。主程序员群体的主要目标是发挥集体力量。因此,小组要从“大局”的角度培养节目设计,把“我的”节目变成“我们的”节目;通过帮助消除软件的个人属性,团队可以鼓励更彻底的评审,并在共同的工作中增加学习,从而提高软件的质量。

在本章中,我们讨论了一个人们在工作中需要沟通的问题。当采用主程序员组时,必须增加交换意见所需的工作量,这似乎不利于提高软件开发的生产率。然而,无论如何组织,整个软件开发过程中总工作量的相当一部分总是花在交换意见上(如计划、分析和评审等。).虽然小组形式增加了内部交换意见的工作量,但这是一种有组织的评审,一定会减少设计和编码中引入的错误。这样一来,测试工作量减少了,使得团队有了更高的生产力。当然,组内技术人员的数量不能太多,一般建议2 ~ 5人就好。5.软件计划

软件开发过程的每一步都应该产生可交付的文档,这些文档可以用于评审并作为下一步的基础。

软件计划是一个相对简短的文档。应发送给相关部门,包括:

(1)告诉项目的软件主管部门、技术人员和需求者项目确定的工作范围和所需资源;

(2)应将项目的成本估算和进度计划告知软件主管部门进行审查;

(3)还应分发给所有与项目开发相关的人员,向他们提供项目开发的一般方法。软件计划应包括以下内容:

1.工作范围

1.1项目目标1.2主要功能1.3其他功能1.4发展情况

2.资源

2.1人力资源2.2硬件资源2.3软件资源2.4可用窗口

3.估价

4.附表六。软件开发工具和环境

目前,软件开发工具种类繁多,按功能可分为8大类:

(1)业务系统规划工具模拟企业的战略信息需求。这些工具提供了一个可以导出特定信息系统的“原始模型”,使业务信息可以在企业的各个部门运行。

(2)项目管理工具在这些工具的帮助下,项目经理可以有效地估算软件项目所需的工作量、成本和开发周期,定义功能分解结构WBS,制定可行的项目开发计划;根据需求跟踪项目的发展;可以收集度量数据来评估软件开发效率和产品质量。可以看出,这些工具可以分为项目规划工具、需求跟踪工具、度量和管理工具等。

(3)支持工具。这些工具用于支持软件工程过程,包括文档工具、系统软件工具、质量保证工具、数据库管理工具和软件配置管理工具。

(4)分析和设计工具。这些工具用于建立待开发系统的模型,评估模型的质量,检查模型的一致性和有效性,以确保分析和设计的完整性。它不仅包括支持某种开发方法的工具,还包括基于规则系统的分析和设计机器。这种分析设计机是90年代的预期产品,可以制作适用于各种分析设计方法的工具。

(5)编程工具。这些工具包括支持大多数传统编程语言的编译器、编辑器和调试器。从工具的输出来看,4GL也属于这一类。

(6)测试分析工具常用的测试分析工具包括静态分析工具和动态测试工具。

(7)原型工具(prototype tool)作为瀑布开发模式之外的另一种主要开发模式,即原型开发模式,因其应用的灵活性和响应用户需求的快速性而越来越受到重视。特别是随着软件构件复用研究的深入,这种开发模式的实用价值得到了增强。但是,没有经验信息就无法构建原型,所以支持原型开发模式的原型工具的开发也越来越专业化。例如,用于用户界面设计的原型工具可以通过使用图形包快速构建应用系统的界面,供用户评估和确定最终产品的界面形式。

(8)维护工具用于协助完成维护活动,包括在运行过程中发现问题时定位相应的软件开发基线;当软件配置不完整时,从源程序到分析设计模型的逆向转换工具等。有许多方法可以对软件开发环境进行分类。
这里有三种:

(1)按解决的问题分类;

(2)根据现有软件开发环境的演变趋势进行分类;

(3)按融合程度分类。

1.根据解决的问题分类

软件开发中遇到的问题主要出现在三个层面:编程层面、系统综合层面和项目管理层面。软件开发环境也应该在这三个层次上得到支持。

(1)编程环境

编程环境主要解决一个独立于他人工作的程序员如何把规范变成可操作的程序的问题,即属于小中编程的范畴。这个过程包括两个重要部分:方法和工具。其中,方法(如“结构化编码技术”)可能是更重要的部分,因为再好的工具也不会是设计和编码很差的程序的灵丹妙药。但是作为一个软件开发环境,我们会把重点放在工具上。

(2)系统综合环境

综合环境主要考虑将许多子系统集成为一个大系统的问题,即属于大规模编程的范畴(现有文章将较大规模的系统编程称为garantuan中的编程)。所有大型软件系统都有两个基本特征:一是由一些更小、更容易理解的子系统组成;第二,它们是不断变化的。这两个特点使得软件在开发过程中产生了大量的分支。因此,需要有一个系统综合环境来帮助人们控制子系统,并将其集成到大系统中。没有适当的支持,就无法对软件进行精确的修改(纠正错误或改进功能),因为人类的智能将难以应对如此大的规模以及由此带来的高复杂性。系统综合的两个基本问题是接口控制和版本控制。接口控制要考虑模块连接和资源共享的描述和限制。版本控制应考虑系统各种版本的生成和管理。

(3)项目管理环境

在大型软件系统的开发和维护中,必须有很多人一起工作一段时间。缺乏对人际交往与合作的管理,会造成比编程更多更严重的问题。另外,项目寿命越长,参与的人越多,管理问题就会越多。项目管理环境的职责是解决软件产品规模大、生命周期长、人员交互多所带来的问题,即属于多人编程的范畴。项目管理环境必须处理的三个问题是误解、缺乏信息和利益冲突。项目管理环境可以由两部分组成:记录和维护系统开发的状态信息以及集成和分发文档。

2.根据现有软件开发环境的演变趋势。

根据现有软件开发环境的演变趋势,可以将软件开发环境分为四类,这四类对软件开发环境的发展有重要影响(在工具、用户界面和体系结构方面)。

(1)语言中心环境(language-centered environments)

它们是围绕一种语言构建的,可以提供一套适合该语言的工具。这种环境交互性强,对系统综合的支持通常有限,也不支持项目管理。换句话说,基本属于编程环境。

现有的环境中,60年代末出现的Lisp环境,70年代中期以Mesa/Cedar语言为中心的Cedar环境,80年代初形成的以Smalltalk语言为中心的Smalltalk环境和以Ada语言为中心的Rational环境都属于以语言为中心的环境。

(2)面向结构的环境

在这种环境中采用的技术允许用户直接操纵结构。最初的动机是通过语言的结构给用户一个输入程序的交互工具,即语法导向编辑器。这种能力后来被扩展到提供单用户编程环境,该环境还支持交互式语义分析、程序执行和调试。编辑器是这个环境的核心组件。最重要的是正式描述语言的语法和静态语义的能力,从中可以生成结构编辑器的实例。也就是说,这种与语言无关的技术导致了环境生成器的概念,在支持局部编程、全局编程、历史记录和访问控制列表方面的不断努力,已经逐渐用“面向结构”取代了“语法指导”这个术语。

在现有的环境中,80年代初出现的芦荟编辑器属于面向结构的环境。它是Gendalf项目的一个组件,只允许用户对结构化元素进行操作。也就是说,用户只能看到抽象的语法树,看不到熟悉的源语言文本,但它不会允许用户用不正确的语法构造程序。后来的康奈尔合成器也属于面向结构的环境,采用文本表示,克服了用户输入和修改语言表示的困难。在其他系统中,采用混合模式,用户可以自由选择对哪种表示(文本或结构)进行操作。这两种形式都保存在系统中,并且始终处于相同的状态。

(3)工具包环境

工具箱由一组支持软件开发和编码的工具组成。它从操作系统开始,增加了一些编码工具,如编辑程序、编译器、汇编器、链接器和调试器。此外,还有一些支持大规模软件开发任务的工具,比如版本控制和配置管理。它使用简单的数据模型来提高工具的可伸缩性和可移植性。这样的环境允许高度的定制,但是工具集的使用很难提供任何用于环境定义、管理或控制的技术。当代的工具箱环境使用了相当成熟的技术。商业环境的设计者们正在把高级界面放在普通操作系统的用户命令界面上,也就是对操作系统的扩展。

商业工具箱系统的例子有:UNIX程序员工作台UNIX/PWB和DECKVMS/VAXSET等。,都是80年代中期推出的。为全局编程提供的工具是源代码控制系统(Source Code Control System-SCCS)和代码管理系统(Code Management System-CMS),两者都起到版本控制的作用,并且独立于具体的编程语言。后来开发的工具箱环境的例子有:可移植的通用工具环境-PCTE和通用APSE接口集-CAIS。APSE是Ada编程支持环境的缩写。

(4)基于方法的环境。

这种环境支持特定的软件开发方法。这些方法可以分为两类:①支持软件开发周期特定阶段的方法;②管理开发过程。前者包括规格说明、设计、确认、验证和重用。方法不同,正式的程序也大不相同,从非正式到准正式再到正式。后者又可以细分为两部分:支持产品管理和支持开发维护产品的过程管理。产品管理包括版本、配置和交付管理。开发过程管理包括项目规划和控制、任务管理、沟通管理和加工过程建模。

这种环境的例子有:Anna-Ada的规范语言;VDM——一种软件开发的形式化方法,也是一种规格说明语言:SREM-SL/PSA,分布式计算的设计系统-问题描述语言/问题描述分析程序,它是为信息处理系统的结构化文档的编译和分析而设计的。支持管理开发过程的典型环境是iStar-一个集成项目管理系统MA-一个基于知识的软件环境中的项目管理部分。

3.根据综合程序分类

环境的形成和发展主要体现在各种工具的融合程度上。目前国外软件工程界的软件开发环境分为三代。各代之间的主要差异和特征如下:

①第一代

①基于操作系统(如VMS、UNIX等。);

②工具通过一个通用框架集成;

③只有工具使用的文件才可以修改加入,调用过程会用到这些工具;

④工具使用的文件结构保持不变,成为环境文件库的一部分;

⑤从人机界面的角度来看,这类环境主要使用单色、低分辨率的文字终端,图形能力较差,大多使用菜单技术。

比如70年代中期的UNIX环境,文件库是集成核心,管道命令实现控制功能,用SHELL语言表达的程序显示用户界面。

(2)第二代

①有真正的数据库(如INGRES)而不是文件库,有时也叫信息库,大多采用E-R模式或E-R-A模式;

②工具在较低层次上集成,工具和文件作为实体存储在数据库中,而不是简单地作为一个独立的组件;

③现有工具不能随意放入,要适当修改或定制;

④人机界面采用高分辨率点阵工作站,具有多窗口、图形符号等功能。,并采用鼠标设备。如Ada编程支持环境(APSE)以数据库为集成核心,具有可移植的工作界面。

③第三代

(1)基于知识库系统;

②顺序调用独立工具的概念被集成工具集完全取代,用户不再需要在任务间来回切换不同的工具;

③采用形式化方法和软件复用等新技术;

④多工具控制的多窗口技术被单一工具操作的多窗口技术所取代;

显然,第三代软件开发环境中工具的集成,有了这些工具,人们逐渐从繁重的手工软件开发活动中解放出来,从而实现软件开发和维护的自动化,提高软件开发和维护的质量和生产率,缩短软件开发周期,降低成本。为了集中研究和解决这样一系列的问题,20世纪80年代提出了案例思想,目前的研究重点是案例的整合。


位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 三级信息管理技术分章节考试要点:软件工程(软件管理之进度安排)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情