当前位置:首页 > 软件开发
  • 贝壳满满系统开发

    贝壳满满系统开发,广州联系【佘生130现4800城7062威电同号】贝壳满满软件开发,贝壳满满源码开发,贝壳满满平台开发,贝壳满满app开发,贝壳满满系统多少钱,贝壳满满软件价格,贝壳满满APP功能,贝壳满满平台介绍,贝壳满满系统搭建 核心提示:文章资料收集于互联网,仅作为开发需求者的模式案例参考作用,与平台没有任何关系,如需定制系统请详询,玩家勿扰! 随着专业化细分,组织越来越依赖于外部的供应商资源,现在的整车厂如果离开配套供方的协助,无法生产出了一台完整的汽车。从这个意义上来说,我们的生产车间就是我们的一个供应商,而我们的这些供应商也可以把它理解成我们的生产车间。如果某个供方出了交期问题或质量问题,就意味着我们的整个供应链都会受到影响,随着专业化分工的加深,我们的供应链管理会越来越复杂,越来越需要专业化的供应链管理团队。 一、贝壳满满是什么? 1、贝壳满满,国内首个综合社交广告分销平台,一款集内容变现+社交分销的新型轻创业创新平台,以输出内容为核心,三级分销方式裂变,让广大用户随时随地,无时无刻都能赚钱。 2、贝壳满满深度挖掘S2B2C的模式优势,通过技术平权,让所有人可以用平等,0成本的方式享受技术带来的红利。 3、高额的广告分成,丰富的网赚任务,以及完善的服务支持体系让更多用户能实现0成本创业,是目前集合网赚项目*多,体系*完善,团队****高的综合性创业平台。 二、贝壳满满定位: 1、贝壳满满,首个综合社交广告分销平台是社交介媒和互联网广告的完美融洽 2、贝壳满满运行模式是通过技术平权,通过外环聚合,定位,甄选优质广告主内容。对用户没有任何门槛要求,就可以参与互联网广告的利润分成。 三、平台特色: 1、国内首个综合内容*全的社交广告分销平台,一款集内容变现+社交分销的新型轻创业平台。涵盖互联网各种各样广告形式,吃喝玩乐购等赚钱方式。让广大用户无时无刻都能轻松赚钱。 2、商品免费拿,这是裂变发展用户的***。 3、平台各种福利,拿高额***只需看看视频。 4、海量任务让你赚钱停不下来。 5、感恩***奖:上级***扣除10%手续费奖励给上下50位用户。 在5G技术成熟之前,智慧场馆一般采用Wi-Fi和4G全覆盖解决方案,按照场馆所容纳观众人数上限设计,确保网络通畅。4G网络快慢主动权掌握于中移动或者电信联通这些运营商的基站建设,如果场馆方面没有能力说服运营商为其建设足够多的固定小基站,那么大型赛事来临时,是需要运营商派驻应急通讯车作为基站的。然而,部分体育场馆的设计也无法让应急通讯车进入到场馆内,因此也无法满足场内观众的上网需求。

    时间:2020-08-04 关键词: 软件开发

  • 猫爪短视频系统开发(源代码开发)

    猫爪短视频系统开发,猫爪短视频APP开发,广州联系【佘生130现4800城7062威电同号】猫爪短视频软件开发,猫爪短视频平台开发,猫爪短视频源码开发,猫爪短视频模式系统开发,现成猫爪短视频系统,猫爪短视频系统APP简介。 Today,give a stranger one of your smiles.It might be the only sunshine he sees all day.If they throw stones at you,don’t throw back,use them to build your own foundation instead. 【核心提示:文章资料收集于互联网,仅作为开发需求者的模式案例参考作用,与平台没有任何关系,如需定制系统请详询】 猫爪短视频app介绍 猫爪短视频app是一款基于夸克区块链底层技术和通证激励机制,猫爪短视频软件结合夸克生态用户,由第三方独立开发和运营的注意力数据挖掘DAPP。 同时猫爪短视频app也是一个集碎片化娱乐、副业、创业为一体的综合服务平台。 猫爪短视频app特色 1、实时更新 实时更新热门精彩视频,精准推荐你感兴趣的,新用户直接送红包奖励。 2、金币奖励 每看一条视频都会有金币奖励。 3、丰富活动 有开宝箱、每日**等活动,让你轻松度过碎片时间。 猫爪短视频app亮点 目前分为四档藏宝图(任务): 任务周期都是初始30天,为什么说是初始,因为这里面有一个规则: 任务周期会自动的周期性变化,自开放注册的前60周,每周任务周期都会增加一天。 也就是说你越晚进场,任务的周期越长,等到60周,需要90天才能完全产出。 瓦力了解了一下,已经兑换的任务是不受这个时间周期变化影响的。 猫爪短视频app特点 勇者(10碎片兑换,奖励1点贡献值,上限16个,可挖12个碎片,实名注册会送一个) 稀有(100碎片兑换,奖励10点贡献值,上限8个,可挖125个碎片) 罕见(1000碎片兑换,奖励100点贡献值,上限4个,可挖1280个碎片) 传承(10000碎片兑换,奖励1000点贡献值,上限1个,可挖13500个碎片) 猫爪短视频app优势 1.【劲爆的活动】签到红包天天领,每天都有新惊喜 2.【观看领红包】观看有价,分享有奖,还有额外红包 3.【丰富的频道】更加贴近你的生活频道,智能推荐你感兴趣的内容 同时邀请人可以获得下级藏宝图贡献值5%的奖励,在挖宝周期结束时,该藏宝图(任务)提供的贡献值会消失(上级奖励的贡献值也会消失)

    时间:2020-08-04 关键词: 软件开发

  • 趣生活系统开发

    趣生活系统开发,广州联系【佘生130现4800城7062威电同号】趣生活模式开发,趣生活app开发,趣生活源码搭建,趣生活案例开发,趣生活开发APP 【核心提示:文章资料收集于互联网,仅作为开发需求者的模式案例参考作用,与平台没有任何关系,如需定制系统请详询】   趣生活app是一个聚\合\型\区\块\链\赚\钱\平\台。趣生活app不仅是一个生\活\广\告\信\息\聚\合、游\戏\信\息\聚\合、社\交\电\商\聚\合\以及分享平台,而且还是一个发掘社交网络潜力、巩固社交网络关、系受益社交网络价值的分布式激励平台。具有零撸起步,不伤人脉,三层关系,合法合规,广告流量,资金正向,游戏电商,广阔市场等众多特点,是个人财富的共创平台。 趣生活 软件优势 智能实时盯着市场:市场第二推,更快一步,把握投资机会。 硬币圈平台:您关注的官方货币在这里,最新的权威新闻不容错过; 快速信息:全球信息,闪电释放;快速循序渐进,了解货币圈信息; 全球货币价格:收集全球所有主要交易所,涵盖全球\货\币;了解货\币\价\格并实时交换信息。 深入的文章:独家报告,深入的挖掘以及货币圈中的高质量内容。 软件特色广州联系【佘生130现4800城7062威电同号】 [独家报告] 实时更新货币领域的最新市场趋势,使您可以随时了解市场情况 [渠道分类] 推荐,独家,官\方\等渠道上线,轻松解读老大哥的观点,一只手掌握行业趋势; [时事通讯] 快速向您提供全面,专业和准确的信息,快速了解行业变化,并帮助您及时调整决策; [个人推荐] 感兴趣的一键式订阅,拒绝长时间且同质的信息,提高阅读效率,阅读更多内容并花费更少的时间。 软件说明 星级达人: 一星达人:直推20人,大区500,奖励100币\电\动\车,分\红15% 二星达人:直推20人,大区2000,小区400,奖励1000币\越\野\车,分\红20% 三星达人:直推20人,大区8000,小区2000,奖励5000币\跑\车,分\红10% 四星达人:直推20人,大区100000,小区25000,奖励10000\币\游\轮,分\红5% 温馨提示: 1.交\易\开\放\时\间\为:早8:00-晚23:00,超出规定时间无法出售趣钻/发布买单。 2.发\布\买\单\的\趣\钻\数\量\上限为最近30天已完成订单数*5,交易成功订单为0单日上限为5。 3.无论买卖趣钻都只可同时进行1单,每天卖趣钻次数上限为3次。 4.每出售1枚趣钻需要扣除1财\富\值,财\富\值\为\0\或\不\足\将无法出售趣钻。 5.据会员等级不同交易手续费不同 随着互联网越来越广泛,很多消息也铺面而来,近期根据市场的火热度,从而进行推广的应用软件有很多,但是能炒热的APP软件也就那么几个,今天小编就和大家一起探讨一下市面上的热门软件之一,例如趣步APP这款软件,在市面上还是居高不下,人气越来越好,趣步为什么有那么多人去玩呢,他们有着什么样的地方吸引到人呢,以上就是小编所了解的一些,仅供参考,如需定制开发,系统开发

    时间:2020-08-03 关键词: 软件开发

  • 本色世界系统软件开发

    本色世界软件开发,本色世界系统开发,承接各种软件定制开发联系【佘生130威4800店7062同号】本色世界源码开发,本色世界平台开发,本色世界app开发,本色世界系统多少钱,本色世界软件价格,本色世界APP功能,本色世界平台介绍,本色世界系统搭建 核心提示:文章资料收集于互联网,仅作为开发需求者的模式案例参考作用,与平台没有任何关系,如需定制系统请详询,玩家勿扰! 一、本色世界app优势 买卖取舍,何时买何时卖对玩家有一定小考验哦。 平台可靠,已经有很多人在玩,而且了钱,大家可以放心。 简单,直接申请即可,没有限制要求,最低1元可提。 二、本色世界app特点 1、注册送金灵鼠,新人用户一经注册,就会送鼠,然后交由个人饲养长大。 2、完成各项任务,这是获得奖励的来源,拥有奖励能买饲料,以及购买更多金灵鼠。 3、售卖金灵鼠,将其养大出售,就能获得更多,然后就能申请,是不是很简单。 三、本色世界app功能 会员等级LVO注册未实名认证通过用户禁止交易 会员等级LV1注册并实名认证通过用户交易手续费50% 会员等级LV2贡献值≥100点交易手续费35% 会员等级LV3贡献值≥200点交易手续费30% 会员等级LV4贡献值≥2000点交易手续费28% 会员等级LV5贡献值≥5000点交易手续费25% 会员等级LV6贡献值≥5000点且城主前十交易手续费20% 会员等级LV7贡献值≥5000点且城主第一交易手续费15% 应当在主动推进数据安全流通方面发挥更加积极的作用。数字经济的发展历程,就是分享创新红利的历程。数字经济的创新性决定了任何反开放竞争的“作茧自缚”,虽然维系了短期的市场利益。

    时间:2020-08-03 关键词: 软件开发

  • 全球博览系统软件开发(开发系统)

    全球博览系统开发,联系广州【佘经理130-4800-7062威电同号】,全球博览模式开发,全球博览系统模式开发,全球博览系统定制,全球博览系统软件开发,全球博览系统平台开发,全球博览系统app开发 軟件開發與系統開發有什麼不同?一般來說軟件開發是根據用戶需求編寫出軟件系統,或者部分功能。比如:QQ,app,軟件後台。系統開發就是軟件開發的泛指,更加廣泛,範圍更廣,一個成熟,全面的系統。你可以這麼理解軟件開發是系統開發的具體實現。新入行同學不用糾結這個,首先熟悉下整體的一個軟件開發流程,對你有所幫助,然後再去細學總結經驗。       在互联网技术发展极度成熟的现在,在互联网的应用中电子商务平台的发展逐渐完善,发展质量和速度都在互联网技术的支持下获得提升。       全球博览模式制度详细介绍:       1.什么是GT?       GT就是阅读币,通过阅读获得的奖励,通过阅读包产出,每个等级的阅读包所产的GT数量都不同,产出的GT可以直接在平台挂卖交易,也可以复购阅包。       所有GT通过阅读产出       2.什么是GD?       GD是直推的奖励,你每直推一个人复购阅读包时奖0.8个GE,GD每天释放2%就会变成GT,GD不可以直接卖,可以购买阅读包或等释放成为GT后挂卖交易。GD可以理解为锁仓中的GT       3.什么是GDS?       GDS是全球B博览的股权,购买价值100GC以上的阅读包会按一定比例空投给你。       在以往传统的囯际贸易形式中,囯家与囯家之间经济竞争激烈,在选择合作的双方时要考虑很多问题,以求寻找更为适合的贸易对象,导致彼此贸易条件过高,为囯际贸易发展造成严重的负面影响,而移动互联网技术的出现,极大的提升了囯家之间交流的效率,合理交换条件,并且可以通过互联网技术增强自身的生产效率,筛选囯家和企业的进出口能力,更好的提升生产质量和生产效率,进而提高囯际贸易的效率。       GT怎么获得?       前期只能通过注册实名后赠送的新手阅读包产出,每天能产GT,30天到期一共产11.5个GT。如果你需要更多的GT来购买更高级的阅读包,可以到平台上去挂买单排队抢币。如果你不玩了,按同样的方式把GT卖给需要的人即可变现。全球博览       系统开发       如何升级G2?       直推10个有效会员,个人活跃度300,联盟活跃度达到20000,10个直推联盟活跃度100起,达标后,要经过平台审核。审核通过才可以享受***       阅读活跃度20000要多少人?       如果团队下面的人都是赠送的新手阅读包,新手阅读包的阅读活跃度为10,那么需要2000人。10×2000=20000       如果团队有购买低级阅读包,一个低级阅读包的活跃度为100,那么团队有200个低级阅读包就够了。       如果团队有购买中级阅读包,一个中级阅读包的阅读活跃度为1000,那么团队有20个中级阅读包       阅读活跃度不是按人头算,是按团队所持有阅读包的阅读活跃度算【阅读活跃度详见分析表】       升级G3,需直推中有3个G2       升级G4,需直推中有3个G3       升级G5,需直推中有3个G4       生产模式也由全球化生产转变为个性化生产,与传统的生产模式相比,以往的囯内廉价劳动力生产已经转变为世界大工厂的生产模式,生产效率与生产质量都得到了提高,并且在经济日趋全球化的时代背景下,在互联网技术的指导下能够使生产更加专业化,促进生产良性循环。承接各种软件定制开发联系【佘生130-4800-7062威电同号】

    时间:2020-08-03 关键词: 软件开发

  • 是德科技 5G 测试平台被 Mavenir 选中,用以加速 5G RAN 和核心网平台的软件开发

    2020年 7月24日,北京 —— 是德科技公司和业内的 4G/5G 网络端到端云原生网络软件提供商 Mavenir 宣布,Mavenir 已选中是德科技的 5G 用户设备仿真(UEE)解决方案,用以加速 5G 无线接入网(RAN)和 5G 核心网(5GC)平台的软件开发。是德科技是一家领先的技术公司,致力于帮助企业、服务提供商和政府客户加速创新,创造一个安全互联的世界。 移动行业正在迈向使用标准开放式 RAN 接口的虚拟 RAN(vRAN)架构,以期通过灵活、经济高效的方式满足由消费者和垂直行业共同推动的各种需求。在日渐壮大的软件和无线设备厂商生态系统中,Mavenir 有着举足轻重的影响力;该生态系统提供具有开放式标准接口的解决方案,以支持分解的网络架构。 是德科技副总裁兼网络接入测试事业部总经理 Giampaolo Tardioli 表示:“一个正在转型的行业需要使用灵活的工具来验证虚拟 5G 无线接入网和核心网的功能,而 Mavenir 和是德科技能够为此提供支持。是德科技的 5G UEE 平台使得 Mavenir 能够验证云原生 RAN 和 5GC 软件解决方案的端到端性能,十分有助于交付敏捷的解决方案,为致力于部署 O-RAN 一致性网络的超过 25 家通信服务提供商(CSP)提供支持。” Mavenir 采用是德科技的自动化、可扩展 5G UEE 解决方案来仿真大量用户和各种使用场景。这些解决方案支持对 O-RAN 分布式单元(O-DU)和无线单元(O-RU)进行一致性验证,确保 5G 网络要素符合 3GPP 和 O-RAN 标准组织制定的最新规范。是德科技的 UEE 解决方案通过集成的复杂信道仿真功能提供用于协议和负载测试的真实场景,使得用户能够对复杂射频环境中部署的 RAN 进行性能验证。 Mavenir 无线接入事业部总经理 Mikael Rylander 表示:“是德科技拥有尖端工具和领先的 5G 专业知识,可以全力为开发人员提供支持;这为 Mavenir 有效地验证自己的无线接入网解决方案带来了充分保障。得益于是德科技的解决方案,我们能够向电信客户群体灵活交付高品质的软件,并更好地为 OpenRAN 生态系统提供支持。”

    时间:2020-07-24 关键词: 软件开发 5G mavenir

  • 人工智能将是一批职业杀手?

    人工智能将是一批职业杀手?

    谷歌人工智能系统阿法狗(AlphaGo)已经创世纪地连续两次KO人类超一流围棋选手的杰出代表,东方智慧圣杯的守护者李世石。而AlphaGo之父,来自英国的DeepMind创始人迪米斯·哈萨比斯(Demis Hassabis),这位面相庄严被万维网之父李先生评价为最聪明人类的科技界Adele,却在人机大战落子之前就已经预见到了人类被横扫的凄惨结局,哈撒比斯甚至在人机大战前一个月的人工智能高峰会议上就没有把围棋这种纯思维游戏作为阿法狗的终极目标,指出搞定李世石后下一个目标是星际争霸这种需要手脑并用的人类游戏。 略懂围棋的IT人士都能看出,人机大战胜负已分,那只去年还会偶尔输给樊麾二段的小狗,每天的狗粮只有几块硬盘的棋谱口粮,仅仅四个月后就自学成才,成了地球上最接近围棋上帝的“圣狗”,而人类这个二郎神,在血腥烧脑的逻辑游戏中,在阿法狗面前输到只剩下了二。 最值钱的脑力职业将最先被碾压 围棋有数千万爱好者,但真正能跻身职业行列的高手,只有寥寥数百。作为“最难”的脑力游戏,围棋是脑力职业烧脑等级的标杆,正如斯诺克是最复杂的体育运动。当代围棋天才选手的节奏大概是这样的:6岁学棋,11岁冲段,18岁跻身超一流职业棋手,而AlphaGo完成这个过程,只需要18个月,我们难以想象还有什么样的行当,例如律师、医生和操盘手,能够比职业围棋更难颠覆。 但是在AI的跨越式发展面前,有一个职业比律师和医生更早感受到威胁,那就是软件开发。根据市场研究公司Evans Data的调查,接近三分之一(29.1%)的软件开发者认为人工智迟早会夺取他们的饭碗,对AI的恐惧已经超过开发平台过时(23%)和平台不够流行(14%)。 这个调查最撕裂的一组数据是,超过75%的受访开发者认为人工智能和机器人将能造福人类,但也有60%的受访者认为人工智能可能会演变成一场灾难。对人工智能的担忧绝非杞人忧天,特斯拉创始人Elon Musk在投资硅谷一家模拟人类思维的人工智能公司时曾表示投资AI的主要目的不是资本逐利,而是需要随时掌握AI的进度,因为这可能会是一场灾难。 提前到来的职业杀手 在AI等最新科技攻克癌症造福人类之前,更多人感受到的是威胁。今年1月份瑞士世界经济论坛发布的报告指出,机器学习、机器人技术、3D打印、基因技术等前沿科技未来五年将导致500万人下岗。 虽然人机大战的始作俑者——IBM公司的首席执行官罗曼提女士在去年的Gartner分析师会议上曾经为人工智能辩解称人工智能只会提升人类的技能,但是,如果医生的误诊率高达50%而人工智能的误诊率只有15%,下次您去医院还会相信人工智能只是医生的拐杖和宠物吗?在涉及身家性命和民族命运的重大问题面前,你愿意相信胜率碾压人类的机器狗还是被欲望驱动的情感动物——人类自己? 事实上在高薪脑力工作者开始颤抖之前,制造业的产业工人已经开始大量被机器人取代,而数据中心运维人员们也开始觉察到SDN等新的自动化配置技术的地震纵波。 如果说自动化、程序化的人工智能技术仅仅是对运维等重复劳动者的饭碗造成威胁,那么能够短时间通过深度学习技术自我学习超越人类冠军选手的阿法狗的横空出世让那些过去被认为无法被机器取代的“最安全”的职业,例如软件开发者、医生、律师、股票交易员也有必要重新评估人工智能对职业生涯的影响,其中大多数人在人机大战之前还没有料到这辈子就需要为这件事操心。

    时间:2020-07-14 关键词: 谷歌 软件开发 人工智能

  • NCDC MEF开发者论坛6月北京举办

    NCDC MEF开发者论坛6月北京举办

     将于2019年6月20日-21日在北京举办的NCDC网络与计算开发者大会上,MEF(城域以太网论坛)将联合大会主办方共同举办MEF开发者论坛。MEF定义了通信行业标准,把以太网(Ethernet)变成了运营商级的技术服务,将运营商级以太网市场从0变成了现在的800亿美金的总市值,这是MEF曾经做的重大贡献。现在,MEF 3.0是MEF实施过最大胆的架构,将对整个通信行业将会产生颠覆性的变化。本届NCDC大会上,MEF将与中国网络和计算开发者近距离分享MEF 3.0和LSO进展,整体介绍LSO开源项目、相关场景的实际部署案例以及MEF和相关组织(如ONAP、TMF等)在开源工作上的合作对接情况。  

    时间:2020-06-05 关键词: 以太网 软件开发 mef

  • 物联网的硬件开发和软件开发介绍

    物联网的硬件开发和软件开发介绍

    开发硬件和软件产品有一些主要差异。以下是您需要了解的内容。 作为一名专注于联网设备的创业者,我在开发和销售硬件和软件产品的复杂过程中有着丰富的学习经验。在物联网领域,这两方面的技术在今天的市场中密不可分,市场上几乎每个连网设备都有某种相应的应用程序,并通过该应用程序对设备进行监测和控制。 如果您是一个热衷于为消费市场开发连网设备的创业者,那么您也应该准备开发一个应用程序,从而使您的设备能够正常工作。这两者都有各自的挑战和优势,以下是它们在当今市场中的一些挑战: 准备好管理不同的开发周期 硬件具有更长的开发周期,生产设计的时间表比您的设备实际上市销售要早得多。然而,对于软件来说,较短的开发周期意味着产品更新必须满足不断变化的业务目标,但是,这也意味着您将有机会发布和测试针对特定产品特性的增量更新。管理这两个方面都需要所有利益相关方的清晰规划,从研发到工程再到质量保证甚至营销。 了解您的软件市场 软件市场的竞争要比硬件市场的竞争激烈得多。但是,软件是物联网设备营销的关键因素,而硬件只是体验的推动者。这需要对您的产品受众有一个清晰的了解,并且能够清楚地表达设备及其软件的价值。您在帮助他们解决问题吗?他们用您的软件做什么? 经得起未来考验的硬件设计 由于硬件和软件的开发周期不同,请确保您的硬件能够承受不断的软件更新。一个好的硬件设计必须为未来做好准备,并且应该能够通过软件升级来提供增值的用户体验。 了解每个所需的资源 硬件和软件开发都需要特定的资源,但是它们却是非常不同。例如,硬件开发将需要经验丰富的设备设计师、机械设计师,甚至低级软件工程师。制造该设备的材料采购将是关键,因为以合适的价格获得最新的部件非常重要。没有强大采购能力的公司将无法交付尖端硬件产品。 降低成本对硬件和软件的开发都很重要,尤其是在消费电子领域,产品利润率非常低。 在开始设计阶段之前,您应该问自己和开发团队一些问题。最近,随着我新公司Klikkit的推出,我开始关注这个阶段。开发物联网解决方案(和一般的消费电子产品)的关键学习是避免“爱上”自己的产品,相反,您的团队应该关注最终用户。问题应该是,“人们为什么要用这个?”换句话说,与用户采用和行为改变的成本相比,产品价值究竟有多大? 物联网市场不断变化,与软件开发相比,物联网硬件的开发周期更长。挑战在于确保您的解决方案在发布日期之前仍然具有相关性,因此,保持对价值主张的高度关注非常重要。首先开发一个最低可行的解决方案来支持这一点,然后让自己保持敏捷,并随着时间推移对软件进行持续更新改进。

    时间:2020-06-04 关键词: 物联网 软件开发 硬件开发

  • 利用Sub-1 GHz Linux Gateway软件开发套件设计楼宇安保系统

    利用Sub-1 GHz Linux Gateway软件开发套件设计楼宇安保系统

    楼宇安保系统在许多系统拓扑结构中都有应用,从简易警报系统到复杂的传感器网络,所有这些都报告给作为枢纽的主安全面板。根据其部署模式,这些系统可能是有线的,也可能是无线的;无线系统会利用不同类型的连接模式以实现特定的应用。一些应用程序(如摄像头)使用Wi-Fi®进行与云的本地连接,而某些智能应用程序(例如门锁)使用低功耗蓝牙(Bluetooth® Low Energy)连接到手机和平板电脑。基于传感器网络的安保系统,例如烟雾探测器、运动探测器、门/窗传感器、温度/湿度传感器和玻璃破碎探测器,可从Sub-1 GHz网络中受益。 Sub-1 Ghz技术在设计楼宇安保系统时具有诸多优势,如实现比2.4 Ghz技术更长的距离和更好的墙壁穿透力。这可以实现全楼宇覆盖,无需中继器,也无需复杂的多跳网络拓扑。Sub-1 Ghz的功率也极低,使远程传感器可依靠一粒纽扣电池工作10年。此优势使系统无需在天花板和墙内布线,从而使设计具有灵活性。 设计楼宇安保系统时,一个基本要点是通信必须可靠。Sub-1 Ghz系统通过利用比2.4 Ghz频段更空闲的Sub-1 GHz频段,提供了高鲁棒性。 很明显,Sub-1 Ghz在构建安保设计方面具有许多关键优势,但安保系统和传感器通常必须具有云连接或需要Wi-Fi和低功耗蓝牙(Bluetooth® Low Energy)的智能设备接口。但是,设计一个通过Sub-1 GHz星形网络发送和接收传感器数据、连接到云并提供智能设备接口的系统非常复杂。借助双频段功能以及CC1352P无线微控制器(MCU)和Sub-1GHz Linux网关解决方案的灵活无线电功能,您可轻松开发可无缝连接到智能设备和云的产品,同时仍可在更长的距离中利用Sub-1 GHz技术集成的低功率20dBm Pa的优势。 Sub-1 GHzLinux网关软件开发包可扩展到许多不同的应用程序。例如,假设要设计一个楼宇安保系统,包括覆盖整个楼宇的烟雾探测器、运动探测器、门/传感器以及玻璃破碎探测器,并且所有这些都与中央安全面板进行通信。系统设计要求消费者能够在互联网或智能设备上查看传感器数据。Sub-1 GHzLinux网关解决方案可帮助实现这一案例,同时支持快速上市,并能灵活地启用各类解决方案体系结构。 图 1:家庭安保系统示例 如图1所示,外围传感器(烟雾探测器、运动探测器、门/窗传感器和玻璃破碎探测器)都通过Sub-1 Ghz星型网络与中央安全面板通话。该安保系统充分利用了Sub-1 GHz的远距离和墙壁穿透能力,可覆盖整个楼宇。此外,您可将无法接入交流电源的传感器(如门/窗传感器)远程放置;它们可依靠一粒纽扣电池运行10年。使用CC13152P双频MCU的烟雾探测器可通过低功耗蓝牙(Bluetooth® Low Energy)连接到手机或平板电脑,并在这些智能设备上向用户发送警报。 这些警报可报告电池寿命或检测到的任何危险,而烟雾探测器则通过Sub-1 GHz网络与主安全面板通信。安全面板可从所有传感器收集数据,并使用Wi-Fi连接到云以向安保公司报告或使互联网数据可视化。用户还可通过低功耗蓝牙(Bluetooth® Low Energy)连接到面板或从云中接收更新信息来更新系统固件。面板可随后将这些更新推送到外围设备,并通过Sub-1 GHz网络更新每个节点的固件。 该楼宇安保系统示例只是德州仪器Sub-1 GHz网关解决方案支持的一个用例。网关体系结构灵活,可连接到多个云供应商,其设计也基于SimpleLink MCU平台上成熟的硬件和软件,从而缩短了产品的开发时间和上市时间。利用这一解决方案的优势,现在就开始你的设计吧。

    时间:2020-05-11 关键词: 德州仪器 传感器 软件开发 烟雾探测器 智能安保系统

  • 从全栈工程师到数据科学家,入职第一年我都做了些什么?

    从全栈工程师到数据科学家,入职第一年我都做了些什么?

    万事开头难,从一个软件开发程序员转型为数据科学家,第一年该怎么做?一位博主就记录了自己从全栈工程师转行数据科学家第一年的心路历程,包括好的方面和不好的方面,希望能帮助到同样处境的人。我觉得自己非常幸运,雇主给了我一个机会,让我从一个全栈软件开发人员转型变成数据科学家,和内部数据团队一起工作。入职一年,我很享受这份工作给我带来的全新挑战,完全不同于以前做开发。我想写这篇文章,首先是为了回顾过去一年所做的事情:我经历的改变,我做得好的地方,我可以改进的地方。第二,通过记录我曾经遇到过的问题和挑战,我希望能帮助到和我处境相似的人。在开始之前,我先介绍一下我的背景:我之前不是做软件开发的,我拥有计算机科学的硕士学位和博士学位。因此,我不算冷启动,我有工具、模型和分析方法方面的相关经验。我从事开发工作将近8年。自从我的论文发表以后,我经历了很多变动。本文将分为两部分。进展顺利的部分和进展不佳的部分。对于那些只对结果感兴趣的人,也可以拉到底直接看最后的结论。进展顺利的方面Python 和 R刚开始,我不确定在项目中该使用Python或R。所以一开始我对这两种语言均作了研究学习,并在项目中结合使用了这两种语言。R经常让我想起Matlab,两者在用来编写和执行代码的界面非常像(我尝试了R Studio和Visual Studio的R插件),同时写代码和处理数据的方法也很像。但我只在硕士论文中用了R,还在博士学位论文中用了一些。除此之外,R和其他编程语言相比(这些年来,我在软件开发中经常使用C#)就没什么共性了。R这个工具极度以数据为中心,与数据进行交互的方法也很不一样。在R里有:列表,矩阵,向量,数组和数据帧。每个都有不同的使用场景,你需要学会什么时候使用。R与C#的语法很不一样,所以刚开始学R我遇到了不小的困难。我并不是说R不好,只是我使用Matlab10年,并且作为开发我的脑子已经习惯了某种思维方式,所以比较难转变。所以我刚开始的时候觉得R很难上手。作为一名有8年C#开发经验的程序员,我觉得Python比R更容易起步。很可能是因为我的大脑已经习惯了C#的思维方式。python比R更接近于C#,所以我学Python比R快很多。在使用这两个语言时,我没觉得两者有明显区别,尤其是对于可用的库,两者在我想做的工作的实现方面有差不多的处理能力,我也会得到相同的结果。但在摸索过程中,我对两个工具分别都有些困惑。总的来说,编程编久了,Python对于我的程序员思维更友好。所以我很快放弃了学习R,转而专注Python。这有助于我更快地进步,不必再花时间阅读新语法,事情变得简单许多,我一直觉得简单才是王道。这对我应对角色的许多其他变化也是有帮助的,因此,这样做可以最大程度地减少更改。关于使用哪种以及何时使用,我敢肯定大家定对此有很多意见,但是对我来说,从开发人员过渡到数据科学家后,我发现Python变得更容易掌握和使用,尤其是在我担任新职位后想快速发展并取得成果的初期。所以与R相比,使用Python让我更快进入状态,在输出方面,我没有发现两者有任何明显区别。所以我把这个归类为进展顺利,因为我很早做出了决定,且至今没有遇到任何情况让我觉得自己选错了Python,相反我节省了不少时间,所以我能更快地开始工作。文档记录记录一切,我定义的一切是从模型超参数到从何处以及如何获得训练数据,到在整个项目中做出选择的理由。另外,以有序的逻辑方式编写文档,实现这一目标的一个秘诀是,哪怕你只是写给自己看(例如,在我的情况下,我是唯一的数据科学家),你应该想象有人会读这份文档。此外,记录时要对自己有一定的约束,不要拖拉,不要走捷径。不然等你开始写的时候,你可能已经忘记一些需要注意的细节。因此一定要及时写下来。在完成文档之前,我觉得工作就还没做完。我从一开始就遵循这种方法,我觉得至关重要。我发现一件事是,即使在一个中型企业,等到一个项目的研究成果在公司开始推广已经是一段时间以后了,利益相关方因为有其他事要忙,所以不会立刻作出回应。有时候在我完成一个项目几个月后,有人跑来问我问题,我一时想不起来,但如果我翻看我之前做的文档记录就能马上提供详尽答案。例如,有一次我与另一位经理聊起几个月前做的一个项目,我向他展示了我已经完成的工作,他问我训练集的大小是多少,以及我用来获取数据的日期区间。我并记不得那些数据,但我记得自己已经写下过,而且我也记得写在了哪里。所以我能马上把文档拿给他们看。我发现自己遇到的另一种情况是当业务优先级发生变化,你可能会需要停下手头还没完成的项目去做另一个项目。当你再回到之前开始的项目时,完整的文档可以让你从之前停下的地方继续进行下去。不顺利的一面数据存储回顾前一年,进展不顺利的一个原因是我处理数据的方式(对于数据科学家而言这非常关键)。当我没有使用数据库的经验时,我基本上复用了在博士期间使用数据的方式。使用平面文件(特别是CSV)来存储数据。我把从生产环境中提取的初始数据,清洗后的中间过程数据,分析后的数据和结果都存在了CSV里。我工作流程中的每一步骤都需要通过Python脚本读取上一步创建的文件,并创建新的文件。这种把内容存储在硬盘上,并通过Python脚本与数据交互的原始办法,很快就出现了一些问题:有时很难在大量文件中找到我要找的那个文件。即使我记录了文件的内容和位置,但有时还是很难找到我想要的确切文件,因为文件实在太多了。我似乎总是在忙着用Python把从文件中读取数据或者将数据写入文件。我写了很多文件访问的命令,但其实是在做重复劳动,写这些代码对我要做的工作并没什么帮助。想快速地将数据总结一下似乎都有点费力:读取数据,汇总统计,输出统计,查看统计结果。有些文件很大,用起来很困难(在notepad中打开10GB以上的文件很麻烦)。第一年,我花了很长时间才意识到SQL是我的解药。在从事数据科学家工作之前我使用过SQL,但是我一开始没有意识到它对我的价值。当我意识到SQL就是我的解决方案后,我花了很多时间来学习更多有关SQL的知识,因为我在做程序员的时候稍微学了一点SQL。具体来说,我学习了如何查询数据(特别是我以前没接触过的高级语句)以及搭建和维护数据库的基础知识。我甚至通过了两个Microsoft SQL的考试。我现在主张尽可能用SQL。我把所有项目的数据都存在了SQL数据库中,尽量在SQL中做数据查询和操作。我的原则是:能在SQL中完成的处理,就在SQL中做。SQL处理不了的任务再用Python(例如,模型训练和执行)这里延伸出一个问题:你需要学会使用Python库,例如 SQLAlchemy,从 SQL读取数据到Python里。现在我的后SQL生活变得容易很多:所有项目数据存储在一个容易找到的地方。没有重复代码用于读写文件。我能快速查询数据并从数据中轻松得到统计结果。我能够很容易地查看大量数据,特别是前几行的数据。额外的好处是现在很容易把不同的数据联系起来,因为数据都已经在关系数据库中了,现在安全性也提高了:把数据存在本地磁盘上有潜在的风险。数据都在服务器里,安全很多。因此,我强烈推荐学好SQL并用起来。如何展示成果?还有一个进展不顺利的地方是我做的一些展示。从开发人员到数据科学家的一个变化是,我做演示的场合变多。展示的内容各种各样,有面向技术人员的demo演示,有面向业务相关人员的项目报告,再到与公司内部其他部门讨论项目工作,甚至向公司外部的第三方合作方展示工作。对于这些人我觉得我没有做好的一点是我没有根据受众来调整自己的展示方法。有些展示我做得还不错,比如对开发人员的技术演示我觉得我做得还不错。因为我跟技术人员拥有差不多的背景所以说技术的内容彼此也听得懂,交流起来会更容易一些。其他类型的演示更难一些,不幸地是很多时候我在展示的时候才意识到听众对我讲的内容不是很在意。我的受众分为四类,从展示的难易程度来分如下:从最简单的(最左边)开始,到最难的(最右边):开发人员,业务方,其他部门以及外部人员。我还可以将最左边的那些受众标记为最技术性的,将右边的那些受众标记为更“销售型”的,当从左向右移动时,两者之间会有一个过渡。我发现针对左边受众的展示是最容易准备的——他们对我正在使用的技术或所从事的业务领域有深刻的了解。针对外部人员的演示是最难的,因为他们往往相关知识最少。过去,我与这些听众进行交流的时候会直接进入到技术细节,就像我和左边听众交流时一样,但是结果很不好,因为他们不一定具有任何数据科学或机器学习的背景,所以我谈论许多概念对他们没有多大意义,他们不知道我在说什么。对这些受众来说,如果我花点时间介绍一下我正在做的工作以及更多的背景知识,效果会更好。甚至对某些受众来说,向他们介绍机器学习的概念,为什么我们要使用它以及它的好处。有时候,对我来说,不过多讨论技术细节反而是好事,给他们一些大概的框架概念就好。在反思了这一点之后,我现在在准备演示材料时,会更多地考虑我的目标受众。具体来说,我会考虑听众可能知道或不知道的内容,以及需要向他们呈现的内容,以帮助我准备需要讨论的内容和专业程度。这样他们就可以更好地理解我正在谈论什么=,并从演示中得到一些收获。为此,在准备演示文稿时我为自己准备了一些有用的问题,如下:听众对于数据科学领域了解多少?听众对于我试图解决的问题了解多少?听众知道我在使用的技术吗?听众对于我采用的技术细节或者结果感兴趣吗?计划与做程序员时相比,做数据数据家的工作计划更有挑战。作为开发人员,工作相对比较直接,所以也更好估算和排期。你通常知道你要实现的目标以及如何实现。当我还是一名开发人员的时候,我使用敏捷开发工具。因此,工作内容可以先评估、计划,然后排好优先级就开始做。在敏捷的方法论指导下,如果工作没什么意义,或者你不清楚如何做,你就不会把它排进工作计划。因为无法评估,因为未知,你要等到所有不明确的地方明确后才开展工作。数据科学的工作并不像这样简单,对于给定的问题你不会总是提前知道什么会起作用。也不会总是知道哪种类型的模型最准确。类似这样的情况与刚才提出的观点出现矛盾,当你是开发人员时,只有问题明确后,你才会把他们放入你的工作列表中。作为数据科学家,未知是你工作的一部分,因为你的工作就是要回答这些问题。或者你正在处理的问题可能会随着项目进展而改变。因此,有时候你提前做的几周计划可能很快要重新考虑。在计划方面,我喜欢将开发工作视为线性的——你知道自己在做什么以及如何做。数据科学工作我觉得是分叉树,可能需要试不同的道路,可能会碰到死胡同。数据科学家做短期工作计划还是可行的,比如你正在训练和测试的模型之类的——接下来一两周的工作,但是,长期计划很难做。你不可能总是提前知道什么会起作用,什么不会。所以我们才要进行实验和测试,这是数据科学家工作的核心价值。最后,花点时间去做不一定会有成果的工作,即使不起作用,也没什么大不了的。回答正确的问题在过去一年中(这让我栽过很多跟头),我发现数据科学工作的关键部分是回答问题,但更重要的是回答正确的问题。正如我所说,我栽过几次跟头,当时我正在回答一个问题,但并没有回答业务方实际想要回答的问题,之所以发生这种情况,是因为业务方使用的业务语言跟我用的的技术语言有差异,有时候我们用一样的词但要表达的意思却不同。针对这问题我的解决方法是在做项目的实际工作(现在称为“项目前”工作)之前先做准备性工作,在这个阶段,我会从业务方那里收集初始需求和信息。做一些初步分析,然后给业务方展示。运用敏捷的工作思路,我希望在每个sprint实现一个可交付的成功,并向业务方展示该成果。这样,我与业务方建立了一个有效的循环反馈机制,向他们展示一些东西并询问他们的意见,这可以建立一个有效对话,从而更清晰地定义真正要解决的问题。这个方法在项目各个阶段都有效,不仅仅是初始阶段。当你向业务方展示你的工作结果时,可能会激发他们不同的想法以及他们之前没有考虑过的思路。从而你能找到他们真正的痛点。所以过去一年来我发展的一项关键技能是与业务方的互动交流,深入挖掘他们真正想要的东西。总结Python比R更容易学习,因为对于程序员来说python与其他编程语言更接近。边执行边做文档学习如何使用关系数据库,比如SQL,用数据库来查询,操纵和存储数据。你需要准备很多展示,不仅是向项目业务方的报告,还要向公司其他同事报告,甚至是公司外面的人。你需要提高演讲能力以满足不同受众(技术或非技术)的需求。工作计划不是一帆风顺的,因为你无法预知什么起作用什么无效,要有心理准备有时候花了时间不一定取得预想的结果。花时间找你真正要解决的问题,不要不加思考就埋头开始做,与业务方建立反馈闭环是很有必要的。

    时间:2020-05-01 关键词: 软件开发 程序员

  • 盘点人工智能影响软件开发的几种重要方式

    盘点人工智能影响软件开发的几种重要方式

    (文章来源:教育新闻网) 根据专家的说法,人工智能可以简化我们几乎从日常任务到复杂的大型项目的所有工作,从而改善我们的生活。来自KommandoTech的人工智能统计数据显示,需要AI技能的工作比例是2013年的4.5倍。进一步告诉我们,自2000年以来,使用AI技术的初创公司的数量增加了14倍。 如今,大约五分之一的公司已经在使用人工智能,全球超过50%的大公司都有专门用于AI战略的预算。2018年进行的一项调查显示,到2025年,人工智能企业应用程序的全球收入应从2018年的16.2亿美元增长到312亿美元。已经从人工智能中受益的行业之一是“软件开发”行业。 软件开发是如此繁琐且耗时的工作的日子已经一去不复返了。今天,人工智能简化了软件测试过程。来自CrunchBase的统计数据进一步告诉我们,现在有10,000多名开发人员正在为Facebook Messenger构建聊天机器人。的确,人工智能简化了软件开发过程,但是以什么方式呢? 软件设计,过去,设计过程很棘手,容易出错,需要设计人员进行调整,直到获得所需的结果。但是,AI在设计过程中的应用使一切变得容易。AI工具旨在从设计师输入的输入数据中学习。他们能够从此类数据中提取和建模模式,这将有助于他们成为特定任务的专家。 自然语言处理(NLP)技术,机器学习和深度学习的应用使设计人员可以使用自然语言将其思想输入计算机,并使计算机提出适合于所描述内容的基础设计。 AI设计助手(AiDA)是一个很好的例子,它使用AI根据用户提供的信息为其用户设计网站。AIDA可以根据收集到的信息了解用户的需求和愿望。然后,它通过数百万种组合在网上搜索,以形成定制的设计,该设计将成为设计师正在寻找的基础。此后,设计人员可以进行调整以实现最终包装。 软件测试是软件开发过程中最关键的阶段之一,因为它有助于确保产品质量在发布之前。由于源代码的不断修改,如果测试必须重复多次,这是一个耗时的过程,并且可能会非常昂贵。因此,现在使用AI来自动化整个测试过程。AI能够减少标准的手动测试,从而为创建具有复杂功能的更多自动化软件测试提供了空间。 AI可以创建测试信息,探索信息的真实性,并得出数据范围,以实现更好的测试管理。

    时间:2020-04-27 关键词: 软件开发 人工智能

  • Arm Development Studio 最新版本2020.0 发布!附下载方式

    Arm Development Studio 最新版本2020.0 发布!附下载方式

    Arm Development Studio支持从架构探索到实时应用程序开发以及边缘设备编码的所有类型的软件开发项目。它加快了系统设计和软件开发的速度,使合作伙伴和客户能够更快,更经济地将更高质量的产品推向市场。 近日,Arm发布了Arm Development Studio最新版本2020.0,新增了最新的处理器的支持,增加支持STLINK和FDTI调试探测器等,产品具体的更新信息如下: 1. 不同版本都加了对更高级芯片的支持: Bronze版本添加了Cortex-M55和star 处理器的支持。 Gold版本的编译器支持Cortex-A34,Cortex-A77和Neoverse N1的处理器的程序编译,而Sliver版本支持上述核的调试和性能分析。 2. ARM 调试和调试探测器 软件增加支持STLINK和FDTI调试探测器; 所有版本均支持Arm自定义指令; 虚拟样机已支持lris 调试追踪接口; 已验证的新平台用于支持汽车、嵌入式开箱调试等关键领域。 包括以下产品: ·NVIDIA Xavier ·Renesas R-Car D3, R-Car V3M,R-Car E3 ·Rasberry Pi 4 ·Cortex-M33(SEE-200 Subsystem) MPS2 , MPS3 FPGA 3. Arm Compiler编译器 Arm 编译器6.14 新增加支持Cortex-A34,以及采用了Armv8-M架构以及可选M-profile Vector Extension(MVE)的Cortex-M55,同时对Armv8.6-A、Armv8-M和Armv8.1-M的架构进行进一步优化。 4. Arm Streamline线性性能分析器 增加了Cortex-A34,Cortex-A77系列CPU的支持以及Mali-G57,Mali-G77系列GPU的支持。 5. Graphic Analyzer图形分析器 支持Android 10以上设备,包括支持使用OpenGL ES层驱动程序。

    时间:2020-04-08 关键词: 芯片 ARM 软件开发

  • 最吸引流量的苹果WWDC

    最吸引流量的苹果WWDC

    每年的三大开发者大会,苹果WWDC通常是最晚召开,但却是最吸引流量的。在常规四大系统(iOS、macOS、watchOS和tvOS)之外,果粉们总是期待着One More Things,期盼着有新硬件发布。但这一次,没有更新MacBook,没有发布新iPad Pro,更没有传说中的iPhone SE 2。今年的WWDC是一次纯粹的软件发布会,是真正面向开发者的大会。这才是回归WWDC的初心。 尽管不忘初心这个词,已经被国内科技营销用到了泛滥;但做出好用的、出色的产品,从来都是科技公司的第一要事。首先是好用稳定,其次才是炫酷出色。 平心而论,今年的WWDC发布的新版软件并没有太多惊喜,而是从小处着手、从细微修补,着重于完善上一代产品的体验缺失。iOS 12的很多新功能要么在预期之内,比如iOS上的诸多应用覆盖到macOS,要么是竞争对手的升级改进,比如照片自动标签、手机使用管理和卡通形象都可以在Android手机上找到先行者。 不过,苹果用户如今对WWDC的最大期望,或许并不是各种炫酷全新功能发布高潮迭起,而是软件产品稳定好用。毕竟大家都理解,黑科技不是每年都有,革命颠覆也无法源源不断,稳定人性的体验才是用户每天相处面对的。 为什么这么说?因为过去两年,苹果的各种软硬件系统Bug实在是有点对不住苹果的金字招牌,也对不住乔布斯定下的追求完美的初心。毫不客气地说,iOS 11或许是用户吐槽最多的一代系统,对于以软件稳定流畅著称的苹果来说,这实在有点蒙羞。在面对iOS 11的诸多bug时,库克也是态度尴尬。 所以,看到WWDC上苹果自称“iOS 11用户满意度高达95%”的时候,微博和Twitter上都是“呵呵”,海内外一片尴尬而不失礼貌的微笑。据《华尔街日报》统计,自去年9月正式上线以来,iOS 11共有14次软件更新,解决了67个软件问题,比iOS 10增加了46%;而过去一年苹果的各种Bug问题超过了73个,较四年前的17个几乎翻了四倍。 这几年到底发生了什么?从2012年开始,苹果每年WWDC统一发布新版iOS和macOS系统,而之前macOS则是每两年升级一次。产品周期缩短,使得软件工程师没有足够的时间进行测试和Debug。另一方面,适配设备增加也增加了软件Debug的难度。现在苹果的在售设备已经达到了40款,比五年前多了10款。而现在iOS 12的支持设备上溯到2013年,甚至比iOS 11还要长久一年。 不过,最根本的问题或许还是企业文化上。2015年,Tumblr前CTO、Instapaper创始人曾经抨击苹果过于追求每年发布新系统的市场效果,而失去了追求产品尽善的完美主义,把营销优先置于产品优先之上。三年时间过去了,最核心系统iOS的bug不减反增,甚至出现了去年12月出现的iOS 11因为通知时间限定错误,导致iPhone大量闪退的低级错误。 尽管苹果市值高达9400亿美元,iPhone年销量高达2.23亿部,但在潮流不断变化的科技行业,苹果远远不能说是高枕无忧,尤其是在已经饱和的智能手机行业。IDC的数据显示,2017年全球智能手机市场首次出现增长停滞,同比仅增长0.5%,较2016年的2%增幅近一步放缓;去年第四季度,美国和中国这两大智能手机市场更双双出现了下滑。 实际上,在全球市值最高的五大科技公司当中,虽然苹果是市值和营收最高的,但也是竞争形势最严峻的。亚马逊、谷歌、微软、Facebook都在各自领域占据着不可撼动的绝对优势(分别是电商与云计算、搜索与移动平台、桌面平台与生产力、社交网络),只有苹果是仅近以少数市场份额成就了霸业。多年以来,iOS在全球智能手机市场的份额一直徘徊在15%左右,2017年仅有14.7%(IDC数据),与2014年相比基本持平。 虽然苹果主要靠卖硬件挣钱,软件系统大多是随机附送的,但软硬件一体的体验才是苹果产品的核心竞争力。即便过去两年苹果一直在努力推进产品与营收多元化,不断提升服务业务营收,近期更关注移动广告营收,但iPhone过去现在未来都会是苹果的不变基石。iOS生态系统是苹果的护城河,也是苹果的核心竞争力。 在WWDC开幕致词上,库克再次强调了这一优势——目前全球共有2000万苹果开发者。经营了十年的App Store每周都会迎来5亿用户。苹果平台累计为开发者带来了超过1000亿美元的营收。10多亿苹果设备用户是苹果拓展任何新领域的基石,虽然ARKit发布仅有一年,但苹果已然成为拥有上亿设备的全球最大AR平台。 多年以前乔布斯确定了苹果的商业模式——作出伟大的产品和服务,消费者自然愿意为这样的产品付出高价。在乔布斯离世之后,库克在他打下的平台基础上继续巩固、深耕、推进、扩张,成就了现在接近万亿美元的苹果霸业。但如果苹果不珍惜自己曾经追求完美的品牌形象,那么用户迟早会逐渐流失;iOS的大坝或许不会顿然倒塌,也会出现一个个蚁穴。 如果说看完今年的WWDC发布会,有什么期待的话,我希望9月份发布的正式版软件系统能够稳定与成熟,改变过去两年苹果新版系统粗枝大叶漏洞频出的形象。不求惊喜迭起,但求少Bug。

    时间:2019-08-16 关键词: 软件开发 iOS wwdc 电源新品

  • 解读任正非的新年公开信

    解读任正非的新年公开信

    近日任正非的公开信《全面提升软件工程能力与实践,打造可信的高质量产品》刷屏了,作为一个软件工程专业科班出身的软件开发从业者,自然是引起了我的好奇。仔细阅读之下确实让我大吃一惊,看似八股官方文,但细看之下是作者对于软件工程的理解确实非常深刻,各种专业术语信手拈来,比喻恰到好处。我对华为的研发其实一直挺好奇的,从传统的硬件公司,到现在软硬件齐头并进,华为手机销量都已经超过了苹果,可见华为的软硬件研发实力早已是全球领先了。公开信中的这一句:二十年前的 IPD 变革,重构了我们的研发模式,实现了从依赖个人、偶然性推出成功产品,到制度化、持续地推出高质量产品的转变。也揭示了华为的软件研发能做到领先水平的原因。华为是在 1999 年开始从 IBM 引进 IPD 的,到今年 2019 年正好 20 年,在过去的 20 年里,IPD 帮助华为从游击队变成了正规军,研发队伍从几千人到几万人,软件产品也覆盖到手机操作系统、应用、云服务。我对 IPD 是不甚了解的,只知道 IPD(Integrated Product Development,集成产品开发)是一种产品开发方法,但如果说软件产品的开发方法,我是比较熟悉的,那就是软件工程么!任正非发出的这封信的大背景也很特殊,2018 年中美贸易战开始,中兴、华为首当其冲成为美国开刀的对象,跟风站队的澳大利亚、新西兰、英国也跳出来抵制华为,说华为不安全,可能含有间谍软件,窃听国家机密,这帽子一扣是很难扯清的!这就是为什么整封信从标题开始,一共 17 次提到两个关键字:“可信”。只有让客户觉得华为的产品“可信”,华为才能尽快走出这场危机,那么怎么才能做到可信?如果你是餐厅老板,有人造谣你的厨房脏乱差,员工上完厕所不洗手,你怎么办?最好的办法自然是用先进的管理流程,并且让整个做菜的过程尽可能公开透明。所以信中有这样一句话:我们要转变观念,追求打造可信的高质量产品,不仅仅是功能、特性的高质量,也包括产品开发到交付过程的高质量。要转变观念,不再只认结果的质量,还要追求过程质量了!而如何追求过程质量呢?那就是要:“全面提升软件工程能力和实践”如果信到此为止,也就是个普通官方八股文了。领导们么,可不就是喜欢指个大方向,说你们要用软件工程,要实施软件工程,至于怎么用,那是你们的事情,毕竟做领导的哪有几个真的懂软件工程的,难得的是这封信居然有很多具体怎么做的内容。软件项目管理金三角先看这一句:我们各级管理者和全体员工都不得以进度、功能、特性等为理由来降低可信的要求,确保可信的要求在执行过程中不变形。振聋发聩呀同志们,热泪盈眶呀!生活中多少次:三个月的项目老板说你一个月就要给我做完;做到一半的项目,PM 说这个功能很重要,我们要加上去。最终怎么办?牺牲质量呗!又想要马儿跑得快又想要马儿不吃草,天底下哪有那么好的事情!软件工程里面早就告诉我们了:时间、范围、成本这三个要素直接决定了产品的质量! 希望各位老板别光学乔布斯,也学学任正非!程序开发2018年底程序员被裁的不少,很多程序员开始担忧起前景来,其实如果你能做到这下面要求的应该是不担心被裁的!我们要从最基础的编码质量做起,视高质量代码为尊严和个人声誉。代码就像是高楼大厦的一砖一瓦,没有高质量的代码,可信的产品就是空中楼阁。我们要优化并遵循公司各种编程规范,遵从架构与设计原则,熟练使用各种编程库和API,编写出简洁、规范、可读性强、健壮安全的代码。这一段是说给我们程序员看的,这其实也是对程序员的基本要求,大家看看自己,看看身边,真能做到的有多少?像我一样觉得自己还做的不够好的,咱还是努力学习吧,多练练,多用点心肯定更没问题的。架构说完程序员开始说架构师了:我们要深刻理解架构的核心要素,基于可信导向来进行架构与设计。看到没有,又提到可信了,架构设计的时候,别再天马行空,啥新酷用啥,啥流行用啥,一定要“可信导向”,架构设计目标先搞清楚!再是细节:在确保可信的前提下,要在性能、功能、扩展性等方面做好权衡;慎重地定义我们的模块与接口,真正做到高内聚与低耦合;我们要遵循权限和攻击面最小化等安全设计原则,科学设计模块之间的隔离与接口,提升安全性;低阶架构与设计要遵循高阶的架构与设计原则,在充分理解原有架构与设计的情况下,持续优化;我们要熟悉各种设计模式,重用公共成熟组件和服务,避免重复劳动。“高内聚与低耦合”,“权限和攻击面最小化”,“模块之间的隔离与接口”,“重用公共成熟组件和服务”……道理我都明白,做到可不容易!技术债务华为这些年高速发展,早些年为了追求速度肯定也没少走捷径,这些年下来也肯定没少欠技术债务,现在也是一个从追求速度到追求质量转型的契机。所以信中说完架构开始讲技术债务了:我们要重构腐化的架构及不符合软件工程规范和质量要求的历史代码。我们知道,再好的架构,其生命力也是有限的。随着时间的推移、环境的变化以及新技术、新功能特性的引入,架构也会腐化。面对腐化了的架构,要毫不犹豫地去重构它。同时主动以可信设计原则为导向,去重构不符合软件工程规范和质量要求的历史代码,提升软件架构的生命力。我们都知道,没有万能的架构,只有适合当时需求,当时技术条件和人员的架构,时间推移了很多架构就满足不了要求了,就需要重构了!作为80后,小时候其实生活挺艰苦的,那时候我们穿衣服都讲究的是:“新三年,旧三年,缝缝补补又三年”,架构也一样嘛,不满足需求我们先修修补补,真要重构挑战还是不小的,但是不去做它会一直成为发展的一个障碍,这封信也算是推了一把:“面对腐化了的架构,要毫不犹豫地去重构它。”,当然你重构,也不要忘记“可信”这个根本目标:“同时主动以可信设计原则为导向”。其实Google在这方面已经走在前面了,一直鼓励重写代码,任何软件每隔几年就重写一遍,这样可以优化代码,采用最新技术,去掉一些没有价值的功能,最重要的是让新员工得到锻炼,保持高昂的斗志。不知道这点是不是华为在像Google学习!安全这些年,互联网发展很快,但是安全事故却层出不穷:开房记录被泄漏、密码被泄漏、比特币被盗……这暴露出业界其实对安全是不够重视的,所以信中也不止一次提到安全问题:公司已经明确,把网络安全和隐私保护作为公司的最高纲领。”“我们要深入钻研软件技术,尤其是安全技术。”“我们要遵循权限和攻击面最小化等安全设计原则,科学设计模块之间的隔离与接口,提升安全性”“编写出简洁、规范、可读性强、健壮安全的代码。要打造一个“安全”的软件,就是首先要有安全意识,然后要懂安全技术,在整个开发过程中要从架构设计、代码方方面面去注意。技术是工具这些年开发界一直有些不好的风气,就是都认为自己的技术是最牛的,写后端的看不上前端的,用angular的看不上vue,写PHP的认为自己的语言是全世界最好的,开发的还看不上测试的。但是信中这一句话不要忽视呀:“软件技术是我们打造产品的基本工具”,技术只是工具,只是我们用来打造产品的工具!“技术是否先进,技术选择是否合理,将决定我们软件的高度;”,技术的选型,不仅看的是不是先进,还要看是不是适合当前产品项目,并不是什么什么新酷就用什么!“我们要深入学习架构与设计、编码、测试、安全、可用性、性能、维护性、体验等技术,并科学运用这些技术。”,既然技术只是工具,那么我们就没必要给自己设置各种技术壁垒障碍。如果开发就只学编码,测试就只学测试,认为安全那应该是搞安全的事,这样的话是非常不利于团体协作的,每个人都在一个领域能有深入的钻研,同时对其他领域有一定了解,对个人,对团队是非常有利的一件事。这样也不需要DevOps这种为了兼顾开发、测试、运维三种角色而存在的工种!一致性我们做软件开发的都知道,也看过很多段子:从客户的需求,到最终的实现,总是差别很大;我们在项目初始的时候制定了很多规范,却总是不了了之,难以执行;我们良好的设计,在编码实现的时候,因为赶进度、开发人员偷懒等各种原因绕开设计,抄近路,最后设计和编码无法一致……一致性在软件开发领域一直都是理想美好而现实却很残酷,信中也提到:我们要遵守过程的一致性。遵守适用的法律法规、遵循业界共识的标准、规范,确保规范到实现的一致性、代码到二进制的一致性。架构要符合架构原则,设计要遵循设计模式,代码要符合编程规范,最终做到需求与实现一致,达成各项对客户的承诺。我们只有脚踏实地做好每一步,才能真正打造出可信的高质量产品。无论这个目标有多难,但是从“遵守过程的一致性”开始,在每个阶段都去做到一致性,“脚踏实地做好每一步”,还是有希望做到,“真正打造出可信的高质量产品”。改变习惯在实施软件工程的过程中,有两个难题,一个就是转变思想,另一个就是改变习惯了,这种改变的过程也一定是很痛苦的。为此,我们要改变行为习惯,追求精品。我们要开放透明、积极和勇于揭示问题并主动推动改进。软件开发是一种创造性和艺术性的工作,需要充分发挥我们的聪明才智和潜力。我们要改变只重视功能结果、不重视代码质量的行为习惯,要严格遵守软件工程规范;改变被动的修修补补;改变碎片化知识获取,主动去学习提升并贡献经验、代码,形成共享知识库。我们需要改变的行为和习惯还有很多,对绝大多数人来讲都将是一个痛苦的转变过程,会脱一层皮,但我相信大家能够迎接这种挑战。从事软件开发工作越久,恐怕养成的坏习惯就越多,信中列的几条都很有代表性:“只重视功能结果、不重视代码质量”“功能实现完了就完事了,质量那是QA的事”,这种坏习惯不改质量是很难有保障的“不遵守软件工程规范”软件工程的各种规范不是约束,也不是摆设,而是实实在在为了团队整体更好的协作。对于定好的规范,要严格执行,不合理的规范,也要提出来一起改进。“被动的修修补补”为了能继续凑合,继续修修补补,而没有考虑重构改进,也是一个不好的习惯。“碎片化知识获取,不主动去学习提升”在现在的信息时代,碎片化的知识获取是容易的,但是像软件工程这种知识,仅仅通过碎片化的学习还是不够的,必须的主动的,系统的去学习,虽然这个过程会很辛苦,但是是非常有必要的。“不愿意贡献经验、代码,不去形成共享知识库”很多人不愿意去分享知识和经验,有的是因为太懒,有的是觉得没什么好处。但是分享本身就是一个学习和提升的最好手段!知识库这种事不仅是对别人,对自己也是一个特别好的过程。想象下你新加入一个团队,如果这个团队有很好的知识库,你可以通过知识库很快的上手工作,同样的,如果你把你的经验写到知识库,后面的新人也可以受益你的贡献!“软件工程”和“质量工程”需要依靠架构技术“软件工程”和“质量工程”需要依靠架构技术,而不是依靠CMM和QA管理流程。一切工程问题,首先要思考能否通过技术解决,当前技术无法解决的问题,暂时由管理手段代劳,同时不停止寻找技术手段。所有的涉及到人的管理最终都要归结到人管理还是制度管理的问题上,软件项目管理也不例外,如果过多的依赖于人的管理,那么项目经理的职责就太重了,优秀的项目经理本身就是稀缺资源,最终会变成一个瓶颈。所以通过架构技术和工具,把管理流程落实下来是一个非常好的方式。有两个例子可以很好的说明这点。早些年软件项目团队是非常庞大的,各个服务庞大模块紧密,所以管理成本很高,后来微服务这种架构提出后,将大的服务拆成小的服务,整个组织也从大项目部门拆分成各个小组,各小组可以独立更新维护。另一个例子是以前单元测试和代码审查还有自动部署很难执行,后来借助源代码管理工具和CI(Continuous integration,持续集成)工具,就可以很容易的进行代码审查、并且可以确保单元测试测试跑通过后才进行部署。这一点其实信中也有体现:我们将全面强化以Committer角色为核心的代码审核和提交机制,代码经过更加严格和系统的审核才能合入版本。为此我们将建立一支更高水平的Committer角色群体,负责软件架构的看护、代码的审核和提交,整体保障合入代码的高质量。我们要变革考核机制,要让架构设计好、代码写得好的人脱颖而出,对编程能力不满足要求的人给予帮助和培训。但任何人如果编写的代码长时间不能合入版本,将会被团队抛弃。软件工程就像一个国家的农业软件工程就像一个国家的农业,是最基础的设施!很感动,这些年软件工程被提起的其实不多,大家关注的更多是各种新酷的技术,而对于这种软件开发最基础的理论视而不见。还有人一提到软件工程,就马上说软件工程不是银弹。软件工程从来不说自己是银弹,就像现代医学,也不会号称自己包治百病,只会不断改进,对症下药!

    时间:2019-01-19 关键词: 任正非 软件开发

  • 谈一谈我在软件开发中的最佳实践

    谈一谈我在软件开发中的最佳实践

    “描述一个事物,唯有一个名词定义它的概念,唯有一个动词揭露它的行为,唯有一个形容词表现它的特征。要做的,就是用心去寻找那个名词、那个动词、那个形容词……”—— 福楼拜 (Gustave Flaubert)我想讲个故事。很久很久以前(一般讲故事都是这样开头吧), 两个老工程师在一起聊天,谈各自生涯中最自豪的工程。其中一个先讲述了他的杰作:“ 我们建造的桥,横跨一个峡谷,峡谷很宽很深。我们花了两年时间研究地质,选择材料。聘请了最好的工程师团队来设计方案,而这又花了五年时间。 我们签下了最大的工程队,委托他们建造基础结构、塔墩、收费亭,以及用于连接桥梁和高速公路的道路。桥面下层是铁路,我们甚至还修了自行车道。 那座桥花费了我数年的心血。”另外一个听完之后,陷入了沉思,过了一会儿,说到:“ 有一天晚上,我和一个朋友喝了点伏特加,然后我俩扔了一根绳子,越过一个河谷。呃…… 就是一根绳子,两头系在两颗树上。 河谷两边各有一个村庄,起初,有人加了个滑轮,用来传递包裹。然后,有人拉起了第二根绳子,勉强可以走走,虽然很危险,但小伙子们很喜欢。 后来,一群人重新修建了一下,使得更牢固。于是,女人们也开始从上面走,每天带着她们的农产品过桥。 就这样,在桥的另一边形成了一个市场。因为地方开阔,造了很多房子,慢慢地发展成了一个镇子。 绳索桥被木桥替代,这样就可以走马车了。 后来,镇上的人们修了一座真正的石桥。再然后,人们又把石料改成了钢材。 如今,那座钢构悬索桥依然伫立在那里。”前一个工程师沉默良久,说到:“ 有意思。我那座桥建成大约十年后,被拆除了。事实证明我们选错了地点,建好的桥没人用。据说有几个野路子的家伙,在下游几英里处,拉了一根绳子,所有人都从那走。”金门大桥(旧金山)我很喜欢这个故事。故事的出处,在一款消息队列产品—— ZeroMQ 的官方指南第6章里。说完故事,我想聊聊软件开发中,常常可以听到的一个概念 —— Best Practice :最佳实践。Wikipedia 上对其解释为:A best practice is a method or technique that has been generally accepted as superior to any alternatives because it produces results that are superior to those achieved by other means or because it has become a standard way of doing things.(最佳实践是一种:因其产生的结果优于其它选择下的结果,或其已经成为一种做事的标准,从而被普遍认可优于任何替代方案的方法或技术。)这个概念源于管理学,然后在 IT 界泛滥。简而言之,就是所谓“正确的做法”。最佳实践本身是美好的存在,犹如夜空中的一轮明月,照亮黑暗中的方向,指引着摸索前行的凡人。但凡事有度,子曰:“过犹不及。”我今天想说的,就是这月亮的背面。(传说中,月球背面隐藏着…… 嘘~)潮汐锁定导致月球永远以同一面朝向地球首先,最佳实践容易带来思想包袱,让人无法专注于解决问题本身。总是希望采用最好的技术方法,不愿意在不正确的做法上浪费时间,导致瞻前顾后,甚至裹足不前。此时的最佳实践,已然成为了一种毒药,一旦偏离了问题本身这个出发点,就会不知不觉走进“宏大构想”的思维陷阱。把简单的问题复杂化,阻碍了迈出第一步,直到能规划出“包罗万象”的解决方案后才肯动手,拖延症就这样来了,时间却走了。你想好了未来每一天怎么过吗…… 没想好? 那……不活了?其次,对最佳实践的执念容易让人钻牛角尖,将目标的重心带偏。过度关注实施过程是否符合标准化,忽视了项目中其它重要的东西,比如用户体验,比如实际需求。就像故事里讲的那样:第一座大桥,几乎是教科书般的标准化路数,可产品落地后和客户需求却差了好几英里;第二个看上去很野路子,但精准地解决了痛点,从始自终都是紧紧围绕实际需求迭代,每一次的进步都可以产生效用,这才叫杀手级应用。这让我想起了 Plan-9 的传说。你听说过 Plan-9 OS 吗? 一款由贝尔实验室的极客们打造的用于完善 UNIX 不足的操作系统。什么不足?在 UNIX 的哲学中,有一条叫做 “一切皆文件” ,但实际上UNIX本身并没有严格遵从这一条。于是,Plan-9 OS 完美实现了这一点。然后呢……? 没有然后了。它从没进过市场,所以如果你没听说过它,一点也不奇怪。Plan-9 OS 没有解决任何现实问题,没人在乎 “一切皆不皆文件”。这种执念的另一种表现就是工程师思维,沉迷于奇技淫巧中无法自拔,程序员尤其容易中招。比如性能优化。“优秀的程序员应该榨干每一字节内存”,听起来很熟悉,不是吗?但经济学上来讲,边际效应决定了一次项目中,越优化性价比越低。有一个很容易被忽略的事实:硬件其实比程序员要便宜。再比如对设计模式的崇拜。设计模式当然是好东西,但如果像强迫症一样使用它们,坚持用上它们才是正确的编程,就会导致按图索骥,强行让问题去适应设计模式,而不是让解决方案针对问题,这就本末倒置了。我有个基友,C++ 极客。毕业后入了腾讯,积累了巨额财富后,自己创业了。当然,当老板可比写 C++ 难多了,于是现在又去积累巨额财富了。想当年和那厮聊天,言必出设计模式,没事侃正则,再没事就研究 GC 策略 (好像玩 C++ 的普遍这德性) 。前不久看他代码,差点没认出来,这家伙画风一转,现在连接口都懒得多用(估计看到这,某些狂热分子肯定在破口大骂:你什么意思,你说你没用面向接口编程?)那位兄台甚至都懒得多聊,轻描淡写来一句,“没心思,以后有需要再加。”顺便扯一句,那哥们最近负责开发一款手游,他跟老板汇报的时候,预估的研发周期要12个月,然后老板跟他说:“好,12月出公测。” (哈~ 估计他肯定舌头打结把“12个月”说成了“12月”)。看到这的你,是否回忆起了你的老板?这也是我接下来想说的关于最佳实践的另一个问题:项目实施。工作数年,大小项目经历若干,慢慢体会到,一个项目的开发顺利与否,并不在于技术选型是否为最佳实践,更多的时候,取决于开发方案和技术储备之间的平衡。做项目毕竟是要讲方案落地的,如果最佳实践中的技术成本,超出了开发者的落实能力,那就是坑,这时盲从最佳实践无异于挖坟。如果是一个人的项目,抽时间恶补一通,兴许能填填坑,这取决于IQ。但要是一个团队,那就不是什么 IQ,EQ,QQ 的问题了,这中间产生的学习成本,集体培训成本,反复沟通成本,大量的初级错误,千奇百怪的代码,互相冲突引发的焦躁情绪,等等。这些负面的东西如果不能妥善的处理,足以抵消掉最佳实践带来的好处。别忘了,deadline 正在迫近。我自己曾经在一个项目组里,强行推行 Git 做源代码管理,当时组里共9人,有7人只会 SVN,但我坚持 Git 是 “最佳实践”。要不说年少无知少不更事呢,罢了,后来的事情我不想回忆了…… 那次项目之后,我再也不在一群只会 SVN 的队伍里提 Git 了。一个人做软件已经很难,比这更难的,是一群人做软件。当尘埃落定,蓦然回首,最佳实践很可能没你想象中那么重要。它更多的是一种精神层面的求道,并非物质世界的必要。扎克伯格 ( Mark Zuckerberg ) 于2004年在哈佛柯克兰公寓 ( Kirkland House ) 里写出 TheFacebook 的时候 ( 次年更名为Facebook ) ,用的是 “世界上最好的编程语言” PHP。这门可能是业界被吐槽次数最多的语言一直支撑着FB帝国的诞生,直到席卷全球。Stack Overflow 的联合创始人 Jeff Atwood 曾公开揶揄 Facebook 是一家 “召集全球顶级程序员在 Windows XP 上写 PHP ” 的公司。但这无所谓,24年前的马克也不纠结。一直等到需要的时候 (2010年),Facebook自己动手研发了一个编程语言 —— Hack,来解决 PHP 带来的危机。《社交网络》最佳实践,关键在时机(Timing)。如果说用 Facebook 这个 “根本不存在” 的网站来举例,纯属虚构的话,那我们来说点真实的例子,Web 技术的基石——HTML。由20世纪最重要的100人之一的 Tim Berners-Lee 创造的 HTML,其发明之伟大,足以单独开篇博文来赞美了,这里就不赘述了。这样一个造福全人类的神作,本身的设计结构绝非完美,甚至可以用混乱不堪来形容。没有严格统一的约束,形同虚设的规范,标准化进程的难产。以至于在很长一段时间内,连自身元素的定义,都可以向浏览器厂商妥协。但是,种种被人诟病的存在,丝毫不影响 HTML 改变世界的脚步。你我今天能相会于园,皆仰赖它的诞生。同样的例子还发生在 Web 世界另一个巨擎上——JavaScript。当今世界,Web 前端技术已经水银泻地般肆虐整个开发界,前端框架百花齐放、JS 衍生品鳞次栉比。所有这一切的背后,全都源于上世纪90年代横空出世的 JavaScript。那么,JavaScript是最佳实践吗?别逗了,如果有什么语言可以和刚才说到的 PHP 竞争一下谁被骂的次数更多,那非 JavaScript 莫属。这个仅花了十天设计出来的语言,打一出身就被贴上了怪胎的标签。混乱的标准,多样的实现,安全漏洞,语法随意,反人类…… 总之,JavaScript 和最佳实践半毛钱关系都扯不上,但它却是撑起当今互联网半壁江山的擎天柱。所以,用最接地气地话来说,不管黑猫白猫,逮着耗子就是最佳实践猫。彼之蜜糖,吾之砒霜。所谓最佳实践,其定义本身往往也是分歧的源头。什么是最佳?这个最佳是独一无二的吗?世界上有很多很多现实问题,可能根本就没有所谓的最佳实践。请听题,世界上最好的编程语言是哪个?第二题,世界上最好的文本编辑器是哪个?朋友,这天还聊得下去吗……最后,说一个我自己的故事。很久很久以前,为了找一款满意的文本编辑器,我干了一件可能是前无古人,后不知道有没有来者的蠢事 —— 我打开 Wikipedia,搜索 “ text editor ” ,然后转到一个叫做 “ List of text editors ” 的页面,接下来的一个月,我几乎把当时那个页面上,所有我能下载安装的文本编辑器,全部试用了一遍……嗯?你问我为什么这么做?呵呵,不把全世界的文本编辑器遍历一遍,我怎么知道哪个是最好的?这事细节我不想再提了,我也不想回忆了。要不说年少无知少不更事呢,时至今日,我想不出比这更愚蠢的事了。WTF~~这个页面上的表格行数逐年增多如今,再有人问我最好的编程语言或者最好的文本编辑器的问题的话,我会说:“朋友,要打架吗?”这两个问题的最佳实践,唯有暴力。

    时间:2019-01-17 关键词: 软件开发

  • 软件开发之路

    0.引言 软件开发之路是充满荆棘与挑战之路,也是充满希望之路。Java学习也是如此,没有捷径可走。梦想像《天龙八部》中虚竹一样被无崖子醍醐灌顶而轻松获得一甲子功力,是很不现实的。每天仰天大叫"天神啊,请赐给我一本葵花宝典吧",殊不知即使你获得了葵花宝典,除了受自宫其身之苦外,你也不一定成得了"东方不败",倒是成"西方失败"的几率高一点。 "不走弯路,就是捷径",佛经说的不无道理。 1.如何学习程序设计? Java是一种平台,也是一种程序设计语言,如何学好程序设计不仅仅适用于Java,对C++等其他程序设计语言也一样管用。有编程高手认为,Java也好C也好没什么分别,拿来就用。为什么他们能达到如此境界?我想是因为编程语言之间有共通之处,领会了编程的精髓,自然能够做到一通百通。如何学习程序设计理所当然也有许多共通的地方。 1.1 培养兴趣 兴趣是能够让你坚持下去的动力。如果只是把写程序作为谋生的手段的话,你会活的很累,也太对不起自己了。多关心一些行业趣事,多想想盖茨。不是提倡天天做白日梦,但人要是没有了梦想,你觉得有味道吗?可能像许多深圳本地农民一样,打打麻将,喝喝功夫茶,拜拜财神爷;每个月就有几万十几万甚至更多的进帐,凭空多出个"食利阶层"。你认为,这样有味道吗?有空多到一些程序员论坛转转,你会发现,他们其实很乐观幽默,时不时会冒出智慧的火花。 1.2 慎选程序设计语言 男怕入错行,女怕嫁错郎。初学者选择程序设计语言需要谨慎对待。软件开发不仅仅是掌握一门编程语言了事,它还需要其他很多方面的背景知识。软件开发也不仅仅局限于某几个领域,而是已经渗透到了各行各业几乎每一个角落。 如果你对硬件比较感兴趣,你可以学习C语言/汇编语言,进入硬件开发领域。如果你对电信的行业知识及网络比较熟悉,你可以在C/C++等之上多花时间,以期进入电信软件开发领域。如果你对操作系统比较熟悉,你可以学习C/Linux等等,为Linux内核开发/驱动程序开发/嵌入式开发打基础。 如果你想介入到应用范围最广泛的应用软件开发(包括电子商务电子政务系统)的话,你可以选择J2EE或.NET,甚至LAMP组合。每个领域要求的背景知识不一样。做应用软件需要对数据库等很熟悉。总之,你需要根据自己的特点来选择合适你的编程语言。 1.3 要脚踏实地,快餐式的学习不可取 先分享一个故事。 有一个小朋友,他很喜欢研究生物学,很想知道那些蝴蝶如何从蛹壳里出来,变成蝴蝶便会飞。有一次,他走到草原上面看见一个蛹,便取了回家,然后看着,过了几天以后,这个蛹出了一条裂痕,看见里面的蝴蝶开始挣扎,想抓破蛹壳飞出来。 这个过程达数小时之久,蝴蝶在蛹里面很辛苦地拼命挣扎,怎么也没法子走出来。这个小孩看着看着不忍心,就想不如让我帮帮它吧,便随手拿起剪刀在蛹上剪开,使蝴蝶破蛹而出。 但蝴蝶出来以后,因为翅膀不够力,变得很臃肿,飞不起来。 这个故事给我们的启示是:欲速则不达。 浮躁是现代人最普遍的心态,能怪谁?也许是贫穷落后了这么多年的缘故,就像当年的大跃进一样,都想大步跨入***主义社会。现在的软件公司、客户、政府、学校、培训机构等等到处弥漫着浮躁之气。就拿我比较熟悉的大连大工IT职业培训来说吧,居然打广告宣称"20多年的计算机职业教育,辽宁省十佳学校",殊不知中国计算机发展才几年,软件发展才几年,居然去报名的学生不少,简直是藐视天下程序员。培训出来的“程序员”大多不知道OO,OP为何物?社会环境如是,我们不能改变,只能改变自己,闹市中的安宁,弥足珍贵。许多初学者C++/Java没开始学,立马使用VC/JBuilder,会使用VC/JBuilder开发一个Hello World程序,就忙不迭的向世界宣告,"我会软件开发了",简历上也大言不惭地写上"精通VC/Java"。结果到软件公司面试时要么被三两下打发走了,要么被驳的体无完肤,无地自容。到处碰壁之后才知道捧起《C++编程思想》《Java编程思想》仔细钻研,早知如此何必当初呀。 "你现在讲究简单方便,你以后的路就长了",好象也是佛经中的劝戒。 1.4 多实践,快实践 彭端淑的《为学一首示子侄》中有穷和尚与富和尚的故事。 从前,四川边境有两个和尚,一个贫穷,一个有钱。一天,穷和尚对富和尚说:"我打算去南海朝圣,你看怎么样?"富和尚说:"这里离南海有几千里远,你靠什么去呢?"穷和尚说:"我只要一个水钵,一个饭碗就够了。"富和尚为难地说:"几年前我就打算买条船去南海,可至今没去成,你还是别去吧!" 一年以后,富和尚还在为租赁船只筹钱,穷和尚却已经从南海朝圣回来了。 这个故事可解读为:任何事情,一旦考虑好了,就要马上上路,不要等到准备周全之后,再去干事情。假如事情准备考虑周全了再上路的话,别人恐怕捷足先登了。软件开发是一门工程学科,注重的就是实践,"君子动口不动手"对软件开发人员来讲根本就是错误的,他们提倡"动手至上",但别害怕,他们大多温文尔雅,没有暴力倾向,虽然有时候蓬头垢面的一副"比尔盖茨"样。有前辈高人认为,学习编程的秘诀是:编程、编程、再编程,笔者深表赞同。不仅要多实践,而且要快实践。我们在看书的时候,不要等到你完全理解了才动手敲代码,而是应该在看书的同时敲代码,程序运行的各种情况可以让你更快更牢固的掌握知识点。 1.5 多参考程序代码 程序代码是软件开发最重要的成果之一,其中渗透了程序员的思想与灵魂。许多人被《仙剑奇侠传》中凄美的爱情故事感动,悲剧的结局更有一种缺憾美。为什么要以悲剧结尾?据说是因为写《仙剑奇侠传》的程序员失恋而安排了这样的结局,他把自己的感觉融入到游戏中,却让众多的仙剑迷扼腕叹息。 多多参考代码例子,对Java而言有参考文献[4.3],有API类的源代码(JDK安装目录下的src.zip文件),也可以研究一些开源的软件或框架。 1.6 加强英文阅读能力 对学习编程来说,不要求英语, 但不能一点不会,。最起码像Java API文档(参考文献[4.4])这些东西还是要能看懂的,连猜带懵都可以;旁边再开启一个"金山词霸"。看多了就会越来越熟练。在学Java的同时学习英文,一箭双雕多好。另外好多软件需要到英文网站下载,你要能够找到它们,这些是最基本的要求。英语好对你学习有很大的帮助。口语好的话更有机会进入管理层,进而可以成为剥削程序员的"周扒皮"。 1.7 万不得已才请教别人 笔者在Martix与Java论坛的在线辅导系统中解决学生问题时发现,大部分的问题学生稍做思考就可以解决。请教别人之前,你应该先回答如下几个问题。 你是否在google中搜索了问题的解决办法? 你是否查看了Java API文档? 你是否查找过相关书籍? 你是否写代码测试过? 如果回答都是"是"的话,而且还没有找到解决办法,再问别人不迟。要知道独立思考的能力对你很重要。要知道程序员的时间是很宝贵的。 1.8 多读好书 书中自有颜如玉。比尔盖茨是一个饱读群书的人。虽然没有读完大学,但九岁的时候比尔盖茨就已经读完了所有的百科全书,所以他精通天文、历史、地理等等各类学科,可以说比尔?茨不仅是当今世界上金钱的首富,而且也可以称得上是知识的巨富。 笔者在给学生上课的时候经常会给他们推荐书籍,到后来学生实在忍无可忍开始抱怨,"天呐,这么多书到什么时候才能看完了","学软件开发,感觉上了贼船"。这时候,我的回答一般是,"别着急,什么时候带你们去看看我的书房,到现在每月花在技术书籍上的钱400元,这在软件开发人员之中还只能够算是中等的",学生当场晕倒。(注:这一部分学生是刚学软件开发的) 1.9 使用合适的工具 工欲善其事必先利其器。软件开发包含各种各样的活动,需求收集分析、建立用例模型、建立分析设计模型、编程实现、调试程序、自动化测试、持续集成等等,没有工具帮忙可以说是寸步难行。工具可以提高开发效率,使软件的质量更高BUG更少。组合称手的武器。到飞花摘叶皆可伤人的境界就很高了,无招胜有招,手中无剑心中有剑这样的境界几乎不可企及。 2.软件开发学习路线 两千多年的儒家思想孔孟之道,中庸的思想透入骨髓,既不冒进也不保守并非中庸之道,而是找寻学习软件开发的正确路线与规律。 从软件开发人员的生涯规划来讲,我们可以大致分为三个阶段,软件工程师→软件设计师→架构设计师或项目管理师。不想当元帅的士兵不是好士兵,不想当架构设计师或项目管理师的程序员也不是好的程序员。我们应该努力往上走。让我们先整理一下开发应用软件需要学习的主要技术。 A.基础理论知识,如操作系统、编译原理、数据结构与算法、计算机原理等,它们并非不重要。如不想成为计算机科学家的话,可以采取"用到的时候再来学"的原则。 B.一门编程语言,现在基本上都是面向对象的语言,Java/C++/C#等等。如果做WEB开发的话还要学习HTML/JavaScript等等。 C.一种方法学或者说思想,现在基本都是面向对象思想(OOA/OOD/设计模式)。由此而衍生的基于组件开发CBD/面向方面编程AOP等等。 D.一种关系型数据库,ORACLE/SqlServer/DB2/MySQL等等 E.一种提高生产率的IDE集成开发环境JBuilder/Eclipse/VS.NET等。 F.一种UML建模工具,用ROSE/VISIO/钢笔进行建模。 G.一种软件过程,RUP/XP/CMM等等,通过软件过程来组织软件开发的众多活动,使开发流程专业化规范化。当然还有其他的一些软件工程知识。 H.项目管理、体系结构、框架知识。 正确的路线应该是:B→C→E→F→G→H。 还需要补充几点: 1).对于A与C要补充的是,我们应该在实践中逐步领悟编程理论与编程思想。新技术虽然不断涌现,更新速度令人眼花燎乱雾里看花;但万变不离其宗,编程理论与编程思想的变化却很慢。掌握了编程理论与编程思想你就会有拨云见日之感。面向对象的思想在目前来讲是相当关键的,是强势技术之一,在上面需要多投入时间,给你的回报也会让你惊喜。 2).对于数据库来说是独立学习的,这个时机就由你来决定吧。 3).编程语言作为学习软件开发的主线,而其余的作为辅线。 4).软件工程师着重于B、C、E、D;软件设计师着重于B、C、E、D、F;架构设计师着重于C、F、H。 3.如何学习Java? 3.1 Java学习路线 3.1.1 基础语法及Java原理 基础语法和Java原理是地基,地基不牢靠,犹如沙地上建摩天大厦,是相当危险的。学习Java也是如此,必须要有扎实的基础,你才能在J2EE、J2ME领域游刃有余。参加SCJP(SUN公司认证的Java程序员)考试不失为一个好方法,原因之一是为了对得起你交的1200大洋考试费,你会更努力学习,原因之二是SCJP考试能够让你把基础打得很牢靠,它要求你跟JDK一样熟悉Java基础知识;但是你千万不要认为考过了SCJP就有多了不起,就能够获得软件公司的青睐,就能够获取高薪,这样的想法也是很危险的。获得"真正"的SCJP只能证明你的基础还过得去,但离实际开发还有很长的一段路要走。 3.1.2 OO思想的领悟 掌握了基础语法和Java程序运行原理后,我们就可以用Java语言实现面向对象的思想了。面向对象,是一种方法学;是独立于语言之外的编程思想;是CBD基于组件开发的基础;属于强势技术之一。当以后因工作需要转到别的面向对象语言的时候,你会感到特别的熟悉亲切,学起来像喝凉水这么简单。 使用面向对象的思想进行开发的基本过程是: ●调查收集需求。 ●建立用例模型。 ●从用例模型中识别分析类及类与类之间的静态动态关系,从而建立分析模型。 ●细化分析模型到设计模型。 ●用具体的技术去实现。 ●测试、部署、总结。 3.1.3 基本API的学习 进行软件开发的时候,并不是什么功能都需要我们去实现,也就是经典名言所说的"不需要重新发明轮子"。我们可以利用现成的类、组件、框架来搭建我们的应用,如SUN公司编写好了众多类实现一些底层功能,以及我们下载过来的JAR文件中包含的类,我们可以调用类中的方法来完成某些功能或继承它。那么这些类中究竟提供了哪些方法给我们使用?方法的参数个数及类型是?类的构造器需不需要参数?总不可能SUN公司的工程师打国际长途甚至飘洋过海来告诉你他编写的类该如何使用吧。他们只能提供文档给我们查看,Java DOC文档(参考文献4.4)就是这样的文档,它可以说是程序员与程序员交流的文档。 基本API指的是实现了一些底层功能的类,通用性较强的API,如字符串处理/输入输出等等。我们又把它成为类库。熟悉API的方法一是多查Java DOC文档(参考文献4.4),二是使用JBuilder/Eclipse等IDE的代码提示功能。 3.1.4 特定API的学习 Java介入的领域很广泛,不同的领域有不同的API,没有人熟悉所有的API,对一般人而言只是熟悉工作中要用到的API。如果你做界面开发,那么你需要学习Swing/AWT/SWT等API;如果你进行网络游戏开发,你需要深入了解网络API/多媒体API/2D3D等;如果你做WEB开发,就需要熟悉Servlet等API啦。总之,需要根据工作的需要或你的兴趣发展方向去选择学习特定的API。 3.1.5 开发工具的用法 在学习基础语法与基本的面向对象概念时,从锻炼语言熟练程度的角度考虑,我们推荐使用的工具是Editplus/JCreator+JDK,这时候不要急于上手JBuilder/Eclipse等集成开发环境,以免过于关注IDE的强大功能而分散对Java技术本身的注意力。过了这一阶段你就可以开始熟悉IDE了。 程序员日常工作包括很多活动,编辑、编译及构建、调试、单元测试、版本控制、维持模型与代码同步、文档的更新等等,几乎每一项活动都有专门的工具,如果独立使用这些工具的话,你将会很痛苦,你需要在堆满工具的任务栏上不断的切换,效率很低下,也很容易出错。在JBuilder、Eclipse等IDE中已经自动集成编辑器、编译器、调试器、单元测试工具JUnit、自动构建工具ANT、版本控制工具CVS、DOC文档生成与更新等等,甚至可以把UML建模工具也集成进去,又提供了丰富的向导帮助生成框架代码,让我们的开发变得更轻松。应该说IDE发展的趋势就是集成软件开发中要用到的几乎所有工具。 从开发效率的角度考虑,使用IDE是必经之路,也是从一个学生到一个职业程序员转变的里程碑。 Java开发使用的IDE主要有Eclipse、JBuilder、JDeveloper、NetBeans等几种;而Eclipse、JBuilder占有的市场份额是最大的。JBuilder在近几年来一直是Java集成开发环境中的霸主,它是由备受程序员尊敬的Borland公司开发,在硝烟弥漫的Java IDE大战中,以其快速的版本更新击败IBM的Visual Age for Java等而成就一番伟业。IBM在Visual Age for Java上已经无利可图之下,干脆将之贡献给开源社区,成为Eclipse的前身,真所谓"柳暗花明又一村"。浴火重生的Eclipse以其开放式的插件扩展机制、免费开源获得广大程序员(包括几乎所有的骨灰级程序员)的青睐,极具发展潜力。 3.1.6 学习软件工程 对小型项目而言,你可能认为软件工程没太大的必要。随着项目的复杂性越来越高,软件工程的必要性才会体现出来。参见"软件开发学习路线"小节。 3.2学习要点 确立的学习路线之后,我们还需要总结一下Java的学习要点,这些要点在前文多多少少提到过,只是笔者觉得这些地方特别要注意才对它们进行汇总,不要嫌我婆婆妈妈啊。 3.2.1勤查API文档 当程序员编写好某些类,觉得很有成就感,想把它贡献给各位苦难的同行。这时候你要使用"Javadoc"工具(包含在JDK中)生成标准的Java DOC文档,供同行使用。J2SE/J2EE/J2ME的DOC文档是程序员与程序员交流的工具,几乎人手一份,除了菜鸟之外。当需要某项功能的时候,你应该先查相应的DOC文档看看有没有现成的实现,有的话就不必劳神费心了直接用就可以了,找不到的时候才考虑自己实现。使用步骤一般如下: ●找特定的包,包一般根据功能组织。 ●找需要使用类,类命名规范的话我们由类的名字可猜出一二。 ●选择构造器,大多数使用类的方式是创建对象。 ●选择你需要的方法。 3.2.2 查书/google->写代码测试->查看源代码->请教别人 当我们遇到问题的时候该如何解决? 这时候不要急着问别人,太简单的问题,没经过思考的问题,别人会因此而瞧不起你。可以先找找书,到google中搜一下看看,绝大部分问题基本就解决了。而像"某些类/方法如何使用的问题",DOC文档就是答案。对某些知识点有疑惑是,写代码测试一下,会给你留下深刻的印象。而有的问题,你可能需要直接看API的源代码验证你的想法。万不得已才去请教别人。 3.2.3学习开源软件的设计思想 Java领域有许多源代码开放的工具、组件、框架,JUnit、ANT、Tomcat、Struts、Spring、Jive论坛、PetStore宠物店等等多如牛毛。这些可是前辈给我们留下的瑰宝呀。入宝山而空手归,你心甘吗?对这些工具、框架进行分析,领会其中的设计思想,有朝一日说不定你也能写一个XXX框架什么的,风光一把。分析开源软件其实是你提高技术、提高实战能力的便捷方法。 3.2.4 规范的重要性 没有规矩,不成方圆。这里的规范有两层含义。第一层含义是技术规范,多到http://www.jcp.org下载JSRXXX规范,多读规范,这是最权威准确最新的教材。第二层含义是编程规范,如果你使用了大量的独特算法,富有个性的变量及方法的命名方式;同时,没给程序作注释,以显示你的编程功底是多么的深厚。这样的代码别人看起来像天书,要理解谈何容易,更不用说维护了,必然会被无情地扫入垃圾堆。 3.2.5 不局限于Java 很不幸,很幸运,要学习的东西还有很多。不幸的是因为要学的东西太多且多变,没时间陪老婆家人或女朋友,导致身心疲惫,严重者甚至导致抑郁症。幸运的是别人要抢你饭碗绝非易事,他们或她们需要付出很多才能达成心愿。 Java不要孤立地去学习,需要综合学习数据结构、OOP、软件工程、UML、网络编程、数据库技术等知识,用横向纵向的比较联想的方式去学习会更有效。如学习Java集合的时候找数据结构的书看看;学JDBC的时候复习数据库技术;采取的依然是"需要的时候再学"的原则。 4.结束语 需要强调的是,学习软件开发确实有一定的难度,也很辛苦,需要付出很多努力,但千万不要半途而废。本文如果能对一直徘徊在Java神殿之外的朋友有所帮助的话,笔者也欣慰了。哈哈,怎么听起来老气横秋呀?没办法,在电脑的长期辐射之下,都快变成小老头了。最后奉劝各位程序员尤其是MM程序员,完成工作后赶快远离电脑,据《胡播乱报》报道,电脑辐射会在白皙的皮肤上面点缀一些小黑点,看起来鲜艳无比…… (文章提到的大连大工IT培训。本人没有任何攻击的意思)

    时间:2018-11-22 关键词: 软件开发

  • Atitit attilax提出的软件开发发展趋势与概念

    Atitit attilax提出的软件开发发展趋势与概念1. 长期化 复用化 跨平台 可移植性 12. 通用化 通用 化的渠道至少有3种 12.1. 模块化 12.2. 标准化接口 12.3. 改造将一种 经 过改造满足另一种 任务要求 加装部分模块 重构部分模块 12.4. 功能 经改进后 可由不同平台搭载,但仍完成同一种任务 13. 多功能化多任务 24. Dsl化可读性化 25. 小型化 26. 平台化 27. 系列化 梯队化 高中低档 2 1. 长期化 复用化 跨平台 可移植性不管是不是跨平台 可移植性,必须要复用性。。 2. 通用化 通用 化的渠道至少有3种2.1. 模块化2.2. 标准化接口2.3. 改造将一种 经 过改造满足另一种 任务要求 加装部分模块 重构部分模块2.4. 功能 经改进后 可由不同平台搭载,但仍完成同一种任务 经改进后,战斗力水平均产生了新的飞跃。 3. 组件化 模块化 快速组装化4.  多功能化多任务比如多个doa接口改为一个sql dsl接口。。实现多功能化。5. Dsl化可读性化6. 小型化7. 平台化8. 系列化 梯队化 高中低档 导弹发展需求与发展趋势分析_搜狐军事_搜狐网.mhtml

    时间:2018-10-11 关键词: 软件开发 atitit attilax

  • 软件开发中的资源管理

    软件开发中的资源管理

            前言:这是我在公司内部的一个培训,培训完之后特地整理成一篇文章。         应该说这是一个很大的题目,在这里我只是简单谈谈我的一些心得体会,不当之处,还请大家赐教。         要论述软件开发中资源处理,首先要明确软件开发中涉及到哪些资源。软件开发中涉及三方面的资源:人力资源、代码资源和文档资源。本文重点谈论如何管理代码资源和文档资源。          代码资源一般需要通过版本管理工具进行管理。为什么需要版本管理工具?一方面是因为现代软件开发是一个团队活动,是需要进行协作开发的;另一方面版本管理具有回溯历史版本的功能,在排错中具有重要意义。 那么一般常用的版本管理工具有哪些呢?在我刚参加工作时,使用的是微软出品的VSS 6.0。VSS 6.0的优点是简单,上手快,缺点是不适合复杂的协作开发环境,比如它不支持多人同时迁出同一个文件。当然后来微软对VSS 6.0做了升级,不过我没使用过比VSS6.0更高的版本。现在使用的是SVN。SVN是一个开源的集中式的源码版本管理工具,在IT界中广泛使用。现在广泛使用的还有Git。Git是一个开源的分布式的源码管理工具,在开源社区广泛使用。现在它在IT企业中也慢慢流行。 我最经常使用的SVN有四个操作:迁出(check out):将服务器的版本下载到本地作为一个副本。提交(commit):将本地修改的代码上传到服务器更新(update):下载服务器上最新代码到本地恢复(revert):将本地修改的代码还原到上一个版本          使用SVN常见的目录结构是怎样的?具体如下图:        从上图可以看到一个svn版本库下一般有三个目录:trunk、branches和tags。trunk很好理解,就是存放最新版本代码的目录。为什么会有branches和tags?就是说它们的作用是什么?branches作为存放分支版本的目录,主要起到一个试验的作用。比如当你试验一个新的绘图引擎,你在主干版本试验就不太合适。因为主干版本的代码是经常处在剧烈变动的状态,很可能导致试验无法进行,同时你编写试验代码也会影响其它人的代码。因此稳妥的办法是你复制一份主干版本到branches目录下作为一个分支来试验,待试验通过后再和主干版本进行代码合并。tags主要作用在于存放不作改动的比较稳定的历史版本。比如你要对外发布版本,你不可能编译最新代码来获取一个版本来对外发布,因为这个版本虽然是最新的,但肯定不是最稳定的,因为没有经过严格测试。因此你需要从tags目录下找一个稳定的历史版本来发布。 说完了自主代码的管理,我们再谈谈第三方库的管理。首先第一个问题是:为什么需要第三方库?第三方库的作用在于资源重用,减少开发时间。很多时候如果没有第三方库,要按时完成一个软件项目的开发是一件很困难的事情! 其次谈一下第三方库的种类。第三方库大致分为两种:商业第三方库和非商业的开源第三方库。其中商业第三方库又可以分为提供源码的商业第三方库和仅提供接口文件和库文件的商业第三方库。 如何选择第三方库?我的建议有以下几条:1.       优先选择开源第三方库。理由是:可以降低开发成本,同时利于定制。2.       在没有好的开源第三方库的情况下优先选择提供源码的第三方库。理由是方便定制。3.       优先选择成熟度高的第三方库。那么如何判断一个第三方库的成熟度?可以从以下方面考察:考察第三方库的更新频率,毫无疑问更新频率越高表示越活跃,也有利于其成熟;是否有活跃的交流社区,有表示成熟度更高;考察其在搜索引擎的搜索结果条数,条数越多表示越成熟。 如何利用第三方库?最基础是直接使用其提供的接口,高级一点是根据需要添加接口,同时修改它的bug。比较高级的是在剖析它的源码之后进行定制。比如淘宝对MySQL和hadoop的定制。 谈完了软件开发中代码管理,再谈谈软件开发中的文档管理。我们谈谈在软件开发中文档可以分为一下几类:1.       设计文档。如概要设计、详细设计2.       交流文档。如内部会议记录、和甲方的交流邮件3.       经验总结。如技术总结、开发中用到的电子书         文档在软件开发的作用其实是不亚于代码的,但是现实中开发人员往往对文档不够重视。其中一个重要原因是不少开发人员体会不到文档的作用。那么文档到底有什么用?在我看来至少有两方面作用:首先设计方面的文档本身就是甲方要求的,你不想写都不行;二是文档可以作用过程资产来共享。比如项目经理不可能每来一个新同事都通过口头来介绍项目情况(因为项目经理没有这个精力和时间),肯定是需要发一些文档来给他看,让他自己来学习。又比如开发人员离职,不通过文档又如何把工作顺利交接到同事手中呢? 文档也是经常变动的,因此它也是需要版本管理工具进行管理的。 最后我们看到一个版本数据库的目录可以是这样的:在trunk目录是这样的:在doc目录是这样的:

    时间:2018-10-11 关键词: 软件开发 资源管理

  • LabVIEW软件开发

    时间:2018-07-31 关键词: LabVIEW 软件开发

首页  上一页  1 2 3 4 5 下一页 尾页
发布文章

技术子站

更多

项目外包