软件工程详解

软件工程详解
2006.04.12
一.常用的分析工具:

 测试工具: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中实现用例的基本思想是用协作来表示用例,而协作又被细化为若干个图(协作图、序列图、活动图),通过描述类、对象之间的关系来描述交互功能。

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

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

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

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件工程经济学是软件工程非常重要的一个分支学科,它主要研究软件开发过程的经济效益和成本效益。在课后答案详解方面,CSDN上提供了丰富的资源和讨论,以下是一个简要的300字回答。 CSDN(全称:国软件开发网)是一个专注于软件开发、编程技术和IT资讯的社区平台。在CSDN上,我们可以找到大量关于软件工程经济学的教学资料、课后答案详解以及相关案例等资源。 在课后答案详解方面,CSDN上一般会提供针对软件工程经济学课程的习题和练习题的解答,帮助学生更好地理解和掌握课程内容。这些答案详解通常包括了题目背景、解题思路和详细步骤,以及可能涉及到的公式和计算方法。答案解析过程也会对相关概念和理论进行解释和阐述,帮助学生更好地理解和应用知识。 此外,CSDN上也会有一些实战案例或者项目,通过对实际案例的分析,学生可以更好地理解软件工程经济学的应用和实际意义,并且可以通过案例的解析更好地掌握解题方法和技巧。 在CSDN上,学生们还可以通过查看其他人的讨论和提问,与其他学习者一起分享经验和解答疑惑。这是一个非常有价值的交流平台,可以更好地加深对课程内容的理解和消化。同时,学生们也可以向其他经验丰富的开发者和专家请教问题,获得更深入的解答和建议。 总的来说,CSDN作为软件开发领域的知识分享平台,提供了丰富的软件工程经济学课后答案和资源。学生们可以通过CSDN详细了解软件工程经济学的概念和方法,并通过案例分析和交流互动更好地掌握相关知识。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值