软件工程笔记001

2023年9月5日,周二上午


软件工程的目标

软件工程的目标是成功地开发一个软件:

  • 较低的开发成本
  • 能按时交付软件
  • 开发出来的软件该有的功能都有
  • 开发出来的软件运行效率高
  • 开发出来的软件可靠性高
  • 开发出来的软件易于维护

软件的生存周期

概念

软件生存周期是指软件从提出开发到报废的过程。

比如,疫情时期的健康码,在疫情初期提出开发,在疫情中后期使用,在疫情结束后就消失了。

生存周期的各个阶段

通常包括以下主要过程:

需求分析:在这个阶段,软件团队与客户进行沟通,了解客户的需求和期望。通过需求分析,确定开发软件的功能、性能和约束条件。

设计阶段:在这个阶段,根据需求分析的结果,制定软件的整体架构和详细设计方案。包括确定软件的模块划分、数据结构和算法设计,以及用户界面设计等。

开发阶段:在这个阶段,根据设计阶段的方案,进行编码和程序开发。开发人员使用编程语言和开发工具实现软件的各个模块,并进行单元测试来验证功能的正确性。

测试阶段:在这个阶段,对软件进行系统测试,验证软件是否满足需求规格和设计要求。测试人员会执行各种测试用例,包括功能测试、性能测试、兼容性测试等,以发现和修复软件中的缺陷。

部署和维护阶段:在这个阶段,将软件部署到目标环境中,并提供维护和支持。这包括软件的安装、配置、数据迁移等工作,以及对软件进行错误修复、性能优化和功能扩展等。

报废:这个阶段是我自己加的。在这个阶段软件不再被人维护和使用,甚至是消失。比如,游戏的停服;再比如,再也找不到微信小程序健康码的入口。

此外,软件的生命周期并不是线性的,而是可以循环迭代的

生存周期模型

(在这里先作概述,以后有空会在CSDN上更新这些模型的具体内容)

在软件开发领域,常用的软件生命周期模型包括以下几种:

瀑布模型:瀑布模型是经典的生命周期模型,采用线性、顺序的方式组织软件开发过程,包括需求分析、设计、编码、测试和部署等阶段。

增量模型:增量模型将软件开发过程划分为多个增量,每个增量都是一个可交付的功能子集,通过逐步增加功能的方式逐渐构建完整的软件系统。

喷泉模型:喷泉模型是一种迭代的生命周期模型,通过不断迭代的方式进行软件开发,每个迭代周期包括需求分析、设计、编码、测试和部署等阶段。

原型模型:原型模型通过快速创建软件原型来帮助澄清需求和验证设计,然后根据反馈进行修改和迭代,最终构建出最终的软件系统。

敏捷模型:敏捷模型是一种基于迭代和增量开发的模型,强调团队合作、快速交付和持续改进,如Scrum、XP等。

螺旋模型:螺旋模型是一种风险驱动的模型,通过不断循环的迭代过程,将风险管理融入到软件开发过程中,以降低风险并逐步构建完整的软件系统。

以上是常见的几种软件生命周期模型,每种模型都有其适用的场景和优缺点,开发团队可以根据项目的需求和特点选择合适的模型。

软件开发方法

包括但不限于以下这些方法:

  • 结构化方法
  • 面向对象的开发方法
相关推荐
诸葛思颖14 小时前
【论文阅读笔记】FL+HC(联邦学习+层次聚类)
论文阅读·笔记·聚类
序属秋秋秋15 小时前
《Linux系统编程之进程基础》【进程优先级】
linux·运维·c语言·c++·笔记·进程·优先级
河铃旅鹿18 小时前
Android开发-java版:Framgent
android·java·笔记·学习
AA陈超21 小时前
ASC学习笔记0020:用于定义角色或Actor的默认属性值
c++·笔记·学习·ue5·虚幻引擎
双翌视觉1 天前
基于机器视觉对位技术实现精准的手机屏幕贴合
智能手机·软件工程
爱思德学术1 天前
中国计算机学会(CCF)推荐学术会议-C(软件工程/系统软件/程序设计语言):ICST 2026
软件测试·软件工程·软件验证
IMPYLH1 天前
Lua 的 collectgarbage 函数
开发语言·笔记·junit·单元测试·lua
思成不止于此1 天前
深入理解 C++ 多态:从概念到实现的完整解析
开发语言·c++·笔记·学习·多态·c++40周年
谅望者1 天前
数据分析笔记08:Python编程基础-数据类型与变量
数据库·笔记·python·数据分析·概率论
iiiiii111 天前
【论文阅读笔记】多实例学习方法 Diverse Density(DD):在特征空间中寻找正概念的坐标
论文阅读·人工智能·笔记·机器学习·ai·学习方法·多实例学习