软件工程体系概念

软件工程

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

一、软件生命周期

二、软件开发模型

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的不同
  • 进程/线程
  • 多线程:软件或者硬件上实现多个线程并发 执行的技术,同一时间执行多于一个线程,进而提升整体 处理性能。
相关推荐
不止会JS5 小时前
软考:系统架构设计师教材笔记(持续更新中)
系统架构·软件工程·软考
猫头虎5 小时前
新纪天工 开物焕彩:重大科技成就发布会参会感
人工智能·开源·aigc·开放原子·开源软件·gpu算力·agi
Theodore_102220 小时前
4 软件工程——总体设计
java·开发语言·数据库·算法·java-ee·软件工程·设计
Theodore_102220 小时前
1 软件工程——概述
java·开发语言·算法·设计模式·java-ee·软件工程·个人开发
shinelord明1 天前
【再谈设计模式】享元模式~对象共享的优化妙手
开发语言·数据结构·算法·设计模式·软件工程
Amd7942 天前
PostgreSQL 的历史
postgresql·开源软件·计算机科学·软件开发·关系型数据库·数据库技术·数据库历史
人才程序员3 天前
QML z轴(z-order)前后层级
c语言·前端·c++·qt·软件工程·用户界面·界面
Theodore_10223 天前
3 需求分析
java·开发语言·算法·java-ee·软件工程·需求分析·需求
做人求其滴3 天前
GDPU软件工程习题(挖空版)
软件工程
MrFlySand_飞沙3 天前
软件工程
软件工程