软件工程作业:课程报告

邓超 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

软件工程作业:课程报告相关推荐

  1. 基于C#的自动生成视频和海报营销号助手软件设计 课程报告+展示PPT+项目源码

    目录 营销号"助手"软件 1 需求分析与概要设计 1 项目说明 1 1.1. 项目目标: 2 1.2. 软硬件环境需求 2 1.3. 使用的关键技术: 2 需求分析 3 2.1. ...

  2. UML 软件建模课程期末复习笔记及课程设计报告

    UML 基础概念 模型 概念:是对现实系统本质特征的一种抽象,简化和直观的描述. 特征 反映性 直观性 简化性 抽象性 分类 概念模型 逻辑模型 物理模型 软件模型 概念:指通过软件建模语言对软件的功 ...

  3. 软件工程作业-——项目设计

    CH小说网站 [软件开发计划书.需求分析] 作者:陈春旭,习志鹏 1.引言(Introduction) 1.1背景(Background) 随着社会信息量的与日俱增,人们看书不在限制于在书本上了,要是 ...

  4. 嵌入式Linux结课报告,嵌入式课程报告.doc

    嵌入式课程报告 嵌入式系统及应用设计报告 题 目 嵌入式Linux系统移植 专 业 电子与通信工程 姓 名 王文平 学 号 1320610012 一.硬件设备介绍 此次实验用的板子是友善之臂的Mini ...

  5. 《云计算与大数据》课程报告

    <云计算与大数据>课程报告 微软云计算VMware Linux的简单使用 院 系:计算机科学与技术学院 姓 名:xxx 专 业:物联网工程 班 级:物联xx班 2019-2020年度第二学 ...

  6. 哈工大18年春软件构造课程讨论题

    这是哈工大18年春软件构造课程(徐汉川老师)的讨论题目,少部分答案摘录自课件PPT和网上的资源(链接在文中给出).如有错误还望指出,谢谢. 一.在软件测试过程中,"测试用例的数目" ...

  7. 云计算和虚拟化选修课程报告

    声明:本报告是云计算和虚拟化选修课的课程报告,老师要求比较低,只需要谈谈自己对云计算相关的见解.所以本报告确实写得比较简陋,仅做参考哈! 概要: 云计算作为当前IT行业的热门技术,它一直是社会里的热点 ...

  8. 计算机审计实训实施阶段工作,审计软件实训报告

    审计软件实训报告 (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 审计软件实训报告审计软件实训报告 总结及体会这次的计算机辅助实训的学习 ...

  9. 基于Java+Swing实现捕鱼达人游戏(含课程报告)

    基于Java+Swing实现捕鱼达人游戏(含课程报告) 一.系统介绍 1.开发背景 2.基本内容.实现方法及主要技术实现目标 3实现目标 二.功能展示 三.其他系统 四.获取源码 一.系统介绍 1.开 ...

最新文章

  1. SQLite 版本引发的 Python 程序调用问题
  2. Linux的apache的allowoverwrite参数的解释
  3. 【ArcGIS风暴】全站仪、RTK测量坐标数据在CASS和ArcGIS中展点的区别和联系(带数据)
  4. @Autowired注入为null的几种情况
  5. [bzoj 3226]校门外的区间
  6. glance查看进程内存使用过大问题
  7. js ---- 数组操作
  8. 监控 MySQL的多种方法
  9. InstallShield Limited Edition Project 打包windows服务解析
  10. 机器学习(Machine Learning)深度学习(Deep Learning)资料(Chapter 1)
  11. 学校图书借阅管理系统(MySQL)
  12. 均方误差(MSE)和均方根误差(RMSE)和平均绝对误差(MAE)
  13. 杨霖演讲实录∣从模块化架构到跨链生态,NULS这一年下了一盘怎么样的棋
  14. 安全认证之JWT令牌
  15. Mac下简单socket连接代码
  16. 绝对爆笑,虽然我知道可能和别的人雷同,但欢声笑语不雷同不是么?
  17. 高德地图不开位置无法定位服务器,使用高德地图导航时光标不动(定位不动、无法定位)的用户 请进...
  18. poj2455 Secret Milking Machine(二分答案+最大流)
  19. 实习时候的亚子==(四)
  20. 设置TinyMCE在线HTML编辑控件只读

热门文章

  1. Fluke ii900 工业声学成像仪性能讲解
  2. 华为一员工未加班领夜宵被重罚,老HR有话:惩戒与关爱应该并重
  3. uni-app自定义导航
  4. Java实现流的复制,解决流不可重用问题
  5. linux下如何查看test点txt,Linuxtest - (1.doc
  6. 朴素贝叶斯算法原理和实现
  7. Python 面试高频问题:cls到底是什么
  8. fifa足球经理10java_《FIFA足球经理10》简体中文硬盘版
  9. shell 除法显示小数
  10. java 结束 线程结束_Java结束线程的三种方法(爱奇艺面试)