2021春高级软件工程实验总结

姓名:谭振宇  

学号:SA20225425  

 

实验总结与收获

本学期我一共完成了六个实验,现在对所学习到的内容进行总结: 

实验一:编译神器VS Code

  在此实验中,我学会了如何安装VS Code,此款编译器由Node.js实现,原生支持JS,随后安装了C/C++和python的插件,实现了对C/C++以及python的支持

自己也体会到vscode之所以能够获得这么大的成功,主要是因为以下的特殊设计:

  1. VS Code主程序和所有的插件隔离,令插件无法影响到VS Code的运行。
  2. UI渲染和业务隔离,VS Code管理用户的界面,只提供接口给插接,插件需要符合标准。
  3. LSP(Language Server Protocol)和DAP(Debug Adapter Protocol)的使用

  

实验二:五大场景玩转Git

  Git实际上就是一个简单说就是用于管理多人协同开发项目的多版本控制技术。在本次实验中,我学习了git的基本指令,并且完成了Git的本地版本库的管理、远程版本库的使用、团队项目中的分叉合并、Git rebase等操作,实现在本地存在的部分分支节点不出现在远程网络中。

自己对git的学习具体总结在此

 

实验三:正则表达式的使用

  正则表达式在实际的工程中用处广泛,如python爬虫或者本文搜索,替换。我在此次实验先通过在Vi中使用正则表达式进行字符串匹配和替换的练习,掌握了正则表达式的基本使用。

并且正则表达式的使用对我在python程序设计时爬取电影评论时,起到了很大的帮助,简化了很多操作。

# regex pattern is used to get Chinese comments
# pattern正则表达式用于获得评论
pattern = re.compile(r'[\u4e00-\u9fa5,。“”:?. a-zA-Z0-9-]+') # r'[\s]+'
# regex pattern1 is used to get time information
# pattern1正则表达式用于获得时间信息
pattern1 = re.compile('[\S]+')
# regex pattern2 is used to get number of likes
# pattern2正则表达式用于点赞数
pattern2 = re.compile('[\d]+')

个人经常使用的正则表达式工具书

 

实验四:以menu项目论软件工程

  在这次实验中,我的感受是代码的可重用性是很重要的,实现代码可重用的重要方法是进行抽象和使用callback,像这个实验,对需要完成的搜索功能的函数进行抽象,在使用的时候再具体实现搜索需要的条件,这样能够极大的实现可复用性。在代码的运行中最后执行回调,增加接口的通用性,保障被调用代码的安全性,确实是我之前不会考虑的方式,很令人惊叹。

 

实验五:VSCode + draw.io完成项目UML用例图

  VS Code的强大体现在其支持丰富的插件,集成多种功能,在这次试验,集成了draw.io,可以很方便的在工程中绘制用例图,如下是一个简单的用例图:

 

 

 

实验六:验证软件中的一些特殊机制

  这次实验,我使用python进行实现,领会到了回调函数能够时接口更加通用,通过异步IO能够加速一些IO密集型的操作等,这次我实现的具体代码如下:

import asyncio

#回调函数
def f2(c):
    print("this is f2")
    c("这是匿名函数!")

def f1():
    local_variable = "tzy"  # 闭包
    def condition():
        print("this is a condition function\t" + local_variable)

    f2(condition)
    print("this f2 in f1")

if __name__ == "__main__":
    # f1()
    # 匿名函数
    f2(lambda x: print(x))

#python无多态,并且已经在实验四实现过了

#异步IO
@asyncio.coroutine
def hello():
    print("Hello world!")
# 异步调用asyncio.sleep(1):
    r = yield from asyncio.sleep(1)
    print("Hello again!")

# 获取EventLoop:
loop = asyncio.get_event_loop()
# 执行coroutine
loop.run_until_complete(hello())
loop.close()

 

对本课程的内容安排和实验安排思考或建议

  这门课程的学习方式和本科的学习方式确实有很大的区别,本科的软工是对软件工程的总体概念进行的学习,以一个项目结束,但是项目对软件工程方法的使用还不是很明确,而本课程教授的更像是软件工程的思想,并且课程中各种工具的学习,也确实是实际工作中所需要的,更加培养了实践能力。最后希望自己能够学以致用,非常感谢老师,自己确实学到了很多。

  希望有机会的话可以设置一些项目实验课,动手才能更加理解学习的内容。

posted @ 2021-07-18 09:16  lllLate  阅读(37)  评论(0编辑  收藏  举报