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?
結構好嗎?
西津渡