显示标签为“software”的博文。显示所有博文
显示标签为“software”的博文。显示所有博文

2008年8月6日星期三

软件开发(2)

永远不要以为你知道用户想做的一切事情。
在软件开发(1)里面写了很多关于软件的编写,但是软件的开发不仅仅是在于设计,而且编写的过程也是很重要的,还有就是团队的重要性,没有一个好的团队是不能编写大型的软件的,或者是很难的。还有就是要进行调试,修改bug也很重要。
在这几方面注意,才可以开发出不错的软件。
好好学懂一门编程语言,尽可能的去精通它,现在就要确定自己的目标,那样就更容易前进了,还有就是多交流,那样学习的更快。
还有就是不能急于开发而忽略很多细节,尤其是我们现在学习开发的初级阶段。
原来软件的一些小bug也许就会导致很多人丧失生命,其实很多时候是把我们人类变得更加的不可思议了,所以自己编写自己的软件的时候一定要好好的编写,不要马虎,好好的调试,把文档写好,写详细。我们的生活中有很多我们看不到的软件在运行着,所以软件开发这是一条不错的道路。
程序一般是编写,编译和运行。但是细节问题有很多,今天就简单的介绍一些,而不涉及过多的细节问题。
a.out的意思是assembler output,即汇编输出。
系统为正常使用提供的程序,包括用于程序开发的工具,都可以在目录/usr/bin中找到,系统管理员可以为某个特定的主机或本地网络添加的程序通常可在目录/usr/local/bin或/opt中找到。
*头文件*
用C语言及其他的程序设计语言进行程序设计时,我们要用头文件来提供对常量的定义和对系统及库函数的调用的声明。对C语言来说,这些头文件几乎总是在/usr/include目录及其子目录下。那些依赖于特定的Linux版本的头文件通常可在目录/usr/include/sys或/usr/include/linux中找到。调用C语言编译器时,我们可以使用-I标志来包含保存在子目录或者非标准位置中的include文件。用grep命令搜索包含某些特定定义和函数原型的头文件是很方便的。
*库文件*
库是一组预先编译好的函数的集合,这些函数都是按照可重用的原则编写的。他们通常由一组相互关联的函数组成并执行某项常见的任务。标准系统库文件一般存储在/lib和/usr/lib目录中。.a代表的是静态函数库。.so代表的是共享库。静态库,也称作归档文件(archive),按照惯例它们的文件名都以.a结尾。用ar程序和gcc -c命令对函数分别进行编译。静态库的一个缺点是当我们同时运行许多个应用程序并且它们都使用来自同一个函数库的函数时,就会在内存中有同一函数的多份拷贝,在程序文件自身中也有多份同样的拷贝。这将消耗大量宝贵的内存和磁盘空间。程序使用共享库时,它本身不再包含函数代码,而是引用运行时间访问的共享代码。当编译好的程序被装载到内存中执行时,函数引用被解析并产生对共享库的调用,如果有闭源共享才被加载到内存中。

2008年8月3日星期日

软件开发(1)

关于软件开发,尽管这俩年来,一直在作关于软件开发有关的事情,但是没有一个让我很满意的。有一个是很不错的,但是我参与的太少,其实相当于没有参与。而后的一直,不是很好。有很多原因,但是我感觉最重要的原因是我们没有坚持下去,还有就是没有团队很好的合作,因为没有一个好的项目主管,大家想怎么干,就怎么干的。而且我感觉我的编程水平很差,其实我不喜欢编程,一点都不喜欢,但是现在不知道为什么对他还是比较感兴趣,或许是因为我有职责了,还有就是义务——我想我该回报小组了。关于以后自身的发展,我在大学里来主要是为了我学到知识,和结交好友,而不是为了以后找个好的工作,学习世界为什么会是这样,学理论,让我明白自然里面的一些现象,让我学会更好的方式来思考。但是以后还是要为生活的呀!工作是必然的选择一个比较好的工作,为了以后自己生活的更好,所以还是要考虑一下将如何更好的发展呢?我应该学一些实用的知识,当然比别人要强,想进好的公司,那就必须比别人更加的勤奋了。
踏踏实实的学,今天这朋友对我说。
我一定要带领大家把这个项目作好,我知道自己的水平,所以要多请教别人,和多和别人沟通,多编写自己的代码,学会更好的编程。
关于软件的开发,这才是这篇文章的主题:
就怎么干的。而且我感觉我的编程水平很差,其实我不喜欢编程,一点都不喜欢,但是现在不知道为什么对他还是比较感兴趣,或许是因为我有职责了,还有就是义务——我想我该回报小组了。关于以后自身的发展,我在大学里来主要是为了我学到知识,和结交好友,而不是为了以后找个好的工作,学习世界为什么会是这样,学理论,让我明白自然里面的一些现象,让我学会更好的方式来思考。但是以后还是要为生活的呀!工作是必然的选择一个比较好的工作,为了以后自己生活的更好,所以还是要考虑一下将如何更好的发展呢?我应该学一些实用的知识,当然比别人要强,想进好的公司,那就必须比别人更加的勤奋了。
踏踏实实的学,今天这朋友对我说。
我一定要带领大家把这个项目作好,我知道自己的水平,所以要多请教别人,和多和别人沟通,多编写自己的代码,学会更好的编程。
关于软件的开发,这才是这篇文章的主题:
就怎么干的。而且我感觉我的编程水平很差,其实我不喜欢编程,一点都不喜欢,但是现在不知道为什么对他还是比较感兴趣,或许是因为我有职责了,还有就是义务——我想我该回报小组了。关于以后自身的发展,我在大学里来主要是为了我学到知识,和结交好友,而不是为了以后找个好的工作,学习世界为什么会是这样,学理论,让我明白自然里面的一些现象,让我学会更好的方式来思考。但是以后还是要为生活的呀!工作是必然的选择一个比较好的工作,为了以后自己生活的更好,所以还是要考虑一下将如何更好的发展呢?我应该学一些实用的知识,当然比别人要强,想进好的公司,那就必须比别人更加的勤奋了。
踏踏实实的学,今天这朋友对我说。
我一定要带领大家把这个项目作好,我知道自己的水平,所以要多请教别人,和多和别人沟通,多编写自己的代码,学会更好的编程。
关于软件的开发,这才是这篇文章的主题:
最近看了,一本书《软件创新之路》原名是《THE INMATES ARERUNNING THE ASYLUM》作者的网站是www.cooper.com总结如下
一,计算机正在“入侵”我们的生活,而且将会有越来越多的人使用他,其实是使用他里面的软件来帮助我们来用硬件的智慧,因为一般人是不够聪明的,所以聪明人就会帮助他们就开发了软件,但是聪明人开发的软件并一定适合我们每一个人,而且他们聪明,还有比他们更聪明的人,所以我们在不断的使用着软件不论你是聪明还是一般人。我们要和电脑要进行交互,也就是说是人和机器进行交互。所以我们离不开软件了,但是如何使得软件更适合人类用呢??这就是软件设计的事情了。
二,我们这些年轻的小伙子,正在精力充沛的学习软件设计和开发,如果学习的方向就不对,以后开发的软件就更加的晦涩了,让人更加的难用了,所以要学好它!至于我们如何学好呢?现在只是学习最基本的知识,并且熟练地把握它们的用法,还是认识考虑软件的正真的用途呢?我想我应该采用的是后者。所以现在,我带领一些人编写自己的软件,并且让我们这些开发软件本身的人用,体验自己的软件用处,和以后设计要更加的人性话更符合客户的要求。
社会的现实总是有英雄豪杰,就有残兵败将;有亿万富翁,就有失业贫民;公司也是如此,成功者少,失败者多;软件则是得心应手的少,晦涩难用的多。
三,谈一谈专业的:
软件设计应分为俩部分:编码设计与交互设计。
社会在不断地发展,让我们的思想与行动都跟上时代的步伐吧!
人们是作信息技术的奴隶,还是成为信息技术的主人。“很多人不能很好的利用身边的资源”
你可以把所有的商人分为俩大类:一类将会控制高技术,一类将会很快关门歇业。
满意的软件是围绕用户而创建的,并能提供自然的,非常好的,强有力的经验。而大多数软件却是围绕程序员而建造的,他们猜测用户的需求,轻率地偏爱某些功能,并且在格式上沿用陈旧的风格。所以我们编写软件的时候要时刻地注意。
信息时代之谜,其实一也没有什么秘密,但是我们很多人没有去思考,也懒得思考,否则我们将会一直处于思考状态了,因为太多的高科技的产品在我们的身边了。很多高科技里面用到了软件,就是说软件和现在大多数的电子产品结合了,之所以是电子产品,因为他们里面有软件。也就是说很多东西里面其实是有软件的,只是有时我们没有感觉到而已。如,电子表,数码相机,汽车里面的很多仪器,银行里的取款机等等,还有很多的东西,我们的很多东西,都要让那些机器聪明一些,那就要程序员把自己的一部分的智慧变成代码而后让机器执行,由用户操作。当然程序员不是最聪明的不可能把所以的智慧给软件,更软件更没有感情和思维,他不会考虑的,只是执行任务。所以自然会有很多人不会使用软件或者不能很好的使用,尽管程序员费尽心思。而且软件本身有时也有很多的缺点,让我们操作起来将会更加的吃力甚至导致我们生活不适,更有甚是使得我们产生重大失误。
当你照镜子时,就容易看到自己的美貌而没有注意到瘤痣。
要想成为一个好的程序员,必须与电脑的本性和需要产生共鸣!
解决问题的关键是交互设计。
哎!每天还是胡思乱想啊,太懒了,你想一想还有多少人处于贫困之中呢?
认识的摩擦,奇迹并不在于熊跳得好坏,而在于熊一直在跳。
软件创新的全部进程都包括设计,包括从选择编程语言到确定产品包装颜色的各种方法。在这个漫长的进程所包括的方方面面中,没有哪个方面比编程本身需要更多的设计。程序员要在这个进程的每个阶段作出设计决定。程序员必须决定每一个过程与其他过程彼此将如何调用,信息和状态将如何共享,如何存储,如何改变,它的有效性将如何保证。所有这些决定,以及成千上万的这类决定,全是由设计决定的,每一步的成功都取决于程序员用经验和裁决承诺的能力。
软件开发遵循帕金森定律(Parkinson's Law):工作将膨胀填满分配给它的时间。
写坏的软件比写软件更昂贵。
在信息时代,最昂贵的有用之物不是建构什么东西的代价,而是你没有建构什么而失掉的机会。建构的失败意味着你没有作成功。
最昂贵的程序是它只是运行一次,最廉价的程序是它可以运行上百亿次。软件经济学就呈现不可思议的翻转,其中最廉价程序要支配那个最昂贵的程序的编写,而最昂贵程序也要支配那个最廉价的编写。好的程序员要花大量的时间和精力进行设置,以便编写一个大的程序。在编写一系列产品代码之前,仅仅设置编程环境就要花好几天时间。必须选择合适的库,必须定义数据,必须对存储和检索子系统进行分析,定义,编码和测试。
在长期运行中,没有适当控制的软件编写要比快艇比赛与吸毒嗜好都更加昂贵。
浏览器的工作方式,它不会把人们领向讨厌的安装过程。WEB的组织就像某个集权制的团体,通过中央电脑命令来控制无效能的桌面机器的行动。
微软,微软只作很少设计或者没有设计,它的产品在使用户感到受愚弄方面是出名的。它们在给予人们良好的价值与健壮的功能集方面也是出名的。几乎没有其他公司能像微软这样提供全面的解决方案。没有多少用户对微软是忠诚的。微软有成熟的技术和极好的商务,这使它在短期内弥补了缺乏设计的不足。几乎所有高科技产品的可期望平均水平仍然处于微软的标准,尽管他们的工作人员投入了全部智慧,诚心诚意,以及艰苦努力!
把自己擅长的方面做到最好,尽可能的多占领这个市场。
软件更像一座桥而不是一座大厦,尽管它是在高科技的微处理器中运行的,但它的使用与操作也必须由普通的人类来完成。电脑:惊人的快,无差错,理性的,无感情的,不会推理,顺序的,可预测,无道德,愚蠢。人:惊人的慢,爱出错,感性的,有感情的,会推理,随机的,不可预测,有道德,聪明。
程序员——逻辑人——总是往左边走;用户们——普通人——总是往右边走。
好的程序员知道怎么去写程序,而一个优秀的程序员知道怎么去重复使用程序。
不应按照问题生成时的同一思维方式来解决该问题。
编写软件一定要选择好一个角色,而且是有名字的角色。为一个人而设计。而且是用户角色不是买方角色。如果你打算设计基于软件的,使用户满意的产品,你必须相对精确地了解那些用户是谁,这就是角色所扮演的人物。下一步是尽可能地设计出功能强大的产品,为此,你需要更多地了解用户的目标。
人们还不能跟上20世纪的技术的发展。
让软件变得彬彬有礼。软件要为效能而设计,为人而设计。
把使任务具体化而采用的工具称为“脚本提纲scenario“。较少的代码意味着复杂性减少,差错bug不多,非法交互机会极少,以及容易维护。
一定要把设计放到首位,那样你的工作将会很顺利,1,设计;2,编写程序;3,调试错误&&用户测试;4,运行。
与微软竞争,你要把握他的弱点,他的产品开发过程中,编程在交互设计之前。
关于编写的进度,要有一个长远的观点,要有责任感,要保证足够的时间,要把握控制权。
前期制作投入的是时间,节约的是金钱,提高的是获得最后成功的可能性。
设计师们需要以充分的完整性和详尽的细节编写,整理,支持,概述他们的方案,这样程序员才可能信任这些方案,并且真正地以其为蓝图去编写代码。必须充分描述各种情况下的细节问题,好让开发者对方案的生命力有充分的信心,相信它能经得起实际应用的考验。写好的设计书,就像一个战斗计划。每一个人都知道自己的那一部分,知道什么是关键的问题。所有的人可以同步,协调地运作,来构造一个以同一特定用户——角色为目标的产品。
商业格言“没有落到纸上的东西都是不存在的”。
随着网络的发展,低技术市场的大批用户,会跳到便于使用的产品这里来。这些人由于网络可以简单地做简单的事而被吸引。同样的这些人,也会被设计优良的产品所吸引,由于这些产品可以简单地作一些复杂的事情。

2008年7月21日星期一

写软件需求分析

尽管看了小组里面很多人的软件需求分析,但是我还是感觉稀里糊涂的,我也就只好照猫画虎了,写我的软件需求分析了,但是自我感觉很不好,我们也讨论了可是最后还是不了了之了,而且现在想干的人也没有几个了。我想我会完成的,不论它的好坏,而且我要去吸引更多的人参与。但是,今天突然看到一本软件需求,这不就是我要的吗?
书名是《Software Requirements》 作者是Karl E.Wiegers
看这本书,而后再一步一步开始了写自己项目的需求分析!我写完后将上传到
http://repo.or.cz/w/gocoso.git感兴趣的人看看。先看书这中的重点内容:
IEEE软件工程标准词汇表(1997年)中定义需求为:
(1)用户解决问题或达到目标所需的条件或权能(Capability)
(2)系统或系统部件要满足合同,标准,规范,或其他正式规定文档所需具有的条件或权能。
(3)一种反映上面(1)或(2)所描述的条件或权能的文档说明。
软件需求包括:业务需求,用户需求和功能需求——也包括非功能需求。
(software requirements specification,SRS)
应该避免,(1)无足够的用户参与 (2)用户的需求不断增加 (3)模棱俩可的需求 (4)不必要的特性
(5)过于精简的规格说明书 (6)忽略了用户的分类
必须解决需求中的所有的TBD项。
需求规格说明的特点:(1)完整性 (2)一致性 (3)可修改性 (4)可跟踪性
需求开发可进一步分为:问题获取(elicitation),分析(analysis),编写规格说明(specification)和验证(verification)。
需求分析(requirement analysis)包括提炼,分析和仔细审查已收集到的需求,以确保所以的风险承担者都明白其含义并找出其中的错误,遗漏或其它不足的地方。
由于自己的软件开发经验不是很足,所以我感觉有时还要根据模板来开发,以不断提高自己的水平。
(一个模板)需求过程改进的活动计划
项目:<项目名称>
目标:<成功执行这份计划后希望达到的一些目标。说明业务方面的目标,而不是过程变更方面的。>
成功度量:<描述怎样确定过程变更是否达到了预期要求。>
组织受影响的范围:<说明在本计划中所描述的过程变更带来影响的广度>
人员和风险承担者:<明确谁实施该计划,每个人的角色,及投入时间承诺。>
跟踪和报告过程:<说明怎样跟踪计划中的活动条目进展情况,以及报告其状况结果等>
依赖,风险和限制:<明确对计划成功有帮助或有阻碍的各种外部因素。>
估计所有活动的完成日期:<希望该计划什么时候完成>
活动条目:<为每个活动计划写了3-10个活动条目>

一日是你的用户终身是你的用户。

软件需求规格说明模板
1.引言 1.1目的 1.2文档约定 1.3预期的读者和阅读建议 1.4产品的范围 1.5参考文献
2.综合描述 2.1产品的前景 2.2产品的功能 2.3用户类和特征 2.4运行环境 2.5设计和实现上的限制
2.6假设和依赖
3.外部接口 3.1用户界面 3.2硬件接口 3.3软件接口 3.4通讯接口
4.系统特征 4.1说明和优先级 4.2激励/响应序列 4.3功能需求
5.其它非功能需求 5.1性能需求 5.2安全设施需求 5.3安全性需求 5.4软件质量属性 5.5业务规则
5.6用户文档
6.其他需求
附录A:词汇表 附录B:分析模型 附录C:待确定的问题的列表

根据上面的学习完成了自己软件需求分析,我上传到了http://repo.or.cz/w/gocoso.git
哪位感兴趣,可以去那里下载。

time