您好, 访客   登录/注册

软件系统设计中若干难点问题研究

来源:用户上传      作者: 王晞

  摘 要 一般地,现代软件系统设计的核心与难点内容是:体系结构设计、用户界面设计、数据库设计、模块设计等。本文对软件系统设计过程中若干难点问题进行了探讨。
  关键词 软件;系统设计;难点
  中图分类号TP31 文献标识码A 文章编号 1674-6708(2012)58-0171-02
  系统设计之源是软件需求,包括功能性需求与非功能性需求。系统设计的目标就是使所设计的系统能够被开发方顺利地实现,并且恰如其分地满足用户的需求,使开发方和用户的利益极大化。当然,产品不同,设计的重点也是不同的,设计过程也不完全相同。
  1 体系结构设计
  体系结构是指软件系统的基本和主体的形态,也就是软件系统中最根本的东西。
  1.1 合适性
  系统设计之源是需求,这是由商业目标决定的。高水平的设计高就高在“设计出恰好满足客户需求的软件,并且使开发方和客户方获取最大的利益,而不是不惜代价设计出最先进的软件。评估体系结构好不好的第―个指标就是“合适性”,即体系结构是否适合于软件的“功能性需求”和“非功能性需求”。大部分软件开发人员天生有使用新技术的倾向,而这种倾向对开发商业产品而言可能是不利的。
  1.2 结构稳定性
  体系结构是系统设计的第一要素,详细设计阶段的工作如用户界面设计、数据库设计、模块设计、数据结构与算法设计,等等,都是在体系结构确定之后开展的。高水平的设计应当能够分析需求文档,判断出哪些需求是稳定不变的,哪些需求是可能变动的。于是根据那些稳定不变的需求设计体系结构,而根据那些可变的需求设计软件的“可扩展性”。
  1.3 可扩展性
  可扩展性是指软件扩展新功能的容易程度。可扩展性越好,表示软件适应“变化”的能力越强。由于软件是“软”的,是否它天生就容易扩展新功能?这要视软件的规模和复杂性而定,但是并不是任何软件在设计的时候都要考虑可扩展性的。
  1.4 可复用性
  复用就是指“重复利用已经存在的东西”。被复用的对象可以是有形的物体,也可以是无形的知识财富。可复用性是设计出来的,而不是偶然得到的。要使体系结构具有良好的可复用性,设计师应当分析应用域的共性问题,然后设计出一种通用的体系结构模式,这样的体系结构才可以被复用。
  2用户界面设计
  通俗地讲,用户界面“好不好”主要看它是否容易使用及是否美观。易用性是指用户使用软件的容易程度。现代人的生活节奏快,干啥事都想图个方便,谁都不乐意掏钱买很难用的东西,所以把易用性作为用户界面的重要属性对待无可厚非。除了要求软件易用之外,人们还希望用户界面美观。美观的界面能消除用户由感觉引起的乏味、紧张和疲劳,大大提高用户的工作效率,从而进一步为发挥用户技能和为用户完成任务作出贡献。人们对奖的向往和追求是与生俱有的。显然没有开发人员愿意丑化自己的软件,也没有用户嗜好丑陋的界面。软件开发者要设计美,用户要享受美,所以界面的美是开发者与用户的共同需求。
  目前用户界面设计的难点在于国内绝大多数大学的计算机学科教育存在缺陷,没有开设人机工程学、美学、心理学这些必修课。由于学生们接受的教育几乎全是科学与技术,他们根本不知道怎样才能设计出易用、美观的用户界面,很多人甚至想都没有想过。当他们毕业后真正参与软件产品开发时,只好凭着个人的经验与感觉设计软件的用户界面,这样产生的界面往往得不到大众用户的认可。其次,开发人员在设计用户界面方面不仅存在先天的教育缺陷,更加糟糕的是还常常犯“错位”的毛病,即他以为只要自己感觉用户界面漂亮、使用起来方便,那么用户也一定会满意。俗话说“王婆卖瓜,自卖自夸”。当开发人员向用户展示软件时,常会得意地讲:“这个软件非常好用,我操作给你看,……是很好用吧:蛮漂亮的吧!”软件是否易用、是否美观要让用户来评价。如果用户对界面很不满意,开发人员不要有逆反心里:到哪里找来的笨蛋?其实不是用户笨,是自己开发的软件太笨了。当用户真的感到软件很好用时,一股温暖的感觉油然而生,于是就用“界面友好”来表扬这个软件。因此,要注意用户界面设计原则。
  2.1 用户界面适合于软件的功能
  用户界面一定要适合于软件的功能,这是最基本的要求。否则用户无法通过这个界面来使用软件,如果连用都不能用,“易用性”根本就无从谈起。例如,对于一个三维建模软件而言,如果用户不能使用鼠标对模型进行旋转、移动、缩放等操作,那么这个软件的用户界面就不适合软件的功能。如果不改进用户界面的话,即使软件的内核功能很强,这个软件也不能说是优秀的软件。
  2.2 容易理解和风格一致
  如果用户很难理解界面的意图,那么他使用起来肯定很费劲。所以“容易理解”是“容易使用”的前提条件。
  通用软件产品的界面设计很注重―致性。设计者必须密切注意在相同应用领域中最流行的软件的界面,必须尊重用户使用这些软件的习惯。同一类型软件的用户界面应当有一定程度的相似性。
  3 数据库设计
  数据库是存储和处理数据用的。数据库设计的难易程度取决于两个要素:数据关系的复杂程度和数据量的大小。如果应用软件只涉及几张简单的表,并且数据量特别小,那么设计这样的数据库就非常容易(例如设计一个班级的学生成绩单数据库)。但是并不是所有数据库都这样简单的。应用软件数据库设计的主要困难与对策如下。
  3.1 开发与平台无关的数据库应用程序
  目前国际上数据库系统有很多种。这些数据库系统之间的激烈竞争即有好处又有坏处。竞争的好处是使数据库系统不断发展和完善,并且避免价格垄断断开发出独特的功能以吸引更多的用户,所以各个数据库系统的独特功能无法形成统一标推,导致用户难以开发出与平台无关的数据库应用程序,因为用户很难抵御数据库系统独特功能的诱惑。
  SQL是数据库系统的标准查询语言。实际设计中如果开发的是通用的数据库应用软件,不想让应用软件与特定的数据库系统捆绑在意起,那么就老老实实地用SQL语言写程序。如果开发的是行业专用的数据库应用软件,并且这个行业已经指定了数据库系统,那么你可以超越SQL使用该数据库系统的独特功能。
  3.2 数据库性能优化问题
  数据库设计的主要挑战是“高速处理大容量的数据”。如何优化数据库的性能是设计人员经常面临的问题。数据库性能优化主要有两种途径:优化表结构本身和优化数据库的环境参数。除了优化表结构之外,优化数据库的环境参数也能够提高数据库的性能。
  4 模块设计
  在软件的体系结构设计中,模块的基本特征是“功能独立,并且可以被集成”。每个模块部具有特定的、明确的功能(否则不能成为模块)。人们在设计模块的应当尽量使模块的功能独立,因为功能独立的模块可以降低开发、测试、维护的代价。在设计模块时不仅要考虑这个模块应当有什么样的功能,还要考虑这个模块应该怎样与其他模块交流信息。
  接口设计是模块设计的核心工作之一,体现了信息隐藏这一原则。接口是模块的外部特征,应当公开;而数据结构、算法、实现体等则是模块的内部特征,应当隐藏。一个模块仅提供有限的接口,接口是模块与外界交互的唯一途径,每个接口实质上是一些函数的集合。内聚是一个模块内部各成分之间相关联程度的度量。模块设计者没有必要确定内聚的精确级别,重要的是尽量争取高内聚,避免低内聚。耦合是模块之间依赖程度的度量。内聚和耦合是密切相关的,与其他模块存在强耦合的模块通常意味着弱内聚,而强内聚的模块通常意味着与其他模块之间存在弱耦合。因此,模块设计应当争取“高内聚、低藕合”,而避免 “低内聚、高藕合”。
  由于现代的软件开发工具越来越先进,模块的详细设计和编程可以很好地融合在一起,而且效率相当高,有些开发工具甚至具有代码自动生成的功能。所以模块设计究竟要详细到什么地步,应当视问题的复杂性及所采用的开发工具而定。―般地,只要确定了每个模块的主要接口、数据结构与算法,能够清楚地指导模块编程即可。总之,不必花太多时间用于设计模块的细节。
  
  参考文献
  [1]许焕梅,张思荣,王锋,潘晓弘.基于分层的软件系统体系结构[J].计算机工程,2003(20).
  [2]李建中,李银霞.计算机软件用户界面设计探讨[J].现代机械,2000(3).


转载注明来源:https://www.xzbu.com/8/view-46613.htm