大神进 详细的讲一下软件的开发步骤 谢谢

我想知道一个软件是怎么从设想到代码到UI最后发布的? 比如adobe系列
UI又是怎么和枯燥的代码结合的 也就是说鼠标点的按钮背后的意义是什么?
网页软件是怎么实现的? 比如google drive
我需要知道重点的节骨眼 也就是不为人知的瓶颈
不要说什么1.分析 2.设计 3.编码 4.测试 5.维护
问答网站就那么几个 这些套话谁都搜得到 复制党不要找骂 好伐?
我敬候大神!

2 个回答

简单的说一下当前多数大公司的产品开发流程。
一般来说,分析 、设计 、编码……这个过程现在看是有点过时了。
现在的软件开发是这样的:首先,要有一个想法、创意。然后,大家一起讨论是不是能够行的通,讨论如何盈利。接下来就是测试、UI、UE、编码等部门几乎同时进行。

这里一开始,UE要出用户操作界面的轮廓,UI要根据界面轮廓设计很酷的界面并切图、为程序员提供素材,程序员中的上层会写一个框架、划分功能、分配任务。
接下来,如果是web,前端要拿到素材开始写css+js,把呈现部分做好,后台要做数据库设计和数据访问接口。cs的就相对简单,程序员拿到素材开始美化界面,用图片替换界面控件原来的样式。
最后测试认为可以交付了,那么软件的第一个beta版本就算出炉了。

×××××××××××××××××××××分割线×××××××××××××××××××××××××××××××

按钮其实user Interface 的一部分,背后关联一个方法,用于实现用户与软件的交互。一般会用一张很像按钮的图片来替换按钮的背景。
按钮处有鼠标按下时,会产生一个消息,程序收到这个消息后会进行操作、处理,产生一些动作。

×××××××××××××××××××××分割线×××××××××××××××××××××××××××××××

关于google drive,这个其实是需要条件的,Web应用程序原则上是不允许直接访问本地的资源的。所以,google drive类的软件一般需要本地下载一个客户端来支持。

这种BS结构的程序跟CS结构的程序过程类似,只不过是原先收到消息后本地电脑进行处理操作改为远端服务器进行处理操作而已。

我尝试用你能理解的话来简单描述下你常见的两种程序的开发过程。

首先说下本地运行的软件,Adobe Photoshop 和 iPhone 上的 Angry Birds 都属于此类。现代的程序语言或框架都是将界面和代码分离开写的,比如说我要写一个计算器程序,那么我先要设计计算器程序的界面,设计草图如下:

image

设计软件界面通常都是拖拖拽拽,也有是直接用代码写的。你需要用代码写明我要放的是什么对象,是一个按钮还是一个文本框,再指定显示的位置,显示的样式等等。不管你是拖拽的,还是代码写的,最终都是要变成代码的。

画完界面以后,你就可以处理一些界面上的事件了。对于上面的计算器程序来说,我们要处理各个数字被按下去的事件,加减乘除被按下去的事件,清屏按钮被按下去的事件,等于按钮被按下去的事件等等。这些事情是我们要在代码里写清楚的,这就是程序的逻辑和算法。程序接收界面上发过来的输入,经过各种或繁或简的逻辑判断处理之后,再把运算结果输出到程序界面上去,即那个结果框。这样就完成了一个初步的程序开发。

当然了,事后你还是需要做非常多的工作的,比如测试程序可能存在的漏洞(附言:新闻上说的xx软件存在某些漏洞不是指程序代码写漏了。。。而是程序的逻辑或者算法存在问题)

Web程序虽然也和本地程序一样代码分离,但实际上却大有不同。网页的界面通常都是用代码写成,很少是直接拖拽,然后再用CSS来控制样式。比如我们写个略晓的提问页面,设计草稿如下:

image

我们首先用html写好页面上的元素,一个问题标题框,一个问题补充框,一个提交按钮,再用CSS把页面美化一下。这个页面是在用户的浏览器里呈现的,而用户在这个页面填写的数据要提交到我们的服务器上处理,所以你会发现网站的url总是变啊变啊变啊的。
(未完待续,等新版上线了我再回来补充哈)

你的回答