`

《面向对象程序构造》的中文摘要

阅读更多

object oriented software construction的作者是Eiffel的创造者Bertrand Meyer,这本书是当前关于向对象程序设计最全的,被称为OO设计圣经,可惜该书没有中文版,俺买了一本,花了一天看了一半,作了一些读书笔记,现在写在Blog上,有益于大家参照

面向对象程序构造

第一章    软件质量

1、  软件质量可以分为:外在质量和内在质量

外在质量主要是指用户如何看待和使用一个软件,包括易用性、效率等

内存质量则指软件的结构对于开发人员的感觉。

外在质量是一个软件的根本,它是一个软件是否有价值的根本衡量标准。

 

 

个人观点:

u       虽然外在质量是衡量一个软件价值的根本标准,但是对于一个中大型软件,没有内在的质量,根本就无法保证外在质量。对于小软件,可能内在质量不能决定外在质量,对中大型软件,必须先保证内在质量。

 

 

2、  软件外在质量的组成内容

²        正确性

没有正确性,表示软件不能完成用户所期望的事情,软件就没有存在的价值和必要性。因此正确性是第一位的。

“分层”是一个比较好的模式,可以通过它来保证软件的正确性,保证每一层和层之间逻辑关系的正确性,这样可以保证软件的正确性。就好像“操作系统编译器--代码类库”就是最基本的层结构,如果每一层都正确,则开发出来的软件就可以执行正确的功能。

 

 

个人观点:

u       分层容易模块化,是一种类似AOP的分析方法

u       容易定位和修改错误,因为每层负责的内容不一样,因此出现的错误也很容易定位

u       因为每一层的功能不一样,所以接口必须明确,对于通过规范明确描述的接口,很容易替换一个层。

 

 

²        容错性(鲁棒性)

当不在系统可以预测的错误发生时,系统必须保证正确性。

 

 

个人观点:

u       因为错误在软件使用中会发生,而且软件自身也一定存在BUG,个人觉得“宁愿崩溃,也不要继续执行,因为崩溃的系统不再继续运行,不会犯逻辑错误,错误数据比较容易恢复,但是如果犯错的系统犯了逻辑错误,数据就很难恢复”。

 

 

²        扩展性

传统软件设计时,认为在开始设计时能通过调研确定所有需求,所以在变化发生时难以应对。

两个原则

u       设计尽量简单一些

u       功能分解而非集中

 

 

个人观点:

u       设计的简单度如何控制。

 

 

²        复用性

个人观点:

u       用的人越多,潜在的问题被发现的机会就越大。

u       复用的粒度如何控制,业务级,模块级、代码级等。

 

 

²        兼容性

基本内容:

u       标准化文件格式

u       标准化数据结构

u       标准化用户接口

 

 

个人观点:

u       XML是否可以完成以上三者的标准化。

 

 

²        效率

过早的优化可能会产生问题,事实上大部分时间不需要优化,可以参照下面的数据--《软件维护费用比例》。

 

 

个人观点:

u       先使系统模块化,容易进行模块化

u       只有在集成测试时发现效率问题,才进行优化工作。

       

²        易用性

你我都不是用户,不能从自己的角度出发来揣测。

 

 

个人观点:

u       如果自己没有把握做好内容的话,干脆模仿别人,如菜单风格,快捷键等,模仿一些类似的软件。

 

 

²        功能性

u       不能因为添加新功能,而影响了软件的一致性,特别是产品,无论在功能上有什么改变,也不应该引起用户在操作上的大幅改变。

u       决不能只关注新功能而忽略其它方面的质量。

 

 

²        最后期限

 

 

²        验证性

 

 

²        完整性

保证数据的安全和完整,不能被无关人员访问。

²        恢复性

个人观点:

u       软件一定会有问题,但问题的解决时间,数据恢复速度和完整性都表示了一个软件的质量。

 

 

²        文档

1.         外部文档----------à给用户

2.         内部文档----------à给开发者

3.         模块接口文档----à给开发者

个人观点:

u       23都是内部文档,3有可能公布给第三方。但2的目的是了解整个系统的结构及相关模块,而3是模块的详细信息。

 

 

3、  权衡(妥协TradeOff

前面所提到的因素,在软件开发中相互影响,但鱼与熊掌无法兼得,所以开发人员必须做出权衡,将注意力集中在最几个因素,但“正确性”是不可以妥协的。

 

 

软件质量因素中最重要的四个:

u       正确性

u       容错性

u       扩展性

u       复用性

 

 

软件维护费用比例

1)        用户需求变更        41.8%

2)        数据格式变更        17.6%

3)        紧急修复               12.4%

4)        定期修复               9%

5)        硬件变更               6.2%

6)        文档                      5.5%

7)        效率改善               4%

8)        其它                      3.4%

个人观点:

u       1257应该都归入“需求变更”

u       34应该归入“BUG修复或功能改善”

u       好的扩展性减少“需求变更”的代价

u       复用度高减少“BUG修复”成本。

 

 

4、  本章要点

软件工程的目的就是为了建立好的软件。

质量并非由一个因素决定,而是多个因素

评测软件外在质量和内在质量时必须分开,因为二者的评价者不一样,前者是用户,后者是开发人员

外在质量决定软件质量,但必须通过好的软件内在质量来通到好的外在质量

 

 

第二章    面向对象标准

一、方法与语言

1.         面向对象并非单独存在,它贯穿于软件开发周期,从分析到设计。

 

 

个人观点:

u       无论OOA还是OODOOP都表明一点,如果使用面向对象技术,面向对象就应该从头到尾

 

 

2.         断言

<fo>

分享到:
评论

相关推荐

    c++面向对象程序设计第三版谭浩强教学大纲.pdf

    本资源摘要信息涵盖了C++面向对象程序设计的基本概念、数据存储、程序设计初步、函数、数组、指针、用户自定义数据类型、类和对象的程序设计等方面的知识点。 第一章 C++初步知识 * C++语言的历史背景和特点 * C++...

    一种面向对象程序自动化方法的研究

     一种面向对象程序自动化方法的研究*全炳哲*金淳兆**玄顺姬*(吉林大学计算机系长春130023)**(吉林工业大学计算机系长春130025)摘要构造性类型理论可作为研究程序自动化的理论基础....

    C++面向对象程序设计编程题.pdf

    本资源摘要信息涵盖了六个C++编程题,涉及面向对象程序设计、数据类型、运算符、控制结构、函数和数组等多个知识点。 1. 判断三角形类型和计算面积: 在这个编程题中,我们学习了如何使用C++语言判断三角形的类型...

    面向对象程序设计C++期中、期末试卷

    C++面向对象程序设计期中、期末试卷摘要 本摘要信息涵盖C++面向对象程序设计的多个知识点,包括变量声明、指针操作、函数调用、类和对象、继承、多态、运算符重载等。 1. 变量声明和初始化 变量声明可以使用关键字...

    Delphi下面向对象程序设计方法的实现

    ### Delphi下面向对象程序设计方法的实现 #### 摘要 Delphi作为一种全面支持面向对象编程的语言,在程序设计中引入了一系列核心概念,包括类、对象、封装、继承、多态性和抽象性。本文旨在深入探讨Delphi如何支持...

    C++面向对象程序设计模拟试题一.pdf

    本资源摘要信息涵盖了C++面向对象程序设计的多个方面,包括虚函数、继承、多态性、类模板、运算符重载、静态成员变量、 Copy构造函数等重要概念。 1. 虚函数(Virtual Function):虚函数是C++中的一种特殊函数,...

    面向对象程序设计C++复习题.pdf

    本资源摘要信息涵盖了面向对象程序设计的基础知识点,包括类和对象、继承、多态、运算符重载、构造函数、析构函数、友元函数等。 一、类和对象 * 类是一种类型,它封装了数据和操作(问题4)。 * 对象是类的实例...

    2023年面向对象程序设计基础A.doc

    本资源摘要信息涵盖面向对象程序设计基础A的主要知识点,包括函数、变量、作用域、内联函数、虚函数、多态、this指针、类和对象等概念。 一、函数 * 函数名属于用户标记符,其起名规则与变量相同 * 形参只能是变量...

    浙江大学面向对象程序设计OOP.pdf

    本资源摘要信息涵盖了面向对象程序设计的基本概念和技术,包括匿名对象、内联函数、静态成员、常量指针、动态内存分配、拷贝构造函数、运算符重载、友元函数、自动类型转换、继承与多态等。 匿名对象和内联函数 在...

    java2面向对象程序设计期末复习题(含答案)

    本资源摘要信息将对 Java2 面向对象程序设计期末复习题进行详细解析,从选择题到填空题,涵盖了 Java 面向对象程序设计的多个方面。 一、选择题解析 1. 形参的说法中,正确的说法是可以没有形参。因此,选项 C 是...

    面向对象设计之3_基于UML的图书管理系统的分析与设计说明.pdf

    面向对象设计是一种程序设计方法,强调使用对象、类、继承、封装、消息等基本概念来进行程序设计。它从现实世界中客观存在的事物出发,构造软件系统,并在系统构造中尽可能运用人类的自然思维方式。 面向对象设计的...

    JAVA面向对象程序设计练习题库

    本资源摘要信息涵盖了 JAVA 面向对象程序设计的基本概念、JAVA 语言基础、面向对象的概念和 JAVA 实现等方面的知识点。 在 JAVA 中,JDK 中的 Java 运行工具包括 javac、java、javam 等,其中 javac 是 Java 编译器...

    java面向对象测试题含答案.docx

    本资源摘要信息涵盖了 Java 面向对象编程的基础知识点,包括类和对象之间的关系、类的声明、方法的声明和使用、构造方法、面向对象编程的基本概念等。 1. 类和对象之间的关系:类和对象之间存在抽象和具体的关系,...

    (完整版)C面向对象程序设计试题集.doc

    本资源摘要信息涵盖了C++面向对象程序设计的多个方面,包括类、对象、继承、多态、运算符重载、访问权限、构造函数、析构函数、静态成员变量等。 1. 类和对象:类是对具有共同属性和行为的一类事物的抽象描述,共同...

    C++面向对象试题

    C++面向对象试题是面向对象编程的重要组成部分,本资源摘要信息涵盖了四个试题,分别涉及到重载构造函数、析构函数、静态对象构造函数和对象指针的使用方法。 一、重载构造函数 在C++中,构造函数是特殊的成员函数...

    华东理工大学面向对象程序设计C++(新)作业及期末复习题.docx

    本资源摘要信息涵盖了面向对象程序设计C++的多个方面,包括类和对象、继承、多态、重载、运算符重载、友元函数、静态成员、构造函数、析构函数、模板编程等。 一、类和对象 * 类是对象的蓝图,描述对象的状态和...

    22春天津大学《面向对象程序设计》在线作业二.docx

    本资源摘要信息涵盖了面向对象程序设计的在线作业二,共20道题,涵盖了面向对象程序设计的基本概念、类和对象、构造函数和析构函数、成员函数、继承、运算符重载、文件输入/输出等方面的知识点。 第1题:构造函数和...

    《面向对象程序设计JAVA语言程序设计》期末复习试题及部分答案.pdf

    本资源摘要信息涵盖了 JAVA 语言程序设计的多个方面,包括面向对象程序设计的基本概念、Java 语言的基本语法、对象继承、多态性、封装性、抽象类和接口、异常处理、迭代器、线程等。 1. 在 Java 语言中,运算符重载...

    c++面向对象程序设计试题和答案经典题目.doc

    本资源摘要信息涵盖了 C++ 面向对象程序设计的多个方面,包括类和对象、继承、多态性、运算符重载、构造函数、析构函数、友元函数等,能够帮助读者更好地理解和掌握 C++ 面向对象程序设计的知识点。

Global site tag (gtag.js) - Google Analytics