谈谈我对软件开发 可行性分析 等9个流程的理解[上]

本文介绍了从可行性分析到项目维护的九个关键步骤,包括需求分析、架构设计、详细设计、编码实现、测试、验收、部署及维护等内容,旨在为项目开发提供全面的指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

郑重声明:本文纯属Fans同学的个人见解,仅供参考,欢迎拍砖。 作为一 名尚未毕业的大学生,
Fans同学经验和能力暂时有限,本文很多地方值得商榷,还望多多见谅。
 
1.可行性分析
主要是对一个项目是否进行做出决定,一般由公司高层来决定,这种决策对公司尤其是创业公司至关重要。方向搞错了,执行力再强也没用。
想创业的同学,这个问题定要多多思考哦。
可行性分析可能包括但不限于以下几个步骤:市场调研、技术难度、盈利能力等 诸多方面。
a. 市场调研:对市场做一些具体的调查,主要对一些问题做出回答,比如市场是否有对项目的切实需求、市场中是否已经有公司或组织在做、是否符合法律法规。
b. 技术难度:公司是否有技术实现这个项目,其中技术人才是一个重要因素。

c. 盈利能力:能给公司或者组织带来多大的收入。

有的时候,是不需要考虑盈利能力的,比如第一次给其它公司做项目,只要成功
了,今后自然还有项目再做。 或者,这是一个公司内部的项目,主要是为了减少成本的。(我们也可称之为盈利 的)
思考:很多时候,探讨一个项目是否值得做,价值不大。因为你只有去做了,可能是做 了3年,
才发现这个项目有前景或者不值得做。不过Fans同学仍然认为,思考是有必要的。
 
2.需求分析
可行性分析中探讨市场需求时,这时的需求很可能是一个比较大而抽象的需求 ,需要在需求分析阶段细化需求。需求往往是很多的,而不是一个原子需求。

需求分类:功能需求、界面需求、性能需求。
a.功能需求:描述系统的功能,一般来说会细化成一个个的小功能,小到开发人员能够实现。
每一个小功能通常都有一个编号,比如F000001.
b.界面需求:打个比喻,系统的功能好比人的内涵,需要一些时间才能理解。
系统的界面好比人的外貌,长得美帅很可能立即吸引一批人。
举几个界面需求的小例子,整体界面布局,色彩,字体大小。
这类需求往往会有一个解决方案:系统皮肤。
c.性能需求:描述系统的性能,比如页面的响应时间,同时响应的请求数等。
d.稳定性需求:7*24*365不停运作,商业重要项目中会有此要求;
每个月有一次或几次维护,在网游行业非常常见。
e.安全性需求: 保护系统内部数据不外泄等安全方面的需求,比如用户的帐号和密码, 个人其它隐私信息。
f.其它需求:...
思考:时间或者进度是需求么?

3.架构设计
架构设计是从技术角度对系统进行一个全方位的规划,通常着眼于全局,而非局 部细节。
没有最好的架构,架构都是根据需求来做的。架构通常都会有架构师参与

包括但不限于以下几种事项:
a.选择项目开发所使用的技术,可能包括编程语言,数据库,框架或类库或平台。
b.定义系统技术基础,比如分布式平台的规划和部署、数据的流转等。
c.将系统划分为不同的模块,定义模块与系统技术基础之间的关系。
d.定义模块之间的接口或通信或者交互。一个系统通常会包含很多个模块,分模块 开发体现了一种
分而治之的思想方法。定义模块之间的接口方便后期不同模块的整 合。

4.详细设计
详细设计是将架构设计进一步细化,通常会比较细致,一方面方便开发人员具体 开发,
另一方便于项目经理跟踪项目进度。

详细设计通常由开发人员来制定,可能会有以下任务:
a.模块内部的设计,大概怎么做得有个全局的思考,可能会书写详细设计文档。
b.完成自己的模块功能,通常会严格参照需求文档或者功能列表文档。

c.与其它模块的交互

5.编码实现
(*^__^*) 终于写到编程啦,好开心啊!
一般来说,初级程序员编程时,对需求、架构、设计没有深入的考虑,也不是很 有必要。老师布置了
一个任务,或者自己想要做个小项目,通常在内心都有一些考 虑,然后就开始敲代码了。
生产环境下开发,急于编码是个大忌,有经验的人通常会认可此种观点。
原因分析:
a.需求变化的概率是非常大的,根据确定的需求编码往往不能适应变化。
b.即使需求不变,急于编码很容易考虑不周,结果往往是只实现了功能,却导致了性能差、逻辑不清、冗余代码多等种种问题。
比如,同一个功能,为了用户的方便,可能会有好几种操作界面,后台的功能实现既相似又有不同,急于编码非常容易导致代码冗余和混乱,维护起来非常费劲。尤其是在这次实习做项目中。o(︶︿︶)o
c.一旦编码有了一定的进展,对大多数人来说,就失去了重新开始的勇气
有的时候,重新开始写优于重构,尤其是在需求或者设计发生变化时。
 
6.测试
根据需求和功能列表,写测试用例,然后测试系统。
根据Fans现在的经验来看,人工测试占了很大一部分。比如为了测试用户名和密 码,手动输入 用户名和密码,且考虑到正确性和合法性等诸多情况,这样为了测 试一个功能,往往会有很多个测试用例。时间久了,会让人感到厌烦和疲惫。

对于想在测试道路走下去的人,做个测试开发工程师、测试经理还是有挑战的。
Fans认为,有较好的开发能力对于测试是非常有帮助的,具体就不再说了吧。
对测试有兴趣的,可以参考我的日志。

7.验收
根据当初的项目计划或者产品计划,也可能是结合需求文档,来检查当前项目是否完全完成了当初的计划。
验收过程可能会和前面几个流程有些重复的地方,我的理解是9个流程之间存在一条 主线:项目开发和维护。
验收的过程会涉及到很多事项,具体有哪些事项,可以"身临其境"来想。
比如大虾您手里现在有个项目,项目的具体内容已经定义好了,您把这个项目交给了Fans团队来做,
Fans团队经过3个月的奋战终于做好了,现在项目等着您来验收,您该如何做呢?(*^__^*)

打个广告,今后有了项目,不要忘了Fans团队啊!(*^__^*) @Fans.Lei 2012-5-3

8.部署
项目计划是振奋人心的,
需求分析是细致入微的,
架构设计是运筹帷幄的,
详细设计是指导方针的,
编码过程是艰苦卓绝的,
测试过程是精挑细选的,
验收过程是中规中矩的,
部署过程是春种秋收的
维护过程是精心呵护的。
 
9.维护

a.保证现有软件持续正常运行
常见例子:
①服务器由于负荷太大,挂掉了,需要立即重启;
②网游为了保证系统稳定运行,每过一段有几个小时的维护时间。
③系统越来越慢,需要诊断原因,网络带宽问题还是内存泄漏还是CPU不够用。
b.二次开发
常见例子:
①百度有海量的搜索请求,分析下搜索请求,挖掘一些信息,比如浏览器的市场
份额情况、统计热搜词。
(侧重于数据)
②使用系统API,做一些其它方面的功能。(侧重于功能)
c.系统升级
常见例子:
①QQ空间由5.0升级到6.0,公司内部做好开发,普通用户没有多大的影响。
如果想升级,点击一下按钮-升级到6.0,就可以了。
②天龙八部由2.0升级到3.0,客户端需要下载很多新的组件,然后更新,最后重
新启动。
以上介绍的只是一些概念上的流程,很多地方都是Fans同学的个人揣摩和猜测。
实际过程中的开发流程,各式各样,按照自己所在公司的流程来开发才是最合适的
1 可行性研究报告   可行性研究报告的编写目的是:说明该软件开发项目的实现在技术、经济和社会条件方面的可行性;评述为了合理地达到开发目标而可能先择的各种方案;说明论证所选定的方案。 可行性研究报告的编写内容要求如下: 1.1 引言   1.1.1 编写目的   1.1.2 背景   1.1.3 定义   1.1.4 参考资料 1.2 可行性研究的前提   1.2.1 要求   1.2.2 目标   1.2.3 条件、假定和限制   1.2.4 进行可行性研究的方法   1.2.5 评价尺度 1.3 对现有系统的分析   1.3.1 数据流程和处理流程   1.3.2 工作负荷   1.3.3 费用开支   1.3.4 人员   1.3.5 设备   1.3.6 局限性 1.4 所建议的系统   1.4.1 对所建议系统的说明   1.4.2 数据流程各处理流程   1.4.3 改进之处   1.4.4 影响   1.4.4.1 对象设备的影响   1.4.4.2 对软件的影响   1.4.4.3 对用户单位机构的影响   1.4.4.4 对系统动行的影响   1.4.4.5 对开发的影响   1.4.4.6 对地点和设施的影响   1.4.4.7 对经费开支的影响   1.4.5 局限性   1.4.6 技术条件方面的可行性 1.5 可选择其他系统方案   1.5.1 可选择的系统方案1   1.5.2 可选择的系统方案2 1.6 投资及收益分析   1.6.1 支出   1.6.1.1 基本建设投资
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值