软件开发的核心技术

原创 2015年07月09日 16:39:36

《编程导论(Java)·0.1.5 问题求解》

程序员采用编程语言编写源代码的活动——编程常常概括成问题求解(problem solving)

待解决的问题可大可小,而问题的解决方案正好需要计算机的参与。因此将编程活动称为问题求解,将计算机科学视为问题求解的科学。

问题的大小主要反映在代码量和软件开发参与者的数量上。

实际问题可以是:

²       打印乘法99表;

²       求50000的阶乘;

²       建立一种新的大型网络游戏平台;

²       开发一个具有学生注册、班级课程录入、学生成绩查询……功能的学生成绩管理系统;

²       管理企业各种资源,如人力资源、仓库、资金等等

²      建设数字化医院,构建面向区域的医疗信息共享与协同平台、以电子病历为核心的临床信息系统……

对于小项目的软件开发或小规模编程(programming-in-the-small ),通常具有以下特点:(1) 代码由一个或几个程序员编写,每个程序员都能够了解项目的全部细节。(2)项目可能是独立的项目,也可能是大项目的一部分,但任务明确,开发的主要目的是编写清晰而有效的代码。

对于大项目或大规模编程(programming-in-the-large),具有以下特点:(1)需要一个大型开发团队,组成人员包括项目经理、软件体系架构师、需求分析员、软件设计师、界面设计人员、测试人员、程序员等等,没有一个人能够了解整个系统的所有细节。(2)开发的对象是一个复杂的系统,开发工作的首要问题是开发团队的有效交流与沟通、关注软件的可复用性和可维护性。

问题的大小使得软件开发的方法学上存在巨大的差别。通常将大规模编程称为系统开发,如开发大型管理信息系统、各种系统软件;将小规模编程称为(狭义的)问题求解,此时关注求解问题所需的所有详尽的步骤/操作,而对详尽步骤的描述,称为算法。

因此计算机软件开发的核心技术有二:

★程序的组织(面向对象技术)、问题求解(算法)。

许多C程序员,拥有较扎实的底层技术,但是在强调算法和数据结构、系统编程(阅读《Windows核心编程》、《Unix编程艺术》等)的同时,倾向于贬低程序组织的重要性;

一些Java/C#程序员,研究设计模式、框架,可能忽视了对操作系统原理,编译原理、算法等底层知识的时间投入。还有一些搞Java web开发的,可能对底层更加不感冒。

我在这里将程序组织和问题求解,作为软件开发的核心技术的简略概括,希望读者不要受某些偏执狂的影响,至少在大学阶段,你要能上能下——从宏观上认识程序组织,从细节上认识(侠义的)问题求解。工作后,按照自己的情况,再去加强某些方面——毕竟时间有限。

在讲授C语言的时候,我也会按照“程序组织”这个主题,展开#include、函数(结构化编程、接口与实现分离)的内容;

另外,请大家注意,“现在,假设该程序非常庞大,需要多个人合作,分别编写is3X(int)、isInclude5(int)和foo(int)....”,在类似的文字中,提醒读者,虽然我们书上的例子,只有一个输出语句,但是它代表的是,比如说一千多行的代码!

我曾经看见过某个大牛讽刺OO的狂热份子,用多层的类+模式来完成一个简单的工作。baby,例子能不简化吗?说大炮打蚊子,倒是可以。所以,在11.1 说明中,我也再次强调了程序组织的重要性,提醒这是一个好的实践的机会。



相关文章推荐

银行核心系统软件开发技术终极总结

将题目命名为“终极总结”,是因为我很清楚,我这一辈子都几乎不可能再去开发银行核心系统了。   从商业价值的角度来说,银行核心系统并没有多么广阔的商业前景!而对于我而言,钱景远比前景重要的多,而技术更...
  • billdai
  • billdai
  • 2011年09月07日 17:21
  • 11887

asp.net IIS7 503错误

服务器发布的网站,出现大面积503错误,七八个网站挂了。检查程序池是否关闭(不管主动还是被动,先跑起来再说)再检查服务器状态,再检查日志,最后查看网络状态(一般不会遇到网络攻击)...

C#实现IIS的启动、停止、重启

using System.Diagnostics; using System.ServiceProcess; ServiceController sc = new ServiceController(...

对话:中国软件能不能找到自己的核心技术

  对话:中国软件能不能找到自己的核心技术 2002-12-13 17:08 /(《程序员》)  ---------------------------------------------------...
  • junecau
  • junecau
  • 2011年07月02日 18:44
  • 907

网络采集软件核心技术剖析系列(2)---如何使用C#语言获得任意站点博文的正文及标题

一 本系列随笔概览及产生的背景 本系列开篇受到大家的热烈欢迎,这对博主是莫大的鼓励,此为本系列第二篇,希望大家继续支持,为我继续写作提供动力。 自己开发的豆约翰博客备份专家软件工具问世3年...

CTI硬件设备提供商与软件开发商的核心技术的发展

业务的创新、新技术的融合是一个公司未来发展的根基。什么是CTI核心技术?处于CTI产业链不同位置的公司,所理解核心技术是完全不一样、不同时期的核心技术也不完全相同。在CTI的产业链中,上游厂商包括硬件...

对话:中国软件能不能找到自己的核心技术

对话:中国软件能不能找到自己的核心技术 分类: 软件行业 软件之外 2011-07-02 18:44 12人阅读 评论(0) 收藏 举报    对话:中国软件能不能...

解析江民杀毒软件反病毒核心技术

江民公司从80年代末就开始进行计算机反病毒技术研究,在与计算机病毒的斗争中,江民公司先后研发成功“智能广谱杀毒技术”、“比特动态滤毒技术”、“内存杀毒技术”、“深层杀毒技术”等十余种领先的反病毒技术。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:软件开发的核心技术
举报原因:
原因补充:

(最多只允许输入30个字)