高等软工课程总结
前言
回想起第一节课时,吴老师疯狂劝退涉世未深的大伙儿,我硬着头皮留了下来,现在想想,万分庆幸做了一个不错的决定。一个学期下来,工作量肉眼可见的庞大,不论是文档描述、建模设计还是最终的代码实现,笔者都积极参与其中,收获颇丰。
期望与收获
最初选择这门课时,我是带着明确的期望来的。我希望能够锻炼自己的前端开发能力,设计、文档之类的优先级对我来说起初并没有那么高。
最初期望掌握的能力非常明确,可以总结为以下几点
- 需求分析:依照功能需求,划分出不同的功能模块,掌握拆分后端接口以及前端组件的能力
- 前端设计:包含组件的布局、色调的挑选、交互的逻辑,掌握某个前端设计工具的使用
- 文档书写:将文档作为同步进度、描述设计的工具,掌握书写高质量文档的能力
- 前端开发:采用一种本人未曾使用过的开发框架完成开发,掌握nextjs的使用
- 团队合作:合理分工,充分沟通,能够和各位组员共同完成所选项目
但当整门课宣告尾声时,我突然意识到当初的期望是多么天真,前端技术的长进并不重要,这门课真正带给我的是分析领域、拆解需求、设计模型的能力,而代码实现,只是末端的一环。
所以总的来说,我的完成与收获也超出了最初的预期:
- 完成了类图的多轮迭代,最终实现了功能模块的合理划分。
- 完成了前端部分功能的实现,确定了框架和交互逻辑。
- 文档部分由整个小组共同完成,每个人都尽到了自己的义务。
- 新的前端框架对我而言挑战并不大,nextjs算是一个新的尝试。
- 本组的团队合作超出了最初的预期,每个人都愿意抽出大量的时间共同讨论需求,分析问题。
领域分析
领域分析是这门课的开始,我们小组接过了“基于订单的家庭工厂协作系统”这一题目,并没有急于分析、实现,而是选择在新北区先进行了一次小规模的讨论,互相熟悉互相磨合。在我看来这是一个好的开始,了解了每一个队友,才能让每个人在团队中更好的发挥自己的优势。之后便是分工,领域分析帮助我们确定了家庭工厂的概念,即“我们系统的用户是怎样的一个群体”这一问题。这里我们达成了第一个共识,我们的系统需要关注的是接单之后的分解分配,而不是类似于网购平台之类的下单系统。也正因如此,我们不需要关注消费者是谁,从而抽象出管理员这一身份,帮助该协作系统完成订单输入这一操作。同时领域分析阶段一个很重要的工作是统一了术语,如同秦王扫六合一般,为之后小组内的高效沟通做下铺垫。
需求分析
在我看来,需求分析是给系统定性的关键一步。在这一阶段,笔者按照自己对这一题目的理解,迭代了多轮类图,并在这一基础上,我们多次讨论了类图与系统是否自洽的问题,迭代和讨论在同步进行。这一系统的需求在于分解和分配,如何能够让尽可能多的工厂达到利益最大化,如何能让违背约定的工厂得到相应的惩罚,通过对这些问题的思考和讨论,我们得出了工厂评分机制的雏形,以及一个简单的分解分配流程。在这一阶段,我们的主要精力都放在类图的探讨上,由于类图主要由我参与绘制,绘制完成后需要和其他组员共同讨论它的可行性,达成共识是一件很耗费精力的事情,好在我们每个人都愿意投入进去。
设计分析
设计分析已然是贴近代码实现的一环了,在这一过程中,我们每次讨论都会上升到这样的设计在代码中该如何体现。也正因如此,设计分析阶段的类图能够完整走通分解分配的流程,同时也完美描述了订单超时、订单取消等异常情况下的处理流程。这里和老师也有过若干次交流,让我感觉设计阶段需要考虑的问题非常的繁杂琐碎。用户在乎什么、如何提升效率、如何体现协作、如何吸引用户,这些看似无关的问题也在这一时间阶段中实实在在的影响着我们的项目设计。
心得体会
无关乎结果,仅看这一学期小组内部的合作,用亲密无间来描述绝不为过,每周都能投入足够的时间来分析问题、解决问题、统一观点,这是一件很需要毅力的事情,但是每个成员毫无怨言,都在这个五人小组里发光发热。
就时间安排而言,我们小组严格按照课程要求,从设计到实现,没有颠倒顺序,主次分明,虽然这样会因为时间有限,给后期实现带来不少压力,但是能让每个成员真正体会到设计的魅力。
由衷感谢小组内的每个成员,王康、佳慧、义轩、袁琦,每个人各司其职,自己所分到的任务都能保质保量的完成。一个学期下来,我们几乎把校园跑了个遍,能用来小组讨论的场所,我们都没有放过,每周多次高强度的讨论,让我们对这一系统的理解日渐深刻,也让我们对后续的进展充满信心。笔者是一个不善言辞的人,有幸遇见这么一群积极向上的队友,让这门课变得足够充实多彩。
感谢吴老师和孙老师每次答辩时提供的建议,无论是预答辩还是正式答辩,我们都会记录答辩过程中的对话内容,帮助我们之后例会上复盘分析,这才使我们能够有更为明确的方向去迭代我们的系统,很大程度上节约了我们课后讨论的成本。