软件项目的特点
软件产品的高度抽象性:
软件产品与其他的任何产业的作品不同,它把思想、概念、算法、流程、组织、效率、优化等融合在一起。要开发出这样的产品,在许多情况下,用户一开始不给出明确的想法,提不出确切的要求。也说不出究竟要什么。
开发过程中的易变性:在开发过程中,程序与相关的文档资料常常需要修改。在修改过程中又可能产生新的问题并且这些问题很可能在过了相当长的时间以后才会发现。
文档工作的重要性:
文档资料工作的工作量在整个项目研制过程中占有很大的比重,是十分重要的工作。
人员的流动性:
软件开发工作技术性很强,要求参加的工作人员具有一定的业务水平和实际工作的机构研究。但事实上,人员的流动对工作的影响很大。离去的人员不但带走了重要的信息,还带走了工作的经验。
软件项目管理困难
智力密集可见性差:
不深入掌握软件知识或是缺乏软件开发的实践经验人员,是不可能领导好软件的管理工作的。软件开发的成果是不可见的逻辑实体。能制造假象,欺骗外行的领导。
单件制定生产:
与其他领域中大规模现代化生产有着很大的差别,也自然会给管理工作造成许多实际的困难。
劳动密集 自动化程度低:
软件项目依赖与手工劳动,这些劳动十分细致、复杂和容易出错。加上软件本身的复杂性,使得软件开发和维护难以避免许多种错误,产品质量收到很大的影响。
使用方法繁琐 维护困难:
用户使用软件需要掌握计算机的基本知识,或者是接受专门的培训。如果遇到了软件运行出问题,使用者只能依赖专职维护人员,和售后服务。
软件渗透了人为的因素:
为了质量完成软件项目,充分发挥人员的智力才能和创造精神,不仅要求软件技术人员具有一定的技术水平和工作经验,而且还要求他们具有良好的心理素质。
软件人员的情绪和他们的工作环境,对他们的工作也有很大的影响,与其他的行业相比,他的这一特点是十分的突出的,必须给予足够的重视。
造成软件失误的原因
问题涉及到软件项目研制成员的指定、进度评估、资源的使用、人员的配备、组织机构和管理方法等软件管理的许多侧面。
比较重要的概念。
度量。
直接度量。(面向规模度量)
软件工程的过程:所投入的成本和工作量。
软件产品:产生代码行数(LOC)、执行速度、存储量大小、在某种时间周期中所 告的差错数。
直接度量就是简单的计算。生产率:KLOC/PM(人月) 成本=元/LOC 质量=错误数/KLOC 文档=文档页数/KLOC
间接度量。(面向功能的度量)
面向功能度量更加关注于程序的“功能性”和“实用性“。
是通过表格来导出功能点FP。
计算功能点,使用如下的关系式: FP=总计数*(0.65+0.01*SUM(Fi)) 生产率=FP/PM(人月) 成本=元/FP 质量=错误数/FP 文档=文档页数/FP 工作度量COCOMO 结构型成本估算模型是一种精确、易于使用的成本估算方法。 DSI(源指令条数)定义为代码的源程序行数。KDSI=10s24DSI TDEV(度量单位为月)表示开发进度。 软件项目的总体类型: 组织型 不涉及硬件的开发 嵌入型 完全与硬件结合的开发 半独立型 介于上述两者之间 COCOMO摸分成三级: 基本COCOMO型按其详细程度模型 中间COCOMO模型 详细COCOMO模型 基本COCOMO模型:是静态单变量模型,用源代码行数(LOC)为自变量的经验函数计算软件开发工作量。 中间COCOMO模型:在用LOC为自变量的函数计算软件开发工作量(称为名义工作量)的基础上,用涉及产品、硬件、人员、项目等方面的影响因素调整工作量估算。 详细COCOMO模型:包括中间COCOMO模型的所有特征,但用上述各种影响因素调整工作量估算时,还要考虑对软件工程过程中每一步骤(分析、设计)的影响。 中间COCOMO模型 考虑15种影响软件工作量的因素,修正COCOMO工作量公式和进度公式,可以更合理的估算软件(各阶段)的工作量和进度。 15种影响包括:软件的可靠性 、数据库规模、产品复杂性、执行时间限制、存储限制、虚拟机易变性、环境周转时间、分析员能力、应用领域实际经验、程序员能力、虚拟机使用经验、程序语言使用经验、现代程序设计技术、软件工具的使用、开发进度限制。 详细COCOMO模型的名义工作量公式和进度公式与中间COCOMO模型相同。 工作量因素分级表分层、分阶段给出。针对每一个影响因素,按模块层、子系统层、系统层,有三张工作量因素分级表,供不同层次的估算使用。每一张表中工作量因素又按开发各个不同阶段给出。 基线。 基线是软件生存期中开发阶段特定点,又称里程碑。有正式的技术评审而得到软件配置协议和软件配置的正式文本才能成为基线。 作用:是把各个阶段的工作划分的更加明确化,使本来连续的工作在这些点上断开, 以便检验和肯定阶段成果。 软件开发阶段的基线。 系统工程—–系统规格说明。 需求工程——软件需求规格说明。 软件设计——设计规格说明。 程序编写——-源代码。 测试计划。过程。数据——测试。 以需求规格说明为基线为例。当还在需求分析阶段,允许提出新的需求。一旦开发工作跨国分析阶段,得到各方协议通过的需求规格说明。到达设计阶段或编码阶段,为了满足需求的变更,会引起工作的大量反复,造成软件开发成本的大幅度提高。把需求规格说明设置为基线,将用户需求“冻结”。如果用户提出了新的需求,必须在完成本项目的开发后,作为新项目的需求考虑。 软件质量保证。 软件质量:明确声明的功能和性能的需求、明确文档化的开发标准,以及专业人员开发的软件所具有的隐含特征都得到满足。 项目管理者的主要职能。 制定计划。 规定待完成的任务、要求、资源、人力和进度等。 建立组织。 在实施计划,保证任务的完成时间内,需要建立明确的责任机构。 配备人员。 任用各种层次的技术人员和管理人员。 指导。 鼓励和动员软件人员完成所要分配的工作。 检验。 对照计划或是标准,监督和检查实施的情况。 项目过程的主要阶段。 启动计划。 在制定软件项目计划之前,必须明确项目的目标和范围、考虑解决方案、标明技术和管理上的要求。 项目和目标是标明软件项目的目的。 1)设定目标:收集事实、信息、意见、需求;探讨假设情况;确定应包括的内容和应排除的东西。 2)SWOT分析:S(优势) W(劣势) O(机会) T(威胁) 3)确定需要进行的主要工作及需要的技能和资源,即明确项目的资源和范围。 4)考虑可能的解决方案,可确定合理精确的成本估算,实际可行的任务分解以及可管理的进度安排。 制定计划。 指定项目计划的目的就是要回答这个软件项目的范围是什么要哪些资源费多少工作量用的成本有多少及进度如何安排等等一些列的问题。 1)项目实施计划(或成为软件开发计划) 这是软件开发的综合性计划,通常包括任务 进度 人力 资源 环境 组织等多方面。 2)质量保证计划 把软件质量要求具体规定为每一个开发阶段可以检查的质量保证活动。 3)软件测试阶段 规定测试活动的任务 测试方法 进度 资源 人员职责等。 4)文档编制计划。 规定所开发项目应编制的文档的种类 内容 。 5)用户培训手册 规定用户培训目标 要求 进度 人员职责等。 6)综合支持计划 规定软件开发过程中所需要的支持,以及如何获取和利用这些支持。 进行度量。 进行度量工作,是为了了解产品开发过程的技术过程和产品本身。度量开发的目的是为了改进过程。度量产品的目的是为了提高产品的质量。度量作用是为了定量的进行管理。管理人员和技术人员可利用这些度量来了解软件工程的实际情况和它所产生的产品质量。 风险分析。 在创建一个新程序时,总存在某些不确定性。 用户要求是否能确切的被理解项目最后结束之前要实现的功能是否建立否存在目前仍未发现的技术难题项目出现严重的误期是否会发生一些变更/p> 风险分析包括:风险识别、风险估计、风险优化、风险驾驭策略、风险解决和风险监督。这些步骤都贯穿在软件工程中。 进度安排。 做出进度安排,分配资源,建立项目组织即任用人员(包括人员的地位、作用、职责、规章、制度等),根据规模和工作量分配任务。 项目的进度安排与任何一个工程项目的进度安排没有实质上的不同。首先识别一组项目任务。再建立任务之间的相互联系,然后估算各个任务的工作量,分配人力和其他资源,制定进度时序。 软件项目的组织关于人员。 团队(Groups) 强有力的领导者。 个人负责制。 围绕组织的目标做事。 个人创作结果。 有效的组织会议形式。 根据对他人的影响评价业绩。 由人委派工作。 小组(Teams)。 共同参与。 个人与集体共同负责。 围绕特定的团队目标做事。 集体创作的结晶。 自由开放式的会议形式。 根据工作产品评价业绩。 共同完成实际的工作。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!
MM (单位人月)表示开发工作量。
基本COCOMO模型的工作量和进度公式