哈工大软件构造2022笔记(持续更新----1)

Class 1

第0节的主要内容是讲课程要求

实验占35分,个人博客占5分,期末考试占60分(闭卷)


在cms中加入课程:链接在老师发的ppt里面有,这里就不展示了。

实验要求:

在Java+Eclipse/IntelliJ IDEA+Git环境下进行,通过GitHub Classroom提交

在GitHub Classroom 里,作业deadline都设定为周日晚上23:55

TA:助教(teaching assistant)

Class2

第1节的内容主要是讲软件工程的要求和评价标准

软件是什么?

在百度上的解释是这样的:

软件(中国大陆香港用语,台湾称作软体,英文:software)是一系列按照特定顺序组织的计算机数据和指令的集合。

简单来说,我们可以通过下面这张图进行说明:

软件是用户和硬件之间进行交互的部分,相比起硬件来说,它更加靠近用户层。

软件系统的基础是它所处的硬件基础和技术环境。

 多维软件视角

 我们评价软件可以从以下几个维度来看:

        1.Build-time View

                (1)   Build-time, moment, and code-level view

                (2) Build-time, period, and code-level view  

                (3) Build-time, moment, and component-level view

                (4) Build-time, period, and component-level view

       2.Run-time View

                  (5)   Run-time, moment, and code-level view

                  (6)   Run-time, period and code-level view

                  (7)   Run-time, moment, and component-level view

                  (8)   Run-time, period, and component-level view

上面这几个视角只是提供一种思维,就是在程序构建的各个阶段,各个层次都需要注意相关的问题。不是说需要将上面的内容完全记住,只是了解即可。

软件系统的质量标准

 可以从以下十个层面进行解释:
1.正确性(Correctness)

        按照事先的“规约”执行(满足需求)

2.鲁棒性(Robustness)

        软件能够良好地应对异常情况

3.扩展性(Extendibility)

        如果对程序的规约有所变化,程序应该能够良好地处理

4.可复用性(Reusability)

        避免“重复造轮子”,已经完成的任务可以在其他合适的地方使用(比如java中的库)

5.兼容性(Compatibility

        使得不同的软件系统之间能够良好地集成

6.性能(Efficiency)

        使得软件运行效率较高(前提是保证正确性)

7.可移植性(Portability)

        软件能够在不同技术环境(硬件环境、操作系统)之间迁移

8.易用性(Ease of use

        用户能够轻松地使用软件(希望以后设计者能够加强这方面,作者已经被各种复杂的软件折磨多年了)

9.功能性(Functionality)

        软件能够拥有更多、更加强大的功能

10.及时性(Timeliness)

        软件能够及时迎合市场的需要

软件构造的五个关键质量目标

 1.可理解性(Understandability

         代码风格良好(注释、变量命名、代码布局等等)

         项目架构清晰

2.可复用性(Reusability

        简单来说就是已经完成的任务不必再次完成,而是可以复用之前的结果

        实现手段包括:接口与实现分类、继承、重载、重写等等

3.可维护性和适应性(Maintainability and Adaptability)

        就是指软件能够根据需求被修改、纠正、更新的能力

        实现手段包括:模块化设计、OO设计模式等

4.鲁棒性(Robustness

        鲁棒性大家应该已经很熟悉了,这里不多介绍

        实现手段包括:异常处理机制、防御性编程等

 5.效率(Performance)

        提高软件性能和效率

        实现手段包括:代码优化、空间复杂性、时间复杂性控制等等

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值