软件工程专业2

软件工程=最佳实践

软件系统的复杂性、动态性使得:

– 高深的软件理论在软件开发中变得无用武之地;

– 即使应用理论方法来解决,得到的结果也往往难以与现实保持一致;

因此,软件工程被看作一种实践的艺术:

– 做过越多的软件项目,犯的错误就越少,积累的经验越多,随后作项目的成功率就越高;

– 对新手来说,要通过多实践、多犯错来积累经验,也要多吸收他人的失败与教训与成功的经验。

——当你把所有的错误都犯过之后,你就是正确的了。

 

在软件工程师试图解决“软件危机”的过程中,总结出一系列日常使用的概念、原则、方法和开发工具;

这些实践经验经过长期的验证,已经被证明是更具组织性、更高效、更容易获得成功;

大部分的这些实践都没有理论基础。

 “最佳实践” :沟通阶段应做的事情:

– 识别出你需要与客户方的哪些人沟通;

– 找出沟通的最佳方式;

– 确定共同的目标、定义范围;

– 评审范围说明,并应客户要求作出修改;

– 确定若干典型场景,讨论系统应具备的功能/非功能;

– 简要记录场景、输入/输出、功能/非功能、风险等;

– 与客户反复讨论、交换意见,对上述内容进行细化;

– 与客户讨论,为最终确定的场景、功能、行为分配优先级;

– 评审最终结果;

– 双方签字;

 

软件工程的核心概念

 

复用(Reuse)

在一个新系统中,大部分的内容是成熟的,只有小部分内容是全新的。

构造新的软件系统可以不必每次从零做起;

直接使用已有的软构件,即可组装成新的系统;

复用已有的功能模块,既可以提高开发效率,也可以改善新开发过程中带来的质量问题;

 

分而治之(Divide and Conquer)

将复杂问题分解为若干可独立解决的简单子问题,并分别独立求解,以降低复杂性;

然后再将各子问题的解综合起来,形成最初复杂问题的解。

 

折中(Trade-off)

不同的需求之间往往存在矛盾与冲突,需要通过折中来作出的合理的取舍,找到使双方均满意的点。

例如:

– 在算法设计时要考虑空间和时间的折中;

– 低成本和高可靠性的折中;

– 安全性和速度的折中;

核心问题:如何调和矛盾( 需求之间、人与人之间、供需双方之间,等等)

 

演化(Evolution)

软件系统在其生命周期中面临各种变化;

核心问题:在设计软件的初期,就要充分考虑到未来可能的变化,并采用恰当的设计决策,使软件具有适应变化的能力。

即:可修改性、可维护性、可扩展性;

 

 

 

NFP :Non-Functional Property  非功能特性、性能特性

– 例如:完备性、正确性、健壮性、可靠性、效率、可用性、可维护性、可移植性、清晰性、安全性、兼容性、经济性、商业质量等。

 

猜你喜欢

转载自www.cnblogs.com/sx1106/p/9997728.html