第二章:软件开发过程及其组织
- 做好软件的关键:
关键在于两个转换没有顺利地通过:首先是从用于的理解到程序员的理解,其次是从程序员的理解到程序的实现 - 大型软件开发中的困难表现在哪些方面:
1) 一致性的保持成为十分困难的问题
2) 测试的困难大大增加:黑箱检验方法:这种方法只能证明程序有错误而不能证明程序没错。
3) 共同工作进度难以控制:单个程序员常常低估计工作难度而拖延进度
4) 文档与代码的协调十分困难
5) 版本更新带来的困难 -
软件开发方法的发展
Pa43图作为用户:承担的工作为四项:提出需求,验收,使用,要求修改。
项目负责人(架构师):他承担着分析需求;想程序员分配任务;验收程序员的工作成果——代码与文档;对整个软件进行联调,想用户交付西永;接收与分析用户的修改要求,向程序员布置修改任务,验收修改成果并向用户提交新的版本或修改的结果。
程序员:编写程序、文档,调试自己编码的程序,向项目负责人提交工作从成果。 - 软件开发的方法:
1) 结构化程序设计方法:
E.Yourdon,把程序的结构分解成三种基本模块:处理单元,循环机制,二分决策机制,有效避免水波效应,关键在于怎么保证模块结构良好
结构良好的软件满足的条件:
a) 模块的功能在逻辑上进可能地单一化,明确化,
b) 最好做到一一对应,即每一个模块实现一项明确任务,反之每一项任务仅由一个模块来完成
c) 模块之间的联系及互相影响金库能地少
d) 应当尽量避免逻辑耦合,仅限于数据耦合
e) 模块的规模应当足够小
实施结构化程序的基本思想:
a) 限制甚至不用GOTO语句,绝对禁止查阅模块边界的GOTO语句
b) 子程序尽可能做到只有一个入口和一个出口
c) 程序风格应尽量明确、清晰、
d) 在程序编写的同时完成有关的文档编撰 不要拖延时间,结构化程序设计的方法主要为程序员服务的
2) 软件工程方法:
软件工程思想:由于软件危机的发生,人们认识到,把软件的质量寄托于各个程序员的技能与认真负责是不牢靠的,危险的,不现实的。
要想大幅度地,从根本上提高软件开发的效率和质量,就应当吸取人们在各种传统产业中的成功经验,从组织和管理的角度加强力量,使软件生产从程序员的个人劳动提高成为有组织的,可控制的工程,这就产生了软件工程。
那么怎样做才算成为工程了呢/em>
首先,多年实践的基础上,对于这项工作的步骤做出了严格的规定,;
其次顺序绝对不能颠倒,每个阶段都有各自的明确的任务;
另外,在质量、表达方式等方面要有统一的,被人们共同遵守的标准;
作为有关各方沟通与交流的手段,使参加工作的不同职务,不同角色的人们成为一个整体,共同完成一项大的工程任务。
过程:
第一阶段:需求分析
第二阶段:分析与设计阶段
第三阶段:编程阶段
第四阶段:测试阶段
第五阶段:使用及维护阶段
3) 面向对象的程序设计方法:
面向对象的程序设计OOP 是试图解决软件危机的一种尝试,随着C++,Smalltalk等面向对象的语言的普及,这种方法得到了广泛的传播
面向对象的程序设计的基本思想归纳为四点:
a) 客观世界的任何试图都是对象,他们都有一些静态属性,也都有一些相关的操作。作为一个整体,对象对外不必公开的这些属性和操作这就是封装性
b) 对象之间的抽象和具体,群体和个体,整体与部分等几种关系
c) 抽象的、较大的对象所鱼油的性质——静态属性 动态属性 自然地成为他的子类的性质,不必交易说明或者规定——遗传性
d) 对象之间可以互送消息(消息就是参数)
4) 即插即用的程序设计方法的基本思想:
a) 这是在面向对象的程序设计方法的基础上提出来的 来处理大型软件的开发工作
b) 一部分人专门生产软件组件,
c) 而另一部分人构造整个软件的结构并且把软件组件插入这个结构
实现不简单的原因:
a) 标准化困难
b) 软件不见复杂,没有同意标准
c) 对于各种对象的定义,是在难以定出标准
d) 软件不见的提供方式也有问题
e) 硬件和操作系统的关系问题
5) 面向开源软件的程序设计方法:
在一些应用面广,流程比较清晰,比较规范的应用领域:例如 站的设计确实可以从开源代码中找到比较实用的、略加修改就可以使用的代码。这无疑是可以节省人力物力的。
这里起决定作用的是两个方面的因素;一方面是对于应用领域的充分了解,这是我们判断能能否利用某开源软件的主要依据;另外一方面是开源软件的质量,包括其文档和代码的规范程度。 - 软件开发过程的管理:
项目管理的要素是:进度、质量、费用、资源利用。核心问题是质量 - 好软件的标准:
1) 正确地事项所要求的功能,准确地给出预定的输出结果
2) 用户界面友好,符合实际用户的使用习惯于知识能力
3) 具有足够的速度,能在符合用户要求的时间限度内,给出所要求的处理结果
4) 具有足够的可靠性,能够在各种干扰下保持正常的工作
5) 程序易读,结构良好,文档齐全,从而保证系统易于修改 - 好的程序员的标准
1) 具有程序设计所需要的基本知识与技能
2) 对本项目所在的领域有较深入的了解,从而能够准确地理解用户的信息需求
3) 对于软件开发的技术环境比较熟悉,包括硬件设备,软件环境 络环境。特别是对于所用的语言,应当有足够的。实际运用的经验
以上基本保证程序员单独地顺利地完成软件开发任务 - 好的项目组成员标准
1) 保证严格地在本模块范围内操作,决不使用可能干扰其他模块命令或函数。
2) 严格按总体上机的要求和理解去传递参数值,决不能随意修改内容或含义
3) 在对公用的文件或数据进行存取时,必须完全地准确地按统一规定的格式去操作,决不能擅自改变
4) 在使用标识符时,应按照统一的原则,金狼使用易于看出逻辑含义的名称。特别是涉及公用数据及参数的时候
5) 严格按照统一的要求编写文档,在内容、格式、表达方式、符 使用上遵循项目组的统一规定
6) 尽量保持程序风格的一致,如注释行的安排,行首空格的使用
7) 另外必须具有高度的祖师纪律性和团队精神
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!