软件工程实务心得

目录

  前言

1.常见的软件开发生命周期模型包括:

2.需求分析

3.软件安全与保密

4、软件工程的挑战和未来

5.项目准备工作

6.新闻项目代码演示

总结


  前言

软件工程实务是指在实际工作中应用软件工程知识和技术的过程。它包括软件开发、测试、维护和管理等方面的工作。软件工程实务与理论相互配合,前者通过实践验证理论,后者为实践提供指导和支持。在软件工程实务中,需要考虑项目管理、编程、质量保证、配置管理、测试、需求分析等诸多方面的内容。这些方面都涉及软件工程中的基本原则、方法和技术,如敏捷开发、面向对象设计、软件测试、持续集成等。软件工程实务需要开发者通过不断地实践和积累经验,不断地优化和改进工作流程和方法,以达到提高软件质量、提高开发效率、降低开发成本的目的。

软件开发生命周期模型
软件开发生命周期模型是指将软件开发过程划分为不同的阶段和活动,并将这些阶段和活动组合成一个完整的、有序的过程,从而规范软件开发过程的一种模型。

1.常见的软件开发生命周期模型包括:

瀑布模型:顺序执行,每个阶段完成后再进入下一个阶段。

迭代模型:类似于瀑布模型,但每个阶段会进行多次迭代,每次迭代都会加入新的功能。

增量模型:分为多个迭代,每个迭代中只完成部分功能,每个迭代都是完整的、可交付的产品。

螺旋模型:以循环为基础,每次循环包括四个阶段:计划、风险评估、执行和评估。

敏捷模型:强调快速迭代和灵活性,鼓励与客户紧密合作。

选择哪种模型,需要根据具体项目的需求、时间、人力、资源等因素进行综合考虑。

需求分析与规格说明
需求分析是指对用户需求进行分析和理解,从而确定系统应该具备哪些功能和性能特征。它是软件工程中的重要阶段之一,主要目的是确定系统要做什么,为开发者提供开发指导,避免开发过程中的浪费和冗余。需求分析的结果是需求规格说明书,它是对用户需求的详细描述,包括系统功能、性能、界面、数据、安全等各个方面的要求。

规格说明是对软件系统的需求和设计进行详细描述的文档或规范。它包括了系统的功能、性能、界面、数据、安全等各个方面的要求,是软件开发的基础。规格说明书的主要作用是为系统开发提供详细、全面的指导和评估依据,从而避免开发过程中的错误和偏差,并且方便系统维护和升级。

需求分析和规格说明是软件开发中不可或缺的阶段,只有在充分理解用户需求的基础上,才能为用户提供满意的软件产品。同时,规格说明书是开发者和用户之间的桥梁,它可以明确双方的沟通和合作,使软件开发过程更加顺利和高效。

软件设计与架构
软件设计是指在确定软件系统需求后,根据该需求设计整个软件系统的构造、组成、界面、功能、操作、实现技术及其它相关要素的过程。软件架构是指软件系统的结构和组成方式,它是软件设计的核心,决定了软件系统的性能、可维护性、可伸缩性等重要特征。在软件设计和架构中,需要考虑如何合理地将各种功能划分模块,怎么进行接口设计,如何进行数据结构和算法的设计等方面的问题,以满足软件系统在性能、安全性、可靠性等方面的要求。同时,在设计和架构阶段也需要考虑软件系统的可维护性和可扩展性,以便在未来需要进行修改和升级时能够快速、安全地实现。

编码与调试
编码和调试是软件开发过程中的两个重要方面。编码是指将设计文档转换为实际的程序代码的过程。开发人员根据需求和功能规范,使用编程语言来创建软件应用程序。

而调试是指在程序开发过程中,发现代码中的错误或者故障,然后修复这些问题的过程。调试是一个非常重要和必要的过程,它需要开发人员仔细分析代码并逐步检查其运行过程,以识别错误或bug。

编码和调试之间具有密切的联系。编码时,开发人员需要仔细考虑代码中可能出现的问题,并尽可能地使用最佳实践来避免这些问题。但是即使是最好的开发者也无法避免所有的错误,因此调试是至关重要的。调试可以帮助开发人员找出代码中的错误,并修复这些问题,以确保软件的正常运行。

总之,编码和调试是软件开发过程中不可分割的两个方面。只有在编码和调试过程中合理运用技巧和工具,才能保证软件开发的高效性、可靠性和质量。

软件测试及质量保证
软件测试是为了发现并报告软件中的缺陷或错误,以确保软件达到指定的质量要求。它是软件开发过程中非常重要的环节,可以保证软件的可靠性,可用性,稳定性等方面都得到了充分保证。

软件质量保证是一项综合性工作,旨在保证软件整体质量。它包括对软件开发过程中的各个环节进行监控和管理,以确保软件能够按时交付、满足用户需求、达到预期质量等方面都得到充分保障。

软件测试和质量保证的主要目的是确保软件产品的质量,提高软件的可靠性和稳定性,减少软件的缺陷和故障,从而提高用户满意度和信任度。

配置管理与版本控制
配置管理是一种跟踪软件开发过程中所用到的各种元素的系统,包括源代码、文档、编译器、链接器和其他工具。它可以确保这些元素都是最新的,且各自之间的关联性和依存关系得到了正确维护。

版本控制则是一种记录源代码或文件每个版本变化的系统,可以让开发者回滚到旧的版本,也可以追查代码的变化历史。它可以帮助团队协作,同时还可以保证代码的一致性和可追溯性。

这两个概念常常结合起来使用,在软件开发过程中,使用版本控制来管理代码以及其他文件的修改和协作,使用配置管理来管理软件开发过程中所使用的所有元素。

项目管理与团队协作
项目管理和团队协作是紧密相关的概念,因为项目管理需要整合团队成员的能力和资源以实现项目目标。以下是一些关于项目管理和团队协作的常见问题和建议:

1.如何保持团队成员之间的沟通?

建议:使用在线协作工具,例如Slack、Microsoft Teams或Zoom,以促进成员之间的实时沟通。定期安排会议并确定明确的工作安排、职责和项目里程碑,确保每个成员都清楚自己的工作职责和任务,监督项目的进度。

2.如何确保团队成员的合作?

建议:促进团队协作的最好方法之一是在团队成员中建立良好的关系和信任。定期集体活动、跨部门会议、团队建设活动等都是提高团队合作精神的好方法。

3.如何应对可能的团队冲突?

建议:识别和解决团队问题的最好方法之一是根据问题的类型采取相应的方法。使用冲突解决技巧,例如沟通、协商、妥协和折衷,以最大程度地减少和解决团队成员之间的冲突。

4.如何监督和评估团队成员的工作表现?

建议:定期检查工作表现,确保团队成员及时完成任务和工作职责。给予积极的反馈和建议,以促进成员的个人发展和团队合作。在项目结束时做出总结和评估,为以后的项目提供参考。
 

2.需求分析


系统需求:是这个系统必须执行/支持的所有活动和必须满足的约束条件。通常分为功能需求和非功能需求。

功能需求:系统必须执行的活动。以工资管理系统为例,可能包括电子支付、计算工资、计算工资税、维护员工相关信息、社保、医保、公积金缴纳等等。

功能需求是根据公司开展业务交易的过程和业务规则确定的。有时这些规则详细记录与文档,从而易于确定和描述;而另外的一些规则可能隐蔽而难以被发现。而尽早发现这类规则是需求分析的重要任务。

非功能需求:是系统的固有特征,它不同于系统必须执行或支持的活动。区别功能/非功能需求并不容易,人们开发了一些架构来识别和分类需求的方法,如FURPS+架构(功能、可用性、可靠性、性能、可支持性的首字母)。

3.软件安全与保密


软件安全和保密是非常重要的,因为软件中包含的是公司、政府机构和个人的机密信息。软件安全意味着软件不易受到攻击,不容易被黑客或恶意软件利用,不会泄露用户的隐私信息。保密则意味着只有授权人员才能访问和使用软件。

为了确保软件安全和保密性,必须采取一系列安全措施。以下是一些常见的安全措施:

加密:使用加密算法对敏感数据进行加密,以防止数据泄露。

认证和授权:只有经过身份验证和授权的用户才能访问软件。

安全编码:通过遵循最佳编码实践和规范,确保软件的功能和安全性。

安全测试:定期进行安全测试,以发现潜在的漏洞和安全问题。

安全更新:及时更新软件和系统,以弥补已知的安全漏洞和缺陷。

安全意识培训:向员工提供关于软件安全和保密的培训,以提高他们的安全意识和防范能力。

软件安全和保密对于任何组织都非常重要,因此应该被视为工作的一部分,并在适当的时候得到充足的关注和资源的投入。

4、软件工程的挑战和未来

1.复杂性
软件系统的复杂性是软件工程的主要挑战之一。随着软件系统的规模越来越大,其复杂性也不断增加。这使得开发团队必须采取更加复杂和高级的技术来应对这些挑战,例如人工智能和机器学习等。

2.安全性
随着互联网和数字化的快速发展,软件系统的安全性成为了一个越来越重要的问题。开发团队必须使用安全性最佳实践,例如安全编码规范和加密技术等,以确保软件系统的安全性。

3.自动化
随着技术的进步和发展,自动化已成为软件工程中的一个趋势。自动化可以提高软件系统的效率和质量,并减少开发团队的工作量。自动化包括自动化测试、自动化部署和自动化维护等。

未来的软件工程将越来越重视自动化和人工智能技术的应用。随着人工智能技术的发展,开发团队将能够使用更高级的技术来开发和维护软件系统。同时,软件工程将继续发展和进化,以满足日益增长的需求和挑战。
 

5.项目准备工作

新建一个项目

 

 准备maven

6.新闻项目代码演示

<template>

  <div id="tab-bar">
    <tab-bar-item path="/home">
      <i slot="item-icon-active" class="el-icon-message-solid" />
      <i slot="item-icon" class="el-icon-bell" />
      <div slot="item-text">首页</div>
    </tab-bar-item>

    <tab-bar-item path="/my">
      <i slot="item-icon-active" class="el-icon-user-solid" />
      <i slot="item-icon" class="el-icon-user" />
      <div slot="item-text">我的</div>
    </tab-bar-item>

  </div>

</template>

<script>
import TabBarItem from '@/components/TabBar/tabBarItem'
export default {
  name: 'TabBar',
  components: { TabBarItem },
  data() {
    return {

    }
  },
  methods: {

  }
}

</script>

<style>
#tab-bar {
  display: flex;
  background-color: #f6f6f6;
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  box-shadow: 0 -1px 1px rgba(100, 100, 100, 0.08);
}
</style>
<template>
  <div class="tab-bar-item" @click="itemClick">
    <div v-if="!isActive">
      <slot name="item-icon" />
    </div>
    <div v-else>
      <slot name="item-icon-active" />
    </div>
    <div><slot name="item-text" /></div>
  </div>
</template>

<script>
export default {
  name: 'TabBarItem',
  props: {
    path: {
      type: String,
      default: ''
    }
  },
  data() {
    return {
    }
  },
  computed: {
    // 判断当前条目是否被选中
    isActive() {
      return !this.$route.path.indexOf(this.path)
    }
  },
  methods: {
    // 跳转路由
    itemClick() {
      this.$router.replace(this.path)
    }
  }

}
</script>

<style>
.tab-bar-item {
  display: flex;
  flex: 1;
  justify-content: center;
  text-align: center;
  height: 49px;
  line-height: 49px;
  cursor: pointer;
}
</style>

js

import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

export const constantRoutes = [

  {
    path: '',
    redirect: '/home'
  },

  {
    path: '/home',
    component: () => import('@/views/news/home'),
    meta: {
      keepAlive: true
    }
  },

  {
    path: '/news',
    component: () => import('@/views/news/news')
  },

  {
    path: '/my',
    component: () => import('@/views/news/my')
  },

  {
    path: '/register',
    component: () => import('@/views/news/register')
  },

  {
    path: '/list',
    component: () => import('@/views/news/list')
  },

  {
    path: '/401',
    component: () => import('@/views/401'),
    hidden: true
  },

  {
    path: '/404',
    component: () => import('@/views/404'),
    hidden: true
  }
]

const createRouter = () => new Router({
  mode: 'history', // require service support
  // scrollBehavior: () => ({ y: 0 }),
  routes: constantRoutes
})

export const router = createRouter()

// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
export function resetRouter() {
  const newRouter = createRouter()
  router.matcher = newRouter.matcher // reset router
}

export default router

const my = {
  state: {
    // 存储浏览历史
    histroy: [],
    // 存储我的收藏
    favourite: [],
    // 是否已登录
    logined: false
  },

  mutations: {

    SET_HISTROY: (state, histroy) => {
      state.histroy.unshift({ createTime: new Date(), histroy: histroy })
    },
    SET_FAVOURITE: (state, favourite) => {
      state.favourite.unshift(favourite)
    },
    SET_LOGIN: (state, login) => {
      state.logined = login
    }

  },

  actions: {
    setHistroy({ commit }, histroy) {
      return new Promise(resolve => {
        commit('SET_HISTROY', histroy)
      })
    },

    setFavourite({ commit }, favourite) {
      return new Promise(resolve => {
        commit('SET_FAVOURITE', favourite)
      })
    },

    setLogin({ commit }, login) {
      return new Promise(resolve => {
        commit('SET_LOGIN', login)
      })
    }
  }
}

export default my

总结
 

软件工程是一门涉及软件生产的各个方面的一门工程学科
软件产品不仅是程序,还包括相关文档。软件产品的基本属性是可维护性、可靠性、信息安全性、效率及可接受性。
软件过程包括开发软件产品过程中的所有活动。软件过程中的活动主要有:软件描述、开发、有效验证和进化。
软件工程的基本概念普遍适用于所有类型的系统开发。这些基本概念包括软件过程、可靠性、信息安全性、需求以及复用。
世界上是存在着许多类型的系统。每一种类型的系统的开发都需要一种与之相适应的软件工程工具和技术。几乎不存在普适的神奇的软件设计和实现技术。
软件工程的基本思想适用于所有的软件系统。这些基本思想包括有管理的软件过程、软件的可依赖性和信息安全性、需求工程和软件复用。
软件工程人员对软件工程行业和整个社会负有责任,不应该只关心技术问题。
职业协会颁布的行为准则规定了一系列协会成员应该遵守的行为标准
 

猜你喜欢

转载自blog.csdn.net/xiranmoo/article/details/131370673