dollon 发表于 2024-1-7 00:31:17

如何从零开始做软件开发?

身处传统设计院,主要负责数字化设计研发和应用,之前涉及到的开发都是负责需求编制,软件开发工作由第三方负责。因为近期效益不好,要求所有的软件开发工作都自主完成。现实情况是,团队所有成员都是工程专业出身,基本不具备软件开发能力。按照自主开发的目标,团队选择了C#和Python作为编程语言,已启动了基本概念的学习,团队负责人也开始从软件设计出发开展了软件开发的学习。但是现在对预期很迷茫,不知道2.3年后能够达到什么目标。同题,想请问比较适用的从零开始做软件开发的学习和实施建议,万分感激。

zpgzs 发表于 2024-1-7 00:31:54

http://picx.zhimg.com/v2-c522c6a724b774e60947c5619c12bb1a_r.jpg?source=1def8aca
“这里是云端源想IT培训,帮你轻松拿offer”
嗨~ 今天的你过得还好吗?
又到周三了
希望你可以做颗星星
有棱有角
还会闪闪发光!
- 2023.03.15 -

每个程序员都有其不同的创造力,有的人自认为是上帝的宠儿,却忘了良好的软件系统不可能缺少团队合作的力量。一个良好的软件项目就像是一个生态系统,生产者、消费者、分解者,每一个环节都不可或缺,只有整个生态分工协作,才能打造健康、可拓展、可持续的软件系统。
今天就带大家了解一个软件项目的生命周期是怎样的,不同程序员担任的角色与分工是怎样的?

http://pica.zhimg.com/50/v2-d3f690f3268f7a196dd88fedf9b9a439_720w.gif?source=1def8aca
一、什么是软件项目开发周期?

软件开发周期,也叫软件开发流程,系统开发流程。软件开发周期可以保证系统从需求分析,系统设计,开发实现,再到发布,部署生产的整个流程中顺利进行。

http://pic1.zhimg.com/v2-58585677c2b63ffc55dbf1211eb373db_r.jpg?source=1def8aca
由于各行各业的需求都具有个性化,单一的解决方案也不能适用于各个行业的实际。因此,在拥有不同的行业背景和需求的企业中,现代软件开发流程在怎样描述、组织和管理工作上不会有太多的偏差。
现代软件开发流程,主要具有以下几个模型:

[*]流水线模型
[*]可迭代的模型
[*]敏捷的模型
[*]快速的模型
一个系统的开发流程(SDLC)主要包括:设计,开发,维护,迭代,修改,测试,发布等步骤,但总结起来其实主要有以下五个步骤:计划,设计,开发,测试,部署。

http://picx.zhimg.com/v2-255e6cf6bc82dcf10dd93092c22671bf_r.jpg?source=1def8aca
1.计划

商业计划书是项目发起人最初的想法,这时,整个项目的前景和边界已经被定义了出来。团队的高层充分研究了在经济、可操作、技术领域上的可行性。并且在策划阶段,质量保证和风险评估也被准备好,以降低任何不可预测的风险。商业论证文档应该在这一阶段准备好,总结归纳所有的想法,并对计划有一个宏观的把控。

http://pica.zhimg.com/v2-d09c94ba104e2fc8f4f51e8ac852d555_r.jpg?source=1def8aca
这类似于商业计划——BP。科研工程项目可能在工程和科研上都有所侧重,但是每个项目具体的侧重点也不尽相同。假如在项目成立之初,项目定位的时候不够清晰,会导致后边做计划时出现诸如:开发侧重点,功能实现及页面设计上的问题。

http://pic1.zhimg.com/v2-598cc96c21f521d7d0a8c7753da77488_r.jpg?source=1def8aca
所以,根据甲方的一些要求和资源,制定清晰的、可操作的、可行的计划是非常重要的。若是项目初期的功能需求文档没有清晰的定位,加之甲方自己没有一个准确的模型,将会导致后边出现推倒重来的惨剧。
2.设计

产品设计需要以清晰明确的需求为前提,软件需求说明文档应当包含需求的所有细节,并且在产品设计之前应该征得用户和客户的同意。

http://pic1.zhimg.com/v2-5e918acb2bad0a8780dca691e627dfb6_r.jpg?source=1def8aca
根据需求说明文档,将会有很多的产品设计架构被提出来,这些将会被团队的中层成员写成设计说明文档,并且得到团队的高层及项目股东的评审。设计说明文档将会基于一些标准进行评估,这些标准包括但不限于预算、时间、用户友好性,风险性、集成度等。
从整个系统的生命周期来看的话,甲方随时添加删除需求是经常发生的事,但做到整体架构的统一也是最初设计必须做到的。

http://pic1.zhimg.com/v2-80d95b41f719d795cdc0223ac03757b8_r.jpg?source=1def8aca
系统设计的过程中,本着分层和模块化的原则,可以比较清晰的描述出整个系统运行的逻辑。系统的每个子模块要实现什么功能,这些子模块在前端显示如何,后台的逻辑实现如何,数据库如何设计,这些都应该在这个阶段加以考虑的。
3. 开发

在得到最后的设计说明文档后,实施阶段立刻开始被执行,程序员开始根据项目的设计说明文档开发软件。公司应该提供统一的开发工具,以保证所有的程序开发人员可以并行的工作。在技术层面上,软件开发人员应该编写系统功能说明书 以记录系统提供的所有功能。

http://picx.zhimg.com/v2-61af4b88cde12146315df8e0ebb42c3d_r.jpg?source=1def8aca
在开发前统一操作环境是非常必要的,企业内部都会有自己的标准,这会大大提高企业开发效率,避免因冲突引起的时间浪费。
4. 测试

软件测试应该被视为一个子阶段,并且应该在所有阶段中被执行。对项目中完成的每个功能都会进行全面的测试,包括:自测、功能单元测试、小组之间互相测试、项目内部功能联测、用户真实测试等,在测试过程中会对功能问题进行不断的完善。最终,质量控制专家从体系结构,安全性,与其他系统的集成等各个方面对软件进行整体检查。

http://picx.zhimg.com/v2-a22315c87babd72d63582976b5a61ac4_r.jpg?source=1def8aca
功能测试是程序开发人员经常做的事情,功能测试工作会贯穿程序开发的始终。用户测试也是非常重要的,系统最终是要给用户去用,用户习惯与开发人员的习惯不同,所以他们的测试就很值得借鉴,这样可以提高我们系统的可用性。
5. 部署

部署前应确保所有的测试环节已通过,并且软件系统已经能够正确地成功运行,最后决定是否应该将软件部署在生产环境中。部署计划应该清晰明确,并且获得批准实施。

http://picx.zhimg.com/v2-7740d682dc9a1dc33a2671da42e086b8_r.jpg?source=1def8aca
安装手册,管理手册,用户手册等都应该编写完整。技术团队应该准备好回答涉及软件系统所有的问题。根据最终的软件系统,编写好应急预案 ,对于新部署的软件来说,通用的应急解决方案是后置软件发布日期并且要重新进行测试。对于已经上线的软件来说,很有可能会回滚到以前的版本中,后置发布时间,并且解决已经发现的缺陷。

http://picx.zhimg.com/v2-4bf31fbeb07cdf46dcaa258effba23b8_r.jpg?source=1def8aca
现在Java的WEB项目部署起来还是比较简单的,但是在部署前,应该做好充分的准备,各种突发情况的紧急处理,部署失败后的回滚等都需要被充分考虑。
二、为什么需要软件开发周期?

知道了软件开发周期,我们再来说说,一个项目为啥需要软件开发周期?下面小编总结了三个原因:
1、 质量保证和质量控制

质量保证(Quality Assurance)是在产品的开发过程中一系列的确保产品质量的活动。与此同时,质量控制(Quality Control)是在产品开发完成后,一系列的确保质量的活动。

http://picx.zhimg.com/v2-fd46f7253a24d6307268d7f2278e71a0_r.jpg?source=1def8aca
QA是保证产品在开发的过程中防止出现缺陷,QC是识别在已经开发完成的产品中的缺陷。QA的目标是尽可能地消除软件缺陷,以此来提高QC这一步操作。QC目标是识别在QA环节中遗漏的缺陷。因此,在QA主动的质量处理和QC响应式的质量处理下,可以保证发布的产品可以达到一个高标准,而且不会带来意想不到的问题。
2、更容易地实现控制

在软件开发周期的5个核心的步骤中,有许多的文档需要编写,应准备多份文档,为程序员和测试人员提供指导和说明。

http://picx.zhimg.com/v2-fd81a69eeeefaffeecf8ff2368f2c36a_r.jpg?source=1def8aca
比如:

[*]Business Case; 商业论证
[*]Software Requirement Specification(SRS); 软件需求说明
[*]Design Document Specification(DDS); 设计文档
[*]Functional Specification; 功能说明
[*]Test Plan; 测试计划
[*]Deployment Plan; 部署计划
在这些文档的帮助下,将不会有一些意外发生。用户需求将会得到满足,另外,项目进度也会符合项目的计划。
3、满足用户的需求,甚至超出用户的期望

质量保证和质量控制可以保证产品按照用户的需求那样进行发布,但是,用户在将来应用系统的过程中,由于技术的迭代和商业环境的变化,非常有可能会增加系统的功能。


http://picx.zhimg.com/50/v2-336d643aab7e2c024e9c4109e6ce3e43_720w.gif?source=1def8aca
因此在设计阶段,设计师不仅应该给出用户需求的解决方案,同时也应该考虑到系统的灵活性、可用性,以及由于系统用户的增加带来的最大系统负载问题等。这些隐藏的需求,通常不会出现在用户需求中,但是他们希望每一个产品都是经过深思熟虑的。
三、一个软件开发项目中有哪些角色?

为了有效的完成上面所提到的软件开发周期中的五个阶段,三类关键成员应该总是参与到项目中。
他们的活动占据了整个项目95%的项目周期,在不同的阶段担任着不同的角色,来检查和监控其他人的工作以确保在整个项目周期中,做出的每一个决定都是合规和必要的。

http://pica.zhimg.com/v2-319a12bf73c179c34dc76a186f7011a4_r.jpg?source=1def8aca
这三类关键成员分别是项目经理、商业分析/系统分析人员和程序开发者/方案开发者,他们在整个项目中负责的内容如下:
01项目经理

[*]定义项目的范围和目标
[*]预算控制
[*]资源分配
[*]业务文档
[*]协调项目高层管理
[*]推出和批准
02商业分析/系统分析

[*]在产品实现期间,与终端用户进行交流
[*]业务和系统文档
[*]评估业务需求
[*]设计系统架构,业务流程和用户界面
[*]确保业务需求被正确的分析以及方案的正确实施
[*]确保商业和技术角色之间关系
[*]质量评估和控制
03程序开发者/方案开发者

[*]结实业务需求,并将商业需求转换成可部署的解决方案
[*]技术研究
[*]解决产品缺陷
[*]准备功能规范
[*]按照约定的策略进行测试

今天的分享就到这里了,想了解更多前端知识,记得常来看我!


http://pic1.zhimg.com/50/v2-151d82183c3765ee5196736decaff383_720w.gif?source=1def8aca

我们下期再见!
END
文案编辑|云端学长
文案配图|云端学长
内容由:云端源想分享


http://pic1.zhimg.com/v2-958a6aafc09ec4c4324f248442d9f150_r.jpg?source=1def8aca

zichuan 发表于 2024-1-7 00:32:05

由于对软件工程一窍不通,这两天整理了下软件工程类的书籍,大概有14本,感觉要读完这些书完全是天方夜谈

http://pica.zhimg.com/50/v2-a91d55ef67e41047d77f33c4e05e75bd_720w.jpg?source=1def8aca
页: [1]
查看完整版本: 如何从零开始做软件开发?