202031603143-郭思彤 实验一 软件工程准备-对软件工程的初步了解

发布时间 2023-04-01 23:01:52作者: 羽落落
项目 内容
班级博客链接 20级卓越班
本次作业要求链接 实验一 软件工程准备
我的课程学习目标 1. 深入使用博客园进行学习
2.了解Github的基本操作
3.拓展关于软件工程的知识
本次作业在哪些方面帮我实现学习目标 1.学会了使用markdown编辑器的基本操作
2.通过提问题来翻阅课外书籍增加知识储备

任务一至五完成情况说明

任务1:提交课程调查问卷

已经如实填写了本次调查问卷

任务2:在博客园平台注册个人博客账号和加入班级博客

由于之前就已经使用博客园,故只需要点击链接加入班级即可

任务3:注册Github账号

1.首先完成了Github账号的注册
2.尝试建立了第一个仓库,并按照手册进行了简单的仓库增删改操作
3.阅读了git的操作使用说明,与小学期所使用的操作相似,能够基本掌握

任务4:点击以下链接填写博客园、github账号信息

按照要求如实填写了博客园,github账号信息

任务5:构建之法与博客首秀

1.问题一敏捷过程

敏捷流程概述:

找出完成产品需要做的事情→决定当前的冲刺(Sprint)需要解决的事情→冲刺(冲刺期间每天开每日例会)→得到软件的一个增量版本并发布

敏捷开发原则:

  • 尽早并持续地交付有价值的软件以满足顾客需求

  • 敏捷流程欢迎需求的变化,并利用这些变化来提高用户的竞争优势

  • 经常发布可用的软件,发布间隔可以从几周到几个月,能短则短

  • 业务人员和开发人员在项目开发过程中应该每天共同工作

  • 以有进取心的人为项目核心,充分支持信任他们

  • 无论团队内外,面对面的交流始终是最有效的沟通方式

  • 可用的软件是衡量项目进展的主要指标

  • 敏捷流程应能保持可持续的发展。领导、团队和用户应该能按照目前的步调持续合作下去

  • 只有不断关注技术和设计,才能越来越敏捷

  • 保持简明——尽可能简化工作量的技艺

  • 只有能自我管理的团队才能创造优秀的架构、需求和设计

  • 时时总结如何提高团队效率并付诸行动

2.问题二为什么MSF团队模型是网状,而不是层次结构

微软公司中关于软件开发的思想和宣言有一个方法论——微软解决方案框架(Microsoft Solution Framework,MSF),也就是微软推荐的软件开发方法
MSF基本原则

  • 推动信息共享与沟通(Foster open communications)

  • 为共同的远景而工作(Work toward a shared vision)

  • 充分授权和信任(Empower team members)
    这一点的关键是“授权”这个词,授权(Empower)有两个意思:

给某人权力和权威
给予某人更多自信和自尊在一个高效的团队中,所有的成员都应该能得到充分的授权,他们有权在职权范围内按照自己的承诺完成任务,同时,他们也充分信任其他同事能实现各自的承诺。类似地,团队的顾客(包括内部和外部的顾客)也认为团队能兑现承诺,并进行相应的规划
充分授权的管理方式是MSF的核心观念之一。MSF团队模型就是建立在以下两个原则上的:

平等协作—成员之间、团队之间是平等协作的关系
充分授权给团队和成员
这就是为什么MSF团队模型是网状,而不是层次结构。这样做有什么好处?好处有两点:

被授权的人会承担起自己对项目的责任,同时也期望同事们也同样对项目负责
MSF提倡自下而上的计划,每个人有充分的权力估计并决定自己的任务需要多长时间,而不是上级交给的时间,这意味着让真正做这件事的人按照自己的估计去完成任务。这样做的结果是啥?是人人都会支持项目的计划和时间表,因为这个时间表是每个人自下而上订出来的
充分授权在MSF团队模型的另一个含义是:信任,鼓励团队成员成长,每人都可以在某一时段。

  • 各司其职,对项目共同负责(Establish clear accountability and shared responsibility)

  • 交付增量的价值(Deliver incremental value)

  • 保持敏捷,预期和适应变化(Stay agile, expect and adapt change)

  • 投资质量(Invest in quality)

  • 学习所有的经验(Learn from all experiences)

  • 与顾客合作(Partner with internal and external customers)

3.问题三竞争性需求分析的框架——NABCD模型

  1. N(Need,需求)

你的创意解决了用户的什么需求?这个需求可以是明确的、公开的(例如:希望能上网玩三国杀)也可能是说不清道不明的,例如——以前没人说:嗯,如果我能找到这样一个网站,我可以去偷菜,就好了……我们要充分了解用户的痛苦,他们对已有软件、服务不满意的地方。

  1. A(Approach,做法)

好,你找到了需求,下一步怎么办,得看看你有什么招数,特别是独特的招数,来解决用户的痛苦。你不能说我会C++,所以我一定可以写好这个软件。你得有独特的办法,例如,有人脸识别技术,会做超大规模的数据处理。那你(你的团队)会什么呢?只会冒泡排序?这些招数不光是技术上的,也可以是商业模式上的(例如,我们第一个做众包的服务)、地域的(例如,我们对本市的公交线路很熟)、人脉的(例如,我们认识很多大学生)、行业的(例如,我们有地图测绘行业的资质),或者是成本上的(例如,我们能找到更便宜的资源来维护网站)。

  1. B(Benefit,好处)

这时候你已经有了独特的做法,那你这个产品/服务会给客户/用户带来什么好处呢?如果用户已经有一个解决方案(例如用户已经在用QQ聊天),那你的新的聊天软件具体有哪些好处,能让用户离开现有产品,使用你的产品呢?这还有一个用户迁移成本的问题——用户要花费多少精力、时间、金钱才能得到你的产品的好处?如果你要求用户必须有8GB内存、最好的显卡、10Mbps以上的宽带连接,才能使用你的“更好的”视频聊天工具,那么会有多少用户愿意支付这个成本呢?

  1. C(Competitors,竞争)

竞争对手也没有闲着,这个市场有多大,目前有多少竞争者在瓜分,你了解么?你的产品如果不是最先进入某个市场的,你还能赢么?先进入市场的产品,有所谓的先发优势(FirstMover Advantage,FMA),当然也有劣势。后面进入市场的产品,有种种不利的因素,但是也有后发优势(Second Mover Advantage,SMA)。

  1. D(Delivery,推广)

在实际项目中经历多次的NABC之后,许多人意识到这个框架还应该加一个元素D:Delivery。怎样把你的创新产品交到用户的手中?例一,你想到了一个好主意,建一个比hao123更好的导航页面!我们姑且认为NABC都没问题,那如何把这么好、这么简单的产品交到(Deliver)用户手中呢?例二,你想到了一个手机的应用,NABC都不错,那如何把产品交到千万个用户手中呢?