Chinaunix首页 | 论坛 | 博客
  • 博客访问: 105295
  • 博文数量: 37
  • 博客积分: 1505
  • 博客等级: 上尉
  • 技术积分: 440
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-23 03:45
文章分类

全部博文(37)

文章存档

2011年(11)

2010年(2)

2009年(24)

我的朋友

分类: 项目管理

2009-01-31 06:44:37

1.软件工程--用工程化的原则和方法来克服软件危机
 
 
2.软件生存周期:
 
  (1)可行性分析与项目开发计划--
 
  (2)需求分析--确定系统的逻辑模型
 
  (3)概要设计--把各项功能需求转换成相应的模块以构成需要的体系结构
 
  (4)详细设计--把每个模块的功能描述转变为精确的,结构化的过程描述
 
  (5)编码--把每个模块的控制结构转换为计算机可接受的程序代码
 
  (6)测试--设计测试用例检查软件的各个组成部分
 
  (7)维护--发生在软件正式投入使用后,时间最长
 
 
3.软件生存周期模型--描述软件开发过程中各种活动如何执行的模型
 
  (1)瀑布模型--线性
 
  (2)演化模型--迭代
 
  (3)螺旋模型--每圈线性(制定计划->风险分析->实施工程->用户评估)+圈间迭代+风险分析
 
  (4)喷泉模型--适于面向对象的开发方法;迭代(迭代性)+交叉(无间隙性)
 
 
4.软件开发方法--使用早已定义好的技术集符号表示习惯来组织软件生产的过程
 
  (1)结构化方法--自顶向下,逐步求精。面向数据流。构成:结构化分析,设计,程序设计
 
  (2)面向对象开发方法--使用喷泉模型。面向对象。构成:面向对象分析,设计,实现
 
  (3)Jackson方法--JSP(Jackson Structure Programming)->系统开发方法JSD(Jackson System Development)。面向数据结构。
 
  (4)维也纳开发方法(VDM)--以指称语义为基础。基于模型的方法,将软件系统当做模型来描述,开发的每一步均给出形式化说明。
 
 
5.软件需求分析--形成完整,清晰,一致的需求说明
 
  (1)需求的分类:<1> 功能需求--软件该有的功能
 
                  <2> 非功能需求--软件该有的属性或品质(可靠性,性能,容错性,扩展性)
            
                  <3> 设计约束--对解决方案的约束说明
 
  (2)需求分析的任务:
    
     <1> 确定软件系统的综和要求--系统的功能,性能,运行环境,界面要求;安全性,保密性,可靠性,异常处理方面的要求;将来可能的扩充,修改的要求
 
     <2> 分析软件系统的数据要求--用实体-关系模型来描述;包括基本数据元素,数据元素之间的逻辑关系,数据量,峰值等
 
     <3> 导出系统的逻辑模型--结构化分析方法:数据流图描述;OO分析方法:类模型描述
 
     <4> 可开发一个原型系统
 
  (3)需求分析的方法--系统分析及表示软件的数据域和功能域
 
                     大数系统分析方法由数据驱动
 
                     数据域三属性:数据流, 数据内容, 数据结构
 
  (4)需求工程--包括需求开发和需求管理
     
         <1> 需求开发--需求捕获, 需求分析, 编写规格说明书, 需求验证
 
         <2> 需求管理--定义需求基线, 处理需求变更, 需求跟踪
 
 
6.软件开发项目管理--使对软件开发项目的各方面心中有数
 
  “各方面”如: 开发成本; 开发风险; 开发进度; 开发人员等
 
  (1)成本估算:
  
     方法--自顶向下, 自底向上, 差别估算, 专家估算, 类推估算, 算是估算
 
     模型--PutnamCOCOMO
 
         <1> Putnam--动态多变量模型
 
         <2> COCOMO--结构性成本模型;最精确,最易于使用的成本估算模型之一
 
             a.基本COCOMO--静态单变量模型; 对整个软件系统
 
             b.中级COCOMO--静态多变量模型; 将整个软件系统模型分为系统部分两层次;考虑程序大小软件开发成本驱动属性
 
             c.详细COCOMO--分为系统子系统模块三层次;考虑中级考虑的因素以及软件需求,设计等每一步的成本驱动属性
 
  (2)风险分析:
 
      <1> 风险预测(又称风险估算)--评估风险概率+风险后果:
 
            a.建立一个尺度来反映风险发生的概率
 
            b.描述风险后果
 
            c.估计风险对项目和产品的影响
 
            d.标注风险预测的整体精确度
 
      <2> 风险评估--建立三元组:(ri,li,xi);ri:风险;li:概率;xi:影响
 
                   风险参照水准:成本, 进度, 性能
 
                   评估四步骤:a.定义项目的风险参考水平值
 
                             b.建立每个三元组与每个参考水平值间的关系
 
                             c.预测一组临界点已定义项目终止区域(可能为一条曲线)
 
                             d.预测什么样的风险组合会影响参考水平值
 
      <3> 风险识别--系统地确定对项目的威胁
 
                    方法是建立:风险条目检查表;表项可含:
 
           产品规模, 商业影响, 客户特性, 过程定义, 开发环境, 构建的技术, 人员数目及经验
 
      <4> 风险控制--辅助项目组建立处理风险的策略
 
                   一个有效的策略必须考虑:风险避免, 风险监控, 风险管理及意外事件计划
 
  (3)进度管理--合理安排进度以合理分配资源及如期完成软件项目
 
      <1> 进度安排的方式--系统最终交付日期已确定 OR 只确定了大致的年限
 
      <2> 进度安排的常用图形描述方法
 
            a.甘特(Gantt)图--横坐标表时间;纵坐标表任务;水平线段表某一人物的进度安排
 
                             优点--描述每个任务的开始结束时间;描述任务之间的并行性
 
                             缺点--不能反映任务间的依赖关系关键所在及计划中有潜力的部分
 
           b.计划评审技术PERT(Program Evaluation & Review Technique)图:
 
                PERT图让我想到了数据结构中的图一章的AOE网及关键路径的概念
 
                PERT图是一个有向图
 
                箭头--任务;其上标注任务持续时间松弛时间              
 
                节点--事件(仅表示某个时间点,不消耗资源和时间;仅当流入该节点的任务都结束时才出现);其内标注事件号,最早时刻(在此时刻之前,从该事件出发的任务不可能开始),最迟时刻(从该事件出发的任务必须在该时刻之前开始,否则整个工程不能如期完成)
 
                松弛时间为0的任务们构成完成整个工程的关键路径
 
                优点--给出了每个任务的开始结束时间,完成所需时间,关系(先后依赖 & 关键路径)
 
                缺点--不能反映任务之间的并行性
 
  (4)人员管理--可以按软件项目对软件人员分组:需求分析组,设计组,编码组,测试组,维护组等
 
              程序设计小组可有多种:
 
                   <1> 主程序员组--一主程序员,一后备程序员,一资料员和若干程序员
 
                   <2> 无主程序员组--成员之间相互平等
 
                   <3> 层次式程序员组--一组长-->若干高级程序员-->若干程序员
 
                  
7.软件配置管理--降低变更所产生的混乱。
 
    简称SCM(Software Configure Management),主要目标:
 
          标识变更,控制变更,确保变更正确地实现,报告有关变更
 
  (1)基线--明确划分开发各阶段的特定点,以便于检查与肯定阶段成果,可作为错误的检查点
 
  (2)软件配置项--SCI(Software Configure Item),是配置管理的基本单位,可形成基线,如下
 
           系统规格说明书
 
           软件项目实施计划
 
           软件需求规格说明书
 
           设计规格说明书(数据,体系结构,模块,接口设计;对象描述)
 
           源代码清单
 
           测试计划和过程,测试用例和测试结果记录
 
           操作和安装手册
 
           可执行程序(可执行程序模块,连接模块)--源代码
 
           数据库描述(模式和文件结果,初始内容)--数据
 
           用户手册
 
           维护文档(软件问题报告,维护请求,工程变更次序)
 
           软件工程标准
 
           项目开发小结
      
        *由上可知,基线(OR SCI)可以是源代码,文档,数据:)
 
  (3)版本控制
 
         软件配置项是动态的,随着软件生存期及软件版本的翻新而扩充
 
         软件的每个版本都是SCI(源代码,文档,数据)的汇集
 
         表达系统不同版本可用演变图,图中各节点为一个完整的软件版本
 
  (4)变更控制--一项最总要的软件配置任务,需借助配置数据库和基线的概念
 
         配置数据库可分三类:<1> 开发库--专供开发人员使用,修改频繁
 
                          <2> 受控库--也称软件配置库,存放项目开发过程中的阶段产品
 
                          <3> 产品库--存放最终软件产品
 
 
8.软件工具--辅助软件开发,运行,维护,管理,支持等的软件。
 
  软件工具通常也称CASE--Computer Aided Software Engineering计算机辅助软件工程工具
 
  按软件过程的活动来分类:
  (1)软件开发工具--对应软件开发过程
 
        <1> 需求分析工具
 
          生成完整,清晰,一致的功能规范(Functional Specification)
 
          分为:基于自然语言或图形描述的工具和基于形式化需求定义语言的工具
 
        <2> 设计工具
 
          生成相应的设计规范(Design Specification)
 
          分为:a.概要设计工具--设计目标软件的体系结构,控制结构,数据结构
 
               b.详细设计工具--设计模块的算法和内部实现细节
 
               c.基于形式化描述的设计工具
 
               d.OO分析与设计工具
 
        <3> 编码与排错工具
 
  (2)软件维护工具--对应软件(代码 & 文档)维护过程
 
       <1> 版本控制工具--存储,更新,恢复,管理一个软件得多个版本
 
       <2> 文档分析工具--分析文档以得到软件维护活动所需的维护信息(如修改某文档后的影响范围)
 
       <3> 开发信息库工具--维护软件开发项目的开发信息。包括对象,模块等。
 
       <4> 逆向工程工具--具体到抽象,力图恢复源程序的设计信息以使软件更易理解。分静态动态两种
 
       <5> 再工程工具--支持构成一个功能,性能更完善的软件系统。集中在代码重构程序结构重构数据结构重构等方面
 
  (3)软件管理和支持工具
 
       <1> 项目管理工具
 
       <2> 配置管理工具
 
       <3> 软件评价工具
 
     
 
9.软件开发环境--支持软件开发的软件系统,由软件工具集和环境集成机制构成。
 
 
10.软件过程管理--确保良好的软件过程,以确保良好的软件质量
 
  软件过程评估的意义
 
  软件能力成熟度模型(CMM简介)
 
  统一过程(UP)
 
  极限编程(XP)
 
 
11.软件质量管理与质量保证--有计划有组织地开发,以生成高质软件。
 
  软件质量特性
 
  软件质量保证
 
  软件复杂性
 
  软件评审
 
  软件容错技术
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
阅读(1050) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~