第一篇:软件工程 基础实践教程 读书总结
软件工程 基础实践教程吴洁明 著
第一章 软件工程概述
1.2软件工程发展简史
20世纪70年代,第一代软件工程,即传统软件工程。80年代,第二代即对象工程。90年代第三代即构件工程。
1.3软件工程的定义和目标
软件工程是将系统化的、规范的、可度量的方法应用于软件的开发运行和维护过程,也就是将工程化应用于软件开发和管理之中。
软件工程研究的主要目标是软件开发技术和软件开发管理两个方面。
目标:(1)合理预算开发成本,付出较低的开发费用;(2)实现预期的软件功能,达到较好的软件性能,满足用户的需求。(3)提高所开发软件的可维护性,降低维护费用。(4)提高软件开发生产率,及时交付使用。
1.4 软件工程的7条基本原理
1.用分阶段的生命周期计划严格管理。2.进行阶段证实是。3.实行严格的产品控制。4.采用现代程序设计技术。5.结果应能清楚地审查。6.开发小组的人员应该少而精。7.承认不断改进软件工程实践的必要性。
1.5 软件生命周期模型
可行性研究、需求分析、设计、实现、测试和集成、维护
瀑布模型、快速原型化模型、演化模型、螺旋模型、构件组装模型
1.6软件工程过程
第一级 初始级、第二级 可重复级、第三级 定义级、第四级 管理级、第五级 优化级
1.7 软件开发方法简述
1.Parnas方法有两个闪光点:信息隐藏技术;错误预防技术。
信息隐藏技术:在概要设计时列出可能会发生变化的因素,并在模块划分时将这些因素放到个别模块的内部。
错误预防:在每个可能产生的错误之前增加一些判断,防止软件出现不可预料的结果。
2.Yourdon方法3.面向数据结构的软件开发方法4 问题分析方法PAM5.面向对象的软件开发方法6.可视化开发方法
1.8 软件工程相关的技术规范、标准和最新文献的信息源
CMM规范、ISO9000-
3、ISO/IEC12207标准、PSP规范、TSP规范、软件配置管理系列标准、JAVA规范、C++规范、Unicode标准、其他资料
第二章可行性研究
2.2可行性研究的步骤
1.复查系统的规模和目标2.研究目前正在使用的系统3.导出新系统的高层逻辑模型4.进一步定义问题5.导出和评价供选择的解法6.推荐行动方针7.草拟开发计划8.书写文档提交审查
2.3 可行性分析的要素经济、技术、社会环境、人
2.4 成本/效益分析
2.4.1 程序规模估算
第一种方法:根据以前做过的类似项目规模与新项目规模的比例关系,对照以前项目的工作量求出新项目的工作量。
第二种方法:基于功能点的估算方法,该方法中确定了5个信息域特性:输入项数,输出项数,查询数,主文件数和外部接口数。
2.4.2 工作量估算
1.IBM模型 2..Putnam模型3.COCOMO||模型
2.4.3 成本/效益分析方法
1.倾向的时间价值 2.投资回收期 3.纯收入 4.投资回收率
第三章需求工程
3.1 需求工程的概念
需求工程由需求开发和需求管理组成。需求开发是指需求的获取、分析、规格说明和验证。需求管理是在软件开发过程中对需求开发结果的控制、跟踪和管理。
3.1.1 需求分类分为4个层次:业务需求、用户需求、功能需求和非功能需求。业务需求是反映组织机构或客户对软件高层次的目标要求。
用户需求是用户使用该软件要完成的任务。
功能需求定义了软件开发人员必须实现的软件功能。
非功能需求是对功能需求的补充。
3.1.2 需求工程的主要活动
需求开发的活动:获得需求;分析需求;编写需求规格说明书;审查需求。
需求管理的活动:需求变更控制;需求版本控制;需求跟踪;需求状态跟踪控制。
3.1.3 高质量需求的特征
需求开发阶段的主要产品是软件需求规格说明书,在评审过程中应特别关注下面几点: 完整性,正确性,可行性,必要性,划分优先性,无二义性
3.1.4 影响需求质量的因素
1.用户需求不断增加 2.模棱两可的需求 3.用户不配合 4.过于精简的需求说明 5.忽略了用户的分类 6.不准确计划 7.不必要的特性
3.3 需求获取方法
调研计划包括:调研的部门,调研前的培训内容,调研的时间和地点,设计调研访谈表,调研结果分析,调研报告的格式和内容。
1.发现问题及时与开发人员沟通。2.用户必须坚持需求审查。
3.3.1 必须向用户交代的两个重要问题
第一,软件开发与其他产品的开发过程一样是分阶段的,每个阶段都有阶段产品。第二,分阶段审查产品时产品的合格标准是什么?
需要提交的阶段产品及其主要内容和提交时间:软件范围和目标说明书;软件调研报告;软件开发计划书;软件需求分析规格说明书;软件设计规格说明书;软件模块开发卷宗;软件测试计划书;软件测试报告;软件用户手册;软件开发月报。
3.4 定义软件的质量属性
有效性:指在预定的时间内系统正常运行时间的比例。
高效性:系统效率用来衡量处理器优化、磁盘和内在空间利用率、通信带宽利用率等系统资源的使用情况。
灵活性/可修改性:灵活性反映在软件中添加新功能时所需要的工作量。
安全性:保证系统不被非法访问,防止数据丢失、防止病毒入侵、防止私人数据进入系统。互操作性:表明产品与其他系统交换信息和使用服务的难易程度。
可靠性:可靠性指标是软件在给定时间间隔内按照规格说明书的规定正常运行的概率。健壮性:指当软件遇到非法输入数据或相关的运行环境出现异常软件仍能正确运行的程度。易用性:可指对用户某项操作的时间要求,也可指用户学习操作软件所用的时间要求,或者是对软件操作形式的要求。
可维护性:它描述纠正一个缺陷或进行一个变更的简易程度。
可移植性:度量把软件从一种环境移到另一种环境中所花费的工作量。
可重用性:表明一个软件组件可用于其他软件的程度。
可测试性:指测试软件时缺陷的简易程度。
可理解性:指人们通过阅读程序源代码和相关文档了解程序功能、结构和运行方式的容易程度。
3.5 需求优先级
3.7 需求管理
目的:保障需求规格说明书与软件产品的一致性;控制需求变更对项目开发的影响;使需求活动与计划保持一致。
第四章 结构化分析
4.1 结构化分析的主要工具
结构化分析方法研究的核心是数据的组成、数据流向和对数据的加工处理。
4.1.3 数据字典主要用来描述数据流程图中的数据流、数据存储、处理过程和外部实体。数据流是数据结构中的数据在系统内的传播路径。
数据元素是数据处理中最小的、不可分割的单位,它直接反映事物的某个属性。
4.1.6 实体关系图它给出了一组基本的构件:数据对象、属性、关系和各种类型指示符,主要目的是表示数据对象及其关系。
4.2 结构化分析方法的实现步骤
两条基本原则:必须要理解问题的数据域和功能域;按自顶向下、逐层分解的方式对问题进行分解和细化。
步骤;1.信息分析 2.回溯 3.补充 4.确定非功能需求 5.复查 6.画出软件的功能结构图 7.修正开发计划 8.编写需求文档。
4.3 结构化分析规格说明书
第5章 结构化软件设计
5.1 软件设计的过程
典型总体设计过程:1.设想供选择的方案对每种合理的方案都应该备下列四份资料:系统流程图,组成系统的元素清单,成本/效益分析,实现这个方案的进度计划。2.推荐最佳方案 3.功能分解 4.设计软件结构 5.数据设计 6.制定测试计划 7.书写文档 8.设计审查和复审
9.评审详细设计
5.2 软件设计原则和影响设计的因素
原则:1.多样化设计 2.设计可回溯到需求 3.充分利用已有的模块 4.设计应该表现出一致性和规范性 5.设计的易修改性 6.容错性设计 7.设计的粒度要适当 8.在设计时就要开始评估软件的质量 9.设计评审
5.3 软件设计的概念
5.3.1 模块
一般把用一个名字就可调用的一段程序称为“模块”。模块具有如下三个属性:功能、逻辑、状态
5.3.2 模块化
模块化就是把整个系统划分成若干个模块,每个模块完成一个子功能,将多个模块组织起来实现整个系统的功能。
5.3.3 模块独立性
反映模块独立性的有两个标准:内聚和耦合1.耦合:指模块间相互关联的程度
耦合分为7类:内容耦合、公共耦合、外部耦合、控制耦合、数据结构耦合、数据耦合、非
直接耦合、2.内聚:指一个模块内部各元素之间的紧密程度
巧合内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、信息内聚、功能内聚。
5.5 结构化设计方法
具体流程:1.首先分析流程图的类型 2.将数据流程图映射为结构图 3.用“因子分解”方法定义软件的层次结构。4.优化设计结构
5.5.1 数据流和类型:交换流、事务流
5.5.2 变换分析变换分析方法由以下四步组成:重画数据流程图;区分逻辑输入、逻辑输出和中心变换部分;进行第一级分解,设计上层模块;进行第二级分解,设计中、下层模块。
5.7 优化软件设计
规则1:模块功能完善化 规则2:设计功能单一和结果可预测的模块 规则3:消除重复功能规则4:模块的作秀范围应在控制范围之内 规则5:模块的大小要适中 规则6:尽可能减少高扇入的结构 规则7.将模块中相对变化较大的部分剥离出去
5.8 设计复查
复查过程分为三部:首先,采用概要设计复查的方法来检查在概念上的设计;然后,在关键设计审查中,应向其他开发者描述关键技术上的设计细节;最后,进行程序设计的复查,程序设计的复查羽毛球详细设计阶段。
5.9 数据设计
5.9.1 数据设计的原则:1.用于软件的系统化方法也适用于数据,在导出、评审定义软件需求和软件体系结构时,必须定义和评审其中用到的数据流、数据对象、数据结构。2.确定所有的数据结构以及在每种数据结构上实施的操作。3.应该建立一个数据字典,用它来定义数据和软件的设计。4.底层数据设计的决策应该推迟到设计过程的后期进行,在数据设计中也可以使用自顶向下、逐步细化的方法。5.数据设计要遵从信息隐藏原则,只有那些相关的模块才能访问相应的数据结构,数据结构的逻辑表示与物理表示要分开。6.应当创建一个存放数据结构和相关操作的库 7.软件设计和程序设计语言应当支持抽象数据类型的定义和实现,否则,对于一些复杂数据结构的设计和实现可能是非常困难的。
5.9.2 数据结构设计
5.11 详细设计
5.11.1 结构化设计
包括顺序、条件和重复三种结构。顺序结构实现了任何算法定义中的核心处理,条件结构允许根据逻辑情况选择处理方式,重复结构提供了循环。
核心内容:1.程序模块只有一个入口和一个出口 2.程序中只包含顺序、条件和循环三种控制结构 3.详细设计阶段采用自顶向下逐步求精的方法,可以把一个模块的功能爱步分解细化为一个系列具体的处理步骤。
第6章 软件测试
6.1 软件测试的概念
6.1.1 测试定义
从广义上讲,是指软件产品生存周期内所有的检查、评审和确认活动。从狭义上讲,软件测试是为了发现错误而执行程序的过程。
软件测试的原则:1.应该把测试贯穿在整个开发过程之中 2.每个测试用例都应该包括测试输入数据和这组数据输入作用下的预期输出结果。3.要对每个测试结果进行全面检查,不要漏掉已经出现的错误迹象。5.在设计测试用例时,应该包括有效的、期望的输入情况,也要包括无效的和不期望的输入情况。6.软件中遗留的错误数量与已经发现的错误数量成正比。
7.回归测试的关联性要特别引起注意,修改一个错误而想起更多我错误的现象并不少见 8.测试程序时不公要检查程序是否做了它应该做的事情,还要检查它是否做了不该做的事情。
9.严格执行测试计划。10.做好测试记录,为统计和维护提供基础数据。
第二篇:软件工程实践个人总结
软件工程实践个人总结
学号:
在这个学期的软件工程实践课中,我们小组所选的题目为XXX公司全国销售管理系统。按照这个题目及相关需求,我们小组对选题进行了需求分析、模块设计、系统设计、数据库设计、用户界面设计等,并积极完成相应的开发编码工作,后又对开发的系统进行了相应功能的测试工作。
对项目的理解
我们项目小组制作的的是XXX全国销售管理系统,该公司考虑进行集约化经营模式,进军电子商务领域,将全国市场资源进行整合形成有自身特色的经营体系,提升企业核心竞争能力,为此需要运用电子商务的力量对全国经销商资源进行整合,对线上和线下进行双重营销。
经过对该项目的相关分析,我们小组明确了要具体实现的功能模块。我们所开发的系统共有两大模块,一块为XXX公司面向普通用户的在线商城销售系统;另一块为XXX公司用户进行对内的自我管理的管理系统。两个大模块下具体细分包括网上商城、客户管理、市场及销售管理、内部办公系统、仓库管理、财务管理、权限与安全7个子模块 在线商城中,要实现商品信息的展示、浏览,用户将添加商品到购物车,下单购买等功能。管理系统中,要实现的功能包括:公司的内部人员及人员对应的权限的管理、公司产品库存的管理、公司财务的管理、公司推出的一些市场营销活动(比如:促销、广告等)的管理等。
自己在项目中负责的部分
在小组完成该项目的工程中,组内进行了明确的分工,包括项目初期的分析、文档撰写及项目后期的开发测试过程。在小组中,我负责的部分为:项目初期的数据库分析、数据库设计文档的撰写和后期的测试工作。在数据库设计及相应文档撰写方面,我独立完成了数据库的初期设计和数据库设计文档的撰写,数据库文档总页数为11页。我所撰写的数据库设计文档被组内其他人和其他文档整合到一起,后来,实际的开发人员在此基础上进行了一部分的修改。在后期的开发过程中,我负责的部分为系统测试。具体负责的部分为:网上商城、库存管理、系统权限与安全这三个模块的测试工作。网上商城部分,主要功能包括商品信息的浏览、购物车功能及下订单三大部分。在编写的测试用例中,包括:
1.商品信息展示测试:分别以游客及网上商城注册用户身份浏览商城,在商品类目中选择相应的商品信息,查看商品信息的显示是否存在问题。随机打开商品信息条目,查看商品的详细描述信息,查看商品详细信息页面是否能正常显示。
2.购物车相关功能测试:购物车需要以注册用户身份登录才能正常使用,游客无法正常使用购物车功能。购物车相关功能包括商品添加到购物车、购物车中浏览已添加的商品、将已添加的商品从购物车中删除、选择购物车中的商品提交订单。每个购物车的相关功能都编写了相应的测试用例。结果发现在网上商城的初期版本中,购物车无法正常删除已添加的商品信息,已作为bug提交给相应的开发人员。在后续的版本中,该bug已经被修复。
3.由于订单功能设计支付等相关部分,开发人员未完全实现订单的相应功能。所以订单部分无法进行详细的测试。
库存管理部分,主要功能包括商品库存信息查看、出入库单的查看、出入库详情的查看、商品出入库及出入库单的审批。编写的测试用例中,包括:
1.商品库存信息的查看:以超级管理员或库存管理员的身份登录后台的管理系统,在库存中查看商品的库存详细信息。2.出入库单的查看:查看出入库单是否正确。
3.商品出入库的测试:新建商品的出入库单,提交知否能否在出入库单中查看到且出入库单的商品信息、数量、出入库单的状态是否正确。
4.出入库单的审批测试:在出入库单的审批界面中,允许某些出入库单的审批,不允许另一些出入库单的审批,然后在出入库单查看界面,查看审批的订单的状态是否发生改变。系统角色权限及安全部分,主要的功能包括:新建角色、删除角色、角色权限的管理。测试用例包括:
1.以超级管理员用户登录后台管理系统,建立新的角色并赋予相应的权限。
2.以超级管理员身份登录,并删除某些已经存在的角色,看系统是否会产生某些级联的错误。
3.角色权限的管理:为已存在的角色添加或删除某些权限。经过测试,在我测试的模块中,只发现商品购物车无法正常删除已添加的商品,其他的功能都能正常使用。
经验总结
本次的实践让我学到了一些我之前不了解的东西。这次的软件工程实践,分工十分明确,有分工的职责也很细,我分到的岗位是软件测试。在此之前,对于软件测试,我只是听说过,却并没有真实地接触过。对于组长指派给我的编写测试用例,我完全不知道要怎么写,也不知道从何下手。后来,同样是负责测试用例的组里其他成员给我发了一份测试用例的文档,我以此为参照,结合自己负责的部分,才渐渐对于测试用例有了一个大致的认识。按照自己对于软件测试的理解,加上同学的测试用例示例,结合同学的指导,我才大致完成了测试用例文档的编写,也顺利的完成了对开发的销售管理系统的测试。在这些测试用例的编写中,由于我对软件测试及测试用例的了解不深,难免存在一些问题,例如:不能很好的测试到系统中的一些功能,无法测试到一些会引发问题的情况等。另外,在这次的软件工程实践里,也跟着整组人完整地经历了一遍软件开发的流程。之前的一些课程虽然也有涉及,但总的来说没有这么完整,时间跨度上也没有这么长。在这么课中,第一次接触到了软件开发小组中用到的周报,也学到了其他一些书本上没有的东西。
第三篇:软件工程基础
一、选择题
【例1】对软件的特点,下面描述正确的是_______。
A)软件是一种物理实体
B)软件在运行使用期间不存在老化问题
C)软件开发、运行对计算机没有依赖性,不受计算机系统的限制
D)软件的生产有一个明显的制作过程
【例2】以下哪项是软件生命周期的主要活动阶段?_______
A)需求分析B)软件开发
C)软件确认D)软件演进
【例3】从技术观点看,软件设计包括_______。
A)结构设计、数据设计、接口设计、程序设计
B)结构设计、数据设计、接口设计、过程设计
C)结构设计、数据设计、文档设计、过程设计
D)结构设计、数据设计、文档设计、程序设计
【例4】以下哪个是软件测试的目的?_______
A)证明程序没有错误B)演示程序的正确性
C)发现程序中的错误D)改正程序中的错误
【例5】以下哪个测试要对接口测试?_______。
A)单元测试B)集成测试
C)验收测试D)系统测试
【例6】程序调试的主要任务是_______。
A)检查错误B)改正错误
C)发现错误D)以上都不是
【例7】以下哪些不是程序调试的基本步骤?_______
A)分析错误原因B)错误定位
C)修改设计代码以排除错误D)回归测试,防止引入新错误
【例8】在修改错误时应遵循的原则有_______。
A)注意修改错误本身而不仅仅是错误的征兆和表现
B)修改错误的是源代码而不是目标代码
C)遵循在程序设计过程中的各种方法和原则
D)以上3个都是
二、填空题
【例1】软件设计是软件工程的重要阶段,是一个把软件需求转换为_______的过程。
【例2】_______是指把一个待开发的软件分解成若干小的简单的部分。
【例3】数据流图采用4种符号表示_______、数据源点和终点、数据流向和数据加工。
第四篇:大学计算机基础实践教程实践心得
大学计算机基础实践教程实践心得
通过一个假期的关于《大学计算机基础实践教程》的学习,我深刻地认识到了学习好计算机的必要性。我们处在一个信息技术高度发达的社会,学好计算机已经成为21世纪的新青年的必修课。如果想在这个社会立足,计算机就已经成为你的必备技能之一。在这本书里,我学到了计算机的基础知识,比如指法以及中英文输入,windows XP窗口的基本操作,文件和文件夹的管理,画图软件的使用,网页浏览,信息检索,电子邮件的接受与发送,Word2003的基本编辑操作,文档的排版设计、修饰、视图、样式和模板,制作表格,图文混排等等一系列文档基本操作,表格的各种操作和幻灯片的制作等基础操作。
还有一些提高的部分,例如系统操作使自己对自己的计算机更加了解,使自己的计算机变得更加适合自己,包括更换壁纸,分辨率,清除碎片提高电脑的速度,还有文字处理,电子表格,PowerPoint的高级应用,网页制作,Flash的制作,数据库,程序设计等计算机高级应用。
以及更高层次的计算机应用。包括系统维护,系统安全策略设置与计算机病毒清除,信息检索与文献资料管理,计算机网络与服务的构建,声音的录制、处理,刻录软件Nero Burning Rom,计算机常见故障的排除以及软件的安装。通过这些高层次的操作,我对计算机操作的更加得心应手,在关键时刻会起到事半功倍的作用。
网络简单地说就是一个将人们所需要的资源通过一定的协议实行共享的媒介。就拿大家经常使用的浏览器来说吧,当你需要了解时下流行什么发型或者是服装,就可以通过搜索引擎足不出户了解这些东西。这个例子仅是网络应用的冰山一角,要想懂得更多的网络使用方法学习是必不可少的,当然实践也是相当重要的。
作为信息爆炸的21世纪,网络已经深入到了社会的各个阶层。无论是在最神秘的国家情报机构还是普通的人民大众,网络已经显得举足轻重,无可替代的工具。小到人们经常使用的手机,大到军队作战航天飞机的发射都离不开网络。比如说,去年五月一日美国海豹突击队击毙“基地”头目——本·拉登,就是一个很好的例子,美国中情局截获了一则信息显示本·拉登的藏身地。还有大家用的银行卡都是联通了全球的银行网络,才使得存取如此简单。
那么下来谈谈网络在大学生中间的应用。大家都比较熟悉的QQ,MSN等一系列交友平台,通过这些平台大家可以远距离通信,发电子邮件,讨论问题,交友,分享图片等等。还有一些bbs论坛,他将一些拥有共同爱好的并且愿意和社区的其他人分享自己的独到见解的一类人聚集起来,共同讨论问题,解决问题。充分发挥大学生活跃的思想和创造力。浏览网页、博客丰富大学生的课余时间,还能涉猎一些有用的社会知识,开阔视野。总之,网络是时代的产物。了解并使用简单的网络知识不仅提高了自身的文化素质而且还能解决一些生活中的问题,也就是说网络知识是当代大学生必不可少的素质。
第五篇:软件工程读书心得体会
软件工程读书心得体会
040730111 步入大四,课程变的少了,学期伊始,我很认真地上课、听讲;很快就过了1个月了,学校的就业中心开始忙碌起来,作为就业大军中的一员,我开始忙碌我的工作,听宣讲会、笔试、面试,渐渐地上课不用心了,还旷过课,在这里请老师原谅,下面是我对于软件工程各方面知识的理解,请老师指正:
(一)软件度量方面
软件度量是对软件开发项目、过程及其产品进行数据定义、收集以及分析的持续性定量化过程,目的在于对此加以理解、预测、评估、控制和改善。没有软件度量,就不能从软件开发的暗箱中跳将出来。通过软件度量可以改进软件开发过程,促进项目成功,开发高质量的软件产品。在软件开发中,软件度量的根本目的是为了管理的需要,利用度量来改进软件过程。对于管理层人员来说:没有对软件过程的可见度就无法管理;而没有对见到的事物有适当的度量或适当的准则去判断、评估和决策,也无法进行优秀的管理。所以软件度量在软件开发中起到不可或缺的作用。
项目度量是针对软件开发项目的特定度量,目的在于度量项目规模、项目成本、项目进度、顾客满意度等,辅助项目管理进行项目控制。软件开发项目规模度量(size measurement)是估算软件项目工作量、编制成本预算、策划合理项目进度的基础。规模度量是软件项目失败的重要原因之一。一个好的规模度量模型可以解决这一问题。有效的软件规模度量是成功项目的核心要素:基于有效的软件规模度量可以策划合理的项目计划,合理的项目计划有助于有效地管理项目。规模度量的要点在于:由开发现场的项目成员进行估算;灵活运用实际开发作业数据;杜绝盲目迎合顾客需求的“交期逆推法”。软件开发成本度量主要指软件开发项目所需的财务性成本的估算。主要方法如下:
类比估算法。类比估算法是通过比较已完成的类似项目系统来估算成本,适合评估一些与历史项目在应用领域、环境和复杂度方面相似的项目。其约束条件在于必须存在类似的具有可比性的软件开发系统,估算结果的精确度依赖于历史项目数据的完整性、准确度以及现行项目与历史项目的近似程度。
细分估算法。细分估算法是将整个项目系统分解成若干个小系统,逐个估算成本,然后合计起来作为整个项目的估算成本。细分估算法通过逐渐细化的方式对每个小系统进行详细的估算,可能获得贴近实际的估算成本。其难点在于,难以把握各小系统整合为大系统的整合成本。
周期估算法。周期估算法是按软件开发周期进行划分,估算各个阶段的成本,然后进行汇总合计。周期估算法基于软件工程理论对软件开发的各个阶段进行估算,很适合瀑布型软件开发方法,但是需要估算者对软件工程各个阶段的作业量和相互间的比例具有相当的了解。
(二)软件项目管理
软件项目管理的对象是软件工程项目。它所涉及的范围覆盖了整个软件工程过程。为使软件项目开发获得成功,关键问题是必须对软件项目的工作范围、可能风险、需要资源(人、硬件/软件)、要实现的任务、经历的里程碑、花费工作量(成本)、进度安排等做到心中有数。这种管理在技术工作开始之前就应开始,在软件从概念到实现的过程中继续进行,当软件工程过程最后结束时才终止
软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对人员(People)、产品(Product)、过程(Process)和项目(Project)进行分析和管理的活动。
软件项目管理的根本目的是为了让软件项目尤其是大型项目的整个软件生命周期(从分析、设计、编码到测试、维护全过程)都能在管理者的控制之下,以预定成本按期,按质的完成软件交付用户使用。而研究软件项目管理为了从已有的成功或失败的案例中总结出能够指导今后开发的通用原则,方法,同时避免前人的失误。
软件项目管理的内容主要包括如下几个方面:人员的组织与管理,软件度量,软件项目计划,风险管理,软件质量保证,软件过程能力评估,软件配置管理等。这几个方面都是贯穿、交织于整个软件开发过程中的,其中人员的组织与管理把注意力集中在项目组人员的构成、优化;软件度量把关注用量化的方法评测软件开发中的费用、生产率、进度和产品质量等要素是否符合期望值,包括过程度量和产品度量两个方面;软件项目计划主要包括工作量、成本、开发时间的估计,并根据估计值制定和调整项目组的工作;风险管理预测未来可能出现的各种危害到软件产品质量的潜在因素并由此采取措施进行预防;质量保证是保证产品和服务充分满足消费者要求的质量而进行的有计划,有组织的活动;软件过程能力评估是对软件开发能力的高低进行衡量;软件配置管理针对开发过程中人员、工具的配置、使用提出管理策略。
(三)CMM CMM是是一种用于评价软件承包能力并帮助其改善软件质量的方法,侧重于软件开发过程的管理及工程能力的提高与评估。CMM分为五个等级:一级为初始级,二级为可重复级,三级为已定义级,四级为已管理级,五级为优化级。除了第1级外,其他每一级由几个关键过程方面组成。每一个关键过程方面都由上述5种公共特性予以表征。CMM给每个关键过程了一些具体目标。按每个公共特性归类的关键惯例是按该关键过程的具体目标选择和确定的。如果恰当地处理了某个关键过程涉及的全部关键惯例,这个关键过程的各项目标就达到了,也就表明该关键过程实现了。这种成熟度分级的优点在于,这些级别明确而清楚地反映了过程改进活动的轻重缓急和先后顺序。
(四)SPP SPP模型将项目管理、项目研发、机构支撑所包含的工作划分为相对独立的三类过程,各个过程域之间的关系直观明了。这样,机构领导、项目经理、开发人员、测试人员、质量保证人员、外包与采购管理人员等人根据SPP模型,很容易知道自己“应该在什么时候、按照什么规范做什么事情”。所以SPP模型有助于使机构内的各个职能单位有条不紊地开展工作。SPP模型的三类过程贯穿了产品的整个生命周期,19个最常见的过程域都合理地安排在产品生命周期中的某些阶段。用户可以根据自己产品的特征,适当地裁剪或扩充SPP的过程域,很容易制定出最适合于本产品的过程模型。
在读了软件工程以后,我觉得我前期不认真看书真的是错误的做法,经过这次对软件工程的阅读,我觉得受益匪浅,非常干些老师的教导,我觉得我对软件工程的认识还远远不够,在以后的日子里,我仍然需要努力学习,做到更深入的学习,提高解决问题的能力。