常见问题

问:为什么不直接用Java/ C#编程?
答:如果你的程序比较小,建模和代码生成可能不会提供太多的好处。但是软件项目中除了“我能多快生成代码”之外,还有其他更重要的因素需要考虑,如:

  • 使用领域内的特定语言以提高效率(JAVA,C#,C+ +,C,通用的语言)
  • 自动生成代码的质量收益
  • 代码移植到新平台,框架和语言的重定目标能力
  • 对不同的架构进行试验或者切换的能力,包括自动处理多核和多线程
  • 始终对所有编码运用一致的标准和原则
  • 避免由于代码维护或性能提升而带来“补丁式” 代码
  • 保证架构和设计文件的正确性和实时性
  • 从需求得到全面的测试套件的能力
  • 在产品生命周期里,因添加人员和团队引起的变化的适应能力
  • 从分离的功能和平台信息上启动产品线

问:什么类型的应用程序用UniqueSoft的开发方法是效果最佳的?
答:比较合适的例子:

  • 需要状态机的系统
  • 反应系统(输入,处理,响应)
  • 协议栈
  • 大型,复杂的系统
  • 产品线开发
  • IT系统(网络服务)
  • 安全系统
  • 可能会移植到新的语言,框架或平台的系统
  • 高性能系统
  • 具有一个中央处理步骤的系统,它会读取不同的格式输入,链接各种其他系统的接口,并产生不同格式的输出,尤其是如果接口列表中在增长
  • 针对新的语言和平台的系统逆向工程

比较不合适的例子:

  • 低级的,基于固件的代码(DSP,FPGA,…)
  • GUI开发(这些有很好的工具,我们也使用它们,但都没有特别的优势)
  • 非常小,简单,一次性,生命周期末的代码
  • 非常小,对现有的代码做零散的改变
  • 对于可能会涉及到这些类型的软件开发较大的项目,UniqueSoft可以合作或独自开发,虽然这样没有利用模型驱动的开发优势

问:UniqueSoft工具和符号有专利吗?
答:虽然部分是基于开放标准的框架 ,比如Eclipse,但是UniqueSoft的核心工具仍然是公司专有的。尽管如此,我们的工具也可经过授权使用。我们的主要建模语言是TDL,它是基于UML思想改进而成的。这种语言符合ITU-T Z.109标准。

问:我们如何合作开发?
答:我们可以和任意一家公司合作,无论他们使用的是何种生命周期。我们鼓励以UniqueSoft和客户之间的合作关系来完成项目。也就是说,我们不鼓励当Uniquesoft接手项目时,仅由UniqueSoft单方面完成项目,客户不需要任何参与的观点。我们可以考虑采取任何形式及任何阶段的需求。例如,我们曾完成了具有以下不同类型需求的项目:

  • 几张营销层次的PPT
  • 无结构的文本文件
  • 经过编号、整理,低层次需求的文档
  • 标准文档
  • 一份电子表格形式的需求
  • 协议数据单元规格表
  • 动态物件导向需求系统
除了项目开始时已知的需求,将创建一份SOW,还应包括以下一些信息:项目摘要、技术假设、交付内容、项目日程、验收标准、所需设备、管理和行政细节。另请参阅本部分中其他问题的具体的答案。

问:UniqueSoft是否需要预先知道所有需求?
答:否,完整的要求在一开始是不需要的。在早期,我们经常与客户合作,来完成和正式确定需求。需求文档的创建通常是一个项目的一部分。该文档中细节的数量取决于预先的需求知道多少。例如,如果一个项目是基于标准文档来实现系统,项目需求文档可能参考标准和名单,可被选择性执行的工作列表,以及任何例外或对标准的补充等等。
另外请注意,在项目开始时,仅有一份高层次的需求对于敏捷开发来说是非常常见的。而需求的细节将会在开发的同时完成。一个有GUI组件的项目也是如此,起初指定应用程序的外观和风格并非易事。这些项目通常经过几个计划好的迭代。 UniqueSoft可以接受使用这些样式的项目。

问:你们有现场的工程师吗?
答:有。根据该项目的具体情况,工程师可能会被多次派发现场支持。
在几个特殊的合作点,如需求审查,交付整合,现场测试等。

  • 为了项目开发
  • 维护活动

现场工作被视为SOW的一部分。

问:如果我们之间不再存在工作关系会怎么样?
答:客户可以在任何时候接管代码进行维护。 他们将得到所有的产品组件和文档,其中包括最新的需求、架构、设计和测试用例。

问:你们如何调试生成的代码?
答:调试生成的代码与调试手编代码的方式相同。不过,这只能作为最后的办法。典型的调试周期应该是:

  • 找到引发错误的测试用例,并在建模工具中运行它。建模工具中含有标准源代码级别的调试工具,如断点、单步、变量检验等等。
    • 如果故障出现在模型中,修正模型(如有必要,遵循有关规定),重新生成代码,运行复原测试套件。
    • 如果故障未出现在模型中,那么问题可能与代码生成器,手写代码,或库接口有关。
  • 在生成代码中启用模型级跟踪使得在故障被引入时分离出来。我们有一个关于模型级跟踪介绍。Frank发现并总结了它。这种跟踪可以在运行时启用。
  • 如果需要额外的的调试,标准工具,如源代码级别的追踪器,GDB(GNU调试器)等,可以与手写代码一起使用。