怎样的架构才算好?

软件开发过程中所得到的经验分为两类:关于过程的建议和关于产品(或结构)的建议。
关于过程的建议有:
 1>架构的设计应该由一位设计师来完成,或者由某一个在某位设计师领导下的小组来完成。
 2>设计师应该全面掌握系统的功能需求,并且应有一份所设计构架应满足的划分了优先级的质量属性列表(如安全性或可修改性)。
 3>架构文档应该完备,至少有一个静态视图和动态视图,应该采用所有人员认可的文档形式,以保证所有涉众都能很容易地理解这些文档。
 4>应该把架构设计方案交由涉众阅览,应该让涉众积极参与设计方案的评审。
 5>应该对架构认真分析,得出可应用的量化度指标(如最大吞吐量)。也应该对质量属性进行评估,以避免出现发现问题时为时已晚的情况。
 6>架构的设计应有助于增量的实现。为此,可以先创建一个粗略的、具备雏形但功能最简单的系统,通过把这个骨架系统逐步细化、扩大来得到所期望的系统。
 7>允许架构带来一定(少量的)资源争用,但应清楚地给出这些资源争用的解决方案、告之有关各方,并保证这个方案切实可行。如网络占用问题,设计师就要为每个开发小组制定出将网络占用减少到最低限度的指导原则。
关于结构的建议有:
 1>架构应该采用定义良好的模块,各模块的功能责任划分应基于信息隐藏和相互独立的原则。信息隐藏模块应该包括那些封装了计算基础结构特性的模块,以将大部分软件与计算基础结构的变化隔离开。
 2>应该使用特定于每个属性的众所周知的架构战术来实现质量属性。
 3>架构绝对不可以依赖某个特定版本的商业产品或工具。如果确实依赖某个商业产品,则要合理设计架构,使得当所依赖的商业产品发生变化时,能够方便、经济地适应。
 4>应将产生数据的模块和使用数据的模块分离开。未来的变化往往仅限于数据产生或者数据的使用,所以这样做一般可以提高系统的可修改性。
 5>对于并行系统,架构应该采用定义良好的进程或者任务,他们未必反映模块的分解结构。也就是说,有些进程运行涉及到若干模块,而模块中某个过程可能也要为若干个进程调用。
 6>每个任务或进程的编写都需要考虑到与特定处理器的关系,并保证能够方便地改变这种关系。
 7>架构应该采用少量的、简单的交互模式。即在整个运行过程中,系统的功能应该保持一致。这可使系统易于理解,有助于缩短开发时间、提高可靠性、增强可修改性。 
Spring Boot是一个流行的开源框架,它简化了构建基于Spring的应用程序的过程。学会Spring Boot意味着掌握以下几个关键点: 1. **配置管理**:理解如何创建`@SpringBootApplication`注解的@Configuration、@Component和@EnableAutoConfiguration,它们自动配置了许多常见的组件。 2. **依赖注入**:熟悉@Autowired注解,用于依赖注入bean到其他类的方法或字段中,提高模块间的松耦合。 3. **启动器启动流程**:了解启动器的生命周期,包括`main`函数、ApplicationRunner或 CommandLineRunner等回调机制。 4. **RESTful API**:学会使用@RestController、@RequestMapping等注解快速创建RESTful服务,并能处理HTTP请求和响应。 5. **数据库操作**:通过JdbcTemplate、Repository或者JPA等技术操作数据源,执行CRUD操作。 6. **文件上传和下载**:处理multipart/form-data类型的请求,以及如何配置MultipartFile。 7. **AOP切面编程**:利用AspectJ或Spring AOP处理横切关注点,如日志记录、事务管理等。 8. **Spring Cloud**:理解和运用Spring Boot与Spring Cloud集成,进行微服务架构的部署和管理。 9. **错误处理和异常映射**:配置全局异常处理器,自定义异常消息和状态码。 10. **测试**:使用Spring Boot提供的测试工具如MockMvc做单元测试和集成测试。 要真正会Spring Boot,还需要不断实践项目,并熟悉其生态系统和常用的最佳实践。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值