软件工程详解

软件工程基础知识详解 本文还有配套的精品资源,点击获取 简介:软件工程是一门综合性学科,涵盖软件开发全过程。本课程将深入探讨软件工程基础知识,包括需求分析、设计、编码、测试和维护。通过学习UML工具、设计方法、编程实践、测试策略和项目管理知识,学生将掌握软件开发的系统性方法,为信息系统软件工程的学习和相关考试认证打下坚实基础。 1. 软件工程概述 软件工程是一门应用工程学科,它涉... 阅读详情

一.常用的分析工具:

测试工具:ATTOL UniTest、C++ Test、MTE、CodeTest;

       覆盖率:ATTOL Coverage、PureCoverage、TrueCoverage;

       内存检测:Boundschecker、PURIFY;

       静态分析(结构):Mccable、Logiscope、Hindsight;

       静态分析(语法):PC-lint、CodeCHK、CheckMate;

       WEB压力测试:Web Express;

       设计工具:UML、Rose、Visio、PowerDesigner;

       编程工具:SourceInsight;

       版本控制:VSS、Beyond Company

 

二.软件工程文档和方法:

(一)传统软件工程(瀑布模型)

1.问题定义

讨论要解决的问题,做一份书面报告即可。

2.可行性研究

研究问题的范围,探索这个问题是否值得去研究。

需要做的主要工作有:

a.               导出问题定义阶段的高层逻辑模型(通常用数据流图表示[1]),物理系统也可以用系统流程图表示),如有需要须初步定义一些数据字典[2];

b.              并且做成本/效益分析。

3.需求分析

              确定目标系统必须具备哪些功能。必须准确完整的提出系统逻辑模型。

              需要做的主要工作有:

a.       划分出系统必须完成的所有功能;

这部分包含需要将功能用文字表达出来,可用层次方框图和Warnier图。在描述模型之间的关系时,可用ER模型来表示,再用范式来消除冗余。

b.       根据以上结果导出系统详细的逻辑模型

可用数据流图、数据字典和主要处理算法描述(这个主要处理算法可用IPO图来画)

4.总体设计(概要设计)

划分出组成系统的物理元素——程序、文件、数据库、人工过程和文档等。设计软件的总体结构,确定系统中每个程序由哪些模块组成,以及这些模块相互间的关系。

需要做的主要工作有:

a.       功能分解;

这部分工作含结构设计(主要是模块的划分,可用层次图或结构图描述,可用数据流图来分析)和过程设计(每个模块的处理过程,可用IPO图)

b.       如有数据库,则需进行数据库设计和优化。(推荐使用PowerDesigner)

c.       制订测试计划

5.详细设计

              将每个模块中的处理过程细化。

              需要做的主要工作有:

a.       描述模块中处理过程;

可用程序流程图、盒图、PAD图、判定表、判定图,或者用伪代码来表示(可用Visio来作图),可描述其中的复杂度。

6.编码与单元测试

              编码(略)。

              测试:黑盒测试——功能测试;白盒测试——结构测试;

              单元测试即模块测试,在这个测试步骤中所发现的往往是编码和详细设计的错误。

              需要做的主要工作有:

              a.编写测试案例文档

7.综合测试

              编写测试案例和文档

8.软件维护

 

(二) 面向对象的方法

1.概念和摘要

       瀑布式生命周期的缺点表现在三个方面:<1> 后期的变化、迭代、改动困难 <2> 不支持重用 <3> 没有一个联系各个阶段的统一模型。

使用面向对象方法学开发软件时,工作重点应该放在生命周期中的分析阶段。通常需要建立三种形式的模型,分别时描述系统数据结构的对象模型,描述系统控制结构的动态模型和描述系统功能的功能模型,所以核心是建立对象模型——面向对象的建模(当前常用的建模语言是UML)。

在面向对象分析过程(OOA)中,构造出完全独立于实现的应用域模型(需求分析);在面向对象设计过程(OOD)中,把求解域的结构逐渐加入到模型中(概要设计和详细设计);在实现阶段,把应用域和求解域的结构都编成程序代码并进行严格的测试验证(编码测试)。测试一个OO系统是另一个需要进一步研究的课题。发布一个稳定的原型需要不同与以往控制结构化开发的产品的配置管理。

为改善面向对象开发的可管理性,玻姆(Boehm,1988)提出了一个结合了宏观和微观视角(macro & microview)的螺旋开发模型。宏观包括3个阶段:1分析---发现和识别对象;2 设计---发明和设计对象;3 实施---创建和实现对象。每个宏观阶段都包含一些微观迭代活动。

 

无论何种复杂程度的工程项目,设计都是从建模开始的,设计者通过创建模型和设计蓝图来描述系统的结构。(Rational Rose)

2.设计的三层结构

  客户机/服务器体系结构的广泛使用预示了系统复杂化的发展趋势,为了解决这一问题,与之相应的三层结构方案(three-tiered)越来越得到了广泛的应用。

  传统的两层结构不是“胖客户机”就是“胖服务器”,胖客户机结构将事务处理原则在用户端处理,胖服务器则将之与集成在数据库中,大量的数据流动为维护和编程带来了极大的困难,而且,其中包含的事务处理原则不能与其它应用共享。

  三层结构方案是指由用户接口层、事务处理原则层和数据层的应用模型。与传统的两层结构相比,它有着更多的优点:

1).对应用结构任意一层做出修改时,只对其它层产生极小的影响。

2).固有的可塑性,三层既可共存于单机之中,也可根据需要相互分开。

3).公用代码数据库使事务处理规则在系统中共享。

3.采用面向对象技术设计系统的步骤

a.       描述系统需求;

b.       根据需求建立系统的静态模型,以构造系统的结构;

(——以上两步建立的模型都是静态的,包括用例图、类图(包括包)、对象图、组件图和配置图,是UML的静态建模机制。)

c.       描述系统的行为;

(——所建立的模型或者可以执行,或者表示执行时的时序状态或交互关系。它包括状态图、活动图、顺序图和合作图等4个图形,是UML的动态建模机制。)

 

       需求分析阶段——可以用用例图来捕获用户需求。通过用例建模,描述对系统感兴趣的外部角色及其对系统(用例)的功能需求。

       系统分析阶段(概要设计)——主要关心问题领域中的主要概念(如抽象、类和对象等)和机制,需要识别这些类一起它们相互间的关系,并用UML类图来描述。为实现用例、类之间的协作,可以用UML动态模型来描述。在此阶段,只对问题域的对象(现实世界的概念)建模,而不考虑定义软件系统中技术细节的类(如处理用户接口、数据库、通信和并行等问题的类)

       系统设计阶段(详细设计)——为构造阶段提供更详细的规格说明。

4.Rose概述

Rose模型的四个视图是Use  Case视图 、Logical视图、Component视图和Deployment视图。每个视图针对不同对象,具有不同用途。Use Case视图包括系统中的所有角色、案例和Use Case图,还包括一些Sequence图和Collaboration图。

  Logical视图关注系统如何实现使用案例中提到的功能。它提供系统的详细图形,描述组件间如何关联。除其它内容之外,Logical视图还包括需要的特定类、Class图和State Transition 图。利用这些细节元素,开发人员可以构造系统的详细设计。

  Component视图包括模型代码库、执行库和其它组件的信息。组件是代码的实际模块。Component视图的主要用户是负责控制代码和编译部署应用程序的人。有些组件是代码库,有些组件是运行组件,如执行文件或动态链接库(DLL)文件。

  Collaboration图关注系统的部署,可能与系统的逻辑结构不同。整个小组都用Collaboration图了解系统部署,但用户是发布应用程序的人员。

Rose的九种图

  用例图use case diagram,描述系统功能
  类图class diagram,描述系统的静态结构
  对象图object diagram,描述系统在某个时刻的静态结构
  序列图sequence diagram,按时间顺序描述系统元素间的交互
  协作图Collaboration diagram,按照时间和空间顺序描述系统元素间的交互和它们之间的关系
  状态图state diagram,描述了系统元素的状态条件和响应
  活动图activity diagram,描述了系统元素的活动
  组件图component diagram,描述了实现系统的元素的组织
  配置图deployment diagram,描述了环境元素的配置,并把实现系统的元素映射到配置上

  根据它们在不同架构视图的应用,可以把9种图分成:

用户模型视图:用例图

结构模型视图:类图、对象图

行为模型视图:序列图、协作图、状态图、活动图(动态图)

实现模型视图:组件图

环境模型视图:配置图

 

      

UML建模过程笔记

       首先,要区别视图和图的区别,视图是由很多图组成的,不同的视图可以用来描述同一系统的不同方面,从而更好的来描述系统。而图是由各种图片组成的,可用来组成视图

       视图包含:用例视图(Use-case View)

                       逻辑视图(Logical View

                       组件视图(Component View)

                       并发视图(Concurrency View)

                       展开视图(Deployment View)

       等等。

       图包含:用例图——1

                     类图

                     对象图

                     状态图(侧重对象状态的描述)——2

              序列图(侧重于交互的时间顺序的描述)

              协作图(侧重于涉及到的对象空间关系的描述)

              活动图(侧重于交互动作的描述)——3

              组件图

              展开图

描述用例内容的一般是用例图和活动图(比较正式的结构)

UML中实现用例的基本思想是用协作来表示用例,而协作又被细化为若干个图(协作图、序列图、活动图),通过描述类、对象之间的关系来描述交互功能。

       类图是构建其它图的基础,没有类图就没有状态图、协作图等其他图,也就无法表示系统的其它各个方面。类与类之间的关系有关联、通用化(继承)、依赖、精化。

       关联:描述类与类之间的连接,即“彼此知道,相互通信”;

       含:普通、递归、限定、或、有序、三元、聚合等七种

 
【RKNN】RKNN-Toolkit2 Python API函数详解 RKNN-Toolkit2 的 API 设计以开发者效率为核心,覆盖模型转换、量化、部署全流程。通过灵活的参数配置(如多核调度、混合量化)和调试工具(性能分析、精度对比),可快速适配复杂边缘场景。 阅读详情

相关推荐

基于FPGA的DDS信号发生器

之前的博客讲到了DDS的基本原理,现在用Verilog代码实现DDS,能够产生四种波形,方波,三角波,正弦波,锯齿波,用按键来控制频率和选择波形。其中按键消抖模块来自小梅哥的FPGA自学笔记设计与验证这本书。 module DDS_Module( Clk, Rst_n, EN, Fword, Key1, Pword, DA_Clk, DA_Data ); input Clk...

qq_43534451的博客 9950

软件工程重点记录-第一章1.3/1.4

1.3 软件生命周期 软件生命周期由软件定义、软件开发和运行维护(也称为软件维护)3个时期组成,每个时期又进一步划分成若干个阶段。 1.3.1 软件定义(系统分析) 软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析。 软件定义时期的任务是: 确定软件开发工程必须完成的总目标; 确定工程的可行性; 导出实现工程目标应该采用的策略及系统必须完成的功能; 估计完成该项工程需要的资源和成本, 并且制定工程进度表。 1.3.2 1.4 软件过程(3WH) 软件过程是为了获得高质量软件所需要完

必修居士的博客 638

FortiOS路径遍历漏洞CVE-2022-41328实战复现:从环境搭建到漏洞利用全记录

本文深入解析FortiOS路径遍历漏洞CVE-2022-41328,从漏洞背景、影响范围到技术原理进行全面剖析。提供详细的漏洞复现环境搭建步骤和实战利用方法,并给出官方修复方案与临时缓解措施,帮助企业有效防御此类防火墙漏洞风险。

weixin_30485379的博客 524

10.1软件工程知识详解上

主要关心需求变更过程种的需求风险管理,带有风险的做法有:无足够用户参与、忽略了用户分类、用户需求的不断增加、摸棱两可的需求、不必要的特性、过于精简的SRS、不准确的估算。需求开发、技术解决方案、产品集成、验证、确认、组织级过程焦点、组织级过程定义、组织级培训、集成项目管理、风险管理、集成化的团队、决策分析和解决方案、组织级集成环境。需求开发、技术解决方案、产品集成、验证、确认组织级过程焦点、组织级过程定义、组织级培训、集成项目管理、风险管理、集成化的团队、决策分析和解决方案、组织级集成环境。

AI 爪客,专注 AI 智能体与 Skill 研发落地,斩获腾讯云、讯飞、小米等多场 AI 赛事奖项,分享 Agent 实战干货与工程化经验。 1372

Scratch离线版部署指南:解决资源缺失与页面显示异常问题

本文提供了一份详尽的Scratch离线版部署指南,旨在解决网络依赖导致的资源缺失与页面显示异常问题。通过从基础文件获取、自动化资源抓取到生产环境部署的完整流程,帮助教育工作者和开发者在无网络环境下搭建功能完整的本地Scratch编辑器,确保编程教学的顺利进行。

wine的专栏 1264

Photoshop免费获取指南:官方试用与开源替代方案详解

图像处理软件是数字内容创作的核心工具,其工作原理基于像素编辑、图层叠加与算法滤镜。这类软件的技术价值在于为设计师、摄影师和内容创作者提供了强大的视觉表达能力,广泛应用于平面设计、UI/UX、摄影后期及社交媒体内容制作等场景。在众多工具中,Adobe Photoshop以其全面的功能和行业标准地位备受关注。对于希望免费体验或使用的用户,存在合法且安全的途径。其中,Adobe官方提供的7天免费试用版允许用户在安全环境下体验完整功能,而开源替代方案如GIMP则提供了长期免费的强大图像编辑能力。理解这些合法获取方式

cigang4063的博客 526

10.2软件工程知识详解下

BPR是对企业的业务流程进行根本性的再思考和彻底性的再设计,从而获得可以用诸如成本、质量、服务和速度等方面的业绩来衡量的显著性的成就。注意m和n代表的含义不能混淆,可以用一个最简单的环路来做特殊值记忆此公式,另外,针对一个程序流程图,每一个分支边(连线)就是一条有向边,每一条语句(语句框)就是一个顶点。构造卓越的业务流程并不是流程再造,而是根据现有流程的具体情况,对流程进行规范化的设计。一个模块调用另一个模块时,传递的是控制变量,被调用模块通过该控制变量的值有选择的执行模块内的某一功能。

AI 爪客,专注 AI 智能体与 Skill 研发落地,斩获腾讯云、讯飞、小米等多场 AI 赛事奖项,分享 Agent 实战干货与工程化经验。 1869

Vivado ChipScope Debugging: Overcoming Common DRC Errors in FPGA Design

本文深入解析Vivado ChipScope调试中常见的DRC错误,特别是AVAL-244和AVAL-245等时钟相关问题,提供实用的Tcl命令解决方案和最佳实践。通过将DRC错误降级为警告的技巧,帮助FPGA设计者高效完成调试流程,同时强调何时应保留DRC检查以确保设计可靠性。

weixin_30335575的博客 417

【亲测免费】 软件工程利器:UML图详解例题资源推荐

软件工程利器:UML图详解例题资源推荐 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在软件工程的世界里,UML(统一建模语言)是不可或缺的工具。它通过图形化的方式,帮助开发者、设计师和项目经理更好地理解和沟通系统的结构、行为和交互。为了帮助广大软件工程爱好者深入掌握UML图的应用,我们特别推出了“软件工程——UML图详解例题”资源文件。 本资源文件不仅涵盖了UML中...

gitblog_09803的博客 685

STC15W204S最小系统开发指南:从串口通讯到自动热加载全流程

本文详细介绍了STC15W204S最小系统的完整开发流程。从芯片资源解析、最小系统搭建、串口通讯驱动编写(使用Timer2生成波特率),到实现基于魔术值触发的自动热加载功能,并最终集成Keil与STC-ISP软件,构建高效的自动化开发工作流,显著提升嵌入式调试效率。

a1b2c的博客 393

pytorchDataLoader中调整数据长度不一致问题(lstm等)

数据长度不一致 用pytorch做rnn的时候,如果输入数据不一样长,可以用两种方式解决。 一种是自定义collate方法, #自定义collate_fn dataloader.DataLoader(dataset,4,True,collate_fn=my_collate) 然后里面写数据和标签载入方式即可 def my_collate(batch): data = [item[0] for item in batch] target = [item[1] for item in batc

weixin_48174100的博客 7771

『软件工程2』详解软件工程和软件过程模型

文章目录一、软件工程的定义1、Fritz Bauer在NATO上给出的定义2、Barry Boehm3、IEEE在软件工程术语汇编中的定义二、软件工程的层次1、软件工程三个要素2、软件工程的层次——图解3、软件工程的层次——逐一分析三、软件过程的三个阶段1、定义阶段——“做什么”2、开发阶段——“如何做”3、支持阶段——“变化”四、软件过程框架1、引例——煮蛋的启示2、软件工程的过程定义3、软件过程框架五、CMM1、基础知识2、CMM的级别六、软件过程模型1、软件过程模型概述2、软件过程模型分类3、传统的软

moandaylab 3765

一文弄懂Word2Vec之skip-gram(含详细代码)

目录 前言 一、什么是Skip-gram算法 二、目标是什么 三、定义表示法 3.1 one-hot向量 3.2 词向量(word vector) 3.3 单词矩阵 3.4 单词相似度 3.5 softmax函数 3.6算法过程 3.7 求softmax 四、skipgram代码实现 4.1 如何把词转换为向量 4.2 CBOW和Skip-gram的算法实现 Skip-gram的理想实现 Skip-gram的实际实现 4.3 使用Pytorch实现Skip-gram .

Python,数据分析,机器学习,深度学习 1万+
上一篇: 人人都有追求幸福的权利.
下一篇: JAVA网络编程中关于一个客户端/服务器中多线程并发文件传输的程序问题
kevin_long
博客等级 码龄20年 30粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值