高等软工第一次作业---期望与笃信

引言   

        我已经从北航计算机学院硕士毕业超过10年了,这十年在外企、国内企业,大型上市企业、初创企业都做过软件系统相关的开发、架构和技术管理类型的工作。重新回到熟悉而又陌生的北航校园攻读博士学位,心中既紧张,又兴奋。

课程期待

       1. 当初自己刚刚毕业的时候,觉得团队人员的技术能力是一个软件项目成功有否的关键;而亲身经历了不同类型的项目(To C/To B/To G),才发现抓住实际痛点、准确把握客户需求才是项目成功的关键。虽然最近几年我管理的团队中有产品经理和UE工程师的角色,但是我自己对于一个项目如何做需求分析,如何能抓住垂直细分领域用户的实际痛点,还不是很在行,希望通过高等软件工程这门课补齐自己这方面的短板。

       2. 软件开发的方法论更新迭代非常快,从瀑布、敏捷、看板等等层出不穷。作为一个软件领域内的从业者,自从2014年考过scrum master认证之后,基本上没太关注软件工程方面新的发展方向。希望通过本门课程,跟上最新的发展潮流,刷新下自己这方面的知识集。

项目成功的关键因素

       我认为本学期课程项目要取得成功(我理解的成功,是说我们参与完成的项目,是一个真的可以在实际生产生活中可用的系统),以下五个方面我认为是较为重要的。

       1. 合理的需求分析。除了项目中要求的基本功能之外,出色的需求分析还有很多需要考虑的地方,例如软件的易用度(友好程度),是不是用户拿过来马上就能上手?系统的安全性相关需求,在分享社区信息的时候,哪些字段需要脱敏处理?系统除了通过导出、共享链接等方式,要不要提供Open API,允许通过授权的系统进行访问?哪些功能研发实现起来比较困难,能否在满足用户需求的基础上换一种表现形式来减轻研发工作量?

  2. 灵活的软件架构。软件架构的设计,可以参考系统需求,又要超越需求。比如系统架构并发需要支持多少用户这个设计,可以是需求分析师估算出来一个数量,软件研发团队来架构实现;但是对于某些需求分析师认为写死定值即可的逻辑,架构人员需要进行更灵活的设计。因为根据我的实际工作经历,很多时候需求分析师、客户也很难估计业务发展变化的情况。作为系统的架构人员,需要更加灵活、更具有前瞻性。

  3. 全流程覆盖的测试工作。目前国外大型互联网公司有一种思潮,认为测试已死,在软件系统开发流程中减轻测试的权重,在招聘中也削减测试工程师的Headcount,名额向研发工程师倾斜。但是这对研发工程师提出了更高的要求,以我对国内研发工程师的观察,大部分公司研发人员水平都达不到不用测试就能开发出bug-free的稳定系统的程度。所以从需求阶段,测试人员就应该介入进行测试计划的撰写,并在每个迭代开发完成后都进行集成测试,用TDD思想来武装每一个项目参与者。

  4. 团队稳定性。实际工作中,团队关键人员的稳定性是影响项目成功的一个关键因素。人员流动性大,不仅影响在职人员的士气,而且在交接过程中不可避免的会出现纰漏,是将来系统的各种问题的一个隐患来源。这点我觉得在学校做项目应该没有这个问题,应该不会有同学中途退出吧:)

  5.定期讨论。不仅要小组内的成员互相讨论,还要和有经验的助教、老师进行讨论、求教。

学习计划

  我们小组所选的题目是社区疫情防控追踪系统。该系统需要基于对生活社区的疫情防控需要,建立一个轻量级易用的追踪系统,可以追踪社区每天进出的个人、每个人的状态,并能在社区间共享相关信息以实现风险评估和预警传播。该项目要求在手机上实现个人使用的程序(诸如微信小程序)。

        1.  在需求分析过程中,多与小组成员讨论,多向助教、老师请教(团队协作)

        2.  设计过程中,努力学习UML建模相关规范,建好相关的模型(个人)

        3.  基于本小组人员中,我自己的开发经验比较多,所以本系统的编码工作主要由我来完成,此阶段需要重点学习一下微信小程序相关的SDK,并注意做好代码的单元测试工作(个人)

        4.  与测试同学配合,解决他/她提出的bug,及时修复,并做好持续集成相关工作(团队协作)

        5.  协助文档撰写相关的同学一起撰写文档(团队协作)

posted @ 2020-10-07 16:39  周强-buaa  阅读(129)  评论(2编辑  收藏  举报