《软件开发工具》(第二章)

第二章:软件开发过程及其组织

  1. 做好软件的关键:
    关键在于两个转换没有顺利地通过:首先是从用于的理解到程序员的理解,其次是从程序员的理解到程序的实现
  2. 大型软件开发中的困难表现在哪些方面:
    1) 一致性的保持成为十分困难的问题
    2) 测试的困难大大增加:黑箱检验方法:这种方法只能证明程序有错误而不能证明程序没错。
    3) 共同工作进度难以控制:单个程序员常常低估计工作难度而拖延进度
    4) 文档与代码的协调十分困难
    5) 版本更新带来的困难
  3. 软件开发方法的发展
    Pa43图

    作为用户:承担的工作为四项:提出需求,验收,使用,要求修改。
    项目负责人(架构师):他承担着分析需求;想程序员分配任务;验收程序员的工作成果——代码与文档;对整个软件进行联调,想用户交付西永;接收与分析用户的修改要求,向程序员布置修改任务,验收修改成果并向用户提交新的版本或修改的结果。
    程序员:编写程序、文档,调试自己编码的程序,向项目负责人提交工作从成果。

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

你可能感兴趣的:(#,------自考历程)