Conducting and Reviewing the Software Design Model

      The design model resides at the core of the software engineering process. It is the place where quality is built into the software (and the place where quality is assessed. For this checklist, the more questions that elicit a negative response, the higher the risk that the analysis model will adequately serve its purpose. . For this checklist, the more questions that elicit a negative response, the higher the risk that the design model will not adequately serve its purpose.

      General issues:

          o Does the overall design implement all explicit requirements? Has a traceability table been developed?

      设计对需求的匹配?



          o Does the overall design achieve all implicit requirements?

          
    
          o Is the design represented in a form that is easily understood by outsiders?

        易理解?

          o Is design notation standardized? Consistent?

        

          o Does the overall design provide sufficient information for test case design?

        可测试。

          o Is the design created using recognizable architectural and procedural patterns?

        常用的架构 和模式?
        

          o Does the design strive to incorporate reusable components?

        重用组件?

          o Is the design modular?

        模块化

          o Has the design defined both procedural and data abstractions that can be reused?
        重用的过程 / 数据 抽象?
        

          o Has the design been defined and represented in a stepwise fashion?
        逐渐细化的表述?    

          o Has the resultant software architecture been partitioned for ease of implementation? Maintenance?
        可部署性? 可维护性?


          o Have the concepts of information hiding and functional independence been followed throughout the design?

           封装性?

          o Has a Design Specification been developed for the software?

        文档?


      For data design:

          o Have data objected defined in the analysis model been properly translated into required data structured?

        数据映射with analysis?        

          o Do the data structures contain all attributes defined in the analysis model?
        数据属性?

          o Have any new data structures and/or attributes been defined at design time?

        新的数据结构?

          o How do any new data structures and/or attributes related to the analysis model and to overall user requirements?

        用户需求与数据结构匹配吗?

          o Have the simplest data structures required to do the job been chosen?

        数据结构简单吗?

          o Can the data structures be implemented directly in the programming language of choice?

        编程语言适合数据结构?

          o How are data communicated between software components?
        软件组件之间的数据交换?

          o Do explicit data components (e.g., a database) exist? If so, what is their role?

        数据库?

      For architectural design:

          o Has a library of architectural styles been considered prior to the definition of the resultant software architecture?
        
        架构模式?

          o Has architectural tradeoff analysis been performed?
        架构分析的tradeoff?

          o Is the resultant software architecture a recognizable architectural style?

        认可的架构风格?

          o Has the architecture been exercised against existing usage scenarios?
        架构有应用示例吗?    

          o Has an appropriate mapping been used to translate the analysis model into the architectural model?
        
        分析和架构之间的mapping?

          o Can quality characteristics associated with the resultant architecture (e.g., a factored call-and-return architecture) be readily identified from information provided in the design model?
        架构的质量特点?


      For user interface design:

          o Have the results of task analysis been documented?
          o Have goals for each user task been identified?
          o Has an action sequence been defined for each user task?
          o Have various states of the interface been documented?
          o Have objects and actions that appear within the context of the interface been defined?
          o Have the three "golden rules" (SEPA, 5/e, p. 402) been maintained throughout the GUI design?
          o Has flexible interaction been defined as a design criterion throughout the interface?
          o Have expert and novice modes of interaction been defined?
          o Have technical internals been hidden from the causal user?
          o Is the on-screen metaphor (if any) consistent with the overall applications?
          o Are icons clear and understandable?
          o Is interaction intuitive?
          o Is system response time consistent across all tasks?
          o Has an integrated help facility been implemented?
          o Are all error message displayed by the interface easy to understand? Do they help the user resolve the problem quickly?
          o Is color being used effectively?
          o Has a prototype for the interface been developed?
          o Have user's impressions of the prototype been collected in an organized manner?

      For component-level design:

    * Have proof of correctness techniques (SEPA, 5/e, Chapter 26) been applied to all algorithms?

    算法正确性?

    * Has each algorithm been "desk-tested" to uncover errors? Is each algorithm correct?

    算法?

    * Is the design of the algorithm consistent with the data structured that the component manipulates?

    算法?
    * Have algorithmic design alternatives been considered? If yes, why was this design chosen?

    替代算法考虑了吗?

    * Has the complexity of each algorithm been computed?
    
    每个算法的复杂性考虑了吗?

    * Have structured programming constructs been used throughout?
    
    结构好吗?



西津渡