[置顶] 原创:我理解的软件世界

 

                          我理解的软件世界

   我理解的软件世界就是一幅三维图如图(图一)或一幅三层结构图如图(图二): 

[置顶] 原创:我理解的软件世界_第1张图片

    图一说解:其中 X是软件生产车间,它主要是软件开发过程的管理、模式和过程建模,重的在过程。如RUP、敏捷、瀑布、边改边开发等。 Y是软件管理 部门 ,它主要是软件项目管理,重的在管理。如进度控制、质量控制和风险评估管理等。 Z是软件技术部门,它主要是软件开发技术策略和开发技术手段,注重的是基础和方法策略,如基于结构过程的软件开发,基于OO技术上的分析设计方法和原则,抑或软件开发中的设计模式,系统架构分析或者数据库领域开发中的ER图,数据挖掘算法及、DD(邻域驱动)技术等。

图二说解:其中 软件工程是由硬件工程派生出来的,它包含几个关键元素:方法 , 提供了构造软件的技术;语言 , 用以支持软件的分析、设计和实现(语言我们一般把它分离到软件基础这块);工具 , 为方法和语言提供自动化或半自动化的支持;软件工程的过程 , 是粘结剂,把方法、语言和工具结合在一起,它能使软件开发理性化和适时化。过程定义了方法使用的顺序、可交付产品(文档、报告和格式等)的要求、确保质量和修改的控制,并使软件管理人员能对它们的进展进行评价。软件工程由一系列的方法、语言、工具和过程的步骤所组成,这些步骤通常叫做软件工程模式,有的叫做软件生存期模型,也有的叫做软件开发过程。 软件基础是指计算机理论、形式语言、编译原理、数据结构算法、操作系统、人工智能等软件形成的基本理论和元素,我们也把语言也放在这一块; 软件管理是一个独立的领域,是项目管理的一个分支。

现实中我们经常遇到OOAD、SOA、设计模式、复用、重构、瀑布模式、RUP、成本计算、项目跟踪、需求分析、测试、维护等很多名词。如果你知道这两个图中的任何一个图,都可以把他们对号入座。

   在这文章我们重点是讨论软件三维图中的X域和Z域。

上面也说了X域就是软件开发过程,我们这里把整个软件分为:系统(问题)定义(强调是要做什么事情)、可行性研究、需求分析、概念设计、详细设计、编码、测试、交付、维护这九个阶段。开发过程就是对软件九阶段有针对性的组织和整合,开发过程具体的体现或表现形式就是我们通常讲RUP、瀑布等开发模式。每一种开发模式都有它的生命周期和作用域,开发模式好坏评定是根据它的造应范围而定的:如RUP就不适合做电视软件这块,因为每个客户拿到这个软件都会进行第二次开发,我们只要提供原型即可。如极限编程就不适合微软的WINDOWS类产品,因为客户要求拿来就用而且系统庞大。

Z域就是软件的开发方法和基于方法上在每个软件阶段的运用手段,我把软件基础也包含在这个域里,因为软件基础是构成它们的根本,在这里我们主要讨论方法和手段。在我们在讲方法和手段前,来表述一个观点:每个技术都有它的指道思想和原则,上面讲的开发模式、开发方法、基于方法上在每个软件阶段的运用手段都有指导思想和原则。目前我们主要的开发方法有二种:结构过程化、面向对像。因为我们是做电视软件开发的重要介绍结构化这块。基于结构化方法上在每个软件阶段的运用手段如:分析阶段有功能模式和行为模式,功能模式以数据字典展开的(如ER图、DFD图、HIPO图等),行为模式以控制流展开的(如状态迁移图等);设计阶段以信息流展开,主要有变换流和事务流。结构化开发方法的指导思想或原则是高内聚低藕合,数据字典的指导思想或原则是数据平衡也就是数据能量守恒。为了达到高内聚低藕合,我们要运用这些手段要控制好以下几个指标:层次数的深度、层次的宽度、模块的扇入和扇出、模块的控制域和作用域。

 

你可能感兴趣的:([置顶] 原创:我理解的软件世界)