2020春季学期哈工大软件构造学习心得一

前言:

今年是特殊的一年,由于新冠病毒的爆发,导致我们无法正常开学,所以网上开课如期进行,其中软件构造是这学期我们要面临的巨大挑战。

准备工作:

上学期末得知本门课程需要学习Java语言进行编程,所以在寒假刚开始,就选择了MOOC上北京大学的Java程序设计这门课程。MOOC链接
这门课程的分类很细,而且有基础的选择题,大概用了10天左右的时间就完成了视频的观看。本以为已经可以达到编写一般Java程序的程度,但在真正实验过程中,才发现学习的不是很扎实,这都是因为没有“熟能生巧”的缘故,纸上谈兵是不可能打好每一场仗的。

了解

软件构造(Software Construction),还没了解时,认为这门课程只是在考验我们的编程,用来完成一些完整的软件,感觉上就是一个个小问题的叠加,没有什么难度。但是上完第一堂网课后就彻底颠覆了对这门课的看法。
首先我们要先了解什么是软件。软件一般分为系统软件和应用软件两种,而软件是直接面向用户的,所以要想做到让用户满意,就需要软件开发人员构建高质量的软件。
一个高质量的软件设计过程是十分复杂的,有很多需要构造者满足的条件,比如可理解性、可维护性、可复用性、健壮性、时空性能等;如果在一个项目的生命周期的前、中、后期都强调质量,那么一个高质量的计划、高效的实践以及系统测试是必不可少的。

主要内容

- 软件构造过程中的多维度视图

Multi-dimensional software viewsMulti-dimensional software views
这幅图详细写出了各个维度之间的关系

  1. 编译时&运行时

  2. 代码角度&模块角度

  3. 时刻&时段

三个维度,相互组成,软件所关注的内容也不相同,对于软件的编写也会产生不同的影响

维度组合内容
编程时、代码角度、时刻考虑源代码如何由基本程序块组织以及依赖关系
1.词汇层面
2.语法层面(AST)
3.语义层面(Class Diagram)
编程时、代码角度、时段Code churn 代码变化
体现在代码行的增、删、改和文件版本的变换
编程时、模块角度、时刻1.源代码被物理地组织成文件,这些文件进一步被目录组织起来
2.文件被封装到包中,并且在逻辑上被封装到组件和子系统中
3.可重用模块以库的形式存在
所以开发者一般会调用库中的模块来编写程序
编程时、模块角度、时段用版本来记录各项软件实体随时间的变化
软件随需求进化,在维护、更新时,版本记录可以很好的帮助
运行时、代码角度、时刻代码快照:描述程序运行时内存里变量层面的状态,分析内存占用情况等
运行时、代码角度、时段利用UML以动态的形式描述类
运行时、模块角度、时刻模块分析
运行时、模块角度、时段log日志

各个维度之间的关系如下图所示:

- 软件构造的质量目标

上一部分搞清楚了“要构造的结果是什么”, 这一部分要理解清楚“构造的结果如何才算好”

软件系统的质量特性

  • 外部和内部质量因素
    外部质量因素影响用户,内部质量因素影响软件本身和开发者。外部质量取决于内部质量
  • 重要的外部质量因素
  • 质量因素之间的权衡

外部质量因素

  • 正确性
    若输入正确,输出也正确(至高无上的质量指标)
  • 健壮性
    针对异常情况的处理,遇到异常不能“崩溃”,是对正确性的补充
  • 拓展性
    软件能够根据需求调整变化的能力
  • 复用性
    一次开发,多次使用
  • 兼容性
    不同的软件系统之间相互可容易的集成
  • 高效性
    软件系统对硬件资源的需求程度(保证正确性的前提下)
  • 移植性
    软件可方便的在不同的技术环境之间移植
  • 易用性
    软件用户更便于使用我们开发的软件
  • 功能性
    系统尽可能提供更加全面的功能
  • 及时性
    在用户需求之前完成软件开发很重要
  • 其他
    可验证性,完整性,可修复性,经济性等等

内部质量因素

  • 代码量
  • 高聚合,低耦合
  • 易读易理解
  • 复杂度
  • 规模
  • 其他

质量因素之间的折中考虑

“正确性”绝不能与其他质量因素折中

  • 完备性与易用性
  • 经济性与功能性
  • 高效性可移植性
  • 高效性与复用性
  • 经济性与复用性
  • 及时性与扩展性

软件建设五大质量目标

  • 易于理解:优雅优美的代码/易懂
  • 随时可以更改:可维护性和适应性
  • 开发成本低:为重用而设计:可重用性
  • 安全无漏洞:健壮性
  • 高效运行:性能
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值