简述系统设计的原则

如题所述

系统设计的一些原则

在进行系统设计时,不仅要考虑软件的功能性需求,还要考虑非功能性需求,比如软件的性能(Performance)、可扩展性(Scalability),系统的稳定性(Reliability)、部署(Deployment)和更新(Upgrade),可维护性(Maintainability),版本的管理,系统的安全(Security),界面的友好程度可用性(Usability, User experience)等。要想覆盖所有需求,实现一个简单而优秀的系统,可谓艰难。

大道至简,合适最好

什么是优秀的系统设计? 这个问题颇有争议,但几乎每个软件工程师和架构师都追求优秀的系统设计。当然,系统设计并不代表结果,系统设计只是架构师或者带头程序员的工作,优秀的系统设计必须经由良好的项目管理和团队努力,经过分析需求、设计、开发、测试、分发、维护,以及迭代或重构的过程。中间哪个环节出了问题,再好的设计都将功亏一篑。

可能每个人都对自己设计的系统很自信很满意,但“实践是检验真理的唯一标准”。如果一个系统设计经过实践证明,大家(指客户或用户)公认为优秀的系统,那就是一个优秀的系统设计。

大道至简,适合的就是最好的。其实设计并没有那么严重,适合的就是最好的,简单最好。软件也是一种服务,这个系统设计出来就是为了服务一些用户还没有被满足的需求,如果你能够恰好满足了这些没有被满足的需求,而且能以比较低的代价提供这种服务,那这就是最好的系统。因为系统设计的来源是商业需求,而商业追求利益最大化。你的软件和服务必须比别人功能更加先进,更加好用,对变化的商业 需求反应更加灵活,推出或者升级的速度更快,开发和维护成本更低,才能证明这个系统设计的优秀性。所以系统简单,不能说明你的系统不优秀,说不定设计者有化繁为简的过人能力;系统复杂,功能繁多,也不能说明系统优秀。

技术人员常常犯的错误是技术至上,技术第一,不计成本的去设计和开发无比先进和灵活的系统,不计风险的去采用最新的没经过实用的新技术。所以作为架构师,不仅仅需要精通技术,更需要良好的沟通协调,去了解业务和客户真正的需求,真正站在客户利益角度和最终用户利益角度思考问题和设计系统,在各种选择中做出权衡。

极限编程人士的一个响亮的口号是“You aren't going to need it”。这其中包含的核心意义就是不要为了考虑程序的可扩展性,把目前不需要的功能加入到软件中来。不要过度设计。抓住重点,合适就好。比如根据二八原则,80%的用户只会使用20%的功能,而这20%的功能就是客户最关注的最需要的功能,也就是软件或服务的“卖点“,系统设计时必须集中精力和充分考虑到这部分需求。如果把精力放在某些花哨的功能上,既不 重要,也没必要,那就是过度设计。要想避免过度设计,我觉得可以遵循敏捷开发方式来做。尽可能的简单设计,当满足不了时,重构;保证产品是可运行的,不断的加入新的特征;产品经常性的提交给客户使用。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-12-15
系统设计是根据系统分析的结果,运用系统科学的思想和方法,设计出能最大限度满足所要求的目标 (或目的) 的新系统的过程。系统设计内容,包括确定系统功能、设计方针和方法,产生理想系统并作出草案,通过收集信息对草案作出修正产生可选设计方案,将系统分解为若干子系统,进行子系统和总系统的详细设计并进行评价,对系统方案进行论证并作出性能效果预测。

系统设计通常应用两种方法:一种是归纳法,另一种是演绎法。应用归纳法进行系统设计的程序是:首先尽可能地收集现有的和过去的同类系统的系统设计资料;在对这些系统的设计、制造和运行状况进行分析研究的基础上,根据所设计的系统的功能要求进行多次选择,然后对少数几个同类系统作出相应修正,最后得出一个理想的系统。