什么是软件开发

软件开发必须要会哪些方面的语言。一个优秀的软件开发工程师需要具备什么样的知识结构

 有人问我:“什么是软件开发?”。回答这个问题前,我们需要先理解什么是软件。
一、软件定义
  关于软件,一些优秀的人已经给出了简单易懂的定义,举个例子:
  软件是计算机系统的一部分,它适配各种不同用途的机器。例如,通过同一台计算机但不同的软件,我们可以玩游戏、计算缴税、写信或者写书,以及获得约会邀请的答复。
—— 杰拉尔德·温伯格
  这句话是作者解释给他的朋友的,他的朋友是一名电脑小白。
  有了上述定义,什么是软件开发也就显而易见。
  软件开发研究如何让运行在计算机里的不同系统解决人们在现实中遇到的问题。
  我们经常见到这样的句式,试图一句话就把事情讲得面面俱到。
  不妨简化一下。
  软件开发研究如何让计算机解决问题。
  目前看起来不错。
  倘若你听过“一切问题都是人的问题”这句话,并且愿意相信它,那我们就可以接着简化。
  软件开发解决人的问题。
  这个定义充满了敷衍的味道。如果你敢向你的女友这么解释,她大抵会提到“你是不不爱我了”。
  回到正题,它好在足够笼统,把所有的细节归纳为“人的问题”,一言以蔽之,至少不会有多大偏差。
  关于什么是“人的问题”,我们无法一一列举。但通过下面的例子,也许可以窥探到一些奥秘:早在 1995 年,有人便觉得软件开发要解决的问题陷入了困境。
  我们遇到了前所未有的困难,不知道在做出电子表格(Excel)后,计算机还可以用来做什么。
—— 查尔斯·西蒙尼
  从今天来看,这个观点颇失谦逊,软件行业从来没有止步于表格处理程序。当然,我们不是要批判什么,它是用来引出以下软件开发的三点特性。
  “人的问题”不可预料。
  世界在改变,人的需求也是一直变化的,我们不知道下一步会发生什么。值得一提的是,有时我们甚至不知道过去发生了什么。
  “人的问题”具有延续性。
  在 1977 年,人们开始用电子表格处理数据。在今天的办公自动化领域,电子表格仍具有着不可替代的作用。这是值得庆幸的,总有些问题和解决方案会持续很长一段时间。
  “人的问题”具有复杂性。
  尽管软件技术在当今的 IT 领域开花结果,人们探索出了各种各样的成型解决方案,但开发者和开发团队依旧面对着复杂的开发环境。
复杂性足够我们花费一整节的内容来阐述它,欢迎阅读下一节。
二、软件复杂性
   随手翻开一本介绍软件工程的书,你都会看到它会提及复杂性。软件复杂性的本质是,现实世界是无比复杂的。至于现实为什么是复杂的,不在本文讨论的范畴。本文更关心的问题是:
  是什么让软件变复杂的?
  我们在上文提到“软件是运行在计算机里的系统”,这里直接给出系统的一般定义:
  系统是对世界的一种观点。
  你可能一时无法接受这个它。
  换种说法,系统是对世界的一种抽象。
  抽象意味着要从繁复的具象世界里剥丝抽茧,不同的抽象就会产生不同的系统。
  观点或者说抽象可以简单也可以复杂。
  一个软件从无到有,越来越复杂,根本原因就在于特性不断增加和改变,不同角度会产生不同的观点。
  举个食品行业的例子。
  一家公司以独家配方生产一种食品,每个季度的销售额上涨 10%。
  管理层希望业绩进一步提高,具体到研究部门,目标是调制出更好吃的配方。
  研究团队计划每个月只改动一点点,一年过去了,不断地有顾客投诉食品不再是原来的味道了。
  公司董事决定开会。
  “我们生产的食品更好吃了吗?”
  “当然,我们的销售额增长达到了 30%。”
  “但是我们的顾客不这样说。”
  “他们只是不愿意改变!”
  再举个例子,打开你的手机,各类软件源源不断地弹出新闻资讯类消息。大部分软件工具成熟以后,不再愿意仅做好它的本职工作,当你使用一个小众 APP 时,你可以亲眼见证它从小而美到臃肿不堪的历程。
  这是复杂性的一面,面对它,我们唯一能够做的就是“不要多余的特性”,它有个经典表述:
  不要过早的考虑优化。
  回到上面的故事,也许那家公司什么也不做,销售额同样会上涨。
  你可能会质疑“说的轻巧,我们总不能什么都不做?”
  回答它,涉及到我们做出决定时绕不开的一个问题。
  你愿意付出什么样的代价?
  付出什么,就要准备好得到什么。你愿意付出多少薪资雇佣员工,你愿意增加多少特性,你愿意采用什么样的解决方案,你愿意为这个 Bug 留出多少工作量。
  拿出什么样的筹码,是真实摆在我们眼前的问题。
四、什么是软件开发
  现在,我们可以正式回答这个问题了。
  首先,“预料”对方真正的目的是什么?
  1. 对方只是随口一问。
  2. 对方想打探你的薪资,然后向你介绍相亲对象。
  3. 对方对软件行业这个话题感兴趣,并想深入了解更多。
  4. 其他可能性。
  对于醉翁之意不在酒,你翻开朋友圈,阅读一番《不得不看,职场新老手都有用的一百条话术!》,基本可以见招拆招了。
至于第三种情况,先给他来个含辞模糊的定义,比如
  软件开发通过设计、编码、测试以及持续地维护解决人的需求。
  一般地,对方发现自己听得云里雾里后,就会识趣的停止这个话题。但也有可能,尤其是碰到其他领域的工程师时,会引出更为具体的问题。
  不幸的是,有时候问题根本就不存在,正如下面的寥寥数语,它会让你所有准备好的说辞付之流水。  
  “工作忙吗?”
  “还行。”
  “每天都干啥?”
  “主要是写代码。”
  “不懂,听说挺累的。”
  “有时候是累,工作不都这样么。”
  “嘿,说的也是。”
希望对您有所帮助!~
温馨提示:内容为网友见解,仅供参考
第1个回答  2006-01-12
1) 掌握数据表示、算术和逻辑运算;
(2) 掌握相关的应用数学、离散数学的基础知识;
(3) 掌握计算机体系结构以及各主要部件的性能和基本工作原理;
(4) 掌握操作系统、程序设计语言的基础知识,了解编译程序的基本知识;
(5) 熟练掌握常用数据结构和常用算法;
(6) 熟悉数据库、网络和多媒体的基础知识;
(7) 掌握C程序设计语言,以及C++、Java、Visual、Basic、Visual C++中的一种程序设计语言;
(8) 熟悉软件工程、软件过程改进和软件开发项目管理的基础知识;
(9) 熟悉掌握软件设计的方法和技术;
(10) 掌握常用信息技术标准、安全性,以及有关法律、法规的基本知识;
(11) 了解信息化、计算机应用的基础知识;
(12) 正确阅读和理解计算机领域的英文资料。
没有个1年2年是不可能成为一个优秀的软件开发工程师的!!!!!!!!本回答被网友采纳
第2个回答  2021-06-17
软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程。软件开发是一项包括需求捕捉、需求分析、设计、实现和测试的系统工程。软件一般是用某种程序设计语言来实现的。通常采用软件开发工具可以进行开发。软件分为系统软件和应用软件,并不只是包括可以在计算机上运行的程序,与这些程序相关的文件一般也被认为是软件的一部分。 软件设计思路和方法的一般过程,包括设计软件的功能和实现的算法和方法、软件的总体结构设计和模块设计、编程和调试、程序联调和测试,然后进行编写再提交程序
第3个回答  2021-08-24
一、从行业上划分,软件开发有以下:
1、手机
Mac OS(苹果的),Linux,Palm(最大特色是不能后台),BlackBerry(黑莓)Windows Phone(WP,不错的系统,)
Android(安卓,07年兴起的,很好的系统),还有几个新系统,三星与intel联合开发的tizen,Mozilla 公司的FireFox OS ,N900的maemo。
2、电脑
企业管理软件,如:如MES系统软件、OA系统软件、CRM系统软件、HR系统软件、ERP系统软件合同。
二、从设计领域划分,包括以下领域:
1、 桌面程序:Java、C++、C#、VB、C均可。
2、网站服务器端开发:JSP(Java语法)、PHP、ASP(C#语法)、Web App框架等
3、网站客户端:HTML、CSS、Javascript、Flash等等
4、 智能手机程序:安卓使用Java,iPhone使用Objective-C
5、底层、工具开发:C、C++
6、多功能脚本程序:Python、Perl、Ruby等等
7.、人工智能:Prolog、PDDL
第4个回答  2020-02-18
我们现在的社会是个信息发达的时代,计算机已经普级的在世界的每一个角落,那么软件开发当然就不能落后了,软件主要用在计算机领域,现在开发的软件是无所不在的,举个例子,比如一个大型的连锁机构用什么方法来沟通,总部如何获取这么多家分支机构的信息呢,
难到还是用抄抄写写吗,还是用邮递的方式吗,那显然不能够跟上现在的需求了,所以这里就用到了软件开发啊,他们公司会有一个专门的数据库系统,通过我们了解的因特网上传下载的,或是用现的的Emal发电子邮件的方式,同样这样的系统,也是通过软件开发出来的,还有有同我们日常生常相关的方便快捷的系统,大部份都是用软件开发出来的,所以啊!软件开发在这个时代是无所不在的。

什么是软件开发?
软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程。软件开发是一项包括需求捕捉、需求分析、设计、实现和测试的系统工程。软件一般是用某种程序设计语言来实现的。通常采用软件开发工具可以进行开发。软件分为系统软件和应用软件,并不只是包括可以在计算机上运行的程序,与这些程序相关的文件一般...

什么是软件开发?
软件就是我们生活中常使用的app安装软件、超市的收银系统、电脑系统中安装的执行文件等,软件开发就是开发这些软件的一个技术,用不同的开发语言呈现出来。1.编程接口就是对于某种逻辑写的一定规范的数据格式,就是宿主程序跟 Lu通讯用的一组 C 函数。 所有的 API 函数按相关的类型以及常量都声明在头文...

什么是软件开发?
软件开发是指通过设计、编码、测试和调试等一系列过程,创建和维护计算机程序的过程。它是将软件需求转化为实际可运行的软件应用的过程。软件开发涉及到多个阶段,包括以下关键步骤:1.需求分析:-确定用户的需求和期望,明确软件项目的功能、性能要求和约束条件。2.设计:-制定软件的整体结构和各个模块的详...

软件开发是什么?
软件开发就是根据用户要求建造出软件系统或者系统中的软件部分的过程。一般是用某种程序设计语言来实现的软件开发的,像Java、Python、2C和C++等都是软件开发的需要的编程语言。看到那么多编程语言,同学又就开始犯嘀咕,这么多,到底学什么?今天听人说Java不错,想学;明天听人说Python前景广,想学;为...

软件开发是什么意思 软件开发的意义是什么
软件开发是指依据用户需求,通过捕捉需求、进行需求分析、设计、实现以及测试等一系列步骤,创造出软件系统或系统中的软件部分的过程。这项系统工程涵盖了软件开发的所有关键阶段,从设计软件的功能和实现算法,到具体的编程与调试,再到程序联调测试,以及最终的文档编写和提交。软件开发工具的使用大大提升了...

什么是软件开发?
什么是软件开发?软件开发是指通过使用计算机编程语言、工具和技术,按照特定的需求和目标,设计、创建、测试和维护计算机程序和系统的过程。其目的是生成高质量、可靠、可维护且满足用户需求的软件产品。软件开发过程通常包括以下主要阶段:1. 需求分析:在这一阶段,开发团队与客户或系统最终用户协作,明确...

什么是软件开发?
软件开发是指通过一系列的过程、方法和工具,将计算机程序设计的概念转化为实际可运行的软件产品的过程。软件开发旨在满足特定的需求,解决特定的问题或提供特定的服务。该过程涵盖了从需求分析到设计、编码、测试、部署和维护的全生命周期活动。软件开发的主要阶段包括:1.需求分析:确定软件的功能、性能和...

什么是软件开发?
软件开发是指通过设计、编码、测试和维护的一系列过程,创建和改进计算机程序的过程。这些程序可以是应用软件、系统软件、移动应用、网站、游戏等,以满足特定需求或解决特定问题。软件开发的过程通常包括以下阶段:1.需求分析:明确定义软件的功能、性能要求和用户需求。这一阶段涉及与客户和利益相关者的沟通,...

什么是软件开发?
软件开发是指通过使用一系列计算机编程语言、工具和技术,按照特定的需求和规范,设计、编写、测试和维护计算机程序的过程。这一过程旨在创建能够在计算机或其他设备上运行的软件应用程序。软件开发的主要目标是产生高质量、可靠且符合用户需求的软件产品。这涉及到多个阶段,包括需求分析、系统设计、编码、测试、...

什么是软件开发?
软件开发中,客户和开发人员都有自己的基本权利和义务。客户:定义每个用户需求的商业优先级;制订总体计划,包括用多少投资、经过多长时间、达到什么目的;在项目开发过程中的每个工作周,都能让投资获得最大的收益;通过重复运行所指定的功能测试,准确地掌握项目进展情况;能随时改变需求、功能或优先级,同时避免昂...

相似回答