(一)软件需求,是软件开发的基础和前提
需求提出。用户对目标软件系统在功能、行为、性能、设计约束等方面的期望;准确理解用户的要求,撰写需求,将用户的非形式要求转化为完整的、形式的规格说明。
1、需求描述
1)功能,软件开发要用在什么行业?使用在什么场景?
2)性能,软件功能在执行过程中的速度、可使用性、响应时间、各种软件功能的恢复时间、吞吐能力(容纳程度)、精度、频率等。
3)强加给实现的设计限制,在效果、实现的语言、数据库的完整性、资源限制、操作环境等方面所要求的标准。
4)属性,可移植性、正确性、可维护性及安全性等方面的考虑因素。
5)外部接口,与人、硬件、其它软件和其它硬件的相互关系。
2、需求类型
业务需求,用户对系统的高层级的目标要求,技术、业务及市场三者结合才能体现最大价值;用户需求,用户使用产品必须要完成的任务和路径;功能需求,开发人员必须实现的软件功能,使得用户能完成他们的任务,满足业务需求;非功能需求,对系统提供的服务或者功能提出的约束,包括时间、软件开发过程、软件质量、标准等约束,例如异常出现概率小。
3、需求评审
需求人员与用户确定需求的过程中,要仔细体会与理解用户的每一个要求。对于用户的要求,需求人员需要对其加以梳理:哪些是合理的需求,哪些是不合理的需求,还有一些可能是必要的但用户没想到对的需求。同时,分层次评审,可以让不同类型的参与人员(高层的管理人员、具体的操作人员)分别评审他们关注的内容,从不同的角度找到需求的差异点,提高评审质量。
(二) 页面(模型)设计
1、黄金规则
置用户于控制地位。不强迫用户进入不必要或不希望的交互模式;提供灵活的交互;允许用户交互被中断和撤销,其一是对破坏性操作的确认,其二是设置撤销功能;当技能级别增长时可以使交互流线化并允许定制交互;使用户与内部技术细节隔离。
减少用户的记忆负担。减少对短期记忆的要求;建立有意义的缺省;定义直观的快捷方式;界面视觉布局应该基于真实世界的象征;以不断进展的方式揭示信息。
保持界面一致。允许用户将当前任务放入有意义的环境中;在应用系统家族内保持一致性。
2、用户界面的分析与设计
用户模型。对系统所有终端用户的描述。
设计模型。用户模型在设计中的实现。
心理模型。用户在脑海里对界面产生的印象。
实现模型。计算机系统的外在表现,要与市场调研相结合,既提倡外美内秀,又强调恰到好处。
3、界面分析
用户分析
了解用户;用户类型分析,比如用户平均正规教育水平如何;用户特性度量,比如用户使用的频度,用户对计算机的熟悉程度。
任务分析和建模(用户工作分析)
任务分配。第一,用户的任务:创造、判断、探索;其二,计算机的任务:重复检查、计算、数据处理;其三,两者混合任务:数据录入、数据恢复、决策支持。
对象细化。一方面,通过对对象上面动作的评估,为设计师提供一个操作列表;另一方面,随着设计的不断细化,每个操作的细节都将被定义出来,比如家具模板Furniture类,包括size,shape,location属性,任务“选择”、“移动”、“拖曳”等操作。
工作流分析。可以使软件工程师很好地理解在包含多个成员时,一个工作过程是如何完成的;可通过思维导图分析完成。
层次分析。细化过程,比如请求重新填写处方的用户任务,开发后得到相应任务层。
显示内容分析
显示内容:数表图文;
错误验证:检查是否所有必填的项目都已填充,数据输入是否正确;如果是错误的,出现3个结果:致命错误(致命错误:引起处理混乱的错误。此时用户要么重新输入一个正确的数据,要么退出输入。)、警告(警告:由很不可信的数据引起的错误,此时应停止处理并提示用户重新输入数据。)、建议(建议:由不大可信的数据引起的错误。此时,处理不必停止,但要发出一个警告信息,使得用户中止运行以便检查,或是在处理结束时进行检查。);
皮肤:计算机软件或网站用户界面的外观;将功能与用户界面分离的社交和实现策略;通过更换皮肤,可在一定程度上页面个性化,包括颜色、形状、风格等因素。
4、界面设计步骤
第一,使用将前面分析中获得的信息,定义界面对象和行为;其二,定义那些导致用户界面状态发生变化的事件(用户动作),对这个行为建模;其三,描述每一个界面状态,就像最终用户实际看到的那样;最后,简要说明用户如何从界面提供的界面信息来解释系统状态。
5、设计评估
设计评估周期,如下图:
(三) 开发
1、数据表结构制定
一般数据库选用MySQL,采取分布式和主从架构,按照业务不断细分,以冗余 、 拆分、细化为主线大体过程;
2、前端框架确定
前端开发的编程语言选择了html5+css3+JavaScript,采用最流行的VUE框架;
3、后台框架确定
后端开发的编程语言选择java,采用最流行的SSM框架,并引入了分布式可拓展的微服务。
(四)按功能划分,制定开发计划
(五)测试
开发工程师测试程序的源代码;
测试工程师测试软件功能、软件性能、兼容性等
(六)维护
软件产品本身:修正BUG、提升性能等等;
服务器:定期做好基础的检查、维护工作,有效防止服务器故障引发的灾难;
软件开发升级:原先的软件使用过程中,发现了许多存在的问题,这些问题有可能导致数据的不完整或者系统的崩盘等等,所以需要再进行升级,修正这些BUG。另外,也可以通过升级,增加或调整某些功能,使软件的通用性和可用性更大。