201771010142-张燕 实验一 软件工程准备—<软件工程的初步了解和学习目标>

实验一 软件工程准备

||||||| |:--|:--| |项目|内容| |课程班级博客|https://edu.cnblogs.com/campus/xbsf/nwnu2020SE| |做业要求|https://www.cnblogs.com/nwnu-daizh/p/12369881.html| |课程学习目标|使用Markdown排版以写博客形式来拟定3个准备从课程学习中找到答案的问题| |这个做业在哪些方面帮助我实现学习目标|自主提出问题并解答困惑的能力| |做业正文|①学习博客园软件开发者学习社区使用技巧和经验;②了解Github的基本操做| |参考文献|①邹欣. 构建之法—现代软件工程[M]. 人民邮电出版社, 2014.②邹欣老师博客| ###问题一 软件工程是什么? ####问 题 :在开始学习软件工程这门课以前,我最想了解的是软件工程这门课的性质,以及咱们学这门这门课的用处和意义是什么? ####解决方案:我先经过学习老师给出的课件,对软件工程的本质特性及其基本原理有了基本的了解,软件工程包括技术和管理两方面的内容,是技术与管理紧密结合所造成的工程学科和交叉学科。同时,我还学习了软件工程方法学的三要素是方法,工具和过程。简要总结三要素的基本解释以下:html

  • 方法:完成软件开发的各项任务的技术方法,回答“怎样作”的问题。
  • 工具:为运用方法而提供的自动的或半自动的软件工程支撑环境。
  • 过程:为了得到高质量的软件所须要完成的一系列任务的框架,它规定了完成各项任务的工做步骤。 课件上的内容虽然专业,但语言不够通俗易懂,我又去阅读了邹欣老师的相关博客,其中有篇文章《现代软件工程讲义 1 软件工程概论》,下面这段话对软件工程的核心部分作了详细的解释

程序,在这里指的是源程序,就是一行一行的代码。仔细看过去,它们的确是创建在数据结构上的一些算法。可是光有代码仍是不行的,这些一行一行的代码不会本身运行,得有人编译成机器能懂的目标代码,而编译不只仅是 cc 和 link 命令,对于一个复杂的软件,咱们不但要有合理的软件架构(Software Architecture), 软件设计和实现 (Software Design & Implementation), 咱们还要用各类文件来描述各个程序文件之间的依赖关系,编译参数,连接参数,等等。这些都是软件的构建。 软件团队的各我的员天天都在不断地修改各类源代码,怎么保证软件在不断的修改中能保证质量,不至于崩溃? 有些时候,咱们要为某个需求写一些特殊功能,而后不久要把这些功能再合并回主要版本。有些程序还有32 位版本, 64位版本, 等等。 这是源代码管理 (Source Code Control) 的问题 – 有时候也叫配置管理 (Software Configuration Management)。咱们还有一系列的工具和程序来保证程序的正确性,这些工具和程序自己应该更正确,才能保证别的软件的质量,对么? 这质量保证的工做叫Quality Assurance, 也叫软件测试 (Testing). 一个软件要有人买,就得先找到顾客,顾客有各类需求,有些靠谱,有些不靠谱,咱们要把这些靠谱的需求都实现了,一群人要从需求分析 (Requirement Analysis) 开始,忙碌各类事情, 例如设计(软件架构),实现(写数据结构和算法),测试,到最后发布软件, 软件在运行过程当中还会出这样那样的问题, 也许咱们要时不时给软件打一个补丁, 这叫软件的维护(Software Maintenance)。这一系列过程就是软件的生命周期 (Software Life Cycle, SLC), 有人得负责软件项目的管理 (Software Project Management)。git

上面的这些和软件开发活动(构建管理源代码管理软件设计, 软件测试项目管理)是软件工程的核心部分。普遍意义上的软件工程也包用户体验 (User Experience), 用户界面设计 (User Interface Design) 等。因此,我以为能够理解为:软件 = 程序 + 软件工程 一个扩展的理论是:软件企业 = 软件 + 商业模式 此外,我想知道咱们以前所学的计算机类课程和软件工程课的不一样在哪 ,托尼·霍尔关于计算机工程和软件工程的不一样侧重点分析解答了我这一疑惑,以下图所示: github

###问题二 软件工程学习方法 ####问题:如今已经步入大三第二学期的学习,总结以前两年半的学习,虽然学习了不少的专业课和实验课,好像编程能力并无太大的提高。尽管有学过c语言和Java两门编程语言,但只是了解了基本的算法和数据结构。尤为是以前的不少课程设计要求作软件时,不知从何下手,也不知道怎么把学到的书面知识运用进去,只能参照别人的模板阅读代码作出修改。因此,针对本学期的软件工程这门课,很想提高本身相应的代码编写及应用能力。 ####解决方案:所以,我去阅读了邹欣老师的相关文章,想了解这门课正确的学习方法和侧重点,心里有个基本的框架和认知。 其中,有篇文章《对大学 IT 专业教育的反馈》, 讲到了为何,学生上了不少课,反而以为很迷茫,这些课的意义是什么? 为何有这么多的原理,殊不知道我学的东西有什么用,怎么用。更不了解这些课程在实践中的意义。咱们大多都是经过只有死记硬背来应付考试,考试后全忘记。IT 教育不光是代码! 软件教育不是孤立体,但愿在软件教育中把文科的知识联系进来,和设计联系起来; 把软件/IT 行业有趣的发展历史放进来。培养学生对这个行业的兴趣、热情和敏感。 提倡互动,介绍同窗上相关的论坛,网站,开拓视野。 其中有个关于软件工程设计的三文鱼模型,针对学校教育安排和企业要求的不一样,为提升学生的综合能力提出的关于软件工程授课的方法流程:算法

  • 开始维护之前同窗开发出来的程序,理解程序。
  • 找bug,改bug,重构小部分代码,以知足用户的需求。
  • 一部分同窗能够开发测试用例
  • 在现有版本的基础上作增量开发
    • a) 理解需求 (这个时候理解了客户需求是什么)
    • b) 设计
    • c) 开发
    • d) 回归测试 (用到上面开发的测试用例来保证软件质量)

###问题三 关于团队项目分工问题的疑问 ####问题:上了大学以后,最深入的感觉就是除了要提升实践能力以外,必不可少的还有对团队协做能力的考核和提高。基本全部课的课程设计都是经过分组的形式去完成,老师的想法是经过分组的方法能够提高咱们的团队协做能力而且能够提高项目的质量。但就我本身而言,这方面的能力并未获得太大的提高其中主要存在两方面的问题。编程

  • ####①不知道该如何协调分工合做的问题,即分工合做的不明确。
  • ####②在协做的过程当中,总会出现较多的问题和矛盾,不知道该怎样去协调处理。即团队成员之间不可避免的矛盾冲突。

####解决方案:我但愿能够在这门课的学习中,能够对团队项目分工问题获得相应的解决,可以在之后的项目设计中对大概的框架和每一步的计划都有较为合理并明确的计划分工。所以,我去学习参考了邹欣老师的博客,但愿从中找到对本身这个疑惑的解答。其中有篇文章《现代软件工程讲义 11 项目管理 - 过后诸葛亮会议》,有一个现代软件工程 项目Postmortem 模板详细的介绍了软件设计中分工合做的内容,以下所示: 设想和目标数据结构

  • 咱们的软件要解决什么问题?是否认义得很清楚?是否对典型用户和典型场景有清晰的描述?
  • 咱们达到目标了么(原计划的功能作到了几个? 按照原计划交付时间交付了么? 原计划达到的用户数量达到了么?)
  • 和上一个阶段相比,团队软件工程的质量提升了么? 在什么地方有提升,具体提升了多少,如何衡量的?
  • 用户量, 用户对重要功能的接受程度和咱们事先的预想一致么? 咱们离目标更近了么?

团队的角色,管理,合做架构

  • 团队的每一个角色是如何肯定的,是否是人尽其才?
  • 团队成员之间有互相帮助么?
  • 当出现项目管理、合做方面的问题时,团队成员如何解决问题?
  • 有什么经验教训? 若是历史重来一遍, 咱们会作什么改进?

这些问题对我有很大的帮助,尤为是设想和目标解答了我对项目初期如何合理地制定计划的困惑,首先必定要从软件自己出发,对要解决的问题,需求,目标等作深刻的分析讨论。我仔细对比思考了以前分工合做时存在的问题,所暴露出来的分工合做的不明确以及不可避免的冲突矛盾这两类问题。我我的以为,最后产生的冲突矛盾很大一部分是由于前期分工合做存在必定的不合理,所以我认为在项目制定初期,具体的任务分配要考虑到每一个成员的可能性和优点,作到人尽其才,获得一个较为合理的安排。此外,在项目推进的过程当中,最重要的是沟通交流,一旦出现问题要及时的和团队成员反馈,虚心接受意见并作出改变,团队成员之间还要可以互帮互助,尽力去推进项目的完成。但愿在之后进行设计的时候,可以把这些想法都落实,逐渐提高团队协做方面的能力。 ###总结 这是软件工程这门课的第一个实验,首先进行了博客园班级加入,github的注册及基本功能的了解这些基本的准备。此外,以前虽然有博客园的使用经验,但Markdown写博客是第一次实践,经过结合老师给的基本功能的介绍和实践,对Markdown写博客这个方法已经有了更多的使用经验,体会到了Markdown工具带来的便利和页面美观性的提高。 这次实验最重要的就是浏览邹欣老师博客,参照参考文章的提问模板,拟定了3个准备从课程学习中找到答案的问题。我经过结合老师给出的课件和邹欣老师的相关博客,对这门课有了大概的构想并作出了三个想从课程学习中获得问题的答案。在这个过程当中,最重要的是提出问题的过程,由于以前的学习太没作过这样的训练,我深入感觉到了这种提出问题能力的重要性。经过自主思考解答困惑是一个逐渐进步的过程,随着不断提出新的问题,通过主动思考以后,可以解答本身的困惑,这样的提问对培养思考能力会很是有价值,之后会按照这种思惟去处理更多的问题。框架

相关文章
相关标签/搜索