首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何描述软件产品的体系结构?

如何描述软件产品的体系结构?
EN

Software Engineering用户
提问于 2017-01-10 12:14:53
回答 3查看 9.5K关注 0票数 5

我在一家在嵌入式设备领域做用户界面的公司做CS硕士论文。作为其中的一部分,我正在开发一个库来集成一个特定的设备。我的C++库封装了设备驱动程序,并在Qt框架中集成了该设备的特性,以便它可以与各种基于Qt/QML的应用程序一起使用。

到目前为止,我已经编写了许多说明和详细的API文档(使用DO2)。但我不知道如何正确格式化所有的信息,以提供一个良好的概述,我的工作在论文中。简单地使用API文档是没有意义的,因为1)它太详细了,2)并没有对事物的结构和工作方式给出一个正式的概述。

据我所知,我至少要描述一下我正在开发的软件产品的以下方面:

  • 技术:我使用了哪些技术。我已经将我的项目分成:
    • 提供设备管理、数据转换和Qt集成的库;
    • 测试;及
    • 一个使用库的现成Qt小部件的集合。

  • 模式:我所使用的软件模式(MVC、Singleton、Factory、观察者等)。这里的问题是,有很多很多的模式,而且当涉及到哪种模式是确切的(仅MVC模式是非常有名的--从不同的作者那里挑选三本书时,很有可能这种模式的描述有很大的差异!)。就我个人而言,我遵循的原则是"XYZ对我来说是有意义的,因此我将使用它“,可能你们中的许多人会发现这个原则太宽泛了。:D
  • 信息流:这里主要是顺序图和流程图:如果用户做了动作X,设备和系统的其他部分是如何响应它的。
  • 数据管理:为了存储和处理来自设备的数据,我的库使用数据容器,如数组、向量、哈希表等。

我怀疑这是否足够,甚至是正确的,这就是我寻求帮助的原因。我找不到一步一步的教程,我可以遵循。我也不知道我要走多深。

我问过我的教授关于硬件级的东西,他说他不想在论文中看到这一点,我应该专注于我正在开发的东西。

但是,由于Qt框架本身有一个庞大而复杂的结构,这种限制只起了一点作用。例如,如果我使用一个QVector3D,是否需要详细描述它是什么以及它是如何管理的,或者我是否可以假设一个简单的“三维向量容器”就足够了?

坦率地说,我们研究过各种与软件体系结构相关的东西,如模式等,但我们从未被教过如何正式地描述软件系统。我以前所做的只是简短的实验室报告和API文档+一些关于性能的评估统计。

EN

回答 3

Software Engineering用户

回答已采纳

发布于 2017-01-10 15:47:04

考虑使用4+1体系结构视图来描述软件的体系结构。

意见摘要如下:

开发视图:从软件开发人员的角度来看的实现视图。UML图(例如包图)可以用来表示这个视图。

逻辑视图:它提供功能视图,描述系统向最终用户提供的功能。UML图(例如类图和活动图)可以用来表示逻辑视图。

物理观点:它揭示了系统工程师的观点。它也被称为部署视图。可以使用部署图来描述视图。

Process视图:它捕获动态方面(并发性、运行时行为等)关于系统的。活动图适用于视图。

场景:场景(或用例)描述对象之间和进程之间的交互序列。

票数 8
EN

Software Engineering用户

发布于 2017-01-10 15:27:04

你需要图表。一个好的图表比一堵墙的文字更好,并且可以粘贴到任何文件中(包括论文)。UML类图是一个明显的起点。如果其他UML图对您有用,就添加它们--例如包图、用例图或序列图。如果需要的话,可以使用其他非UML类型的图表。

一旦你有了图表,你就可以把它们周围的单词写出来。

票数 2
EN

Software Engineering用户

发布于 2017-01-17 13:10:46

这个问题有多个正确的答案,所以我将把@Tushar给出的一个作为正确的答案。

在我的例子中,两种模式的混合非常适合。到目前为止,我一直在使用分层体系结构模型。当我浏览更多信息并找到.Net微框架时,我收到了对我的案件的“正确答案”的确认:

我的系统有一个非常类似的布局(除了我使用的是Qt而不是.NET )。但是,该模型不包括建议的4+1视图模型所包含的内容,即场景视图。因此,我要做的是使用层模型来描述我的系统的一般结构,添加UML (主要是活动和序列)图,以显示输入和输出是如何处理的,最后但并非最不重要的是,添加一节描述我的软件提供的特性的场景。

我发现分层模型是相对简单的(与4+1视图模型不同,在这种模型中,您必须指定很多通常不会花在论文中的东西),但是提供了一个系统的很好的概述,特别是在硬件和软件之间的交互方面。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/339864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档