软件工程设计概念与体系结构设计

软件工程第四次作业

11.1 当你编写程序时是否会设计软件?软件设计和编码有什么不同?

  • 我在编写程序是并不会设计软件,编写程序和设计软件是不同的概念。当软件质量被确定好时才会设计软件。在设计软件的时候,首要需求必须是被分析和被具体指定了。
  • 在软件设计的过程中,设计工程是设计软件的概念之一。在开始软件设计时,需求应该被分析和建模。这个模型能够保证质量和在编码生成时能够进行改进。
  • 在一个软件工程的内容中,首先需要的是改进项目的模型,而并不是项目本身。

软件设计和编码的不同

  • 首先非常明确的是,软件设计不是编码,编码也不是软件设计。他们是项目不同组件所产生的。
  • 设计是用来解决问题的逻辑的描述。
  • 编码是实现设计的语言规范,他是运行在电脑上并提供预期结果的

11.17 简要描述设计模型的四个元素。

  1. 数据设计元素

    • 在数据设计元素中,创建了在高抽象级上表示的数据模型和信息模型。数据结构通常是软件设计的重要部分。在数据设计元素中可以存放类图,分析包,CRC模型,协作图,数据流图,控制流图,处理过程说明等。

    • 在体系结构级,数据设计关注文件或数据库,在构件级,数据设计考虑实现局部数据对象所需的数据结构

  2. 体系结构设计元素

    • 软件的体系结构设计等效于房屋的平面图。软件体系结构设计元素提供了整个软件的整体视图。

    • 体系结构模型从以下三个来源导出:1. 关于将要构建的软件的应用域信息。 2. 特定的需求模型元素,如数据流图或分析类,现有问题中他们的关系和协作。 3. 可获得的体系结构风格和模式

    • 体系结构设计元素通常被描述成一组相互联系的子系统,且常常从需求模型的分析包中派生出来。

  3. 接口设计元素

    • 软件的接口相当于一组房屋的门,窗和外部设施的详细绘图。软件接口设计元素描述了信息如何流入和流出系统,以及被定义为体系结构一部分的构件之间是如何通信的。

    • 接口设计有三个重要元素:1. 用户界面(User Interface) 2. 和其他系统、设备、网络、信息生成者或使用者的外部接口。3. 各种设计构件之间的内部接口。能够使软件进行外部通信,还能使软件体系结构中的构件之间进行内部的通信和协作。这些接口设计元素能够使软件进行外部通信,还能使软件体系结构中的构件之间进行内部通信和协作。

    • UI设计使软件工程中的主要活动,包含美学元素,人机工程元素,技术元素等。

    • 外部接口设计需要发送和接收信息实体的确定信息

    • 内部接口设计和构件级设计紧密相关。

  4. 构建级设计元素

    • 软件的构件级设计相当于一个房屋中的每个房间的一组详图(规格说明)软件的构件级设计完整地描述了每个软件构件的内部细节。为此,构件级设计为所有局部数据对象定义数据结构,为所有在构件内发生的处理定义算法细节,并定义允许访问所有构件操作的接口。
    • 在面向对象的软件工程中,使用UML图表现的一个构件。能够反应整个构件图的整体规划。

12.2 举出2-3个例子,说明12.3.1节中提到的每一种体系结构风格的应用。

  1. 以数据为中心的体系结构:

    数据存储位于这种体系结构的中心,其他构件会经常访问该数据存储,并对存储中的数据进行更新,增加,删除,或者修改。

    例子:

    图书目录查询系统:这里涉及到许多数据的管理,数据库的构建,存储等

    线上购书系统: 购书记录也是需要不断对数据进行访问删除存储。

    剪贴板:剪贴板是一个用来进行短时间的数据存储,并在文档/应用之间进行数据传递和交换的软件程序

  2. 数据流体系结构:

    当输入数据经过一系列计算构件和操作构件的变换形成输出数据时,可以应用这种体系结构。

    例子:

    工程软件: 这里涉及到许多构件的前后关系,要经过一系列计算构件

    科学软件

    Unix 的Shell程序

  3. 调用和返回体系结构:

    这种体系结构风格能设计出一个相对易于修改和扩展的程序结构。

    例子:

    任何I-O-P 申请。

    C语言或C++语言中所用到的使用函数时的结构

  4. 面向对象体系结构

    系统的构件封装了数据和必须用于控制该数据的操作,构件间通过信息传递进行通信与合作

    例子:

    所有面向对象的程序,C++,Java中的面向对象的程序的内容

    基于GUI的应用程序,用来显示画面

  5. 层次体系结构

    层次体系结构中定义了一系列不同的层次,每个层次各自完成操作,这些操作逐渐接近机器的指令集。

    例子:

    客户端服务器软件一般来说都是分层的

    一些应用功能要从底层操作系统分离的应用程序。

12.7 使用本章描述的设计方法开发PHTRS的软件体系结构。

PHTRS系统是城市公共工程部门开发路面坑洼跟踪和修补系统。

PHTRS采用的是以数据为中心的体系结构。数据中心是包含有坑洼信息,报告信息,修补信息的数据库。

体系结构基本上分为4个层次:

  1. 用户界面层:是由网站和在用户桌面上的用户界面程序组成的。市民通过网站去登录并且报告一个坑洼信息。施工人员会用软件登录数据库并去生成工作顺序和损失报告。工程承包商用相同的软件去根据修补信息,比如修补员工的基本信息,特长,材料使用,修补时长等数据来更新坑洼情况。

  2. 业务层:业务层是业务逻辑存在的地方。它包括业务组件,所有业务实体和定义了管理业务工作流的规则。

  3. 数据访问层:这一层提供了更多的清晰性和数据安全性。数据只能够被类中定义的去访问数据库,并进行增删改。

  4. 最后是数据库。 是设计中的最后一层

软件工程设计概念与体系结构设计