C#学习记录——软件工程师必备素养与技能

『聪明是一种天赋,而善良是一种选择。』—— 网络

1、软件工程师的基本素养

C#学习记录——软件工程师必备素养与技能_第1张图片

2、个人素质必修课程

C#学习记录——软件工程师必备素养与技能_第2张图片

3、项目开发流程

具备了良好的个人素质和基础的编程知识,作为一名优秀的开发人员,还应熟悉一个软件项目怎么开展工作,这就是项目开发流程,包括对软件项目的需求分析、软件的总体结构设计、数据库设计、功能设计、算法设计、模块设计、编码、测试以及部署实施程序等一系列操作,以满足客户的需求并且解决客户的问题,如果有更高需求,还需要对软件进行维护,升级处理等。
C#学习记录——软件工程师必备素养与技能_第3张图片

3.1、策划阶段

软件项目策划阶段是项目的开始形成过程,解决了软件项目要做什么的问题。一个成功的软件项目通常都是策划阶段做的踏实有效的项目,在这个阶段,要有专业的行业人员分析市场情况,确定项目可行性、项目先进性,以及项目解决实际问题所带来的的投入产出问题,形成项目策划报告书。一般可以按照如下步骤进行输出。
1、项目策划草案
项目策划草案应包括产品简介、产品目标及功能说明、开发所需的资源、开发时间等。
2、风险管理计划
风险管理计划是把有可能出错或现在还不确定的东西列出来,并制订出相应的解决方案。风险发现得越早对项目却有利。
3、软件开发计划
软件开发计划的目的是收集控制项目时所需的所有信息,项目经理根据项目策划来安排资源需求,并根据时间表跟踪项目进度。项目团队成员则根据项目策划,了解自己的工作任务、工作时间以及所要依赖的其他活动。
除此之外,软件开发计划还应包括项目的验收标准及验收任务(包括确定需要制定的测试用例)
4、人员组织结构定义及配备
常见的人员组织结构有垂直方案、水平方案和混合方案3种。垂直方案中每个成员会充当多重角色;水平方案中每个成员会充当一或两个角色;混合方案则包括经验丰富的人员与新手的相互融合。具体方案应根据公司人员的实际技能情况选择。
5、过程控制计划
过程控制计划的目的是收集项目计划正常执行所需要的所有信息,用来指导项目进度的监控计划的调整,以确保项目能按时完成。

3.2、需求分析阶段

软件需求分析是策划报告的细致挖掘,解决了软件项目如何进行的问题。需求分析准确与否将直接影响项目的输出,所以在这个过程中需要专业人员与软件工程师进行不断的沟通以确定需求,形成项目需求分析报告书。需求分析可以分为以下两个阶段。
1、需求获取
需求获取,是指开发人员与用户多次沟通并达成协议,对项目所要实现的功能进行详细的说明。需求获取过程是进行需求分析过程的基础和前提,其目的在于产生正确的用户需求说明书,从而保证需求分析过程产生正确的软件需求规格说明书。
需求获取工作做得不好,会导致需求的频繁变更,影响项目的开发周期,严重的可导致整个项目的失败。开发人员应首先制订访谈计划,然后准备提问单进行用户访谈,获取需求,并记录访谈内容以形成用户需求说明书。
2、需求分析
需求分析过程主要是对所获取的需求信息进行分析,及时排除错误和弥补不足,确保需求文档正确地反应用户的真实意图,最终将用户的需求转化为软件需求,形成软件需求规格说明书。同时针对软件需求规格说明书中的界面需求以及功能需求,制作界面原型。所形成的界面原型,可以有3中表达方法:图纸(以书面形式)、位图(以图片形式)和可执行文件(交互式)。在进行设计之前,应当对开发人员进行培训,以使开发人员能更好地理解用户的业务流程和产品的需求。

3.3、开发阶段

开发阶段是项目需求与软件工程相结合的一个阶段,解决了具体项目软件如何实现的问题。通常可以分为以下两个阶段。
1、软件概要设计
设计人员在软件需求规格说明书的指导下,需完成以下任务。
(1)通过软件需求规格说明书,对软件功能需求进行体系结构设计,确定软件结构及组成部分,编写《体系结构设计报告》。
(2)进行内部接口和数据结构设计,编写《数据库设计报告》。
(3)编写《软件概要设计说明书》。
2、软件详细设计
软件详细设计阶段的任务如下。
(1)通过《软件概要设计说明书》,了解软件的结构。
(2)确定软件部分各组成单元,进行详细的模块接口设计。
(3)进行模块内部数据结构设计。
(4)进行模块内部算法设计。例如,可采用流程图、伪代码等方式详细描述每一步的具体加工要求及种种实现细节,编写《软件详细设计说明书》。

3.4、编码阶段

编码阶段是针对软件详细设计的具体实现,把问题解决程序化。这个过程主要解决以下问题。
1、编写代码
开发人员通过《软件详细设计说明书》,对软件结构及模块内部数据结构和算法进行代码编写,并保证编译通过。
2、单元测试
代码编写完成可对代码进行单元测试、集成测试,记录、发现并修改软件中的问题。

3.5、系统测试阶段

系统测试阶段主要验证输入是否按照预定结果进行输出的问题。发现软件输出与实际生产、系统定义不符合或与其矛盾的地方。系统测试过程一般包括制订系统测试计划,进行测试方案设计,测试用例开发,进行测试,最后要对测试活动和结果进行评估。

3.6、系统验收阶段

系统验收阶段主要是与客户确认软件输出与项目需求的吻合度,确定项目是否完结、项目下一步计划等,最后形成项目验收报告书。

3.7、系统维护阶段

任何一个软件项目在投入生产过程时或多或少都会存在这样那样的问题,在系统维护阶段根据软件运行情况,对软件进行适当的修改,以适应新的要求,以及纠正运行中发现的错误等。同时,还需要编写软件问题报告和软件修改报告。

4、项目开发团队

项目开发团队的一般结构
C#学习记录——软件工程师必备素养与技能_第4张图片

4.1、项目团队构建

项目团队解决由哪些人去实现一个软件项目的问题。项目团队一般由以下几个角色构建。
1、项目经理
项目经理要具有领导才能,主要负责团队的管理,对出现的问题能正确而迅速地做出决定,能充分利用各种渠道和方法来解决问题,能跟踪任务,有很好的日程观念,能承受一定的压力。
2、系统分析师
系统分析师主要负责系统分析,了解用户需求,写出《软件需求规格说明书》,建立用户界面原型等。担任系统分析师的人员应该善于协调,并且具有良好的沟通技巧。担任此角色的人员,必须要具备业务和技术领域知识。
3、设计员
设计员主要负责系统的概要设计、详细设计和数据库设计。要求熟悉分析与设计技术,熟悉系统的架构。
4、程序员
程序员负责按照项目要求进行编码和单元测试,要求有良好的编程和测试技术。
5、测试人员
测试人员负责进行测试,描述测试结果,提出问题解决方案。要求了解要测试的系统,具备诊断和解决问题的技能。
6、其他人员
一个成功的项目团队是一个高效、协作的团队。除具有一些软件开发人员外,还需要一些其他人员,如美工、文档管理人员等。
在小规模企业中可能一个人具有多个角色,例如开发人员与测试人员都是同一个人执行。在复杂的项目中,项目角色不限于以上角色,又可以进一步进行分配,例如同样的功能在不同设备上进行实现可以分为PC开发工程师和移动端开发工程师。

4.2、项目团队要求

一个高效的软件开发团队需要建立在合理的开发流程及团队成员密切合作的基础之上。每一个成员共同迎接挑战,有效地计划、协调和管理各自的工作以完成明确的目标。高效的开发团队具有以下几个特征。
1、具有明确且有挑战性的共同目标
2、团队具有很强的凝聚力
3、具有融洽的交流环境
4、具有共同的工作规范和框架
5、采用合理的开发过程

5、项目的实际开发流程

C#学习记录——软件工程师必备素养与技能_第5张图片

6、项目规划常见问题及解决

6.1、如何满足客户需求

1、了解客户业务目标
2、撰写高质量的需求分析报告
3、使用符合客户语言习惯的表达方式
4、要多尊重客户的意见
5、划分需求的优先级

6.2、如何控制项目进度

尽早进行测试,实时监控项目质量,增强对整个项目的控制和管理。

6.3、如何控制项目预算

采用多种测试手段,尽早发现潜在的问题。

你可能感兴趣的:(C#,学习)