软件构造课程 Blog-1

本文分享了作者在软件构造课程中的实验经历,包括MagicSquare、Turtle绘图、社交网络分析及TweetTweet应用等四个实验项目的体验与挑战,特别是使用Maven和Travis-CI进行持续集成的经验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

软件构造课程 Blog-1


写在最开始

 没有认为我也会有一天来更新自己的blog,那么既然机会,正好开始学习像Git记录代码的成长过程一样记录自己的一个变化,希望将来一天Blog+Github=OfferBlog+Github=Offer。另外更好的跟别人分享自己的一些理解和交流一些经验。这第一次写Blog就来简单记录一下Lab1中遇到的一些问题和心路历程(刚刚开始学习Markdown,排版问题还得慢慢改善)。


实验本身的内容

主要分析一下HIT的第1个实验,分成四个部分。

1.Magic Square

 P1没有给出来源,视作来源不明,但是就其给出的代码更像是一种国内大学的风格,注释比较少,当然只是一种猜测。幻方的本身而言,从小就有过一些接触,是个挺有趣问题。难度不大,主要在于熟悉语法。

2.Turtle

 Turtle是MIT开发的一种画画用的“乌龟”,主要用在python,这次Java实验中使用应该是承接MIT中的SC课程的前置课程python的高级语言编程。这个实验任务应该是四个任务中最有趣的一个,难度也不大,希望以后在python里面可以再试试他的威力。
(实验的亮点在于,TurleSoupTurleSoup的翻译, hhhh有趣的灵魂)

3.Social Network

 P3是CMU给出的实验,感觉带着贵校特有的严谨。这个任务更像是数据结构课程“图”相关章节的实验Java重写,然后归于了一个新的背景。使用BFS的性能要比Dijstra更好,使用邻接表比使用邻接矩阵更好,也更能适应这个实验后续可能给出的样例。

4.Tweet Tweet

 P4是MIT的第2个实验任务,其实中间的细节是非常的细碎的,也是这次实验中写的最纠结的一个,而且很多细节感觉到现在也没有写好,因为这个实验中有很多的内容是由Coder本身来决定如何给出的,比如某一个user的影响力,可能有非常多的影响因素,某个人曾经在某次Tweet中“@-mentioned the user”,或者他们关注同一个话题“#something”等等,如果把这些可能的因素都考虑进去,感觉就能对某个时间点的所有发出的Tweet进行一个分析然后得到这个时间段的影响力用户等等。感觉这个实验确实是比较考验人的,还需要仔细打磨。

实验手册上的一句话

如果仔细阅读Lab0的实验手册可以看到,在最后有一个要求
Demands
这个要求感觉是开始上手时最需要时间的一个。由于对其中任意一种的build工具所需要用的语言都不熟悉,只好从零开始。更难受的一点是,国内的博主几乎没有使用脱离eclipse进行build的教程,国外的博主的文章又受限于google和英语阅读。国内绝大多数的博主如果讲XML写法,就用eclipse支持。少数博主就只讲XML不管使用,感觉对初学者并不友好。

再吃了种种灰之后,使用了maven、gradle甚至马上准备下一个Ant的时候(此时还没有到3月7日),突然感觉应该找一个突破再说,在询问过曾经上过rainy的软件工程课的学长之后,决定专心使用maven来build,然后传到Travis-CI上面进行持续集成。弄了很长时间终于把这个东西搞定了,下附Build成功的截图,立个flag:下次更新blog争取写清楚我从maven到Travis-CI的心路历程


passing figure

result

### 关于西南科技大学软件构造课程的信息 #### 课程目标与概述 软件构造课程旨在培养学生掌握现代软件开发方法和技术,使学生能够设计并实现高质量的软件系统[^1]。该课程通常会介绍面向对象的设计原则、模式以及实践中的最佳做法。 #### 主要教学内容 - **基础概念**:讲解什么是良好的程序结构及其重要性;探讨如何创建可维护性强且易于扩展的应用程序。 - **编程范式**:深入理解不同类型的编程风格(如过程化、函数式),重点放在面向对象分析与设计上。 - **工具链应用**:学习版本控制系统Git和其他协作平台GitHub/GitLab等工具的实际操作技能。 - **测试驱动开发(TDD)** 和持续集成(CI),确保代码质量的同时提高团队工作效率。 - **敏捷项目管理**:通过Scrum或其他轻量级框架来规划迭代周期内的工作事项,并定期评估进展状况。 #### 推荐教材和参考资料 为了更好地支持课堂教学活动,建议使用以下书籍作为辅助材料: - *《Head First Design Patterns》* by Eric Freeman, Elisabeth Robson. - *《Refactoring: Improving the Design of Existing Code》* by Martin Fowler. 此外,在线资源也非常重要,比如官方文档、开源社区贡献者撰写的博客文章都可以成为很好的自学素材[^2]. ```python # Python 示例:简单的单元测试案例展示 TDD 方法论的一部分 def add(a, b): """Return sum of two numbers.""" return a + b if __name__ == "__main__": import unittest class TestAddFunction(unittest.TestCase): def test_add_positive_numbers(self): self.assertEqual(add(1, 2), 3) def test_add_negative_and_positive_number(self): self.assertEqual(add(-1, 1), 0) unittest.main() ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值