项目 | 内容 |
---|---|
课程班级博客链接 | https://edu.cnblogs.com/campus/xbsf/nwnu2020SE |
作业要求链接 | https://www.cnblogs.com/nwnu-daizh/p/12369881.html |
我的课程学习目标 | 1.学习博客园软件开发者学习社区使用技巧和经验; 2.学习GitHub的基本操作流程; 3.阅读书籍《构建之法——现代软件工程》并提出3个阅读中遇到的问题。 |
作业对我实现学习目标的帮助 | 1.熟悉博客园的使用技巧;2.初步了解软件工程这一门课的学习内容以及学习方法。 |
参考文献 | [1]邹欣.构建之法——现代软件工程[M].北京:人民邮电出版社,2017. |
一. 实验准备
完成课程调查问卷,注册博客园账号以及GitHub账号并加入班级。
## 二. 问题提出 ### *问题一:* 一个真正的软件项目在实际的开发过程中它的生命周期是一个怎样的过程?即是如何一步步构建展开并实现、如何运行维护一个真正的软件项目,以及在软件项目在将废弃时又是怎样的? >1.学习某种编程语言的特性; 2.练习某些算法或按某种模式处理数据; 3.按照给定的需求实现一个较复杂的软件系统,但没有要求系统进行大规模的测试、模拟、实际运行或后续演化。
--引用自《构建之法——现代软件工程》P37
之所以提出这个问题,是因为我们目前所学习或练习的项目都属于是上述提出的三种作业练习,我们目前所完成的最复杂的一类软件项目,也不过是上述第三种所述的较复杂的软件系统。我们目前还没有接触到真正的软件系统开发,对于软件生命周期中各个时段所做工作不了解,不知道我们在每个阶段该如何做、如何做能够做好,而为了我们自身能力的提高,这各个阶段中的内容方法是我们在未来必须要学会的,因此掌握这各个过程的具体内容十分重要。
或许这个问题只有通过自己的实践才能真正得到答案并掌握它,不过这也是我们学习软件工程所必须要掌握的内容,希望在软件工程这一门课程的学习后,我能够找到满意的答案。
问题二:对于一个初创的团队来说什么样的软件工程模型更加适合他们?
在阅读了《构建之法》的五、六章后,我不禁在想,哪一种软件工程的模型更加适合一个没有太多基础的团队。众所周知,万事开头难,我们现在开始学习软件工程这一门课,我们在进行软件工程的实践中,什么样的软件工程模型更加适合我们入门学习呢?
根据我所查阅的一些资料,在目前常用的模型中,瀑布模型只有在项目的生命周期后期才能看到成果,并且瀑布模型需要开发人员对于应用领域十分熟悉;原型模型适用于那些不能预先确切定义需求的软件系统的开发;喷泉模型由于在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,且不利于项目的管理;敏捷模型则是需要资深的软件工程师且容易出现每个人工作分配不均或出现书中提到的那种“狗熊掰苞米”的情况。这些模型由于自身的一些特点或要求似乎都不适合一个初创的团队,那么有哪些模型是适用的呢?
问题三:现有的用户调研方法是否存在有问题?若存在,应当如何运用专业知识改进?
软件开发的过程,就是“用户最需要的东西”在下面这一链条中传送、转换、实现、扭曲或丢失的过程。
用户最需要的>
用户表达出来的>
软件团队能理解的+团队的商业目标>
软件团队成员具体表达出来的(PM写Spec)>
在各种约束条件下,具体执行表达出来的(Dev写代码)>
验证通过的(Test)>
通过各种渠道告诉目标用户(发布/推广)>
用户终于能用上了,但是他们不满意
--引用自《构建之法——现代软件工程》P160
在读到书本的需求分析部分,尤其是上述的用户调研问题时,我在想,我们目前的用户调研模块是否依然存在问题?无论是我们在日常的软件使用过程中或是在网上查阅资料,都不难发现,在目前在软件市场中,大多数软件的评价并不好,这一点在社交类软件更加得以体现,尤其是在目前国内移动端社交软件中腾讯一家独大的情况下,尽管用户有所不满,但受限于种种原因,无法放弃使用,而在其他类型的软件产品中,这一现象也不少见。对于软件企业而言,无法满足用户需求只会使自身面临的处境越来越糟。虽然时不时也会出现的很能够吸引人眼球的软件功能,但是它们往往也很难持续地抓住用户,即使是大如微软这样的企业,在进行一系列系统更迭之时,也有不少用户并不买账,即使现在仍有不少人使用已经停止更新的Windows xp与Windows 7系统。
如今,大数据、人工智能、神经网络等等技术发展迅速,采集用户需求不再是一件十分困难的事情,但是软件功能与用户需求相悖的情况似乎并没有好转,这一系列的问题是否意味着我们现在在需求分析的用户调研部分依旧存在问题?若是,以现在的计算机技术,我们有大数据、人工智能等等,为何这一现象并没有特别大的改善?而现在又有哪些好的解决方法呢?
## 三. 实验总结
在此次的实验学习中,我熟悉了博客园的使用流程以及GitHub的基本操作方法,为之后的实验学习做好了准备,而且通过阅读邹欣老师的《构建之法——现代软件工程》,我收获颇多,同时也提出了我在阅读中遇到的一些问题,希望我在这之后的软件工程课程的学习中,能够基本解决它们,能够更加深刻地了解软件工程这一门课的艺术。