软件工程第一次结对作业

这个作业属于哪个课程 首页 - 软件工程2024 - 福州大学 - 班级博客 - 博客园 (cnblogs.com)
这个作业要求在哪里 2024秋软件工程结对作业(第一次之需求分析和原型设计) - 作业 - 软件工程2024 - 班级博客 - 博客园 (cnblogs.com)
这个作业的目标 阅读构建之法,熟悉协作项目,根据需求设计原型
学号 042201520
协作伙伴

一、构建之法阅读成果

第3章 软件工程师的成长

​ 在工作过程中,往往看不出软件工程师之间的区别,有时候高级工程师回家了,新手还在电脑前面干活。为什么一个高级工程师会比新手工资高那么多?除了比工作年头之外,软件工程师有什么更好的方法来衡量自己的能力和价值?在此章的阅读中,我们可以找到答案。

1.1 个人能力的衡量与发展

(1)IC在团队工作的流程

软件系统的绝大部分模块都是由个人开发或维护的。在软件工程的术语中,我们把这些单个的成员叫做Individ-ual Contributor(IC)。IC在团队中的流程是怎么样的呢?以开发人员为例,流程如下:

  • 通过交流、实验、快速原型等方法,理解问题、需求或任务
  • 提出多种解决办法并估计工作量
  • 其中包括寻找以前的解决方案,因为很多工作是重复性的
  • 与相关角色交流解决问题的提案,决定一个可行的方案
  • 执行,把想法变成实际中能工作的代码,同时验证方案的可行性和其他特性(例如程序的效能等)
  • 和团队的其他角色合作,在测试环境中测试实现方案,修复缺陷(Bug)。如果此方案有严重的问题,那么就考虑其他方案
  • 在解决方案发布出去之后,对结果负责每个人的工作质量直接影响最终软件的质量

(2)初级工作师的成长

那么,初级软件工程师如何成长呢?我认为有下面几种成长。

  1. 积累软件开发相关的知识,提升技术技能(如对具体技术的掌握,动手能力)。例如:对Java、C/C++、C#的掌握,诊断/提高效能的技术,对设备驱动程序(Device Driver)、内核调试器(Kernel Debugger)的掌握;对于某一开发平台的掌握。
  2. 积累问题领域的知识和经验(例如:对医疗或金融行业的了解)。第一点和第二点都可以在很多简历上都可以看到,也可以比较容易地检测出来。随着经验的增长,一个工程师可以掌握更广泛、更深入的技术和问题领域的知识。
  3. 对通用的软件设计思想和软件工程思想的理解。这一方面就比较虚,什么是好的软件设计思想?什么是好的软件工程思想?一个工程师开了博客,转发了很多别人的文章,这算有思想么?另一个工程师坚持做任何设计都要画UML图,这算有思想么?
  4. 提升职业技能(区别于技术技能)。职业技能包括:自我管理的能力,表达和交流的能力,与人合作的能力,按质按量完成任务的执行力,这些能力在IT行业和其他行业都很重要。
  5. 实际成果。绝大部分软件工程师的工作成果都是可以公开的,你参与的产品用户评价如何,市场占有率如何,对用户有多大价值?你在其中起了什么作用?

(3)软件开发的工作量和质量

软件开发的工作量和质量怎么衡量呢?PSP认为有下列4个因素:

​ a . 项目/任务有多大?说明项目的大小,一般用代码行数(Line Of Code,LOC)来表示;也可以用功能点(Function Point)来表示。
​ b . 花了多少时间?可以用小时、天、月、年来表示。一组人所花费的时间可以用(人数×时间)来表示,例如某项目花费了10个人×月。
​ c . 质量如何?交付的代码中有多少缺陷?

交付有两个定义:

1.在代码完成(Code Complete)时,交付给测试人员

2.在软件最终发布时,交付给顾客可以用缺陷的数量来除以项目的大小。

​ d . 是否按时交付?

1.2 软件工程师的职业发展

就软件工程师这个职业而言,有很多证明个人能力的办法和模型,下面简单介绍几种。

1.考取国家级证书

好处 局限性
国家认证,有一定的权威性和通用性 以答题/评分为主要考试形式,没有面对面的口试
任何人都可以参与 考试中每个人单独行动,不能考量团队合作能力
要考虑到通用性和稳定性,考题内容相对滞后于工业界的发展,部分内容相当滞后

2.职业成长

  • Steve McConnell

    ​ 史蒂夫·迈克康奈尔(Steve McConnell)创立的公司(Construx Software)也为员工提供了一套成长路径。简介如下。首先,一个软件工程师需要具备一定的知识和能力。
    ​ 知识:迈克康奈尔把相关的软件知识分为十大知识领域。
    ​ 能力:一个工程师对这些知识的掌握分为如下四个阶段。
    ​ 入门(Introductory);
    ​ 熟练(Competency);
    ​ 带头人(Leadership);
    ​ 大师(Mastery)。
    ​ 其次,工程师有职业成长级别(Professional De-velopment Ladder)。迈克康奈尔把工程师分为8个级别(8—15),一个工程师要从一个级别升到另一个级别,需要在各方面达到一定的要求。例如,要达到12级,工程师必须在三个知识领域达到“带头人”水平。例如要到达“工程管理(知识领域)的熟练(能力)”水平,工程师必须要做到以下几点。

    ​ 阅读:4—6个经典文献的深入分析和阅读
    ​ 工作经验:要参与并完成6个具体的项目
    ​ 课程:要参加3个专门的课程有些级别

    ​ 还要求工程师获得某种专业证书,以及在工业界、教育授课,发表论文,等等。

  • 大公司版本

  • 自我评估

1.3 软件工程师的职业发展

巴克斯顿说技能的反面是“Problem Solving”—“解决问题”

​ 在实际解决问题的过程中,通过不断的练习,把那些低层次的问题都解决了,变成不用经过大脑的自动操作,然后才有时间和脑力来解决较高层次的问题。通过对低层次问题的熟练解决,我们便对更高层次的问题留有余力,而不是只盯着高层次问题反而忽略了最基础的问题。

第8章 需求分析(NABCD)

以下部分以具体作业实例来体现阅读成果

1.4 问题描述

客户现实困扰

​ 在大学里,一些有想法的学生希望通过发起或参与跨专业的项目(创业、学术)来提升自己的综合能力,拓宽知识面和积累人脉。然而,在校园里要实现跨专业合作往往取决于自己积累的人脉,或者去请不同专业的老师帮忙介绍,这就导致合作的机会非常有限。

​ 例如,对于一些需要多学科支持的项目(需要设计、编程和市场营销能力的创业项目),在偌大的校园中,学生们往往找不到志同道合的合作伙伴。

​ 另外,不同专业之间的学生由于学校课程安排以及个人想法,可能在合作时间安排上、项目目标和沟通方式上可能存在差异,这进一步加大了合作的难度。同时,缺乏平台或资源来支持跨专业项目的持续发展。

1.5 问题分析(基于NABCD模型)

(1)N (Need,需求)

​ 一些有想法的学生希望通过发起或参与跨专业的项目(创业、学术)来提升自己的综合能力,拓宽知识面和积累人脉,但苦于没有平台和资源等问题导致无法合作

(2)A(Approach,做法)

​ 设计一个小程序提供平台,可以供学生与老师在参与项目时结合自身与他人的条件双向选择,以便更顺利的完成项目

(3) B(Benefit,好处)

​ 提升自己的综合能力,拓宽知识面和积累人脉的同时,促进项目成功

(4) C(Competition,竞争)

​ 通过增加小程序的简约性和便利性,与市面上的小程序或软件做出差异化,提升竞争力

(5) D(Delivery,推广)

​ 以小程序的形式推广,便捷的同时也较容易上手

二、原型的建立与演示

本模型基于墨刀实现

https://modao.cc/proto/dfwVejwUskgsjjRQMx9ZD/sharing?view_mode=read_only #项目小程序-分享

2.1 用户登录界面

点开小程序,可以看到该程序是以学号/职工号作为账号登录的,简单易记

点击注册,即可选择身份


选择完身份后,教师与学生的注册界面大致相同,仅在学号/职工号上有所区别


注册完毕会回到登录界面,点击登录即可进入主界面

2.2 主界面

主界面下设三类,分为首页、项目、搜索

  • 首页:会根据用户的学校及专业(专业需要进入个人信息填写)推荐项目
  • 项目:展示用户已参与的项目,同时还有个人信息和项目添加的选项(右下角小圆标)
  • 搜索:可以搜索项目

2.2.1 主界面-首页

点击项目,可查看项目的具体信息,点击右下角即可申请加入,


加入项目需要填写申请理由和联系方式,点击确认后返回主界面

同时在项目信息界面点击小人图标可以查看项目成员,点击成员会跳转到个人信息页面


2.2.2 主界面-项目

点击项目即可跳转到项目的界面


同样的点击项目即可进入项目信息界面,功能同上

点击右下角小人图标会进入用户的信息界面,在这里可以修改个人信息



点击右下角加号会进入项目相关的编辑,分别为创建项目、修改项目、项目消息、退出项目


四个选项的界面分别如下



2.2.3 主界面-搜索

为找到理想项目所设置的界面,点击项目同样可跳转项目信息界面

三、原型的分析与评估

3.1 原型功能分析

​ 学生、老师通过创建项目,并对项目进行介绍以及留下项目的qq群,来吸引其他用户参与,抛弃了一般的聊天功能,而是让用户通过加入群聊来与成员交流(毕竟qq群比较方便且功能强大,一般用户大多不会使用小程序来交流通讯),这样既简化了页面设计和功能简约,同时也方便后续的代码实现

​ 加入推荐项目功能,根据自己常常浏览的项目以及专业来对用户进行推荐,有些用户可能不知道自己具体想要参与什么项目,推荐项目这一主界面往往会给出他们可能喜欢的项目

​ 用户信息界面只给出了必要的信息,同时用户可以自主选择联系方式,在保证能相互联系和了解基础的同时保障了用户的安全和隐私

3.2 原型功能框架图


3.3 原型评估

自我评估:界面比较简约,包含了最核心的需求的功能,但是感觉又太过简约,感觉功能较少但又说不出来少了啥

朋友评估:看上去风格很统一很舒服,可以多再加一些功能,考虑到这个项目完全由你一人完成,可以理解

四、结对过程

与陌生人结队本来应该是一次很令人高兴又担忧的事情,也许自己确实不够幸运吧,只感受到了后面一半
遇到个什么都没做的队友,即使我做了大部分事情,仅仅要求他按照我给他的任务来完成,也都是些简单活没有技术含量,他到最后一天仍旧没有给我任何反馈以及任何任务的完成情况
一场突如其来的的意外让本就没实力的我雪上加霜,很抱歉这次作业完全由我一人完成,希望老师酌情扣分T T
以下是最核心的结对过程,简单又令人难过

五、PSP表格

项目名称 项目信息 预估时间(min) 实际时间(min)
学习 学习墨刀、阅读构筑之法 120 150
分析 需求分析、作业要求了解 30 20
设计 软件框架、原型设计 360 410
编写md 编写md、设计md标题分级 60 40
测试 测试原型的界面跳转是否正确合理 60 30
大小度量、评估 对原型功能量进行度量,评估原型 30 30
过程改进 改进原型,风格调整 120 90
总结 对本次作业进行总结 20 30
总计时间 800 800

六、自我总结

​ 这次作业是我第一次做结对作业,没想到会是这个结果...

​ 不过没什么大碍,还是大致完成了任务,同时在阅读构建之法的过程中受益良多,尤其是《软件工程师的成长》这一章节让我知道了如何做一个优秀的软件工程师,有时候遇到“猪队友”也是难免的事,想必这也是我成为高级软件工程师所必须遇到的困难吧

​ 同时对于墨刀原型设计软件的学习和使用让我感到十分有趣,感觉如果再做的细致一些的话都可以之间当软件使用了(当然这还是需要代码来实现的),对于这次作业总体还算比较满意,收获很大,教训也很大,还是要加把劲,努力使自己变得强大,这样遇到困难也能轻松应对^^

posted @ 2024-09-27 19:19  D0ub1etake  阅读(6)  评论(0编辑  收藏  举报