如何开发组件化、模块化的web应用?
我是一名java软件工程师,有10年的项目架构经验。欢迎关注我,了解更多java前沿技术!目前,微服务用于实现模块化的W
开发一个小程序,都需要什么流程?
一个
问题讨论和计划
这个阶段是软件开发和需求的共同讨论,寻找软件漏洞及其可行性,给出建议,主要确定软件开发目标及其可行性。
文件是初步的研究报告和项目开发计划。
2
需求分析
在确定软件开发可行性的情况下,对软件需要实现的各个功能进行详细的需求分析。需求分析阶段的目的是在系统工作中与用户达成一致。
首先,收集和整理需求,编写需求规格说明书,主要描述软件开发的意图、应用目标、作用范围等方向。详细说明系统将实现的所有功能。然后,制作需求设计文档,其主要内容与用户需求说明书相似。用户需求说明书是由用户编写的。;软件需求规格说明书是由开发人员用通俗的语言编写的。;的观点和在开发商的语言。
文档是软件需求说明书和数据需求说明书。
三
软件设计
在这个阶段,要根据需求分析的结果对整个软件系统进行设计,如系统框架设计、数据库设计等。软件设计一般分为总体设计和详细设计。
总体设计
①系统结构设计:定义和设计软件的模块化以及软件系统模块之间的关系。
②数据设计:定义数据库功能模块的表结构。数据库设计应该考虑未来的可伸缩性。
详细设计:逐一给出每个关卡中每个程序的设计考虑。
文档是总体设计规范、详细设计规范和数据库设计规范。
四
程序编码
这个阶段是将软件设计的结果转化为计算机可执行的程序代码(代码规范)。
文档是用户手册、操作手册和模块开发文件。
五
软件测试
软件设计完成后,要进行严格的测试,一旦发现整个软件设计过程中存在的问题,就要进行修正。它可以是开发商s内部测试(internaltest)或公共测试(publict
在软件项目开发过程中,都有哪些常见的软件架构?
软件产品的架构通常随着业务的发展而演进;本人从事软件开发行业十几年,遇到的软件(企业应用,本人从事Java开发)架构主要有以下几种:
单体架构一般来说,单体架构是应用所有的功能,只有一个代码包,开发和部署都在一起,是比较传统的架构风格;当然,单一架构也有很多缺点:
代码越来越多,增加了代码的复杂度;作为一名开发者我一定深受感动。每当我修改一个老方法的时候,我都会格外小心,生怕影响到其他功能。
单一应用需要统一技术栈,团队中的开发者需要掌握相同的开发语言和框架;
随着开发人员的流动,老员工离开项目团队,复杂庞大的项目代码让新成员难以阅读和理解,技术欠账不断积累;
代码都在一个代码包里,哪怕修改一个小功能,整个项目都要打包上线;
所有模块运行在同一个JVM中,非关键业务可能会占用大量资源,导致关键业务出现问题;不能单独扩展一个模块。
单一应用架构的缺点使得SOA架构已经不能满足业务需求,于是SOA架构出现了。
SOA架构的主要思想是通过接口连接应用程序的模块化组件(接口可以独立于语言、框架、硬件和操作系统);在SOA架构中,有两种主流实现:
Web服务:使用WSDL定义接口,用SOAP协议通信,传输XML数据;缺点是SOAP和XML比较笨重;服务管理不完善;
ESB:企业服务总线,各服务提供者通过总线插入系统,总线完成服务的排列和转发;但是ESB本身就比较中等,本身就是单点。在软件架构中,单点意味着风险。
微服务架构微服务的出现也是因为SOA架构的一些缺点。在这里,这句话再次得到印证,【应用架构的演进过程通常是业务所逼】。
在微服务架构中,服务拆分的粒度更细,提高了可重用性;每个微服务都可以独立开发部署;
RestfulAPI通信通常用于微服务之间,和JSON通常被选作传输格式。
微服务是SOA架构的延续。与单一应用相比,它们大大提高了系统的负载能力,解决了应用的高并发需求。
服务之间的耦合度也降低了,项目团队可以分成几个小团队,每个微服务都可以部署在敏捷开发中。
只要遵守接口协议,每个团队的技术堆栈也可以不同。
当然,SOA和微服务的出现,在解决一些问题的同时,也带来了其他问题,比如增加网络开销、服务依赖、增加测试运维难度、数据一致性等等。
我会继续分享我对Java开发、架构设计、程序员职业发展等方面的看法,希望得到大家的关注。