软件工程

软件工程基础——第四次作业

青春壹個敷衍的年華 提交于 2019-12-01 10:21:44
软件工程基础——第四次作业 结对编程 git地址 https://github.com/lilyShuangszyzhk/WordCount 队友 双泽媛 队友学号 201831074121 队友博客 https://www.cnblogs.com/szy211/p/11674445.html ·PSP表格 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 30 30 Estimate 估计这个任务需要多少时间 1200 1400 Development 开发 1140 920 Analysis 需求分析 (包括学习新技术) 300 240 Design Spec 生成设计文档 60 60 Design Review 设计复审 (和同事审核设计文档) 60 60 Coding Standard 代码规范 (为目前的开发制定合适的规范) 60 30 Design 具体设计 120 100 Coding 具体编码 300 240 Code Review 代码复审 120 120 Test 测试(自我测试,修改代码,提交修改) 120 70 Reporting 报告 150 180 Test Report 测试报告 60 100 Size Measurement 计算工作量 30 20

软件工程自学笔记

独自空忆成欢 提交于 2019-12-01 10:18:33
软件工程自学 emmm我们专业不学习软件工程,自学一点,权当休闲。 1.概述 应对不断变化的需求 开发占比比测试和维护小得多。 1.2 软件开发的三个阶段 私人化的软件环境中,软件的水平与个人的关系很大。 专家系统:提供专业知识与服务 网格计算:云计算 软件开发的初期,一定要先花时间把需求搞清楚 可读性、可理解性越好,可维护性越好 软件开发追求一致性和标准性 技术先进,需求不清楚是中国的现状。没有技术解决不了的,但是主要问题是把需求提清楚 好的需求本身就是一种资源 维护对一个公司的信誉很重要,要考虑到开发公司的流动性 维护费:技术支持(电话、邮件)、上门解决,这是一个长期的盈利(对客户就是花费) 软件的维护是一件很困难的问题。 软件!=程序,软件是由一个完整的配置组成的,还包括文档和数据。 在软件开发的不同阶段进行修改,需要付出的代价是很不相同的。 一旦发生错误应该马上修改 开发费与维护费是两回事。签合同的时候要说好 1.3 软件工程概述 好的项目管理要尽量准时。 一种策略:快速迭代、抢占市场、尽早上架 开发目的的折中、最优化 易于维护的软件,可靠性一般也比较高 可靠性和性能是互斥的,一个是求稳,一个是性能导向的 软件工程的原则: 例如类,就是对一组有共同特性的对象的抽象 局部化:资源的声明、使用和释放应该放在同一个模块中并且应该尽量靠近 一致性:要培训员工使用公司统一的命名

一文带你搞懂什么是测试开发!

对着背影说爱祢 提交于 2019-12-01 09:45:21
0 1 开始前说点什么 需要说明的是,原文发表于作者的公众号中,文章篇幅虽长,但内容朴实、且能帮助读者进一步理解测试开发工作,请读者耐心品完~ 1. 自我反省 公众号开通了也有两年多了,除了刚开通的那段时间发文比较频繁之外,从去年上半年开始,几乎很少再去打理了,翻了翻历史推文,从时间频率来讲,基本上平均2~3个月才更新一篇文章,工作忙虽是一方面,但这也只是借口,归根原因还是不够坚持。 2. 养成投资自己的习惯 最近一直在思考,当初为什么要开办公众号?有些读者可能会想:“是不是就想弄个渠道引流打广告!”,上周确实也帮朋友在公众号内做过一两次专栏推荐,但我想说的是,虽然有些小部分推文有些推广的成分, 但请试想一下,推荐给大家的学习专栏,都是实实在在能帮助大家提升自己技能、打造职场竞争力的有用课程,并不是无用的。 经常有周边同事或者读者跟我说:“你怎么会懂得那么多种类的专业知识啊,而我自己啥都不会,但又不知道怎么学,怎么办呢?”,我想对这些人说, 放开畏难情节,养成持续学习的习惯 ,这样知识技能的积累才能越来越多、越积越厚。现在社会上有很多人,喜欢投资房子、投资脸蛋、投资享乐,当然这些都没有错,但真正的长期投资,应该是投资自己,知识的投资对于自己来说,才是永恒属于自己的。 3. 回归初衷 前面说了那么多,更重要的还是想呼吁大家懂得投资学习,投资自己。回想当初为什么要开办公众号

软件工程和服务器的介绍

百般思念 提交于 2019-12-01 09:00:36
一.软件工程 IBM -> DOS -> Bill Gates -> Microsoft -> Windows 软件开发流程/软件过程/软件生命周期 (一)软件定义期 1)可行性研究阶段——《可行性研究报告》 技术、人员、资金、时间、设备、政策法规、风俗、回报率 2)需求分析阶段——《软件需求说明书》 功能性需求、非功能性需求(二)软件开发期 (二)软件开发期 3)概要设计阶段 技术选型、功能模块设计、数据结构设计 4)详细设计阶段 模块实现细节、属性、方法、算法... 5)编码阶段 UI设计师、前端工程师、后台工程师 6)项目测试阶段 (三)软件维护期 7)项目部署阶段 部署到服务器 8)项目维护阶段 “学子商城”需求分析 前台子系统 产品模块:首页、列表、详情 用户模块:注册、登录、收藏夹、用户中心 购物车模块:添加购物车、修改购物车、下单 后台子系统 产品模块:添加、删除、列表、修改 用户模块:列表、删除 订单模块:列表、搜索 移动端子系统(小程序、APP、网页) 和前台子系统功能一致 二.Web项目中的服务器 Server:为客户端提供各种服务的功能强大的计算机。 (一)访问服务器 (1)服务器的地址:域名/IP地址 (2)对应服务的端口 (3)提供该服务所使用的协议 http://www.codeboy.com:80/ (二)访问Web服务器上的网页

软件工程个人项目1

戏子无情 提交于 2019-12-01 08:39:33
Dijkstra算法: #include <iostream> #include <vector> #include <stack> using namespace std; const int maxnum = 100; const int maxint = 999999; // 各数组都从下标1开始 int dist[maxnum]; // 表示当前点到源点的最短路径长度 int c[maxnum][maxnum]; // 记录图的两点间路径长度 int n, line; // 图的结点数和路径数 // n -- n nodes // v -- the source node // dist[] -- the distance from the ith node to the source node // prev[] -- the previous node of the ith node // c[][] -- every two nodes' distance void Dijkstra(int n, int v, int *dist, vector<int> *prev, int c[maxnum][maxnum]) { bool s[maxnum]; // 判断是否已存入该点到S集合中 for(int i=1; i<=n; ++i) { dist[i] = c[v]

软件开发过程模型与软件测试模型

允我心安 提交于 2019-12-01 08:02:01
一、软件开发过程模型: 需求分析、详细设计、编码、测试、运行维护 瀑布模型:需求分析、系统设计、软件编程、软件测试、软件维护 快速原型模型:快速分析、构造、运行、评价 增量模型:规格说明、设计、实现与集成、交付客户 螺旋模型:制定计划、风险分析、实施工程、客户评估 ************************************************************************************************************************************** 二、测试模型: 需求分析、详细设计、编码、测试、运行维护 V模型:需求分析、概要设计、详细设计、编码、单元测试、集成测试、系统测试、验收测试 W(双V)模型: 需求分析    、概要设计   、详细设计  、编码  、集成  、实施  、交付   验收/系统测试设计、集成测试设计、单元测试设计、单元测试、集成测试、系统测试、验收测试 H模型:测试准备-----就绪点-------测试执行    01、单元测试: 是模块测试,验证软件的基本组成单位的正确性,是白盒测试    02、集成测试: 是模块间的测试,测试接口(软件各模块之间的接口和软件与硬件之间的接口)是否正确,是灰盒测试(白盒和黑盒结合)    03、系统测试: 系统测试包括:冒烟测试 系统测试

软件测试分类

自作多情 提交于 2019-12-01 08:01:29
软件测试分类 1. 按照阶段进行划分 1.1 单元测试(Unit Testing) 单元测试是对软件组成单元进行测试。其目的是检验软件基本组成单位的正确性。测试的对象是软件设计的最小单位:模块。 测试阶段:编码后 测试对象:最小模块 测试人员:白盒测试工程师或开发工程师 测试依据:代码和注释+详细设计文档 测试方法:白盒测试 测试内容:模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试 1.2 集成测试(Integration Testing) 集成测试也称联合测试、组装测试,将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作。主要目的是检查软件单位之间的接口是否正确。 测试阶段:一般单元测试之后进行 测试对象:模块间的接口 测试人员:白盒测试工程师或开发工程师 测试依据:单元测试的模块+概要设计文档 测试方法:黑盒测试与白盒测试相结合 测试内容:模块之间数据传输、模块之间功能冲突、模块组装功能正确性、全局数据结构、单模块缺陷对系统的影响 补充说明: 单元测试是一个模块内部的测试,集成测试是在模块之间进行测试(至少两个) 1.3 系统测试(System Testing) 将软件系统看成是一个系统的测试。包括对功能、性能以及软件所运行的软硬件环境进行测试。时间大部分在系统测试执行阶段,包括回归测试和冒烟测试 测试阶段

软件工程第二次作业

落爺英雄遲暮 提交于 2019-12-01 07:28:57
第一个问题: 1、首先制定项目计划,最初计划是里程碑性质的。可以先按瀑布模型设置,里程碑点主要为需求评审、设计评审、经过代码开发和单元测试后进行集成测试、部署上线是一个很重要的里程碑,一般用户会期望系统何时能使用进入试运行期(也可以称为用户测试阶段) 2、需求开发阶段:怎么样写好需求很关键,做软件致电一伍扒一一三三泗柒四四。如何学会进行需求开发可以去看下经典的《需求工程》这个翻译的书,不是很厚,但需要能理解为什么那样做更好,这个需要实践经验锻炼自己。如果有项目成员,可以一起做需求,这个阶段对于业务理解、分析、如何开展调研以及文字表述、业务流程图描述还有文档编辑能力都有不少要求。一般分为《用户需求说明书》和《需求规格说明书》,小项目可以写一个《需求分析报告》,《用户需求说明书》是用用户的语言进行描述,让用户和开发团队对于需求的达成一致的理解,《需求规格说明书》,则是对用户需求的分析,形成系统要具有的功能,这个是真正提供用户可交互操作的文档,也就是后期设计和代码开发的重要基线。另外,作为了解需求,拿出用户UI和用户交流也是一项比较重要的需求获取手段,虽然这个属于设计的范畴。 3、系统设计阶段: 系统总体架构,结合用户对系统环境、开发语言以及运行的网络硬件等要求,确定开发工具等,对应用系统关系进行架构性设计,通过需求阶段对用户的分析归类,用图的方式描述出用户和各子系统或模块的全局视图

软件工程第二次作业

北城余情 提交于 2019-12-01 07:26:16
第一个问题: 一个软件从开始到最后一共需要以下几个流程:   1、计划   对所要解决的问题进行总体定义,包括了解用户的要求及现实环境,从技术、经济和社会因素等3个方面研究并论证本软件项目的可行性,编写可行性研究报告,探讨解决问题的方案,并对可供使用的资源(如计算机硬件、软件系统、人力等)成本,可取得的效益和开发进度作出估计,制订完成开发任务的实施计划。   2、分析   软件需求分析就是对开发什么样的软件的一个系统的分析与设想。它是一个对用户的需求进行去粗取精、去伪存真、正确理解,然后把它用软件工程开发语言(形式功能规约,即需求规格说明书)表达出来的过程。本阶段的基本任务是和用户一起确定要解决的问题,建立软件的逻辑模型,编写需求规格说明书文档并最终得到用户的认可。需求分析的主要方法有结构化分析方法、数据流程图和数据字典等方法。本阶段的工作是根据需求说明书的要求,设计建立相应的软件系统的体系结构,并将整个系统分解成若干个子系统或模块,定义子系统或模块间的接口关系,对各子系统进行具体设计定义,编写软件概要设计和详细设计说明书,数据库或数据结构设计说明书,组装测试计划。在任何软件或系统开发的初始阶段必须先完全掌握用户需求,以期能将紧随的系统开发过程中哪些功能应该落实、采取何种规格以及设定哪些限制优先加以定位。系统工程师最终将据此完成设计方案,在此基础上对随后的程序开发