软件工程作业:课程报告

软件工程作业:课程报告

邓超 20215156

  1. 综述
    软件是一系列按照特定顺序组织的计算机数据和指令的集合。软件并不只是包括可以在计算机(这里的计算机是指广义的计算机)上运行的电脑程序,与这些电脑程序相关的文档一般也被认为是软件的一部分。简单的说软件就是程序与文档的集合体。
    软件工程是一门研究用工程化方法构建和维护有效、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等多个方面。现代生活中各个行业几乎都有计算机软件的应用,由于软件对传统方法的替代,。这些应用促进了经济和社会的发展,也提高了工作效率和生活效率 。
    本课程针对软件工程进行一系列的介绍,主要普及了软件的工程化理念和实际操作中的各方各面。以下是我在本课程中分点论述的总结。在总结中,我将穿插我的工作内容:运营商手机短信服务作为引例。

  2. 业务建模与分析
    一个工程的构建和开端首先是业务需求。甲方公司在业务侧提出明确需求后,将进行系统分析和方案落地操作。
    JAD会议是业务建模中的一种具体执行方案。它通常指甲方公司在提出业务需求后,与待选乙方公司对接信息,乙方向甲方提供产品的功能、与甲方需求的重合程度。JAD会议一般不涉及经济成本要素,不考虑报价,是一个相对单纯的业务对齐场景。举例:中国移动根据用户诉求,计划对富媒体消息做出性能优化,这时有两家供应商:华为、中兴参与方案竞标,那么中国移动的产品经理可以考虑组织一个JAD会议,同时参考二者的方案优劣并收集判断依据。
    业务模型图是用户希望通过图表方式来了解系统,流程图是对系统行为的图形化表示。举例:对于运营商手机短信服务,那么甲方公司需要考虑设计完整的系统结构,实现用户注册、开户、收发消息等业务场景的信息流路径。这包含技术层面的可行性构建(如铺设基站覆盖)和业务层面的功能设计(如计费场景的解耦设计)。

  3. 软件开发过程
    一套软件系统的开发过程是可以结合多种方法的,这包括非工程化的方法和工程化、系统化的优化方法。对于小型公司或小型项目如小网页游戏等,普通的软件编码就足以解决问题,但对于大型服务系统,则需要大量人力资源共同实现,这时需要一个系统化的软件工程化方法指导完成。
    软件开发过程包含以下需求、设计、编码、测试、维护阶段。
    需求阶段:产品经理PM提出明确需求;
    设计阶段:软件架构师SA、解决方案工程师SE着手设计架构;
    编码阶段:开发工程师R&DE根据设计文档和接口规范编码,有时也需要自己写story实现部分方案设计;
    测试阶段:包括开发自测和测试工程师TE的系统性测试,包含功能测试和性能测试;
    维护阶段:维护工程师ME在产品上线后持续观察维护,进行现网问题纠察、改进,包含一些模块重构过程。
    软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目工作的基础。对于不同的软件系统,可以采用不同的开发方法、使用不同的程序设计语言以及各种不同技能的人员参与工作、运用不同的管理方法和手段等,以及允许采用不同的软件工具和不同的软件工程环境。
    软件开发过程中,通常进行大循环的迭代,或者无固定周期的敏捷开发模式,这取决于项目所属业务的需求,如果业务需求不明确,产品没有一个完整的期待效果,敏捷开发能实现贴合业务市场的能力;而传统的版本开发迭代,能更好维持产品上线的计划性,确保稳定性过关。

  4. 项目管理
    项目管理本身是管理学的一个分支学科 ,对项目管理的定义是:指在项目活动中运用专门的知识、技能、工具和方法,使项目能够在有限资源限定条件下,实现或超过设定的需求和期望的过程。在软件工程中,项目管理方法同样适用。
    在一个软件项目团队中,可以利用项目管理工具在项目推进中进行的同步的工作管理。常见的集成工具有Microsoft Project、JIRA等,这些被广泛应用于项目推进流程中的缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。合理利用项目管理工具可以让工作效率维持高水平。
    举例:一个开发人员面对现有产品的诸多bug时,需要根据自己工作能力和紧急程度依次解决。这时如何提高团队的整体开发效率就是一个值得讨论的问题。一个多人协同的“任务认领系统”,可以让每个团队成员认领自己擅长的任务。每个单独任务的参与者可以在系统中随时更新进度并共享心得,达到团队知识集成的效果。

  5. 软件架构设计
    软件架构是一系列相关的抽象模式,它用于指导大型软件系统各个方面的设计。
    对于软件价格的直白的解释,即是把系统分解为若干部分,用结构图描述系统整体结构或系统某方面的概况或运行的机制。软件架构所指的就是相应的系列性的抽象模式,可以为设计大型软件系统的各个方面提供相应的指导。从本质上来看,软件架构是属于一种系统草图。在软件架构所描述的对象就是直接的进行系统抽象组件构成。连接系统的各个组件之间就是做到把组件之间所存在的通讯比较明确与相对细致的实施描述。处于相应的系统实现环节,那么就会使得细化这些抽象组件成为现实的组件,比如可以是具体的某个类或者是对象。从面向对象领域进行分析,那么各个组件之前实施的连接实现往往是接口。软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由构件的描述、构件的相互作用、指导构件集成的模式以及这些模式的约束组成。软件架构不仅显示了软件需求和软件结构之间的对应关系,而且指定了整个软件系统的组织和拓扑结构,提供了一些设计决策的基本原理。软件应用架构特点:行业性术语多,符号表达多样,依赖实现技术,具有明显地域文化特征。
    常见的软件架构设计方法有FDD特征驱动开发、多视图、Rational 4+1视图方法、架构设计视图与领域的关系等。多视图是指不同利益相关人站在不同角度,思考一个系统的设计与实现,即观察、分解系统,得到不同角度的软件元素,以支持软件质量目标实现的成本、技术等,尤其是软件产品的中长期收益,通过技术选型与设计建模来解释或化解当前与潜在的产品风险。架构设计视图与领域的关系包括关注产品具体语言实现:通常会直接关注软件应用框架与相关语言与技术;关注产品在特定行业应用:通常会关注特定产品的组合。如 IBM 架构师,就关注 IBM 产品在特定领域应用结构;关注云应用开发:通常关注服务的构建、组合、相关平台技术与实现。
    举例:如一个运营商短信服务系统,首先需要把用户终端(P端)集成为使用多种协议接入的抽象接口,将各种服务提供商(A端)同样集成为使用某种特定协议接入的模块,中间的模块则按需求分为各种寄存器、业务逻辑系统、数据库等。将内部分为多个互相基于TCP连接通信的模块有助于系统的功能解耦,便于维护优化。

    参考文献:
    1,强化计算机软件工程管理应用的策略探究,刘静,《无线互联科技》,2020-10-25
    2,工程项目需求分析方法研究,于洋,《计算机时代》,2021-01-15
    3,基于运维监控业务的微服务架构设计模式研究与应用,张亚东,杭州师范大学硕士论文,2019-10-01

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页