概述
Day1
软件概述
软件定义:
是一系列按照特定顺序组织的计算机数据和指令的集合
软件开发模式:
分为:瀑布模型,快速原形模型,螺旋模型,迭代模型,增量模型,敏捷开发模式
瀑布模型:
将软件的生命周期的各种活动规定为按固定顺序而连接的若干阶段工作,得到软件产品项目
需求分析—>系统设计—>程序设计—>编码—>测试—>运行及维护
(需求说明书) (设计书) (程序设计) (编程) (测试报告) (维护报告,改进系统等)
优:
-
为项目提供了按阶段划分的检查点
-
当前一阶段完成后,只需要去关注后续阶段。
缺:
各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。
由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。
通过过多的强制完成日期和里程碑来跟踪各个项目阶段。
瀑布模型的突出缺点是不适应用户需求的变化。
快速模型:
就是快速建造一个产品原形,实现客户或未来用户与系统的交互,使用后,客户或用户对该产品进行评价,进一步细化该产品的开发需求,逐步完善原形满足客户需求,好处是开发人员可以完全清楚客户的真正意向是什么,然后再开发,客户一旦确定了真正需求,那么所建造的原形就会被丢弃,所以,原型的内部结构不是很重要,重要的是快速的建立,也可以迅速地修改,以此反应客户需求
螺旋模型:
它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。他有四个象限:制定计划,风险分析,实施工程,客户评估
该模型强调风险分析,要求客户及用户接受这种分析,因此这种模型一般适用于内部的大规模软件开发。一旦执行风险分析影响了项目的利润,那么这种风险分析就毫无意义,软件的开发人员应该擅长寻找可能出现的风险,并准确分析,否则将会带来更大风险
迭代模型:
是一种与瀑布式相反的软件开发过程,弥补了瀑布式的弱点,具有更高的效率(生产率,成功率)
开发过程中,开发工作会被组织为一系列短小固定时间(比如3周)的小项目,被称为一系列的迭代,每一次迭代都包括了需求分析、设计、实现与测试,这样可以在需求完整定下来之前启动项目,并且在迭代中完成一部分功能或者业务工作,再通过反馈来细化需求,并开始新一轮的迭代
优点:
-
降低了在一个增量上的开支风险。如果开发人员重复某个迭代,那么损失只是这一个开发有误的迭代的花费。
-
降低了产品无法按照既定进度进入市场的风险。通过在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆匆忙忙。
-
加快了整个开发工作的进度。因为开发人员清楚问题的焦点所在,他们的工作会更有效率。
-
由于用户的需求并不能在一开始就作出完全的界定,它们通常是在后续阶段中不断细化的。因此,迭代过程这种模式使适应需求的变化会更容易些。因此复用性更高
增量模型:
在增量模型中,软件被作为一系列的增量构件来设计、实现、集成和测试,每一个构件是由多种相互作用的模块所形成的提供特定功能的代码片段构成。
增量模型在各个阶段并不交付一个可运行的完整产品,而是交付满足客户需求的一个子集的可运行产品。整个产品分解成若干个构件,开发人员逐个构件交付产品,好处是软件开发可以适应变化,客户可以不断看到开发的新版本软件,降低开发风险。
缺点:
各个构件是逐渐并入已有的软件体系结构中的,所以加入构件不可以破坏已构造好的系统部分,这需要软件具备开放式体系结构。
需求的变化是不可避免的。很容易退化为边做边改模型,从而是软件过程的控制失去整体性。
在使用增量模型时,第一个增量往往是实现基本需求的核心产品。核心产品交付用户使用后,经过评价形成下一个增量的开发计划,它包括对核心产品的修改和一些新功能的发布。这个过程在每个增量发布后不断重复,直到产生最终的完善产品。
[例如] 使用增量模型开发字处理软件。可以考虑,第一个增量发布基本的文件管理、编辑和文档生成功能,第二个增量发布更加完善的编辑和文档生成功能,第三个增量实现拼写和文法检查功能,第四个增量完成高级的页面布局功能。
敏捷开发模式
敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目都经过测试,具备集成和可运行的特征。就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
敏捷开发小组主要的工作方式可以归纳为:作为一个整体工作; 按短迭代周期工作; 每次迭代交付一些成果,关注业务优先级,检查与调整。
核心思想:
-
强调面对面的沟通
-
把精力集中在可执行的程序上,可以运行的产品胜于编制综合性文档,强调了原型、模型、demo等的重要性
-
团队合作和团队激励,合作胜于谈判,敏捷开发能将全部团队成员融合成一个整体。
-
超强的适应能力,适应变化胜于按部就班
敏捷开发的特点就是快速
敏捷开发适合不是很大的团队开发,比较适合一个组的团队使用。
#####
软件的质量概述:
软件产品与其他产品一样,都是有质量要求的,软件质量关系着软件使用程度与使用寿命,一款高质量的软 件更受用户欢迎,它除了满足客户的显式需求之外,往往还满足了客户隐式需求。
因素:软件质量的概念、软件质量模型、影响软件质量
软件质量概念:
软件质量是指软件产品满足基本需求及隐式需求的程度。软件产品满足基本需求是指其能满足软件开发 时所规定需求的特性,这是软件产品最基本的质量要求;其次是软件产品满足隐式需求的程度。例如,产品 界面更美观、用户操作更简单等。
软件质量的定义可分为3个层次:
-
满足需求规定:软件产品符合开发者明确定义的目标,并且能可靠运行。
-
满足用户需求:软件产品的需求是由用户产生的,软件最终的目的就是满足用户需求,解决用户的实际问 题。
-
满足用户隐式需求:除了满足用户的显式需求,软件产品如果满足用户的隐式需求,即潜在的可能需要在 将来开发的功能,将会极大地提升用户满意度,这就意味着软件质量更高。 所谓高质量的软件,除了满足上述需求之外,对于内部人员来说,它应该也是易于维护与升级的。软件开发 时,统一的符合标准的编码规范、清晰合理的代码注释、形成文档的需求分析、软件设计等资料对于软件 后期的维护与升级,这些资料也是软件质量的一个重要体现。
软件质量模型
由于软件自 身的特点和目前的软件开发模式使得隐藏在软件内部的质量缺陷无法完全根除,因此每一款软件都会存在一些质量问题。
影响因素:需求模糊,开发时缺少关于规范性的文件指导,软件开发的人员问题,缺乏软件质量控制管理
软件分类:
根据应用场景:工具类软件、游戏型软件、媒体型软件、电商型软件等
根据软件架构分类:单机版软件、分布式软件
单机版软件:单机软件,单机游戏等
分布式架构软件:
C/S架构软件: (C 客户端 S 服务器)
客户端需安装专门软件,如QQ 微信等
B/S架构软件: (B 浏览器 S 服务器)
客户端为浏览器 ,如百度、hao123等
软件开发生态系统:
软件开发生态系统目前最流行最常见的有App、微信小程序、公众号、前端和后台。
APP:
App即应用程序,Application的缩写,主要指安装在智能手机上的软件
完善原始系统的不足与个性化。使手机完善其功能,为用户提供更丰富的使用体验的主要手段。手机软件的运行需要有相应的手机系统
主流手机系统:
苹果公司的IOS,谷歌公司的android,华为的鸿蒙
微信小程序:
微信小程序,小程序的一种,英文名Wechat Mini Program,是一种不需要下载安装即可使用的应用
前端:
前端,也称web前端。对于网站来说,通常是指网站的前台部分,包括网站的表现层和结构层(通 俗点就是用户可以看到的部分)。 总结一下,浏览器、APP、应用程序的界面展现和用户交互就是前端
后端:
后端开发即“服务器端”开发,主要涉及软件系统“后端”的东西。比如,用于托管网站和 App 数据的服务 器、放置在后端服务器与浏览器及 App 之间的中间件,它们都属于后端。那些你在屏幕上看不到但又被用来为前端提供支持的东西就是后端。
Day2
项目成员的组成
项目经理
产品经理
UI设计师
技术总监
开发工程师 (web前端,Android,iOS,后端)
测试工程师
软件开发流程
开发流程分为六个阶段:项目启动阶段,需求阶段,设计阶段,开发阶段,测试阶段,项目上线
项目启动:
产品经理和项目干系人(公司领导、产品总监、技术总监等)确定项目方向,项目的话则包括客户方领导、主要执行人等。
公司领导确认项目组团队组成,包括产品经理、研发项目经理、研发工程师、测试团队等。
明确项目管理制度,需要进行相应的评审,评审有相应的《会议纪要》,项目开始时,研发项目经理每周提供《项目研发周报》,测试阶段时,测试工程师每周提供《项目测试周报》。
产品经理进行需求调研,输出《需求调研》文档。方式主要有背景资料调查和访谈。
产品经理完成《业务梳理》
本阶段产物,成果及负责人:
-
调研文档,了解项目背景,了解项目干系人目标方向---产品经理
-
团队组建,确认团队人员及配置----产品总监
-
业务梳理,明确项目的目标、角色、各端口及模块---产品经理
需求阶段:
进入可视化产物的输出阶段,产品经理提供最简单也最接近成品的《产品原型》(线框图形式即可)还可能产生的包括业务流程图和页面跳转流程图。
产品经理面向整个团队,进行需求的讲解。
项目经理明确《项目里程碑》。根据项目里程表,完成《产品开发计划》,明确详细阶段的时间点,最后根据开发计划,进行《项目任务分解》,完成项目的分工。
研发工程师按照各自的分工,进入概要需求阶段。《概要需求》旨在让研发工程师初步理解业务,评估技术可行性。
本阶段产物,成果及负责人:
-
产品原型,产品的线框图---产品经理
-
需求概要,基于线框图,作技术评估,达成业务理解的一致性---研发工程师
-
项目里程碑,确认项目重大时间节点---研发项目经理
-
项目开发计划,梳理各阶段、各端口的开发计划---研发项目经理
-
项目任务分解表,将计划分配到团队---研发项目经理
设计阶段:
UI设计师根据产品的原型,输出《界面效果图》,界面进行标注,根据主要的界面,提供一套《UI设计规范》,主要写常用界面形式尺寸等,方便开发。
研发工程师在界面效果图,输出《需求规格》,完成《概要设计》、《通讯协议》及《表结构设计》,完成正式编码前的一系列研发设计工作。
本阶段产物,成果及负责人:
-
界面效果图及标注,基于线框图,作效果图,须适量考虑交互内容---UI设计师
-
UI设计规范,在UI界面基础上,输出主要界面的设计规范---UI设计师
-
需求规格,基于效果图,明确业务实现细节,消除对最终成果理解的不一致---研发工程师
-
概要设计功能,实现的可视化,有助于理清思路,减少技术盲区和低级缺陷,实现并行开发,提高效率---研发工程师
-
通讯协议,通信协议是指双方实体完成通信或服务所必须遵循的规则和约定---研发工程师
-
表结构,设计确认要建的数据库表及其表结构---研发工程师
开发阶段:
正式开发编码,过程大部分时间用来写代码,可能还需要进行技术预研、进行需求确认。
完成编码后进行功能评审。
测试阶段:
测试工程师按阶段设计《测试实例》,未通过的流程测试提交至Jira/禅道,分配给相应的开发人员调整。
开发工程师根据结果修改代码,完成修改并提交,通过后完成。
测试工程师编写《测试结果报告》,功能测试,压力测试等等。
试工程师编写系统各端口的《操作手册》、维护手册等。
本阶段产物,成果及负责人:
-
测试用例,明确测试方案,包括测试模块、步骤、预期---测试工程师
-
测试结果报告,输出测试结果---测试工程师
-
用户手册,系统操作手册---测试工程师
系统上线:
与客户或上级达成一致后,进行试运行,稳定后上线。
工作流程:
程序员日常工作:
-
对项目经理负责,负责软件项目的详细设计、编码和内部测试的组织实施,对程序员小型软件项目兼 任系统分析工作,完成分配项目的实施和技术支持工作。
-
协助项目经理和相关人员同客户进行沟通,保持良好的客户关系。
-
参与需求调研、项目可行性分析、技术可行性分析和需求分析。
-
熟悉并熟练掌握交付软件部开发的软件项目的相关软件技术。
-
负责向项目经理及时反馈软件开发中的情况,并根据实际情况提出改进建议。
-
参与软件开发和维护过程中重大技术问题的解决,参与软件首次安装调试、数据割接、用户培训和项目推广。
-
负责相关技术文档的拟订。
-
负责对业务领域内的技术发展动态。
周期性报告:
-
日报:每日晨会或者站立会需要
-
周报:本周工作内容总结和下周工作内容计划
-
月报:本月总结和下月计划
最后
以上就是彪壮黑夜为你收集整理的Day1 and Day 2的全部内容,希望文章能够帮你解决Day1 and Day 2所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复