软件项目开发工程学习心得

目录

前言

1.学习软件项目开发工程的背景和概念

 1.1 什么是软件项目开发工程

1.2 软件项目开发工程的标准和规范

1.2.1编码规范

 1.2.2.质量标准

 1.2.3.测试规范

1.2.4.配置管理标准

 1.2.5.文档标准

 1.2.6.项目管理标准

  1.2.7.安全标准

1.3软件开发模型:瀑布模型和迭代模型简介

2.了解软件开发的生命周期

3.学习软件项目管理

1.需求分析

2.需求分析与评审

 3.需求跟踪和管理

 4.需求验证和确认

5.软件项目进度管理 

 6.软件项目成本管理

4.学习软件设计方法

4.1 需求分析

4.2 面向对象设计

5.学习软件开发技术

5.1 编程语言介绍

5.2 数据库技术

6.系统可视化文档

7.软件工程技术项目开发中用到的软件和部分代码

1.HBuilder X

2.IntelliJ IDEA

3.Git

 4.部分代码展示

8.总结


前言

当人们的日常生活中越来越离不开软件应用时,软件项目开发工程的重要性也日益凸显。如果没有良好的软件开发流程和管理规范,软件项目开发很容易遭遇一系列质量问题,影响软件的使用效果和用户体验,也可能成为企业发展的一大难点。为了提高软件项目开发的效率和质量,学习软件项目开发工程知识和经验,掌握基本的开发流程、管理方法和技术手段,成为当下软件从业者的必备技能。本文旨在通过系统地介绍软件项目开发工程的相关理论和实践技巧,帮助读者深入掌握软件项目开发工程的本质和基本要素,提升软件开发能力。


1.学习软件项目开发工程的背景和概念

 1.1 什么是软件项目开发工程

  •  软件项目开发工程,简称软件工程,是一门综合性的学科,它研究如何系统化、规范化地开发和维护软件。
  • 软件项目开发工程集成了许多的理论和方法,包括计算机科学、系统工程等,其主要包含需求分析、软件设计、编码、测试、文档编制、问题跟踪、项目管理多个方面。

  • 选择合适的软件开发模型和实施良好的软件项目开发工程管理是软件项目成功的关键,如瀑布模型、迭代模型、敏捷开发等。 

1.2 软件项目开发工程的标准和规范

1.2.1编码规范

编码规范是编写代码时应遵循的规则和惯例。它们可以包括命名约定、缩进、注释、代码格式等。

 1.2.2.质量标准

质量标准是确保软件产品质量的标准。这些标准可以包括代码复杂性、可维护性、可测试性等。

 1.2.3.测试规范

测试规范是软件测试时应遵循的规则和惯例。它们可以包括测试用例的编写、测试计划的制定、测试结果的报告等。

1.2.4.配置管理标准

配置管理标准是确保软件配置管理的标准。这些标准可以包括版本控制、配置管理工具的使用、配置管理计划等。

 1.2.5.文档标准

文档标准是确保项目文档的质量和一致性的标准。这些标准可以包括文档格式、文档审查流程、文档管理等。

 1.2.6.项目管理标准

项目管理标准是确保软件项目管理的标准和惯例。这些标准可以包括项目计划、资源管理、风险管理、变更管理等。

  1.2.7.安全标准

安全标准是确保软件安全的标准。这些标准可以包括代码审查、数据加密、访问控制等

1.3软件开发模型:瀑布模型和迭代模型简介

        1.瀑布模型
        瀑布模型最早被提出,是软件工程中最经典的模型之一。这个模型的流程非常严谨和线性,开发流程注重文档和计划。瀑布模型适合固定需求的中小型项目,不适用于大型复杂项目。流程如下:

  • 需求分析:明确项目的需求。
  • 系统设计:设计软件的整体结构。
  • 软件开发:按照完整设计进行编码。
  • 测试:测试软件的性能、质量和功能。
  • 维护:处理软件的维护问题和问题修复。

        2.迭代模型
        迭代模型是一种基于反复迭代的模型,该模型强调软件开发是一个演化的过程,随着时间的推移,系统需求和软件规范会随需求的变化而不断发生变化。这个模型非常适合大型、复杂和不断变化的软件开发项目。流程如下:

  • 计划:明确项目的目标和计划。
  • 分析和设计:收集和分析系统需求并进行设计。
  • 建立原型:说明建立原型的紧迫性和必要性。
  • 开发:实现和测试系统的每个元素和模块。
  • 评估和回顾:评估系统的性能、质量和功能,并在必要的情况下回顾并修改产品规范和需求。

2.了解软件开发的生命周期

1.需求分析阶段:在这个阶段,软件开发团队将与客户联系,收集详细的需求说明,以便共同理解和定义软件的目标、功能和限制。通过需求分析,开发团队能够为开发过程提供明确的目标和方向。

 2.设计阶段:在这个阶段,软件开发团队将确定软件系统的各种组件、服务和模块的总体结构。此时需要考虑到设计的优化性、易维护性和可扩展性等方面问题。

3.编码阶段:在这个阶段,开发团队会根据设计阶段的说明,使用编程语言和工具来编写代码。在编码阶段,开发团队需要关注代码的效率和质量,并尽可能保证代码的规范性和可读性。

4.测试和调试阶段:在这个阶段,开发团队会进行各种测试活动,目的是确定软件是否达到了需求摘要和设计规范的要求。测试通常包括单元测试、集成测试和系统测试等不同层面的测试方法。

5.部署和维护阶段:在这个阶段,开发团队会将软件部署到指定的生产环境中,交付给客户使用。开发团队还需要定期进行维护和优化,以确保软件一直保持最高质量的状态。


3.学习软件项目管理

1.需求分析

软件团队需要与用户等相关人员交流获取最新的需求信息,包括用户需求和系统需求等,需求分析可以从以下几点出发。

  1. 定义问题并建立需求文档:在需求分析的过程中,首先需要定义问题并确定需求文档,建立完整的需求文档使得需求更容易理解,易于传达给开发团队。

  2. 收集用户需求:为了确保软件开发符合用户期望,需要了解用户的需求和期望,这一步需要对相关人员进行访谈、问卷调查、观察等方式进行收集。

  3. 分析和细化需求:在收集到用户需求后,需要将需求进行进一步的细化和分析,将每个需求的细节进行分析和说明。

  4. 评审需求:评审需求的目的是为了确保需求的完整、正确、可测试等方面。需求评审需要在开发团队内部以及与客户或项目负责人进行。

  5. 确认需求:确认需求阶段的主要目的是让客户/用户进行需求确认,确保所有的需求能够满足客户/用户的需求和期望, 并最终确定符合需求的开发方案。

  6. 输送和管理需求文档:完成需求分析后,需要将需求文档及时交付到开发团队以及其他相关人员,并对其进行管理以便后期追踪及变更管理。

2.需求分析与评审

  1. 评审准备:制定评审计划,配置评审小组,确认评审范围,收集评审相关的材料。

  2. 材料评审:对需求规格说明书进行评审,确认需求规格书的准确性、一致性和完整性,检查其是否符合项目及应用的相关要求和标准。

  3. 回答问题:如果疑问或发现规格说明书中的规格存在问题,审核组需要反馈意见并为维护团队提供相关建议。

  4. 文件更新: 根据评审结果,整理、更新需求规格说明书并确认其准确性,同时记录并追踪更新过程,以便将来跟踪工作进度。

 3.需求跟踪和管理

  1. 需求溯源:需求溯源是需求跟踪和管理的核心,它通过建立需求与其他项目文档之间的关联和追踪,确保需求从创建到实现的全过程的跟踪。

  2. 需求变更管理:软件开发中,需求通常会因客户需求变化、技术限制或其他因素而发生修改。需求变更管理需要跟踪需求变更历史记录,同时需要进行审核和批准,并及时更新相关文档。

  3. 需求优先级管理:需求优先级管理可以协助团队针对重要性和优先级对需求进行分类和排序,确保对重要需求的优先关注和管理,并对决策做出最优的支持。

  4. 需求验证与确认:需求的验证是指在软件产品交付前确保需求规格书准确,系统符合客户期望和要求。对于复杂的软件项目,通常需要制定详细测试计划,并构建相应测试环境进行验证。

  5. 需求管理工具:一些软件开发工具(如JIRA, Trello等),提供了需求管理的功能,可以辅助进行需求分配与追踪、需求验证、需求变更管理等。

 4.需求验证和确认

在软件开发完成后,需要进行需求验证和确认,以验证软件系统是否满足客户的实际需求,并确保软件系统达到用户预期的功能和性能需求。

5.软件项目进度管理 

  1. 制定项目计划:根据项目需求和资源情况,确定软件开发的计划,包括任务分解、时间安排、人员配备等,以及总体进度计划,并制定计划书。

  2. 设定任务和进度:根据项目计划,将软件开发过程划分为若干个可管理的任务和阶段,并确定每个任务完成的时间节点和关键路径。

  3. 上报任务和进度:对每个任务进行进度跟踪,实时更新任务进度并及时获得项目组和客户的反馈。

  4. 风险管理:对于延迟、缺陷和变更等潜在风险,需要及时评估风险并采取相应的措施,以确保项目进度和质量受到最小影响。

  5. 进度分析和优化:分析项目进度数据并根据实际情况优化项目进度计划。进行相关工程师的个人进度评估,识别进度风险,更新进度计划等。

  6. 持续跟踪进度:根据项目管理流程,持续跟踪项目进展情况,及时发现差距和问题,并制定相应的调整方案,以确保软件项目按计划顺利完成。

 6.软件项目成本管理

  1. 成本估算:在软件项目启动初期,需要对软件项目的总体成本进行估算。这个过程通常涉及成本分解、成本评估、成本预测和成本控制等多个方面。

  2. 成本跟踪:在软件开发过程中,需要对各项成本进行跟踪,监控和记录,以便及时发现成本异常情况。

  3. 成本控制:成本控制是软件项目成本管理的核心,其目的是通过适当的措施控制、降低项目成本,以保证软件项目在承受能力范围内能够按时完成。

  4. 进行成本效益分析:在软件项目成本管理的过程中,需要进行成本效益分析,以确保在合理的投资范围内,取得最佳的成本效益。


4.学习软件设计方法

4.1 需求分析

  1. 收集需求:通过与客户和用户沟通、分析现有系统、市场竞争和商业环境等方式,收集和识别潜在的需求。

  2. 分析需求:将收集到的需求进行分析、梳理和协商,以确保需求的正确性、完备性、可行性和一致性。

  3. 规划需求:将收集到的需求按照不同类型或关键性质进行划分和分类,并按照优先级对需求进行排序。

  4. 编写需求文档:将已收集和分类的需求及其规划编写成相应的需求文档。需求文档应包含需求的描述、功能说明、限制条件、优先级和验收标准等。

  5. 需求验证:通过测试、评审和模拟等方式验证需求文档的正确性和完备性。

4.2 面向对象设计

面向对象设计(Object-Oriented Design,简称OOD)是一种以对象为基础,将系统看作一组相互作用的对象集合,通过对对象的抽象、封装、继承、多态等特性进行设计和实现的方法。面向对象设计强调的是对系统中对象行为和状态的分析和抽象,以及对象之间的关系和交互。

面向对象设计的核心思想是将系统分解成相互协作的对象,每个对象承担一定的职责,并通过对象之间的交互来实现系统的功能。在面向对象设计中,对象是程序中的基本单元,它具有状态、行为和标识性,可以封装数据和操作,通过继承和多态实现代码的重用和扩展。

面向对象设计包括以下几个方面:

1.对象的抽象:识别出系统中的实体、属性和行为,并将其抽象成对象。

2.封装:将对象的数据和行为封装在一起,保证数据的安全性和一致性。

3.继承:通过继承关系实现代码的重用和扩展。

4.多态:通过多态实现对象的灵活性和可扩展性。

5.设计模式:对面向对象设计中常见的问题和解决方案进行抽象和总结,形成通用的设计模式。


5.学习软件开发技术

5.1 编程语言介绍

编程语言是一种计算机语言,用于编写计算机程序以实现特定的计算机任务。常见的编程语言包括Java、Python、C++、JavaScript等。每种编程语言都有自己的语法和规则,开发人员可以使用这些语言来创建各种应用程序,从简单的命令行工具到复杂的桌面应用程序和Web应用程序。不同的编程语言适用于不同的应用场景。例如,C++通常用于开发系统级软件,而Python则用于数据分析和科学计算。


5.2 数据库技术

数据库技术的主要目标是实现数据的有效组织和高效管理,以提高数据的利用价值和工作效率。数据库技术包括以下方面:

  1. 数据库设计和建模:通过数据建模工具和方法,设计和建立数据模型,确定数据结构和关系。

  2. 数据库管理系统:选择和使用适合自己需求的数据库管理系统,完成数据库的安装、配置、升级、备份和恢复等管理任务。

  3. 数据库查询和编程:利用SQL等数据库查询语言,实现数据的检索和分析,并编写程序,实现数据库应用开发。

  4. 数据库优化和调优:通过分析数据库的性能瓶颈和问题,采取适当的优化和调优技术,提升数据库的性能和效率。

  5. 数据库安全和备份:制定和实施数据库安全策略,保护数据库的机密性、完整性和可用性。并实施备份和恢复策略,确保数据的安全和可靠性。

  6. 数据库监控和管理:监控数据库的运行状态和性能,及时发现和解决问题,管理和维护数据库的日常运行。


6.系统可视化文档

常用的系统可视化文档有以下几种:

1.流程图

流程图是将系统中各种功能和流程以连线和矩形框等图形的形式进行展示和说明的一种文档。它以图形化的方式表示每一个步骤和操作,使得人们能够更加直观地了解系统的运行流程和业务逻辑。

2.概念图

概念图是将系统中各个概念、实体和关系以图形化的方式进行展示和说明的一种文档。它可以通过实体间的联系和属性等信息来表示系统的数据模型,从而让用户更加清晰地了解系统的数据结构和运行机制。

 

3.用户界面原型图

用户界面原型图是将系统的用户界面功能和布局以图形化的方式进行展示和说明的一种文档。它能够直观地呈现系统的页面设计和交互方式,让用户更加容易理解和使用系统。

 

(图片仅供参考) 

4.时序图

时序图是将系统中各种操作和消息以时序顺序的方式进行展示和说明的一种文档。它能够反映系统中不同操作之间的顺序和时间关系,让用户更加清晰地了解系统的交互方式和逻辑。

5.状态图

状态图是将系统中各种状态以图形化的方式进行展示和说明的一种文档。它能够反映系统中不同状态间的转换过程和条件,让用户更加了解系统状态的变化和业务逻辑。


7.软件工程技术项目开发中用到的软件和部分代码

1.HBuilder X(官网地址)

HBuilder X 是一款功能强大的前端开发工具,具有代码提示、语法检查、代码自动补全等实用功能,同时还支持多种编程语言和前端框架。我们主要使用 HBuilder X 来编写我们的前端代码,它让我们的开发更加高效和流畅。

2.IntelliJ IDEA(官网地址)

IntelliJ IDEA 是一款流行的 Java 开发工具,它具有出色的代码编辑、调试、测试和分析功能,同时还支持多种开发语言和框架。我们使用 IntelliJ IDEA 来开发我们的后端代码,利用它的强大功能和智能提示,让我们能够更快速地开发出高质量的代码。

3.Git(Git - 安装 Git (git-scm.com))

Git 是一款流行的分布式版本控制工具,它可以帮助我们管理代码的历史记录、协作开发等方面。我们使用 Git 来管理我们的代码库,使用分支来协作开发、进行代码审查和发布等相关操作。

 4.部分代码展示

 后端:这是usercontroller对用户的一个简单的增删查改操作

@RestController
@RequestMapping("/users")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/{id}")
    public User getUserById(@PathVariable Long id) {
        return userService.getUserById(id);
    }

    @PostMapping("/")
    public User addUser(@RequestBody User user) {
        return userService.addUser(user);
    }

    @PutMapping("/{id}")
    public User updateUser(@PathVariable Long id, @RequestBody User user) {
        return userService.updateUser(id, user);
    }

    @DeleteMapping("/{id}")
    public void deleteUser(@PathVariable Long id) {
        userService.deleteUser(id);
    }

}

 前端:这是一个 uni-app 应用,展示用户列表数据,可以添加、更新和删除用户信息。

<template>
  <view class="container">
    <view class="header">
      <text>用户列表</text>
    </view>
    <view class="list">
      <view v-for="(user, index) in userList" :key="index" class="user-item">
        <view class="name">{{user.username}}</view>
        <view class="email">{{user.email}}</view>
      </view>
    </view>
    <view class="footer">
      <button class="add-btn" @tap="navigateToAdd">添加用户</button>
    </view>
  </view>
</template>

<script>
import axios from 'axios';

export default {
  data() {
    return {
      userList: [], //用户列表数据
    }
  },
  onShow() {
    this.getUserList();
  },
  methods: {
    //获取用户列表
    getUserList() {
      axios.get('/api/users').then(res => {
        this.userList = res.data;
      }).catch(err => {
        console.error(err);
      });
    },
    //跳转到添加用户页面
    navigateToAdd() {
      uni.navigateTo({
        url: '/pages/addUser/addUser',
      });
    },
  },
}
</script>

<style>
/* 样式省略 */
</style>

8.总结

作为一种涵盖软件设计、开发、测试和部署等整个软件生命周期的学科,软件项目开发工程涉及了众多知识点和技能。在我学习软件项目开发工程的过程中,我了解到了以下几点心得体会:

1. 项目管理至关重要,需要掌握项目管理技能。在软件项目开发工程中,需要进行项目管理、需求管理、进度管理、人员管理和质量管理等工作,这些工作需要高效的组织和管理能力。掌握项目管理技能,能够帮助人们更好地协调系统的需求、人员和资源,确保软件项目的高质量和按期交付。

2. 软件设计是保证软件质量的关键。软件设计要素较多,包括系统规格、架构、模块设计、接口设计等,其中每个设计要素都需应对任务类型及软件特性紧密联系。合理的设计能够确保软件的可靠性、安全性、扩展性、可维护性和可重用性。掌握软件设计技能,能够减少软件实现过程中的复杂度和风险,提高软件质量。

3. 团队协作是落实软件开发的保证。软件项目开发工程通常由多个人合作完成,因此团队协作是保障软件开发质量的关键。有效的团队协作意味着线上端与线下端十万头无脑猪塞在同一空间里都能顺畅合作。良好的团队合作包括沟通、配合和问题解决等方面的实践。因此,要求参得进软件团队时,有必要快速适应团队的工作方式,规模、角色、制度的不断变化和迭代式的工作流程。

4. 技术知识和实践经验是软件项目开发工程的基础。软件项目开发工程中涉及到诸多技术和方法。例如,敏捷开发、测试驱动开发、面向对象设计和开发等,这些方法和技术需要经验的积累和实践的运用才能得以掌握。学习软件项目开发工程和相关技术时,需要持续学习和实践,通过知识的积累和实践的经验来提高自己的能力和技能。

总之,学习软件项目开发工程需要有较强的学习能力、工作能力和团队合作能力。只有通过不断的实践和总结,才能在软件开发领域有所突破。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值