手机上最重要的软件是什么手机win7自带杀毒软件在哪的软件

《人月神话》中Brooks一直非常强调“概念完整性”对于系统的重要性。十年前看这本书的时候总是觉得不懂,是一种说不清,朦朦胧胧的感觉。
【转载自】
概念的完整性,是指针对于一个领域,不仅了解该领域的所有对象,并且了解所有对象之间的关系。比如,小学数学中的四则运算。所有的对象就是指有理数,所有的关系就是由加减乘除四种运算而能够产生另外一个有理数。如果对这样的计算完全了解的话,那么使用这样的领域来解决问题就不成问题。
概念的完整性在一本20年了还是非常深刻的软件工程书中被重点提出。这本书叫做《人月神话》。作者通过自己的经验及大量的数据而找到软件开发出现问题的主要原因——概念不完整。
概念不完整,就在开始注定一个软件项目要失败了。就本人的经验来看,很多项目都因为没有对问题了解得足够细致,然后就进行了软件开发,结果所写的代码不能实际解决问题,于是又改代码,并且是不断地去改代码,期望通过改代码来达到解决问题的目的。
其实,问题的根本在于,概念不完整,换言之,就是,始终都没有搞明白问题域有那些对象,各个对象之间是什么样的联系。能够考虑这样的问题的人,一般都是对完整的概念有着强烈的要求并且在这方面具备相当经验的人。写代码的人很难考虑到所写的这一部分代码是否真的解决了问题。在被要求改写代码的时候,只是大概了解别人要改一个需求。
但是,需求从来就不需要改,需要改需求,只说明一点——没有真正搞清楚对象及对象之间的联系。从而没有办法了解问题。在没有真正了解问题的时候,只能被动地等待问题的出现,然后去改代码,以头痛医头,脚痛医脚的方式去解决问题。
而概念的完整性,是建立在已经完全了解领域的对象及对象之间的关联。这种完全了解,并不是感性地了解,而是理性地了解。如,在小学数学这个领域,加法与乘法具有交换律。即,
a + b = b + a
那么在考虑加法与乘法的时候,可以只考虑将小的数放在前面,大的数放在后面这样的情形。从而可以得到简化的加法与乘法口诀。即,只要知道 2+3=5 就可以知道 3+2 一定等于 5。
这样的例子是为了说明,在了解关系的时候,要上升到理性认识,而不是停留在表象上。
又如,考虑社交网站的例子。表象上来看,社交网站要记录每个人的兴趣爱好,职业,曾经就读的学校等。这就导致需要建立一个用户表,建立一个爱好表,职业表,学校表:
而这样的关联完全可以抽象成:
User &--& User_Object &--& Object
社交网站所需要记录的是人与物的关系,及人与人的关系。一个人喜欢一个物(爱好),做一个物的事(职业),读书于一个物(学校)。以上的抽象,就可以将人与物的关系及时间概念完整地表达出来。
也就是说,概念的完整性,并不是将所有的东西都知道就可以了,还需要真正达到一定的理性认识。达到一定的抽象才行。
软件是一个修改起来代价相对较小的东西,比起造一辆车,一个软件做得再差,也不会造成巨大的现实世界的变化,它最多改变的只是硬盘中某一个区域的磁性。而造一辆车子,需要现实世界中很多物质发生变化才可以做成。从而,这推动了人不把问题想清楚的惰性。一个软件不再依赖于设计人员有着完整的概念,而依赖于开发人员不断地去改。
因而,概念的完整性不仅仅因为要做到概念的完整性不容易,同时因为软件失败的代价很小,更因为根本就没有认识到概念的完整性的意义,从而在软件项目中被忽略了。其结果就是,花费大量时间做着重复的事情,改着冗余复杂的代码。这就是为什么《人月神话》中重点提出:因为没有概念的完整性,从而造成大多数项目失败。
保证概念的完整性,一方面需要设计人员具备良好的经验。同时,不要尝试着去将所有人的意见都融入其中。
如,一个软件,要考虑的是大多数人的使用场景,或者重要人物的使用场景。对于个别人物或者次要的使用者,可以少考虑或者不考虑。本人在多个项目需求讨论中都会遇到这样的情况:某个人提到要一个功能,其理由是:我就是喜欢这样的功能。这样的“我”往往是代表着极少数使用者。
而作为一个要求概念完整的人,如果这样的功能影响概念的完整性,就需要果断放弃。而不能牵就于极个别的“我”。
在《人月神话》中,提到解决概念完整性的方法——外科手术团队式开发方法。在这样的团队中,外科医生(首席程序员)一个人来决定一个软件要做成什么样子,并且去写主要的代码。
也就是说,为了保证概念的统一性,需要有一个人或者一个团队(解决巨大问题的时候需要一个团队)来决定什么东西做,什么东西不做。而不是去牵就所有人的要求。这个人或者团队是要有经验的。
在制造一批汽车或者制造一栋楼房之前,设计人员都会做好详细完整的设计。之后再进行实施。一批汽车或者一栋楼房,如果没有造好,会造成很大的损失(这里的损失不是算钱,而是计算对现实世界的改变有效性)。
本人所遇到做得好的软件,其基本流程是:原型→确认原型→开发→测试。原型与原型的确认,就是在实施之前想把概念了解得更加完整,而不是在实施之后不断地去更改。
本文介绍了软件开发失败的主要原因——没有完整的概念。并且很多项目都还在不断地因为这样的原因继续失败。在考虑一个领域的概念完整性的时候,会因为各种原因而考虑不全,但努力方面是明确的——搞清楚完整的概念。
阅读(...) 评论()手机里为什么尽量不要安装那些有特殊权限要求的软件 | 水景一页
Haoxian Zeng's personal website.
您在这里:
手机里为什么尽量不要安装那些有特殊权限要求的软件
智能手机在成为我们贴身小伙伴的同时也正越来越成为身边的不定时炸弹。它会透露主人的一切信息,甚至是主人自己都不会注意到的信息,给那些怀揣恶意,或者没有恶意却被有恶意的第三方偷偷利用的软件开发者。但是只要用它就没有绝对的安全,有的只能是尽量去防范。
最常见的敏感权限,比如:
读取通讯录:它实际上包含了手机主人的所有社会关系,有了这个关系网,舟楫主人的一切基本上无所遁形。同时,它还包含了联系人的一些个人信息,比如职位、生日、住址等。恶意第三方也许就可以通过你知道你的某位联系人的信息,又通过这个信息伤害/损害该联系人。你可能不知道,这联系人也不知道。但是不知道不代表了解情况后没有良心上的煎熬。
读取通话状态:软件会知道你什么时间、什么地点(如果配合定位权限的话)、给什么号码打了电话。配合前一个权限,软件就知道这个号码是谁的,跟你什么关系。
读取短信息:如果你不在乎让别人知道你的短信内容,那么读就读吧 :D
…… 其实还有很多其它的,但是都不如上面第一条伤害面积大,因为第一条里面包含了很多别人的信息。如果手机主人关心在乎自己的朋友,就不应该让那样的事情有可能发生。
而情况会变得更严重就在于,不同的软件可能会需要不同的权限,用户不会觉得有什么问题。“它只知道一点点”。事实是,不同的软件可能用了某个相同的数据供应商的技术,而这些权限收取的信息都被这个隐藏在后面的数据供应商聚集到了一起。甚至,这几个不同的软件背后有个相同的老板。你怎么知道呢?
所以在这种事情上,不管怎么小心都不为过!
怎么去小心?其实也很简单:凡是碰到需要敏感权限的软件,尽最大可能不要使用,连试都不要试(因为它只要运行一次就知道一切了)。
这就有两个困境需要用户自己去把握,因为我们都不想因为对于隐私的担忧而放弃使用智能手机:
手机系统制造商至少会知道这些信息,比如 Apple、Google、Microsoft;
实在离不开的软件,比如 QQ、微信(这两个我一直不愿意装在手机上,可是到最后也还是没有抵挡住),可是我们至少可以做到不跟这些软件共享自己的通讯录(现在QQ、微信都可以设置为不让它们读取通讯录了,至于它们会不会遵守这样的限制就管不了那么多了,毕竟已经给了它们相应的权限了)。
安卓上的 Google 基础应用的权限要求
看看安卓上这个基本的 Google 服务的权限要求,是不是觉得除非不用 Android 不然就无可避免?当然这并不是只有 Google 才这样,只举这个例子是因为我没有 iPhone 而已。而下面那个测试就用的是 iPhone 手机。
我不是个隐私安全的专家,连熟悉都谈不上,只是混得久了知道了一点这方面的信息。刚好又在网上看到国内某数据供应商在背后收集用户资料并上传到自己的服务器的新闻,才想着需要给周围的朋友提个醒。
这是 V2EX 上的:
嗯 … 虽然增加了它的曝光率还是说一下比较好 :-(
聚合数据()的 SDK 启动时会要求读取通讯录的权限,然后加密发回到他们的服务器上。
通讯录数据内容并未做任何的脱敏处理,更加过分的是,特么的一个字段都没拉下啊 …
姓名、昵称、地址、E-mail、手机号、组织等均被上传了
而 solidot 上的也很直接:
上传通讯录这种事儿在中国好像挺常见的,不过聚合数据这种上传方式也是有点太过分了。从解密后的请求看,收集的数据不仅包括用户的 IMEI、地理坐标、运营商、手机型号和版本等基础数据,还包含了用户的整个通讯录,通讯录信息内包括姓名、昵称、公司、电话、E-mail、住址备注等字段,并未做任何脱敏处理。
这个数据供应商并不直接提供软件给用户,但是它可以提供火车票、天气等信息给软件开发者使用。虽然并不是所有使用该数据的软件开发者都会内嵌该供应商的 SDK(一种方便软件开发者使用它们的数据进行开发的工具),用的人应该还是有的吧。可能你自己都能开发一个软件提供火车票查询,自己觉得不会有安全问题啊,自己开发的怎么会有安全问题呢。但是你用了这家公司的 SDK,它们的 SDK 就像潜入你的软件内部的间谍,通过你的软件就把隐私信息攫取到了。
我也只能说到这个地步了,剩下的不妨发挥自己的想象力。你觉得还有哪些安全隐患呢?在这个方面,基本上也是“只有想不到的,没有做不到的”。
所以,怎么小心都不为过,能不用的尽量别用。
本文发表于。永久链接:<>。转载请保留此信息及相应链接。
引用通告:
引用通告:
引用通告:
订阅 & 关注
近期评论发表在《》从论坛里了解到,这个实现是由 NetworkManager 决定的。Ubuntu 应该也是跟我这里一样的情况 [...]发表在《》这种默认配置似乎是更方便。不过因为需要 root 权限,有时候也挺麻烦的。Yarving发表在《》棒,我看了下Ubuntu,默认就是这个配置。发表在《》谢谢博主分享,学习了很有用处发表在《》[…] qBittorrent 的。因为是 ADSL 的网络,需要设置 UPnP 来让 qBit [...]

我要回帖

更多关于 微软自带杀毒软件 的文章

 

随机推荐