组建开发小组公开信、开发方法的思考

    昨天下午从乡下回来,开始思考组建开发小组的公开信。昨晚把公开信提交到了各大java论坛。并向注册本站的网友发了邮件。因为没有写本站的邮件系统,只得用手工的方式把邮件地址添到邮件的暗送栏里,一共有100多个,我在中间插了两个我自己的邮件。但是,今天我却没有收到我发给自己的邮件。所以,肯定有很大一部分网友没有收到我的公开信。我搞不懂了,难道邮件里的暗送等栏目还会有邮件地址数目的限制吗?

    今天看了软件工程的1-4章,其中认真看了第3章:软件需求分析。这章重点讲了结构化分析方法。我对照现在运行着的网站程序,对这个程序的分层DFD(数据流)图有了一个模糊的印象。自己给出了这个程序的顶层DFD图:只有1个外部实体:就是“用户”,用户与这个学习日记系统进行交互。但是,这个顶层DFD图是不是过于简单了,简单得我有点不相信。在0层DFD图中,把学习日记系统分为了:用户注册、用户登录、发帖、改帖、查询等几个加工。

    第四章讲了软件概要设计,我着重看了第四节:面向数据流的设计方法。与第3章讲了结构化分析方法结合,构成了完整的结构化分析与设计技术。我对照网站程序,觉得这个程序的数据流图应该是事务型的。因为Struts框架就是Servlet Controller根据接受的消息而将响应发往不同的Action的框架,这很符合事务型的数据流定义。

    至此,本站V0.9的程序的结构化开发方法基本上有了一点模糊的感觉。但是在我的感觉中,这种方法与面向对象的开发方法比较起来,缺乏一种生机勃勃的灵性,感觉有点机械化、有点死板、有点冷冰冰的剩饭的味道。如果用面向对象的方法来分析设计这个网站系统,整个感觉一下活了起来:这个系统不就是一位热心的朋友吗?在为我们人类的互相交流而辛勤的忙碌着。

    我要继续思考与探索学习日记新程序的开发方法。

   

软件工程的书终于草草的过了一遍

    今天到3个论坛上去发了讨论我这个网站程序运用面向对象技术分析、设计的问题,到现在为止,有1人给了回答。umlchina.com上我还不会发帖,不知是怎么样操作的。   

    明天陆续把小结写好,准备看第二遍。现在10:30分,该睡觉了,身体是革命的本钱!

解决:jsp页面中文显示问题

    问题:http://www.learndiary.com/disDiaryContentAction.do?goalID=267

日记标题 问题:jsp中文显示,<c:set>的值可否是对象?meta标记  作者: admin  创建时间: 2004-10-21 21:52:13 

在论坛上解决了这个问题,结果竟是如此简单:加上<%@ page pageEncoding="gb2312" %>,决定jsp页面编写时的编码。<%@ page content_type="text/html;charset=UTF-8" %>,决定jsp页面显示在客户端浏览器的编码。

    在解决这个问题的同时,我还发现了一篇至今为止我所见过的解决java中文问题最彻底的文章: 

    上篇:http://www.pconline.com.cn/pcedu/empolder/gj/java/0404/366404.html

    下篇:http://www.pconline.com.cn/pcedu/empolder/gj/java/0405/368760.html

    我还没有好好的来理解这篇文章,应该结合java的国际化方案好好的学习一下这篇文章。 

问自己:我为什么要用面向对象的方法重构本

    面向对象技术是至今为止最贴近人类思维习惯的程序设计技术。具有一系列的优点:易重用,易维护,易扩展...。在这个网站程序的编写中,我基本上是以一种搭积木的方式建起来的。没有从面向对象的整体观念出发来写这个程序。为了这个程序以后的发展,这个程序现在还处在萌芽阶段,扭转它的设计思想还不晚。

    1、这个程序有采用oop的基础:因为“万事万物皆对象”,jsp页面是对象,数据库是对象,从广义的角度来说,它们都有自己的属性、方法、状态,都会接受外界的消息页产生一定的动作。它们都可以理解为活生生的对象,尽管,jsp页面、数据库等跟书本上的对象根本就不一样,例如:传统的对象具有3大特点:封装、继承、多态,jsp页面和数据库根本就无法对号入座。但是,反过来说,jsp不也是被jsp容器编译成class后执行的吗?说明jsp也可以被当成是一个对象。

    2、这个程序采用oop有很大的难度:页面和逻辑部分是两种不同的对象,又有Struts框架套在上面,怎么样用oop来分析、来设计,怎么样用UML语言来支持这个面向对象的开发,这是一些我未曾尝试的问题,有没有一个现存的模式可供使用,这都是一个个未知数。

    3、风险与机会共存:风险是白白地浪费时间与精力,结果没有成功地实现目标;机会是可以借此学习软件工程与UML语言,就算不成功,也算曾经努力过。

    4、注意事项:最大的一条就是多查相关资料,寻找一种现存的,用于jsp+struts框架的面向对象分析、设计模式;然后就是到各论坛去向个中高手请教。

第七章 软件测试

第七章  软件测试

7、1  软件测试的目的及原则

1、目的:为了发现错误,好的测试能发现至今尚未被发现的错误,成功的测试发现了至今尚未发现的错误

2、原则:由输入和输出组成,还要选择不合理的输入,还要检查程序是否做了它不该做的事,严格执行测试计划,长期保存测试用例,错误多的程序段深入测试,程序员避免测试自己的程序

********

7、2  测试方法

1、表态测试与动态测试

  1)、表态测试:人工检测,计算机辅助静态分析

  2)、动态测试:黑盒和白盒

2、黑盒测试法和白盒测试法

  1)黑盒法:发现:不正确或漏了的功能,接口上能否正确地接受输入数据和产生正确的输出信息,访问外部信息是否有错,性能是否满足要求

  2)白盒法:对程序中尽可能多的逻辑路径进行测试

7、3  测试用例的设计(简单应用)

第六章 软件编码

第六章  软件编码

6、1  程序设计语言的特性及选择

1、程序设计语言特性

  1)、心理特性:歧义性,简洁性,局部性和顺序性,传统性

  2)、工程特性:可移植性,开发工具的可利用性,软件的可重用性,可维护性

  3)、技术特性:

2、程序设计语言的选择

  1)、项目的应用领域:科学工程计算,数据处理与数据库应用,实时处理,系统软件,人工智能

  2)、软件的开发方法

  3)、软件执行的环境

  4)、算法和数据结构的复杂性

  5)、软件开发人员的知识

**********

6、2  程序设计风格

1、源程序文档化:标识符应按意取名,程序应加注释(含序言性注释和功能性注释)

2、数据说明:说明顺序应规范化,变量名按字典顺序,复杂数据结构应加注释

3、语句构造:简单直接

4、输入和输出:格式尽量简单,输入数据合法性,用数据或文件结束标志来控制输入数据,交互式输入时提供可用的选择和边界值,输入格式的一致性,输出数据表格化和图形化

5、效率:是一个性能要求,首先保证程序正确和清晰,提高程序效率的根本途径在于选择良好的设计方法和良好的数据数据结构与算法而不是靠编程时对程序语句做调整(这句话要牢记!)

CONCAT,LENGTH函数

CONCAT(str1,str2)--连接str1和str2;

LENGTH(str)--str的长度(一个汉字的长度是2,一个字符的长度是1)

update article set articlename=CONCAT('cs:',articlename) where LENGTH(articleName)<5 AND userName='xxxxx';