首页 > 其他分享 >软件工程大纲总结

软件工程大纲总结

时间:2022-12-03 16:22:54浏览次数:40  
标签:总结 需求 大纲 模型 软件工程 设计 软件 基本概念

一、软件工程概述

包括但不限于软件、软件工程等基本概念,主要内容有

软件的概念:是一系列按照特定顺序组织的计算机数据和指令的集合(软件主要包括程序、文档、数据等成分)

软件的特征

  1、无形的,没有物理形态,只能通过运行状况来了解功能、特性和质量
  2、软件渗透了大量的脑力劳动,人的逻辑思维、智能活动和技术水平是软件产品的关键
  3、软件不会像硬件一样老化磨损,但存在缺陷维护和技术更新
  4、软件的开发和运行必须依赖于特定的计算机系统环境,对于硬件有依赖性,为了减少依赖,开发中提出了软件的可移植性
  5、软件具有可复用性,软件开发出来很容易被复制,从而形成多个副本

软件的分类:软件被划分为系统软件、应用软件和介于这两者之间的中间件

软件危机产生的原因

  1、一方面与软件本身的特点有关;管理和控制软件开发过程相当困难;软件较难维护;2、另一方面也和软件开发与维护的方法不正确有关:忽视软件需求分析的重要性,轻视软件维护,对用户要求没有完整准确的认识就匆忙着手编写程序;软件配置主要包括程序、文档、数据等成分,只重视程序而忽视软件配置其余成分。

软件危机的表现

  1、对软件开发成本和进度的估计常常很不准确;2、用户对“已完成的”软件系统不满意的现象经常发生;3、软件产品的质量往往靠不住;4、软件常常是不可维护的;5、软件通常没有适当的文档资料;6、软件成本在计算机系统总成本中所占的比例逐年上升;7、软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用迅速普及深入的趋势;

软件工程的概念原则

  软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,经济地开发出高质量的软件并有效地维护它

软件工程的原则

  软件工程的7条基本原理:1、用分阶段的生命周期计划严格管理;2、坚持进行阶段评审;3、实行严格的产品控制(意思所有变更都要评审);4、采用现代程序设计技术(比如面向对象);5、结果应能清楚地审查(意思要划责任、设标准);6、开发小组的人员应该少而精;7、承认不断改进软件工程实践的必要性(意思要谦虚学习)

软件工程知识体以及相关标准

  软件工程知识体系划分为以下10个知识领域:1、软件需求;2、软件设计(就是架构和详设);3、软件构建(就是开发编码和自测);4、软件测试;5、软件维护;6、软件配置管理(这活也是运维干的);7、软件工程管理(就是项目经理的活,计划协调把握进度);8、软件工程过程;(意思应该是项目总负责人,把项目跟到下线,过程中不断提新需求改进系统);9、软件工程工具和方法;(比如自动化测试运维CICD持续集成啥的工具);10、软件质量;(就是客户满不满意)

二、软件工程过程

包括但不限于软件生命周期和基本过程模型等基本概念,主要内容有:软件生命周期概念 和各个阶段,典型软件过程模型:瀑布模型、快速原型模型、螺旋模型、统一过程模型、敏捷 模型等。

软件生命周期概念 和各个阶段:软件生命周期由软件定义、软件开发和运行维护3个时期组成

  1、软件定义:分为3个阶段,即问题定义、可行性研究、需求分析。

    问题定义:要解决的问题是什么(出问题性质工程目标的书面报告)

    可行性研究:上一个阶段所确定的问题是否有行得通的解决办法(概括需求提方案,看方案是否可行)

    需求分析:目标系统必须做什么(与客户敲定需求细节,出需求规格说明书)

  2、软件开发:概要设计、详细设计、编码和单元测试、综合测试。

    概要设计:设计程序的体系结构,确定有哪些模块,模块间的关系

    详细设计:详细地设计每个模块,确定实现模块功能所需要的算法和数据结构。

    编码和单元测试

    综合测试:集成测试(就是各个模块联调了),验收测试(照着需求说明书去验功能)。出 测试计划、详细测试方案以及实际测试结果

  3、软件维护:改正性维护(比如错误数据手动改改)、适应性维护(比如改个环境配置)、完善性维护(比如加机器)、预防性维护(比如经常备份预防宕机)

瀑布模型

  收集需求——分析——设计——编码——测试——维护

  特点:阶段间具有顺序性和依赖性(前面完成了才能干后面);推迟实现的观点(清楚地区分逻辑设计与物理设计,尽可能推迟程序的物理实现。就是别急,想好了再写代码);质量保证的观点(每个阶段都出文档,并评审);每个阶段发现错误都得反馈给上一阶段修改

  优点:可强迫开发人员采用规范的方法(如结构化技术);严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。

  缺点:由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要

快速原型模型

  就是根据需求用可视化编程工具先做个demo,然后根据需求不断地改。改到满意再写需求规格说明书,再详细开发

  优点:用户不会再改需求了;开发明确知道用户想要啥了;就是快

螺旋模型

  在每个阶段之前都增加了风险分析过程的快速原型模型。  然后风险分析没问题了,就按瀑布开发,完成了阶段工作,就再按这个步骤转一圈,螺旋上升式推进项目

  优点:质量高风险低,维护和开发一直干

  适合内部大型项目,因为项目越大风险越大,内部的所以说停就能停

  缺点是就怕开发经验不够,评估不出风险

统一过程模型 rational unified process,RUP:

  是个软件开发过程框架。

  核心:用于成功开发软件的一组基本观念和原则(6条“最佳实践”和10个“流程要素”);一套关于可重用方法内容和过程构建的框架。可以在这个框架之下定义自己的开发方法和过程;基础的方法和过程定义语言。这就是统一方法架构元模型(unified method architecture,UMA)。该模型提供了用于描述方法内容及过程的语言。这种新语言统一了不同方法和过程工程语言。

  最佳实践:最佳实践”描述了一个指导开发团队达成目标的迭代和递增式的软件开发过程。1、迭代式开发;(就是每个版本,用户可以提意见,下个版本改);2、管理需求;(用用例分析来捕获需求);3、使用基于组件的架构;(就是多用组件,相当于模块,微服务那感觉);4、可视化建模;(就类似流程图,可视化的统一建模语言(Unified Modeling Language,UML));5、验证软件质量;(自始至终全员参与);6、控制软件变更(我估计类似svn)

  十大要素:1、前景:制定前景(分析问题,理解项目干系人的需求,定义系统以及管理需求变化);2、计划:按计划管理;3、风险:降低风险并跟踪相关问题(就是做个风险表);4、业务案例:检验业务案例(就是项目预算钱);5、架构:设计组件架构(就是定项目架构出个文档);6、原型:增量地构建和测试产品(还是迭代,版本);7、评估:定期评估结果(还是在迭代时评审);8、变更请求:管理并控制变更(就是评估一下变更的代价);9、用户支持:部署可用的产品(给用户个说明书);10、过程:采用适合项目的过程(不要盲从流程)

  RUP生命周期:1、核心工作流:业务建模-需求-分析与设计-实现-测试-部署-配置与变更管理-项目管理-环境;2、工作阶段:先启阶段(确定项目范围)、精化阶段(设计架构项目计划)、构建阶段(开发测试)、移交阶段(交给用户);3、RUP迭代式开发:每次迭代中只考虑系统的一部分需求,针对这部分需求进行分析、设计、实现、测试、部署等,每次迭代都是在系统已完成部分的基础上进行的,每次给系统增加一些新的功能,如此循环往复地进行下去,直至完成最终项目  (这不就按版本开发么)

 敏捷 模型

  1、“个体和交互”胜过“过程和工具”(就是大家面对面直接交流)2、“可以使用的软件”胜过“面面俱到的文档”(就是写完代码再补文档)3、“客户合作”胜过“合同谈判”(开发团队与客户密切协作)4、“响应变化”胜过“遵循计划”(计划要够灵活)

  原则:1、尽早和持续交付;2、后期也能改需求;3、交付周期越短越好;4、业务和开发每天在一起;5、开发人员要积极;6、团队里大家面对面交流;7、就看软件做好没有,说别的没用;8、持续周期长,人员要稳定;9、要追求好技术;10、简单;11、自己团队决定架构;12、多总结如何提高效率

三、软件需求分析

包括但不限于需求和需求分析相关的概念和应用,主要内容包括:软件需求的基本概念、 功能需求、非功能需求和需求的评价准则;常见的需求调方法:竞品分析、观察、访谈、开会、 原型和问卷调查等;结构化需求分析基本概念,数据流图、状态转换图和ER图的基本用法;基 于用例的需求建模方法和过程,参与者、用例、用例图、用例文档的基本概念,基于用例方法 开展需求建模实践;面向对象技术的基本概念,对象和类,面向对象的基本原则:抽象、封装、 分解、泛化、多态、分层和复用等;可视化建模语言UML的基本概念、UML特点,UML基本 构造块和通用机制,常见的UML图:用例图、活动图、类图、对象图、包图、顺序图、通信图、 状态机图、构件图和部署图等;利用UML开展面向对象的分析基本过程,抽取分析类:边界类、 控制类和实体类,基于顺序图、通信图等开展交互分析,定义分析类的职责和属性,分析类的 关系:泛化关系、关联关系、聚合关系和组合关系。

四、软件设计

包括但不限于软件设计的概念和应用,主要内容有:软件设计的基本原则,概要设计(架 构设计)和详细设计(构件设计)的基本过程;软件体系结构(架构)的基本概念和过程、典 型架构模式(风格)、关键质量属性设计;面向数据流设计的基本概念,流程图、判定表、判定 树和过程设计语言等基本设计方法;数据库设计的基本概念,界面设计的基本概念;面向对象 设计基本概念,设计类的操作、方法和状态设计,关联关系设计,依赖关系、泛化关系等设计, 面向对象设计模式的基本概念。

五、软件构造与测试

包括但不限于软件构造和测试的概念和应用,主要内容有:软件构造的基本概念、一般原 则和要点,设计模型与实现模型的映射;软件测试的基本概念、原则和模型;测试用例的基本 概念和设计方法,黑盒测试概念和方法:等价类、边界值等,白盒测试概念和方法:程序流图、 逻辑覆盖等;单元测试、集成测试、系统测试、验收测试、回归测试等基本概念。

六、软件项目管理基础

包括但不限于软件项目管理的基本概念,主要内容有:软件项目管理基础及项目规划;软 件成本管理、风险管理、质量管理、配置管理等各类管理概念。

 

其余部分知识点思维导图

链接: https://pan.baidu.com/s/1ZiftDXCEmZngmgM8mjkV1Q 提取码: 477n 复制这段内容后打开百度网盘手机App,操作更方便哦

标签:总结,需求,大纲,模型,软件工程,设计,软件,基本概念
From: https://www.cnblogs.com/zhaot1993/p/16869992.html

相关文章