软件工程体系概念

软件工程

软件工程是应用计算机科学、数学及 管理科学等原理开发软件的工程。它借鉴 传统工程的原则、方法,以提高质量,降 低成本为目的。

一、软件生命周期

二、软件开发模型

1.传统模型

瀑布模型、V模型、W模型、X 模型、H 模型

(1)瀑布模型

瀑布模型的优缺点:

优点:

  • 有利于大型软件开发过程的人员的组织和管理
  • 有利于 开发方法和工具的使用
  • 提高了软件的质量和效率

缺点:

  • 各阶段的划分完全固定,阶段之间产生大量文档,极大的增加了工作量
  • 由于是线性的,用户只有等到末期才能见到开发成果,极大的增加了 开发的风险
  • 早期的错误可能要等到开发后期的测试阶段才能发现,极大的增加了 修复成本
(2)V模型--瀑布模型的变型
(3)W模型-- V模型的升级版
(4)X 模型
(5)H 模型

2.现代模型

原型模型、迭代式开发 、增量式开发、组件式开发、敏捷开发

(1) 原型模型

原型开发指的是建立一个系统的早期版本的演习 (practice),它不必反映最终产品的所有性能,而只要反映 感兴趣的一些方面。

特性:

  • 一个可实际工作的系统
  • 没有固定的生存期,结局可能是用后立即被抛弃,或可能成为 最终系统
  • 可服务于不同的目的,从需求分析到最终产品都可做原型
  • 建立必须快,便宜
  • 是包含修改、评价在内的完整重复过程
(2) 迭代式开发
  • 迭代式开发也被称作迭代增量式开发或迭代进化式开发,是 一种与传统的瀑布式开发相反的软件开发过程,它弥补了传 统开发方式中的一些弱点,具有更高的成功率和生产率。
  • 在迭代式开发方法中,整个开发工作被组织为一系列的短小 的、固定长度(如3周)的小项目,被称为一系列的迭代。 每一次迭代都包括了定义、需求分析、设计、实现与测试。 采用这种方法,开发工作可以在需求被完整地确定之前启动, 并在一次迭代中完成系统的一部分功能或业务逻辑的开发工 作。再通过客户的反馈来细化需求,并开始新一轮的迭代。
(3) 增量式开发
  • 增量是指在软件开发过程中,先开发主要功能模块,再开发 次要功能模块,逐步完善,最终开发出符合需求的软件产品。
  • 比如,需要开发一个类似WORD的软件,应该首先开发出文 件管理(保存、读取文件)、基本编辑功能、打印等,而其 它不太常用的功能可以最后开发。
  • 增量式开发,就是首先把大型程序分解成若干小的模块,然 后对每个模块按照某种过程模型进行开发,最后把这些模块 逐步集成为完整的软件产品。
(4) 组件式开发
  • 组件技术:代码复用性高、加快开发速度、 避免UI兼容性问题
(5) 敏捷开发
  • 敏捷开发以用户的需求进化为核心,采用迭代、循 序渐进的方法进行软件开发。
  • 在敏捷开发中,软件项目在构建初期被切分成多个 子项目,各个子项目的成果都经过测试,具备可视、 可集成和可运行使用的特征
  • 换言之,就是把一个大项目分为多个相互联系,但 也可独立运行的小项目,并分别完成,在此过程中 软件一直处于可使用状态。

三、软件研发流程

其中软件测试流程包括:

测试需求分析-->测试计划--> 测试方案-->测试用例-->测试执行--> 测试报告

四、软件项目成员

  • 项目经理(PM)
    驱动整个项目的运转,负责制定计划,安排人力,管理进度,协调团队
  • 架构师 / 系统工程师
    技术专家,负责整个系统的体系架构的设计以及关键模块的设计
  • 需求分析师/产品经理
    将公司业务部门所给予的客户需求进行业务规则、业务范围、业务流 程等方面利用技术分析完之后,把需求输出工程师看得懂的语言
  • 程序员 / 开发人员(DEV)
    Java/C/C++/C#/Python/PHP/GO/Ruby,前端 设计、编写软件,并修复软件中的缺陷。
  • 测试工程师( TM )
    负责找出软件产品存在的问题并报告
  • 运维工程师 / 技术支持 / 实施工程师
    负责编写软件产品附带的文件和联机帮助文档
  • 配置管理员(CMO)
    负责管理程序员写的代码和测试写的文档资料,并组合成一个软件包
  • QA
    质量监管人员(项目管理)--负责整个项目的推进事件

五、软件开发沙龙

  • 软件结构:B/S、C/S
  • WEB服务器:Tomcat、Apache、JBoss、nginx Weblogic、WAS、IIS
  • 数据库:MySQL、MSSQL、Oracle
  • 软件环境:开发环境、测试环境、用户环境 生产环境
  • 软件IDE:Eclipse、EPP,VS
  • 常见开发语言:C/C++、Java、C#、.NET ASP、JSP、PHP、PYTHON、SHELL
  • 常见测试环境搭配:计算机基础知识(二进制、进程/线程)、配置管理
  • C/S (Client/Server)结构,即大家熟知的客户机和服务器结构。通过这 种架构可以充分利用两端硬件环境的优势,将任务合理分配到Client端和 Server端来实现,降低了系统的通讯开销(实际应用:QQ、网游、手机App、火车票窗口购票系统、迅雷播放器)
  • B/S结构(Browser/Server),是WEB兴起后的一种网络结构模式,WEB浏 览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能 实现的核心部分集中到服务器上,简化了系统的开发、维护和使用(淘宝、百度、12306购票网站、www.cctv.com、爱奇艺、页游)
  • B/S和C/S的不同
  • 进程/线程
  • 多线程:软件或者硬件上实现多个线程并发 执行的技术,同一时间执行多于一个线程,进而提升整体 处理性能。
相关推荐
IDRSolutions_CN2 天前
什么是线性化PDF?
经验分享·pdf·软件工程·团队开发
Stargazer_Wang3 天前
INCOSE需求编写指南-附录 C: 需求模式
系统架构·需求分析·软件需求
敖行客 Allthinker3 天前
从崩溃难题看 C 标准库与 Rust:线程安全问题引发的深度思考
开发语言·软件需求
Stargazer_Wang3 天前
INCOSE需求编写指南-附录 A: 参考文献
系统架构·需求分析·软件需求
我是大佬的大佬4 天前
有关Android Studio的安装与配置并实现helloworld(有jdk的安装与配置)(保姆级教程)
android·android studio·软件工程
计软考研大C哥4 天前
【25考研】中科院软件考研复试难度分析!
考研·软件工程
持续学习,不断沉淀7 天前
开源软件协议介绍
开源软件
shinelord明7 天前
【大数据】数据治理浅析
大数据·人工智能·软件工程
reddishz8 天前
软件需求工程中的风险管理
软件工程·产品经理·需求分析·软件需求
Canliture8 天前
ICSE‘25 LLM Assistance for Memory Safety
重构·大模型·静态分析·软件工程·缺陷检测·内存安全·读论文