开发软件应该考虑哪些方面?
软件是一个系统工程,业内有软件工程。软件工程也是每个学校计算机系统的必修课。开发软件应该考虑哪些方面?我们将介绍它软件工程描述了一些概念和元素。
同时,作为企业、客户或个人,在软件开发中,除了软件工程外,还需要考虑相关的软件工程资源。这里的资源包括人、预算、费用、时间等。而且这些包含在内,就涉及到了项目管理的范畴。
接下来我就走 从软件工程和项目管理的角度来描述软件开发需要注意的方面。
从软件工程的角度来看,软件开发包括早期的需求分析、系统设计和详细设计,然后进入我们通常认为的编码实施阶段,然后进行测试和培训,并在线交付。最后,还有一个不容忽视的阶段,那就是系统维护阶段。
- 需求分析阶段:通常采取面试(interview),workshop,调查表等多种方式,由资深应用/业务顾问提供 (Application Consultant/Business Consultant),了解和确认客户的需求。初始阶段的需求分析非常重要,稍有偏差,就会有损失毫厘米、谬误千里的风险。我相信大多数程序员朋友都经历过变化,尤其是在项目的后期。当你的代码一遍又一遍地测试时,你的自信几乎没有bug。这时,leader告诉你,对不起,变化来了。你所做的应该改成这样或那样 : ( 。当然,项目前期需求收集,分析阶段存在很大的不确定性,所以我强调需要有自己的应用/业务顾问来检查。当然,有些变化是不可避免的。
- 系统设计:需求分析好了,需要做Solution 此时Solutiondesign Architect进场(资深方案架构师)。如果你想在后期轻松实施编码,在系统设计阶段,如果有资深大牛检查后面的日子会好很多。包括系统的基本处理过程、组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和错误处理设计等。有时需要使用新技术,但也需要进行快速的新技术研究。在当今技术蓬勃发展的时代,有时客户的需求必须使用新技术,这可能是整个团队以前从未接触过的。此时,架构师需要进行全面检查。通常会有技术天赋的团队成员进行技术可行性研究。
- 详细设计:在系统设计阶段完成了大框架结构和技术方向。确定后,对每个模块进行详细设计。良好的详细设计文档包含模块中的所有用例(use case)逻辑处理和涉及逻辑处理的算法。这部分文档通常需要高级程序员编写。如果你写了一份好的文件,以后的学生会很放松。
- 编码实施:如果前面的详细设计做得很好,那么在这个阶段就相对容易了。但对程序员的基本技能仍然有很大的要求。另一点是,你自己的单元测试必须做得很好。
- 测试培训:这个阶段实际上分为两个小阶段。一个是测试,另一个是对用户的培训。测试包括集合测试、压力测试等,最后是UAT(User Acceptance Test)。如果没有问题,选择好日子在线。用户培训环节非常重要,不容忽视,直接关系到最终用户对整个系统的接受程度。一般选择种子用户先进行功能培训,并与种子用户一起对所有用户进行整个软件的使用培训。
- 交付上线:这么多阶段都完成了,所有的测试都通过了,上线是否一帆风顺。呵呵,根据作者的经验,不一定。网上或多或少都有一些飞蛾。新系统上线还不错。对于旧系统的升级,如果系统相当大,国内一般只能在国庆/春节进行。为什么,有7天的假期,也就是说,用户有7天的时间不使用系统,如果在这7天的过程中出现问题,就不会影响用户的操作。但如果7天不能上线,对不起,只能退休,等待下一个7天的假期。
- 维护:该庆祝了,一般软件公司上线后都有庆功会。庆祝后,别忘了软件系统的维护。首先,任何系统都不能保证没有bug。其次,对于实际应用,对于复杂的系统,每天产生的数据量巨大,需要相关的监控和相应的性能。用户使用一段时间后,会发现一些问题也会产生一些需求。因此,软件系统的维护也很重要。
说了这么多,从软件工程的角度来看,也提到了高级架构师、高级顾问、良好的详细设计等。这些都是资源,需要为之奋斗,如果不能为之奋斗,对不起,项目经理会有多难。
接下来,从软件开发项目的角度出发,从项目管理的角度出发,需要注意什么。
在项目管理方面,我使用PMP系统进行描述。作者之前通过了PMP认证,认为PMP系统在整个项目管理过程中也是有效的。PMP涉及项目范围管理、时间管理、成本管理、质量管理、人力资源管理、沟通管理、风险管理、采购管理、相关人员管理等。我将在这里描述软件开发的几个特别重要的环节。
- 时间管理:做软件开发,会有schedule,什么时候开始,什么时候结束。那么这里的进度计划就显得尤为重要。必须在规定的时间交付。
- 成本管理:无论是今天的公司、客户还是独立自然人,资源和时间都是有限的,能够投资于软件开发的资源也是有限的。如何在给定的资源中完成软件开发是项目经理的要求。很有可能我上面提到的高级顾问、高级架构师项目经理根本不能提供,或者公司不能提供。此时,我们必须找到另一种方法。
- 风险管理:对早期的风险识别,以及相应的定性、定量分析,制定应对计划,从而实现风险控制。
- 实施整体变更控制:大多数项目都会改变,软件开发也不例外。作者对此非常有经验。对变更的控制也是项目经理面临的一项具有挑战性的任务。
考虑到以上,整个软件开发基本不会有大问题。
如需进一步沟通,请留言或私信。
开发一个应用程序有多难?
电子商务应用程序曾经为整个市场开发,专注于个性化商品市场。当然,应用程序属于本地开发,不使用Flutter,React Native等方案。
该应用程序集成、百度、高德地图、微信、支付宝支付、阿里云等。包括购买商品的整个过程(选择商品、订单、付款、交付、退货);上下货架、二维码扫描、置顶等功能。
此类应用程序的研发人员包括前端、后台和移动终端(Android和IOS),共有11名测试人员。开发在三个月内完成,并迭代到2.0版本。我们开发的应用程序和整个购物中心支持每月数百万笔交易的流量。
综上所述,开发一款面向整个市场的应用,并不难。开发iOS 应用需要学习,Objective-C,Swift。Android学习Java。而学习系统SDK,属于开发和应用的基本技能。其次,如果使用支付、地图、声音播放等功能,系统有相关API提供,也有许多优秀、完整的第三方库;需要使用相关API,或在此功能的基础上扩展,以满足业务需求。所以「开发就像构建积木,组装每个功能和模块」。
小规模自用或自娱自乐的应用。与面向市场的功能相比,功能要少得多,应用稳定性和鲁棒性也会大大降低。开发起来会更容易。
赠送玫瑰,手留余香~
不知道别人难不难。我可以在7天内开发一个工具应用程序。一个人完成。开发了十几个app。目前每天广告收入和会员收入加起来有3000+[笑][笑][笑][笑]。
我通常会回答一些常见的问题:
我是怎么实现这么高的收入的?
App里的广告从何而来?
有人真的会买会员吗?
app发布到市场后,没人用怎么办?
个人开发者有前途吗?
app都是红海,还能赚钱吗?
怎么合作?
应用程序如何盈利?
今年你有信心实现200万的目标吗?
我不知道该怎么办。
如何规避风险?
如何提高应用程序的保留率?
什么是个人数据锁定?
这个日常生活的收入是多少?
一个人做安卓和后端吗?
个人开发者能否将其应用于市场?
你是怎么推广的?
你做了什么样的应用?
欢迎交流。