软件开发的概念有哪些
来源:广州软件开发 编辑:广州软件开发公司 日期:2020-03-06
1. 界面(Interfaces)
软件工程中最重要的概念是界面。任何软件都是一个真实体系的模型。怎么运用简略的用户界面进行模型化至关重要。许多软件体系走这
样的极端,缺乏笼统的冗长代码,或许过火规划而导致无谓的复杂。
在许多软件工程书籍中,Robert Martin 写的《敏捷编程》值得一读。
关于模型化,以下办法对你会有帮助。首先,去掉那些只要在将来才或许用得着的办法,代码越精练越好。第二,不要总以为以前的东西
是对的,要长于改动。第三,要有耐性并享用进程。
2. 常规与模板 (Conventions and Templates)
命名常规和根底模板在编程形式中常被忽视,但是它或许是最强大的办法。命名常规使软件自动化成为或许,如,Java Beans 框架在 getter
和 setter 办法中,运用简略的命名常规。hovertree.com 网站的 URL 命名也运用一致的格式,如 http://hovertree.com/menu/java/ 会将用户
带到一切标签为 software 的页。
许多社会网络均运用简略命名,如,你的名字是 johnsmith ,那你的头像或许命名为 johnsmith.jpg,而你的 rss 聚合文件的命名很或许是
johnsmith.xml 。
命名常规还用于单元测试,如,JUnit 单元测试工具会辨认一切以 test 最初的类。
咱们这儿说的模板(templates )指的并不是 C++ 或 Java 言语中的 constructs,咱们说的是一些包含变量的模板文件,用户能够替换变量并输
出最终成果。
Cold Fusion 是最先运用模板的程序之一,后来,Java 运用 JSP 实现模板功能。Apache 近来为 Java 开发了非常好用的通用模板, Velocity。
PHP 本身便是根据模板的,由于它支撑 eval 函数。
3. 分层 (Layering)
用分层来讨论软件架构是最简单的。John Lakos 曾出书过一本关于大型 C++ 体系的书。Lakos 以为软件包含了层,书中介绍了层的概念,方
法是,对每个软件组件,数一下它所依托的组件数目就能够知道它的复杂程度。
Lakos 以为,一个好的软件具有金字塔结构,便是说,软件组件具有层层堆集的复杂度,但每个组件本身有必要简略,一个优异的软件包含许多
小的,可重复运用的模块,每个模块有自己的责任。一个好的体系中,组件之间的依托性不行穿插,整个体系是各式各样的组件堆积起来,
构成一个金字塔。
Lakos 在软件工程的许多方面都是前驱,最著名的是 Refactoring (代码重构)。代码重构指的是,在编程进程中需求不断地对代码进行改造以保
证其结构的健壮与灵活。
4. 算法的复杂性 (Algorithmic Complexity)
关于算法的复杂性,软件工程师需求了解这样几件事。第一,大O标记法(big O notation);第二,你永远都不应该运用嵌套式循环(循环里边套循
环),你应该运用 Hash 表,数组或单一循环;第三,现在优异类库比比皆是,咱们不用过火羁绊于这些库的效能的差别,咱们以后还有时机进行
细调;最后,不要忽视算法的优雅及功能,编写紧凑的,可读的代码能够让你的算法更简略,更干净。
5. 散列法(Hashing)
Hashing 的意图是加快拜访速度。假如数据是序列存储的,从中查询一个项的时刻取决于数据列的巨细。而散列法对每一个项核算一个数字作为
索引,在一个好的 Hashing 算法下,数据查找的速度是相同的。
除了存储数据,散列法对散布式体系也很重要。一致散列法(uniform hash )用来在云数据库环境下,在不同核算机之间分存数据。Google 的索引
服务便是这种办法的体现,每一个 URL 都被散列散布到特定核算机。
散列函数非常复杂,但现代类库中都有现成的类,重要的是,怎么对散列法进行细调以获得最好的功能。
6. 缓存(Caching)
缓存对现代 Web 程序不行或缺,缓存是从数据库取回,并存放在内存中的数据。由于数据库直接存取的价值非常高,将数据从数据库取回并放在
缓存中拜访就变得十分必要。比方,你有一个网站,要显现上周的畅销书,你能够从数据将畅销书榜一次性取回放在缓存中,而不用在每次拜访
时都去数据库读数据。
缓存需求价值,只要最常用的内容才能够放入缓存。许多现代程序,包含 Facebook,依托一种叫做 Memcached 的散布式缓存体系,该体系是
Brad Firzpatrick 在作业于 LiveJournal 项目时开发的,Memcached 运用网络中闲暇的内存资源建立缓存机制,Memcached 类库在许多盛行编程语
言,包含 Java 和 PHP 中都有。
7. 并发 (Concurrency)
并发是软件工程师最简单犯错的地方,这能够了解,由于咱们一直遵照线形思维,但是并发在现代体系中非常重要。
并发是程序中的并行处理,多数现代编程言语包含内置的并发才能,在 Java,指的是线程。关于并发,最经典的比如是“生产/消费”形式,生产方生
产数据和任务,并放入作业线程消费或履行。并发的复杂性在于,线程需求经常拜访一起数据,每个线程都有自己的履行次序,但需求拜访一起数
据。Doug Lea 曾写过一个最复杂的并发类,现在是 core Java 的一部分。
8. 云核算 (Cloud Computing)
RWW 最近的关于云核算的文章 Reaching For The Sky Through Compute Clouds 讲到了云核算怎么改动大规划 Web 运用的发布。大规划的并行,
低成本,与快速投入市场。
并行算法发明以来,首先迎来的是网格核算,网格核算是借助闲暇的桌面核算机资源进行并行核算。最著名的比如是 Berkley 大学的 SETI@home 计
划,该计划运用闲暇的 CPU 资源剖析太空数据。金融机构也大规划施行网格核算进行风险剖析。闲暇的资源,加上 J2EE 平台的兴起,迎来了云计
算的概念:运用服务虚拟化。便是运用按需运转,并能够跟着时刻和用户规划而实时改动。
云核算最生动的比如是 Amazon 的 Web 服务,一组能够经过 API 进行调用的运用,如云服务(EC2),一个用来存储大型媒体文件的数据库(S3),索引
服务(SimpleDB),序列服务(SQS)。
9. 安全 (Security)
跟着黑客的兴起与数据敏感性的上升,安全变得非常重要。安满是个广义的概念,涉及验证,授权与信息传输。
验证是对用户的身份进行检查,如要求用户输入暗码。验证一般需求结合 SSL (secure socket layer)进行;授权在公司事务体系中非常重要,尤其是一些
作业流体系。最近开发的 OAuth 协议能够帮助 Web 服务将相应信息向相运用户敞开。Flickr 便运用这种方法办理私人照片和数据的拜访权限。
另外一个安全领域是网络设防,这联系到操作体系,装备与监控。不仅网络危险重重,任何软件都是。Firefox 被称为最安全的浏览器,仍然需求一再
发布安全补丁。要为你的体系编写安全代码就需求明白各种潜在的问题。
10. 联系数据库 (Relational Databases)
联系数据库由于在大规划 Web 服务上缺乏可扩充性而颇受微词,但是,联系数据库仍然是近20年来核算机技能中最巨大的成就。联系数据库对处理订
单,公司数据方面有着超卓的体现。
联系数据库的核心是以记载表明数据,记载存放在数据库表,数据库运用查询言语(SQL)对数据进行查找与查询,一起,数据库对各个数据表进行关联。
数据库的标准化技能(normalization)讲的是运用正确的方法对数据进行分存以降低冗余,并加快存取速度。
相关阅读