[IT技术] 如何从零开始做软件开发?

[复制链接]
dollon 发表于 2024-1-7 00:31:17|来自:北京 | 显示全部楼层 |阅读模式
身处传统设计院,主要负责数字化设计研发和应用,之前涉及到的开发都是负责需求编制,软件开发工作由第三方负责。因为近期效益不好,要求所有的软件开发工作都自主完成。现实情况是,团队所有成员都是工程专业出身,基本不具备软件开发能力。按照自主开发的目标,团队选择了C#和Python作为编程语言,已启动了基本概念的学习,团队负责人也开始从软件设计出发开展了软件开发的学习。但是现在对预期很迷茫,不知道2.3年后能够达到什么目标。同题,想请问比较适用的从零开始做软件开发的学习和实施建议,万分感激。
全部回复2 显示全部楼层
zpgzs 发表于 2024-1-7 00:31:54|来自:北京 | 显示全部楼层

“这里是云端源想IT培训,帮你轻松拿offer”
嗨~ 今天的你过得还好吗?
又到周三了
希望你可以做颗星星
有棱有角
还会闪闪发光!
- 2023.03.15 -

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


一、什么是软件项目开发周期?

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


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

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


1.计划

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


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


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

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


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


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

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


在开发前统一操作环境是非常必要的,企业内部都会有自己的标准,这会大大提高企业开发效率,避免因冲突引起的时间浪费。
4. 测试

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


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

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


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


现在Java的WEB项目部署起来还是比较简单的,但是在部署前,应该做好充分的准备,各种突发情况的紧急处理,部署失败后的回滚等都需要被充分考虑。
二、为什么需要软件开发周期?

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

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


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

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


比如:

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

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



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

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


这三类关键成员分别是项目经理、商业分析/系统分析人员和程序开发者/方案开发者,他们在整个项目中负责的内容如下:
01项目经理

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

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

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

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




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


zichuan 发表于 2024-1-7 00:32:05|来自:北京 | 显示全部楼层
由于对软件工程一窍不通,这两天整理了下软件工程类的书籍,大概有14本,感觉要读完这些书完全是天方夜谈

快速回帖

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则