软件工程之软件设计阶段

软件设计阶段也是软件工程里的一个中重要问题,我把它分为三部分,软件设计阶段、软件编码阶段和软件测试阶段。

一、软件设计阶段

软件工程之软件设计阶段_第1张图片        

根据用信息域表示的软件需求,以及功能和性能需求分析,软件设计阶段的目标有数据设计、系统结构设计和过程设计,这是从技术的观点出发得到的。从工程管理的角度来看,软件设计分两步完,即概要设计和详细设计,这也就是软件设计的任务。

软件设计过程分为七个步骤:

1、制定规范;

2、软件系统结构的总体设计;

3、处理方式设计;

4、数据结构设计;

5、可靠性设计;

6、编写概要设计阶段的文档;

7、概要设计评审

软件设计基础也有七个:

1、 自顶向下,逐步细化。将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化。

2、软件结构。软件结构包括两部分。程序的模块结构和数据的结构。

3、程序结构。分为树状结构和网状结构。

4、结构图

5、模块化。模块的命名有两种方式,一种是以功能做模块名,另一种是以功能的缩写做模块名。模块的调用关系和接口容易出现问题,当我们编写程序的时候应该多注意这些问题。模块具有独立性,指软件系统中每个模块只涉及软件要求的具体的子功能,一般用模块间耦合和模块内聚这两个准则来度量模块独立性。模块具有三个基本属性,功能(描述该模块实现什么功能),逻辑(描述模块内部怎么做),状态(该模块使用时的环境和条件)。

6、抽象化。对事物的分析。

7、信息隐蔽。


二、编码阶段。

软件工程之软件设计阶段_第2张图片

首先是程序设计语言,程序设计语言分为汇编语言和高级语言两大类。语言选择,应用领域的不同决定选择的语言,也有根据系统用户的要求决定,在运行目标系统的环境中可以提供的编译程序往往限制了对语言的选择,程序员的经验和知识也决定了语言的选择,软件可移植性要求等条件都有可能限制语言的选择。而选择语言的原则有,最少的工作量原则,最少技巧性原则,最少错误原则,最少维护原则,减少记忆原则。根据以上的分析,可得出以下总原则,想求正确后求快,先求清晰后求快,求快不忘保持程序正确,保持程序整洁一求快,不要引效率而牺牲清晰。

其次是程序化程序设计。在编写程序是,强调使用几种基本控制结构。在程序设计过程中,尽量采用自顶向下和逐步细化的原则,由粗到细,一步步展开。结构化程序设计的主要原则是:

1、使用语言中的顺序、选择、重复等有限的基本控制结构表示程序逻辑

2、选用的控制结构只准许有一个入口个一个出口

3、复杂结构应该用基本控制结构进行组合嵌套来实现。

在编码阶段时也应采取详细设计是的自顶向下,逐步求精的方法。


再者就是程序设计风格。程序实际上也是一种供人阅读的文章,有一个文章的风格的问题。因此程序应具有以下良好的风格:

1、源程序文档化。标识符的命名应该规范,清晰明了。要有一定的安排注释,别人能够读懂你的代码。程序看起来不让人觉得很难看,也就是程序的视觉组织。

2、数据说明。为了使程序中的数据说明更易于理解和维护,必须注意的是,数据说明的次序应当规范化,说明语句中变量安排有序化,使用注释说明复杂数据结构。

3、语句结构。语句构造力求简单,直接,不能为了片面追求效率而使语句复杂化。如:一行内只写一条语句,程序编写首先应当考虑清晰性,程序要能直截了当地说明程序员的用意等。

4、输入/输出方法输入和输出信息是与用户的使用直接相关的,输入和输出的方式和格式应当尽可能方便用户的使用。

最后是程序的复杂性度量。程序复杂性主要指模块内程序的复杂性,代码行度量的方法基本考虑是统计一个程序模块的源代码行数目,并以源代码行数做为程序复杂性的度量。McCabe度量法,又称环路复杂性度量,是一种基于程序控制流的复杂性度量方法。


三、软件测试

软件工程之软件设计阶段_第3张图片

软件测试是程序的执行过程,主要目的就是发现问题。软件测试的原则有,尽早地和不断地进行软件测试,测试用例应由测试输入数据和对应的预期输出结果这两部分组成,程序员应避免检查自己的程序,在设计测试用例是,应担包括合理的输入条件和不合理的输入条件。我们在敲机房收费系统的时候,都是一边敲一边找错,敲完之后让身边的同学帮忙找错,师父验收的时候也是输入一些合理的条件和不合理的条件,我觉得这些属于软件测试的一部分吧。

测试用例设计,测试用例设计有黑盒测试盒白盒测试两种方法。黑盒测试是把测试对象看做一个黑盒子,检查程序的功能是否符合它的功能说明。黑盒测试的测试用例设计有等价类划分,边界值分析,错误推测法和因果图。白盒测试是把测试对象看做一个透明的盒子,对程序所有逻辑路径进行测试。在白盒测试中,需要使用逻辑覆盖着技术,逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术,包括了语句覆盖,判定覆盖,条件覆盖,判定一条件覆盖,条件组合覆盖和路径覆盖。

软件测试的策略有:

1、单元测试。单元测试又称模块测试,是针对软件设计的最小单位——程序模块进行正确性检验的测试工作。它的内容包括,模块接口,出错处理,独立路径,边界条件和局部数据结构。

2、组装测试。分为一次性组装方式和增殖式组装方式。增殖式组装方式有自顶向下的增殖方式、自底向上的增殖方式和混合增殖式测试。

3、确认测试。确认测试又称有效性测试。任务是验证软件的功能和性能及其它特性是否与用户的要求一致。

4、验收测试。验收测试是以用户为主的测试。软件开发人员和QA(质量保证)人员也应参加。由用户参加设计测试用例,使用生产中的实际数据进行测试。

5、系统测试。将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试盒确认测试。

软件测试的种类分为多种,有功能测试,可靠性测试,性能测试,恢复测试,安全性测试,可使用性测试,过程测试,互连测试,兼容性测试,容量测试和文档测试。

软件调试是在进行了成功的测试之后才开始的工作,它与软件测试不同,调试的任务是进一步诊断和改正程序中潜在的错误。

调试的步骤:

1、从错误的外部表现形式入手,确定程序中出错位置;

2、研究有关部分的程序,找出错误的内在原因;

3、修改设计和代码,以排除这个错误;

4、重复进行暴露了这个错误的原始测试或某些有关测试。

调试的关键在于推断程序内部的错误位置及原因,可采用强行排错、回溯法调试(比较适合小程序中的调试)、归纳法调试(从错误征兆入手)、演绎法调试(从原理或前提出发)


四、总结

软件工程的设计阶段这三个部分缺一不可,有一个合理的软件设计才能又好又快的编写代码部分,代码部分肯定是有或多或少的错误,所以就少不了测试,找出错误,解决问题,有了这三个步骤才能保证程序的正常运行。

你可能感兴趣的:(C/S,软件工程)