一个软件是如何开发出来的呢?
一、前言如今AI大爆发的时代作为一名IT从业者你是否也想尝试开发一套自己的系统实现那些看似有可能实现的天马行空的想法变成一个优秀甚至伟大的产品甚至带来某个行业的革新那作为一名非开发人员你是不是一样也很想知道一个系统从想法到产品是如何一步步实现的呢本文基于此进行探究为有想法的人提供借鉴参考。二、软件开放全流程2.1需求沟通开始搭建系统之前首先需要明确系统的需求。那就要求我们首先应根据客户/自己公司提出的目标和功能了解用户或客户的需求、系统的功能和特点等收集并整理需求信息形成需求文档需求文档应该详细描述系统的各项功能、性能要求、用户界面设计等为后续的系统设计提供基础梳理出适合的开发模式提供一份《产品功能需求逻辑图》并给出需要的时间和费用。产出物产品功能需求逻辑图、预估时间预估费用。2.2需求确认和合同在确认功能需求、时间、费用三方面都没有问题之后签署合同细节与服务商进行沟通客户付完首付款项目开发工作正式启动周期给予客户进度反馈。产出物产品功能需求列表确认版合同2.3设计阶段系统设计阶段涉及多个方面系统架构设计要确定系统的整体结构和各个组件之间的关系确保系统的稳定性和可扩展性。数据库设计要合理规划数据库结构确保数据的存储和访问效率。界面设计要关注用户体验设计简洁、易用的界面。1、原型设计由产品经理设计原型图采用Axure或者Figma设计工具设计根据功能需求列表绘制页面框架线稿图。2、UI设计原型图设计完成后由设计师绘制UI界面会给出高保真系统界面设计图。3、数据库设计项目技术经理设计根据功能需求列表设计数据库模型设计表、关联关系等。其中要重视索引的引入什么时候建索引建什么样的索引索引编码前、统一建表时把索引设定好确认好写代码时围绕着这些索引去写查询条件。但注意索引并不是越多越好应坚持够用越少越好数据归档数据量大的表可以做归档查询sql查数据时别用 select * 请指定要查哪些字段少用用 select count() 浪费性能慎用 limit用主键判断再配合 limit 使用尤其类似 limit 100000000,10 这样系统会直接卡死性能非常差。查询时间范围时尽量带上默认时间范围 不要在循环里查数据库。这性能特别差;善用事务应考虑必要用事务来保证数据一致性尽量减少出现脏数据错误数据的情况。但事务设置不合理会容易死锁。读写分离访问量一多必须考虑读写分离一主多从。数据库的压力就会降下来。但一定要注意更新数据后又查询时如果时时性要求高自己注意这是否会查主库如果不会请自己指定去主库查询。比如采集到商品数据后丢入队列进行一些额外处理队列里判断数据是否存在如果不存在就返回false这就会有问题。一般的ORM的底层有自动处理好同一事务里会自动连接主库。Thinkphp的框架还有个配置 read_master 写入操作之后的读数据库会自动去主库读取。这是个很好的功能。分库分表如果短时间之内会有大量数据或者不能做数据归档。可以使用分表甚至分库。4、架构设计项目技术经理对设计整体的系统分层架构便于以后再次扩展功能。产出物原型设计文档、UI设计图、数据库设计文档缓存缓存key的长度尽量减短缓存的内容尽量减短并使用压缩必须设置过期时间。否则内存会有爆的一天。不能过期不能随时清除的缓存请在后端代码里自行维护。避免在同一时间大量key过期。你可以根据业务情况随机过期时间。注意避免缓存穿透。数据库无值时别一直查库。请先判断是否存在此key注意热点KEY的问题。如何发现热点KEY提供几个方案代码访问时封装一个统一入口、用redis提供的命令。解决方案提供几个方案人工拆分、主从节点key、二级缓存。 不要在循环里查缓存。这性能也挺差。频繁请求的接口请使用websocket进行推送。 请不要使用前端ajax轮询请用websocket推送Nginx单节点的QPS能达到10万左右。使用HTTP 2.0可以大大提升性能。2.4开发阶段该阶段需要根据前面的系统设计选择合适的编程语言和开发框架编写系统各个组件的代码。在编程实现过程中要注重代码的可读性、可维护性和可扩展性。同时要遵循编码规范确保代码的质量和稳定性。目前主流的开发方式是前后端分离开发模式优点效率高易扩展。1、前端开发前端开发工程师负责根据原型设计图及UI设计图开始编写前端代码用代码实现设计图中的功能界面交互动效等等内容。当一个页面信息元素比较多时你可以先加载主要数据后加载次要数据。复杂的交互可以拆分成两步甚至多步。2、后端开发后端开发工程师负责根据原型设计图、UI设计图数据库文档编写后端代码用代码实现业务逻辑接口如请求参数请求方法数据库持久化数据返回等等内容。复杂数据能在代码里计算就在代码里计算。从数据库仅取出简单数据然后用代码进行计算别直接用sql语句去数据库里处理。该用锁的地方要用锁。比如定时将任务丢入队列如果队列里其中一个任务卡住了这个时候会依然持续不断的丢入新的任务到队列里这样会把队列撑爆。3、前后端对接前端和后端人员分别同时开发互不影响等到双方都写好功能以后就可以进行联调了根据后端开发编写的请求接口文档前端开始进行代码功能对接并在其中不断修改和优化接口代码。产出物系统API接口文档2.5测试阶段测试是确保系统质量和稳定性的重要环节。测试包括单元测试、集成测试、系统测试等多个阶段。单元测试主要测试各个组件的功能和性能集成测试测试各个组件之间的协作和交互系统测试测试整个系统的功能和性能。在测试过程中要及时发现并修复问题确保系统的稳定性和可用性。测试工程师应按阶段设计《测试用例》未测试通过的需要反馈给开发人员进行调整开发人员修改代码提交测试测试通过会在测试结果报告中打钩确认。产出物软件测试报告保证每个接口在本地测试时的耗时在100ms以内。及时性要求不高的任务特别是耗时任务请用队列; 减少http接口的数量。这样可以减少你的各种连接数;2.6软件上线1、操作培训/指导会给用户提供一份详尽的系统/产品操作文档协助用户使用软件。2、试运营试运营中可能会存在一些问题可以在正式上线前优化解决掉。另外在完成测试后应该已经开始对系统进行优化。优化包括性能优化、用户体验优化等多个方面。性能优化主要关注系统的运行速度和资源消耗通过优化算法和数据结构等方式提高系统性能。用户体验优化关注系统的易用性和美观性通过改进界面设计、优化操作流程等方式提升用户体验。3、正式上线系统部署到正式环境开始正常运行进入日常维护阶段。七、售后维护为非功能性的需求提供一定的技术支持。三、案例集经验3.1、APP开发上线流程1定方向/需求/范围列功能清单。先想清楚APP做什么用是商城、服务预约、工具还是社区砍掉花哨功能只保留核心刚需比如工具类APP保留核心功能用户中心商城类保留商品展示支付订单把每个功能写在纸上避免中途乱加需求。2选开发工具新手优先用低代码开发平台比如安卓开发者平台、跨平台低代码工具无需手写复杂代码拖拽组件即可搭建页面提前注册开发者账号安卓、苹果准备好营业执照、logo、资质材料为后期上架做准备。3画原型做页面设计。先在纸上画草稿规划每个页面的布局比如首页、功能页、个人中心再用低代码平台拖拽组件设置页面跳转逻辑调整配色、字体 保证界面简洁易懂不用追求过度设计好用比好看更重要。4配置功能对接接口。根据功能清单开启对应模块注册登录开启短信验证、支付对接微信支付宝、消息推送配置推送参数按照平台教程一步步设置不懂的地方查阅官方文档确保每个功能都能正常触发。5全方位测试排查问题。用不同品牌、系统版本的手机测试点击每个按钮、试用每个功能检查是否卡顿、闪退、报错测试数据提交、支付、跳转是否正常把发现的问题逐一修复直到无bug运行。6打包上架正式上线。将测试无误的APP打包生成安装包整理资料提交到应用商店等待审核审核期间配置服务器搭建后台管理系统 审核通过后APP即可正式下载使用后续做好日常维护和功能优化。3.2、前端项目从0到1搭建开发思路先搭架子再填内容 - 从基础的React应用开始一层一层构建组件 → 页面 → 路由 → 状态管理每完成一个功能就在浏览器中验证测试驱动可用性循序渐进 - 从简单的静态页面到复杂的交互功能关注设计采用组件化架构: 页面由可复用的组件构成关注数据流: 父组件流向子组件状态管理: 使用Context或第三方库管理全局状态响应式设计: 适配不同设备和屏幕尺寸。第1步项目初始化 创建项目目录规划项目结构your-frontend-project/├── public/ # 静态资源│ ├── index.html # HTML模板│ └── favicon.ico # 网站图标├── src/ # 源代码│ ├── components/ # 可复用的UI组件如按钮、输入框、卡片等│ ├── pages/ # 页面级组件对应不同的路由│ ├── hooks/ # 自定义React Hook封装业务逻辑│ ├── contexts/ # React Context,全局状态管理│ ├── services/ # API服务,API调用和数据处理│ ├── utils/ # 通用工具函数│ ├── types/ # TypeScript类型定义│ ├── styles/ # 样式文件│ └── assets/ # 静态资源├── package.json # 项目配置└── tsconfig.json # TypeScript配第2步安装项目依赖安装生产依赖、开发依赖、技术栈选项确认验证常见技术栈– React TypeScriptReact - 组件化开发生态丰富TypeScript 类型安全减少运行时错误表单处理: React Hook Form Yup– Material-UI谷歌Material Design设计规范组件丰富开箱即用响应式设计适配移动端– React RouterReact官方推荐的路由解决方案支持嵌套路由、动态路由– Zustand轻量级状态管理库API简单无需复杂配置前端框架: React TypeScript– HTTP客户端: Axios– 富文本编辑: TinyMCE构建工具: Create React App第3步配置开发环境编写更新package.json的脚本创建Prettier配置文件定义创建环境变量第4步创建基础类型定义创建通用类型第5步创建API 服务层创建HTTP客户端配置创建认证服务创建主服务第6步创建全局状态管理创建认证状态管理第7步创建基础组件创建布局组件、主布局组件、页脚组件第8步创建认证页面创建登录页面、注册页面第9步创建首页和主功能页创建首页组件、创建功能详情页面第10步配置路由系统创建路由配置、路由保护组件第11步创建样式和主题创建全局样式更新主入口文件第12步启动和测试启动开发服务器核对准备功能测试清单最后优化和部署性能优化构建生产版本部署配置四、工具4.1、免费低代码平台优先选开源社区版私有化部署、本地服务器跑核心功能永久免费适合运维 / 后端场景1敲敲云JeecgBoot 出品推荐免费策略开源社区版永久免费商用不限用户、不限应用Docker 一键私有化部署核心能力表单、审批流程、数据仪表盘、权限管理支持 PC/H5 / 移动端内置 AI 生成应用可对接达梦、MySQL、PostgreSQL适用OA、CRM、进销存、数据填报、业务管理系统国内中文文档完善缺点需要简单运维维护服务器没有厂商商业技术支持社区支持2 MyApps 天翎低代码社区版免费策略社区版永久免费私有化部署可商用核心能力老牌国产低代码强大工作流、表单、数据报表、外部 API 对接支持信创数据库适用复杂审批业务、政务 / 企业流程类系统缺点高级审计、多租户高级功能在企业版社区版无官方售后3 JVS 低代码社区开源版免费策略社区版开源免费私有化企业版收费核心能力表单、流程、大屏、API 网关、数据模型支持对接国产数据库适用中小企业内部业务系统支持自定义代码扩展4Appsmith开源免费Apache2.0 协议Docker 部署快速做后台面板、数据看板可连接 MySQL、Postgres、REST 接口支持 JS 自定义逻辑适合运维后台、数据查询面板、API 管理工具不擅长复杂业务审批流5Budibase开源社区版自托管免费可视化表单、表格、自动化可外接数据库适合内部管理工具、简单审批6百度秒哒Saas版AI 原生无代码免费版可以快速搭建 Web 应用AI 生成页面支持自定义域名私有化部署版有社区免费方案敏感业务不推荐4.2、app开发工具1uni-appuni-app 是一个使用 Vue.js 开发所有前端应用的框架由 DCloud 公司于 2018 年发布的跨端开发框架开发者编写一套代码可发布到iOS、Android、鸿蒙Next、Web响应式、以及各种小程序微信/支付宝/百度/抖音/飞书/QQ/快手/钉钉/淘宝/京东/小红书、快应用、鸿蒙元服务等多个平台。2Android StudioOneNet平台Android Studio 是谷歌推出的一个Android集成开发工具基于IntelliJ IDEA. 类似 Eclipse ADTAndroid Studio 提供了集成的 Android 开发工具用于开发和调试。更多参看Android Studio官方文档、Android Studio菜鸟OneNET是中国移动打造的PaaS 物联网开放平台官网为 https://open.iot.10086.cn/主要帮助开发者和企业实现设备快速上云及数据管理3前后端技术栈前端框架选择小程序端Taro/Uniapp跨端框架移动端React Native/Flutter跨平台开发后端技术栈:语言Node.js/PythonDjango/Flask/JavaSpring Boot;数据库MySQL/MongoDB Redis缓存