目录
3.2 软件生命周期 software life cycle
一、软件项目开发工程组织管理介绍
在软件开发项目中,为了确保项目能够按时完成、质量达标,需要有一个良好的开发工程组织管理。软件项目开发工程组织管理涵盖了项目的规划、执行、监督和控制,它是一个基于团队协作和沟通的综合性管理过程。
二、软件项目开发工程组织管理的目标
在给定成本、进度的前提下,开发出满足用户需求且具有 可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性 的软件产品。
三、软件生命周期模型
3.1 软件工程过程:PDCA循环
PDCA循环,也称为循环质量模型或Deming循环,是一种基于四个阶段的循环质量管理模型,它包括以下四个过程:
Plan(计划):在这个阶段,需要制定计划和目标,确定过程和资源,以及识别风险和机会。
Do(执行):在这个阶段,需要执行计划并采取相应行动,收集数据并进行监测,以便了解实际情况
Check(检查):在这个阶段,需要评估实际执行结果,与计划进行比较,识别差距和改进点。Act(行动):在这个阶段,需要采取适当的纠正措施并进行改进,以优化流程和提高质量。
3.2 软件生命周期 software life cycle
在整个软件生命周期中贯穿了软件工程过程的六个基本活动:
制定计划 P
需求分析 D
设计 D
程序编码 D
测试 C
运行维护 A
① 制定计划: 确定要开发软件系统的总目标,给出它的功能、性能、可靠性以及接口等方面的要求;研究完成该项软件任务的可行性,探讨解决问题的可能方案;制定完成开发任务的实施计划,连同可行性研究报告,提交管理部门审查。
② 需求分析和定义:对待开发软件提出的需求进行分析并给出详细的定义。编写出软件需求说明书及初步的用户手册,提交管理机构评审。
③ 软件设计:设计是软件工程的技术核心。把已确定了的各项需求转换成一个相应的体系结构。进而对每个模块要完成的工作进行具体的描述。编写设计说明书,提交评审。
④ 程序编写:把软件设计转换成计算机可以接受的程序代码。
⑤ 软件测试:在设计测试用例的基础上检验软件的各个组成部分。
⑥ 运行/维护:已交付的软件投入正式使用,并在运行过程中进行适当的维护。
可行性研究报告的示例图
软件需求规格说明书的样式
四、面向对象需求分析方法
1.UML的概述
UML(Unified Modeling Language,统一建模语言)是一种用来描述、设计、规格和文档化软件系统的标准化建模语言。它是由对象管理集团(Object Management Group,OMG)创建,并在OMG中得到广泛的支持和发展。
UML是通过一系列的图表(或称为模型)来表示软件系统的不同方面,这些图表描述了软件系统的结构、行为和功能。这些图表是基于一组事先定义好的元素(比如类、对象和用例等)和它们之间的关系来构建的。
UML包含了许多不同类型的图表,其中较为常见的有:
-
类图(Class Diagrams):用于描述系统中的类、属性、方法和它们之间的关系等。
-
对象图(Object Diagrams):展示系统中特定时间点的对象实例。
-
用例图(Use Case Diagrams):用于描述系统的功能需求,表示系统如何与外部用户交互。
-
时序图(Sequence Diagrams):通常用于描述对象之间的消息通信顺序。
-
活动图(Activity Diagrams):用于展示系统中复杂的处理流程和控制流程。
-
状态图(State Diagrams):描述特定对象在某个时间段内处于哪种状态
用例图示例
2. 类图
UML类图用于描述类以及类之间的关系
类图的示例
五、利用工具对项目开发工程进行管理
可以利用Gitee创建一个企业仓库进行时间的规划、任务的部署、整合代,可以方便协作,项目管理员可以邀请协作者加入项目,以便多人共同完成项目开发,同时也可以授予不同用户不同的权限,实现不同的功能。
任务的分配和时间图
六、开发项目
①.选用开发工具
数据库使用MySQL、前端使用HBuilder X、后端使用IntelliJ IDEA
②.开发流程:
-
前端开发阶段:
- 设计用户界面和交互流程。
- 根据需求设计和开发前端页面和组件。
- 使用HTML、CSS和JavaScript等前端技术进行开发。
- 进行页面样式调整、兼容性测试和性能优化。
-
后端开发阶段:
- 设计数据库结构和接口规范。
- 开发后端业务逻辑和数据处理代码。
- 使用后端语言(如Java、Python、Node.js等)进行开发。
- 进行接口测试和性能优化。
-
接口联调和集成测试阶段:
- 前后端进行接口联调,确保数据的正确传输和交互。
- 进行系统整体功能测试,确保各个模块的协同工作正常。
③.示例代码:
前端部分(Uni-app):
- 在 uni-app 目录中创建 pages/index 文件夹,并在该文件夹中创建 index.vue 文件。
- 在 index.vue 文件中创建一个表单,用于输入用户名和密码。
- 在 index.vue 文件中,添加一些 JavaScript 代码,用来执行组件之间的逻辑,并调用后端API以发送表单数据进行后台验证和保存。
<template>
<view class="container">
<form class="form" @submit="submitForm">
<input type="text" v-model.trim="userName" />
<input type="password" v-model.trim="password" />
<button type="submit">Submit</button>
</form>
</view>
</template>
<script>
import { apiService } from '@/utils/apiService.js';
export default {
data() {
return {
userName: '',
password: '',
};
},
methods: {
async submitForm() {
const res = await apiService.post('/users/login', {
userName: this.userName,
password: this.password,
});
if (res.code === 200) {
// 登录成功后的处理逻辑
} else {
// 登录失败后的处理逻辑
}
},
},
};
</script>
后端部分(Spring boot):
- 在 Spring Boot 工程创建 UserController 类,并在该类中创建一个 Login 方法,用于处理用户登录请求。
- 在 UserService 类中创建 findUser 方法,实现从 MySQL 数据库中查询用户信息的功能。
- 将数据库连接信息和其他相关信息添加到 application.properties 配置文件中。
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/login")
public Result login(@RequestBody UserLoginForm userLoginForm) {
User user = userService.findUser(userLoginForm);
if(user != null) {
// 登录成功后的处理逻辑
return Result.ok();
} else {
// 登录失败后的处理逻辑
return Result.fail();
}
}
}
@Service
public class UserService {
@Autowired
private JdbcTemplate jdbcTemplate;
public User findUser(UserLoginForm userLoginForm) {
String sql = "SELECT * FROM user WHERE username = ? AND password = ?";
try {
User user = jdbcTemplate.queryForObject(sql, new Object[]{userLoginForm.getUserName(), userLoginForm.getPassword()}, new BeanPropertyRowMapper<>(User.class));
return user;
} catch (Exception e) {
return null;
}
}
}
spring.datasource.url=jdbc:mysql://localhost:3306/test_db?serverTimezone=UTC&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=12345
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
七、总结
总的来说,软件项目开发工程是一个极具挑战性的过程,涉及到许多方面的因素。因此,在开发过程中,需要建立一个良好的沟通和团队管理框架,并确保团队成员之间充分协作,建立合理的计划、流程、工具和方法,以最大程度地提高软件开发项目的效益和成功率。