• 建模 - [风头浪尖]

    2007-11-30

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://arkshow.blogbus.com/logs/11319756.html

    程序:可在目标计算机上执行的一组指令集合。
    理解:编写程序的目标是让代码在计算机上正确运行,程序员只要知道输入、输出和算法即可,与此无关的信息都不重要。

    软件:软件用于对信息进行处理。由实现指定功能和要求的程序 描述其如何使用和操作的文档构成。

    总结:“编程”仅仅是软件开发过程中的一个“局部任务”,软件开发不仅要产生正确的“程序”,还要包括其他为满足用户要求而必须进行的工作。
    “用户满意”是软件项目成功的重要标志。

    软件危机——“不是每个软件项目都能做到让用户满意”

    1)  造成软件危机的原因

    l  早期软件开发的随意性

    l  缺少有效的工程管理和团队协调机制

    l  硬件发展和计算机普及造成的冲击

    l  软件规模和复杂度提高造成的影响

    2)  软件危机的主要表现

    l  软件开发周期、成本的严重超过预算;

    l  软件质量难于保证,用户不满意

    l  缺乏有效的文档说明,导致软件无法维护和完成适应性改变

    l  生产效率远远低于计算机普及的速度

    l  ……

    软件工程

    3)  软件危机产生——必须借鉴传统工程学科取得的成功经验,采用工程化的原则和系统的、成熟的方法指导和规划软件开发的全过程——软件工程学(软件工程是研究关于软件生产的各个方面的工程学科)

    4)  软件工程的研究内容

    软件开发技术:软件过程,软件开发方法,软件工具和软件工程环境

    软件工程管理:管理学、经济学、心理学等相关内容。

    软件工程三要素:过程,方法,工具。

    l  软件过程定义了工程中的主要活动和实施步骤(活动关系)

    l  软件开发方法为软件过程活动的有效完成提供技术上的指导,当前主要应用的软件开发方法有:结构化开发方法、面向对象开发方法。

    l  软件工具提供了软件工程的实践(支撑)环境,确保软件过程和开发方法的有效应用

    软件过程

    1)  什么是软件过程

    l  软件过程是一个为建造高质量软件所需要完成的任务的框架——R.Pressman

    l  软件过程是产生软件产品的互相连贯的一组活动极其结果——I.Sommerville

    l  理解:软件过程的定义回答了如下问题

    a)         开发软件都需要干什么工作——过程活动集合

    b)        必须先干什么,接下来再干什么,最后干什么——活动之间的关系

    2)  软件过程的意义

    l  对开发软件的完整任务进行结构化分解,各个阶段的工作目标更突出,降低问题复杂度,也便于对软件项目的估算、度量、管理。

    l  成熟稳定的开发过程将保证开发人员的经验积累和传递,提高开发生产率

    3)  软件过程的度量——评估软件过程的标准化和规范化程度CMM ( Capability Maturity Model  能力成熟度模型) SEI(美国国防部软件工程研究所)定义的一种方法,对竞标国防部项目的软件公司的能力进行评估。 CMM模型将软件过程成熟度分为5个等级,分别是:

    初始级:无规范过程

    可重复级:有基本的成本和进度管理规程,可以取得与以往类似项目的成功

    已定义级:有标准的软件过程,并已经标准化、文档化

    已管理级:有对过程和产品质量的详细度量,并可应用于过程控制

    优化级:有基于客观度量的过程改进策略

    软件过程模型 

    过程模型从一个特定角度简化描述软件过程

    l  工作流——活动次序

    l  数据流——产品阶段形态的变换

    l  角色/动作模型——参与者的角色和任务

     

     


     

    典型的通用过程模型

    瀑布模型

    1)特点:

    l  借鉴传统工程过程,具有广泛影响

    l  按线性关系组织过程活动,强调活动执行次序的单向性和活动间的相邻依赖性

    l  焦点是文档和交付产品,每个活动在结束点(里程碑)必须交付规定的文档和阶段产品;并完成质量审查才能激活下一个活动。

    l  瀑布模型体现了推迟实现的观点,即概念设计应该先于系统实现完成。

    2)问题——过于理想化

    l  没有体现软件开发过程固有的迭代和反复

    l  误差扩大

    l  需求变更的冲击

    l  开发进度的问题

    3)  带有原型的瀑布模型

    l  软件原型是对目标软件系统的部分实现

    l  原型根据其用途可分为抛弃型和演化型两种

    l  在瀑布模型的中前期活动中引入原型技术,可以在很大程度上稳定需求,减少变化的冲击

      4)  V模型

    l  体现了软件开发过程中固有的反复和回溯

    l  V模型的焦点是基于正确性的活动关系。它直观的表达了瀑布模型隐藏的过程反复。 

    进化式开发模型(增量模型,螺旋模型)

    增量模型

    l  增量模型描述了增量式开发过程的活动组织。即先完成一个系统子集的开发,再按同样的开发步骤增加功能 (系统子集),如此递增下去直至满足全部系统需求。

    l  确定增量开发的优先级是增量模型在需求分析阶段的主要任务。

    l  增量模型关注的焦点是系统的发布时间 螺旋模型1)螺旋模型最初由Boehm1988)提出,螺旋模型的焦点是——风险控制。

     

     

    2)螺旋模型的每个周期完成一个指定的阶段目标,在周期上分布若干关键区域

    l  目标设置:指定目标、规划可选方案

    l  风险评估和管理:预估方案,规避风险

    l  开发和验证:目标实现和验证

    l  下一阶段的规划

    3)螺旋周期的半径与该目标的风险度成反比,而与目标实现的投入成正比。  

    基于构件的软件开发模型

    1) 

     

    构件式软件开发过程包括的主要活动

    l  领域分析——分析领域通用需求

    l  应用需求分析——分析应用特定需求

    l  构件/构架生产——通用/专用构件开发

    l  构件/构架库维护

    l  系统组装——利用构件拼装目标系统

    2)  优势:复用构件提高开发效率和可靠性

    3)  根据用户需求确定“可获得的”和“待开发的”构件是需求分析阶段的主要任务。

     

    OMG.....看了一上午,还有一堆要看。。

     


    随机文章:

    Still Alive 2008-08-03
    更新日志 2007-12-12
    一起来唧歪 2007-12-07
    12.2 2007-12-02
    Good Morning 2007-11-30

    收藏到:Del.icio.us




    评论

  • 拿这个做博客内容,相当的没分量。
  • 学习软件设计?要当IT人?
    文煦回复龙舞说:
    五哥。。这是我的专业。。
    2007-12-01 21:41:15
  • 学软件的 我看不懂
  • Orz……看不懂
    文煦回复仔仔萌说:
    猪昂!没排版当然看不懂
    2007-11-30 22:43:03

发表评论

您将收到博主的回复邮件
记住我