目录
一、软件工程的概念
软件工程是一个综合的概念,包含了一些重要的概念和原则,下面是其中一些重要的概念:
1.软件开发周期:
软件开发的过程通常包括需求分析、设计、编码、测试和部署等阶段。软件工程强调将软件开发过程划分为不同的阶段,并确保每个阶段都得到适当的管理和控制。
2.需求工程:
需求工程是软件工程中的重要概念,涉及确定和记录用户需求。这包括与用户进行沟通和协商,分析用户需求,编写需求规格说明书等。
3.设计模式:
设计模式是解决常见软件设计问题的经验总结和蓝图。它提供了一套可复用的设计方案,有助于提高软件系统的可靠性、可维护性和可扩展性。
4.质量保证:
软件工程强调确保开发出高质量的软件系统。质量保证包括使用各种测试技术来验证软件的正确性和完整性,以及使用代码审查和质量度量来提高软件的质量。
5.配置管理:
配置管理是软件工程中用于管理软件配置项的过程。它包括版本控制、变更管理和发布管理等活动,以确保软件的正确性和可追溯性。
6.敏捷开发:
敏捷开发是一种迭代、增量的开发方法,强调根据用户反馈和需求变化来快速响应并交付软件。它注重团队合作、交流和灵活性,以实现更高的开发效率和客户满意度。
二、软件工程的目的
软件工程的目的是为了开发和维护高质量的软件系统,以满足用户的需求和期望。下面是软件工程的一些主要目的:
1. 满足用户需求:
软件工程着重于理解和分析用户需求,并根据这些需求设计和开发软件系统。其目的是确保软件系统能够满足用户的期望和需求,提供可用、可靠、易用和安全的功能。
2. 提高软件质量:
软件工程强调使用系统化和规范化的方法来开发软件系统,以提高软件的质量和可靠性。这包括使用各种测试技术对软件进行验证和验证,并采取质量保证措施来确保软件满足预期的质量标准。
3. 增强软件可维护性:
软件工程关注软件系统的长期维护和演化。它提供了一些最佳实践和方法来确保软件的可维护性,包括模块化设计、清晰的文档化、可重用的代码和适当的变更管理。
4. 提高开发效率:
软件工程旨在提高软件开发过程的效率和生产力。它提供了一套经过验证的开发方法和工具,以减少开发时间、资源和成本,并通过自动化和重用技术提高团队的工作效率。
5. 管理软件项目:
软件工程包括项目管理的概念和技术,以确保软件项目按时交付、在预算内,并满足预期的质量标准。它涵盖项目规划、资源分配、进度跟踪和团队协作等方面。
6. 保证软件安全性和可靠性:
软件工程着眼于确保软件系统的安全性和可靠性。它包括应对潜在的安全威胁和漏洞,并通过采用最佳安全实践和使用安全测试方法来减少软件故障和漏洞的风险。
总之,软件工程的目的是通过应用系统化的方法、工程原则和最佳实践来开发和维护高质量、可靠和可维护的软件系统,以满足用户需求并提高软件开发的效率和质量。
三、个人课题软件的介绍
1.项目介绍:
经过系统的学习,我完成了一个个人商城项目的开发,下面是我的项目介绍
app名称:便利Go
开发项目类型:电商类项目
项目愿景:它将实现前后端分离让用户通过移动端或者PC端选购自己需要的商品,商家后台获取用户订单信息来完成商品配送、核销的流程。同时商城内包含商品分类管理、商品管理、线下订单管理、数据汇总功能。
效果实现
系统首页
系统后台
四、核心代码
拦截器部分
public class JwtInterceptor implements HandlerInterceptor {
@Autowired
private IUserService userService;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
String token = request.getHeader("token");
//如果不是映射到方法直接通过
if (!(handler instanceof HandlerMethod)) {
return true;
}
//执行认证
if (StrUtil.isBlank(token)) {
throw new ServerException(Constants.CODE_401, "无token,请重新登录");
}
//获取token中的 user id
String userId;
try {
userId = JWT.decode(token).getAudience().get(0);
} catch (JWTDecodeException j) {
throw new ServerException(Constants.CODE_401, "token验证失败,请重新登录");
}
//根据token中的 userid 查询数据库
User user = userService.getById(userId);
if (user == null) {
throw new ServerException(Constants.CODE_401, "用户不存在,请重新登录");
}
//用户密码加签验证 token
JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256(user.getPassword())).build();
try {
jwtVerifier.verify(token); //验证token
} catch (JWTVerificationException e) {
throw new ServerException(Constants.CODE_401, "token验证失败,请重新登录");
}
return true;
}
}
五、总结
通过系统的学习这门课我有了以下收获
1. 设计和架构思维:软件工程的学习能够培养良好的设计和架构思维。学会如何合理地组织代码、模块化设计,并使用设计模式和架构原则来构建可扩展和可维护的软件系统。
3. 解决问题的能力:学习软件工程训练了你分析问题、提出解决方案和实施方案的能力。将学会将复杂的问题拆分为更小的子问题,并逐步解决它们。
5. 质量和可靠性意识:软件工程的学习让我意识到软件质量和可靠性的重要性。我将学到如何编写可测试的代码,并使用测试工具和技术来验证软件的正确性和稳定性。我还会学习到如何进行代码审查和质量保证,以确保开发的软件满足高质量的标准。
6. 终身学习和适应能力:学习软件工程是一个终身的过程,因为技术和工具不断发展和改变。通过软件工程的学习。
这些收获将使我成为一个更全面、综合和有竞争力的软件工程师。不仅可以在职业生涯中受益,还能够解决实际生活中的问题,并为社会和人们的生活带来积极的影响。