首页 > 其他分享 >初识软件工程

初识软件工程

时间:2023-07-20 16:01:00浏览次数:42  
标签:软件开发 模型 初识 软件工程 测试 软件 度量

 

1、什么是软件工程

软件工程是一门研究   用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言数据库软件开发工具系统平台标准设计模式等方面。

软件工程是应用计算机科学数学逻辑学管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本和改进算法。其中,计算机科学数学用于构建模型与算法工程科学用于制定规范、设计范型(paradigm)、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。

 

2、软件工程基本原理

  确保软件产品质量和开发效率。

(1)用分阶段的生命周期计划严格管理

  (2)   坚持进行阶段评审。

(3)实现严格的产品控制。 包括需求变更,文档,代码。

(4)采用现代程序设计技术

(5)结果应能清楚的审查。

(6)开发小组人员少而精。

  (7)勇于承担责任,错误,不断改进软件工程。

3、软件生存周期

 (1)  可行性分析与项目开发计划

      参加人员:用户,项目负责人,系统分析师。

      输出:可行性分析报告和项目开发计划。

(2)  需求分析

     参与人员:用户,项目负责人,系统分析师。

    输出:软件需求说明书。

(3) 概要设计

    参与人员:系统分析师,软件设计师。

    输出:概要设计说明书,数据库设计说明书。

(4) 详细设计

    参与人员:软件设计师,程序员。

    输出:详细设计文档。

(5) 编码

    输出:源程序清单。

(6) 测试

   参与人员:另一个部门或单位的软件设计师或系统分析师。

   输出:软件测试计划,测试用例,软件测试报告。

(7)维护

 

 

4、软件开发模型

 准确说是软件过程模型,是软件开发全部过程,活动和任务的结构框架。

4.1 瀑布模型

 

 

4.2 原型模型

 

 

4.3 增量模型

 

 

4.4 螺旋模型

 

 

4.5 喷泉模型

 

4.6 极限编程

原则:快速反馈,简单性假设,逐步修改,提倡更改,优质工作。

极限编程(Extreme Programming,简称XP)是敏捷软件开发方法的代表。

体现:

(1)沟通(Communication):即追求有效的沟通。XP强调项目开发人员、设计人员、客户之间等有效地、及时地沟通,确保各种信息的畅通。

(2)简单(Simplicity):即实现最简单的可行方案。XP认为应该尽量保持代码的简单,只要能够满足工作需要就行,这样有利于代码的重构和优化。

(3)反馈(Feedback):即快速有效的反馈。要求不断对当前系统状态进行反馈,通过反馈,达到迅速沟通、编码、测试、发布的目的。

(4)勇气(Courage):即勇于放弃和重构。对于用户的反馈,XP程序员要勇于对自己的代码进行修改,即使有些修改可能会使得原来已经通过的测试又出现错误,但是经过团队的共同攻关,最终必然会取得满意的效果。

最佳实践:快速指定计划,随着细节的不断变化而完善。小型发布(早交付)。简单设计(只考虑当前的需求)。测试先行。

                  持续集成(经常发版),每周工作40个小时。

 

5、软件测试

测试的目的:以最少的人力和时间发现潜在的各种错误和缺陷。

测试过程:(1)制定测试计划。(2)编制测试大纲。(3)设计和生成测试用例。(4)测试。(5)生成测试报告。

测试步骤:单元测试,集成测试,确认测试,系统测试。

单元测试:

集成测试:自顶向下集成测试,自底向上集成测试。回归测试,冒烟测试。

确认测试:α测试,β测试。

系统测试:恢复测试,安全性测试,压力测试,性能测试,部署测试(视情况而定)。

 

6、项目管理

甘特图:

 

PERT(计划评审技术,工程网格图)图:

 

 

ES = Earliest Start time (最早开始时间)
EF = Earliest Finish time(最早结束时间)

LS = Latest Start time(最晚开始时间)
LF = Latest Finish time(最晚结束时间)

TF = (总浮动时间,总时差)
FF = (自由浮动时间,自由时差)

其他图表推荐:https://zhuanlan.zhihu.com/p/142318015

 

7、风险管理

特性:不确定性和损失。

管理:风险识别 ,风险预测,风险评估,风险控制。

8、软件质量

   要求:必须满足用户规定的要求。 遵循规定标准所定义的一系列开发准则。满足隐含的需求(代码好理解,好维护,好扩展)

9、软件度量

 软件度量是对软件开发项目、过程及其产品进行数据定义、收集以及分析的持续性定量化过程,目的在于对此加以理解、预测、评估、控制和改善。没有软件度量,就不能从软件开发的暗箱中跳将出来。通过软件度量可以改进软件开发过程,促进项目成功,开发高质量的软件产品。

维度:

(1) 项目度量 : 规模,成本,满意度

(2) 产品度量:质量

(3) 过程度量:管理,流程,内容

10、软件工具与软件开发环境

   目的:以低成本,高效率的方式辅助软件的开发。

标签:软件开发,模型,初识,软件工程,测试,软件,度量
From: https://www.cnblogs.com/maohuidong/p/17568641.html

相关文章

  • 初识线程池
    内容:  1、什么是线程池      2、线程池的优点      3、线程池原理(重点)      4、理解线程池(重点)      5、如何设置线程池 1、什么是线程池线程池(英语:threadpool):一种线程使用模式。线程过多会带来调度开销,进而影响缓存......
  • 初识C语言——3
    循环1、while——while(表达式)     循环语句;2、for(表达式1;表达式2;表达式3)      循环语句;for循环语句中三个表达式都可以省略——即判断省略处,恒为真。for(i=2;i=0;i++)//——表达式2,将0赋值给i;0为假,则不满足表达式2;不进入循环。3、do   循环语句;while(......
  • 初识C语言--2
    指针,指针的大小为4或8字节,取决于使用系统的地址线,32位为4字节。指针变量——用来存放地址取地址——int*p=&a;inta=10;//创建一个空间,此空间有一个地址名,空间存放的值为10int*p=&a;//创建一个空间,名字为p,里面存放的为a的地址*p=20;//*p的意义为p空间中存放的地址,其指......
  • 软件工程
    先来点官方的介绍软件工程是研究和指导软件开发和维护的工程类学科,它以计算机科学理论及其他相关学科的理论为指导,采用工程化的概念、原理、规范、技术和方法进行软件工程项目的开发和维护,把经过实践证明正确的管理措施和当前能够得到最好的技术方法结合起来,以较少的代价获取高......
  • HTML入门-----初识html
    HTML简介:是一种超文本标记语言。网页的组成:骨架:HTML表现层:CSS行为层:JavaScript网页的基本结构:<html> <!---网页头部---> <head> <title>网页标题</title> </head> <!---网页的主体---> <body> 网页主体 </body></html><html>…</......
  • 初识GaussDB——GaussDB的发展历程、部署方式和企业案例
    初识GaussDB——GaussDB的发展历程、部署方式和企业案例姜殿斌2020-02-1734311.GaussDB的命名和品牌GaussDB的热点话题名字的由来:GaussDB是华为数据库产品品牌名,致敬数学家高斯(Gauss)GaussDB的品类:GaussDBT和GaussDBAGaussDBT的里程碑发布时间:2019年5......
  • 初识指针以及一些创建指针变量的常见问题和一些避免使用错误指针的方法
    在C语言中,指针是一种变量,用于存储另一个变量的内存地址。指针可以指向任何数据类型的变量,包括基本数据类型(如整型、字符型等)和复合数据类型(如数组、结构体等)。通过指针,我们可以直接访问和修改指向的变量的值,而不需要知道变量的名称。指针的声明使用星号(*)来表示,例如:int*ptr;//......
  • 01. 初识STM32
    一、什么是单片机  单片机(Single-ChipMicrocomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、......
  • CTFer成长记录——CTF之Web专题·初识反序列化
    一、题目链接http://122.114.252.87:1110/index2.php前置知识:序列化与反序列化序列化是将变量转换成可保存或传输的字符串,实现函数是:serialize();反序列化是:将字符串转换成变量,是一个逆过程。实现的函数式:unserialize();序列化:上面的结果是对一个对象的打印,后面是序列化......
  • 初识Java
    Java帝国三高:高可用、高性能、高并发Java三大版本JavaSE:标准版(桌面程序、控制台开发...)JavaME:嵌入式开发(手机,小家电...)JavaEE:E企业级开发(web端、服务器开发...)Java开发常用平台、系统、工具构建工具:Maven、Ant、Jekins应用服务器:Tomcat,Jetty,Jboss,WebsphereWeb开......