2020软件工程作业00---问题清单

软件工程 https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1
作业要求 https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10618
作业目标 要求提交问题清单
作业正文 详见下文
参考文献 百度

前言

以下问题是我在学习软件工程这门课程中,自己遇到的一些不懂的问题,在此把它们列举出来。在以后的学习中会对问题逐渐进行回答,
但回答不一定十分正确和完美。(回答仅代表个人观点)

第一次课

Q1.一款软件产品从开发到诞生,如何较好的面临市场的挑战?
Q2.软件具有可变性和复杂性,如何有效的减少软件的故障?
Q3.一款优秀的软件产品的问世,并然少不了背后团队之间的密切合作,那么如何有效的提高团队之间的开发效率?

A1.高质量的软件产品,明白用户需要什么,高效强大的团队等。
A2.首先要保证软件的质量,对故障进行定义,因为故障可能由于不同的种种原因造成,有针对的应对故障。
A3.(1)分工合理,责任明确。(2)制定高效的沟通机制。(3)定时检查,及时调整。(4)发现团队瓶颈等。

第二次课

Q1.软件开发和盖楼之间有什么联系?
Q2.Python是一种面向对象的动态类型语言,随着时代的发展,近两年火了起来,你认为导致Python比较火热的原因是什么,它有什么优点?

A1.建楼的过程和软件开发有类似,盖楼之前会认真分析问题,初步设计,模型评估与设计,搭建框架,建造,测试与验收。
A2.python优点:简单易学上手快,面向对象,具有可移植性,强大的内库,功能齐全等。

第三次课

Q1..网站的代码如何优化?一般需要优化哪些地方?
Q2.如何有效的提高软件的寿命?
Q3.在结对编程中,两人可能会因为观点不同产生纠纷,不利于团体协作,如何减少这些纠纷的发生?

A1.精简页面代码,减少或者删除注释,采用div+css的布局,网站性能方面等
A2.持续关注用户的需求并逐渐完善,逐渐提高软件产品质量,做好运行维护。
A3.加强沟通,相互学习,相互督促,通过实践来检验真理。

第四次课

Q1.测试用例技术中黑盒测试和白盒测试有哪些区别?
Q2.等价类划分法和边界值分析法之间的异同?
Q3.如何编写优秀的单元测试?
Q4.单元测试是每个项目必做的吗?有没有不做单元测试但也能保证项目质量的可能?

A1.测试方式不同:黑盒测试是通过测试来检测每个功能是否都能正常使用。白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。
  测试目的不同:黑盒测试是把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,
只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。
白盒测试是通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试。在程序不同地方设立检查点,检查程序的状态,以确定实际运行状态
与预期状态是否一致。
A2.定义不同,一个属于确认有有效区间,一个属于确认边界,联系就是等价类划分和边界值要一起考虑,边界值分析法属于等价类划分法的补充,
任何等价区间都有边界,有边界就有等价区间。
A3.编写可靠的测试,每个单元测试只测试一个关注点,编写刻度的测试,编写可维护的测试等。
A4.单元测试是任何项目都需要的,不论项目大小。单元测试开始难,持续做的话会越来越容易。单元测试很容易定位Bug。单元测试很费时间。不过,
后续改Bug更费时间。

第五次课

Q1.不同级量软件过程适合什么情形?
Q2.迭代式开发适用于什么时候?
Q3.瀑布模型诞生于1970年,在技术发展的今天,我们是否还在用这一模型?

A1.重量级的软件过程适合需求相对稳定、项目规模较大、开发周期较长、质量攸关、产品/项目应用较广的情形。轻量级过程适合需求变化快、项目规模小、
开发周期短、项目干系人少的项目。
A2.产品开发周期短,要及时获得用户反馈时。
A3.可能还在使用,但它已成为过去式。

第六次课

Q1.敏捷开发与瀑布开发相比有什么优势?
Q2.敏捷开发流程最容易在哪个环节出问题?
q3.微软从1975年成立至今,用户遍布全球,它成功的经验有哪些?

A1.敏捷更灵活和稳定,能更快的高质量交付,更高的开发团队绩效,更严格的项目管控,成本更低等。
A2.需求环节
A3.计划规划,工具的使用,重视人才,质量监控(减少bug出现的机会)等。

第七次课

Q1.开发团队组织模式有民主式,主程序员式和矩阵式,在大项目开发中哪种比较好?
Q2.软件项目计划的主要内容?
Q3.为什么要进行项目估算?

A1.矩阵式结构,
A2.开发问题描述,定义顶层设计,定义工作分解结构,建立初始时间表。
A3..软件系统的规模、功能越来越复杂,难于理解,必须通过某种方法对软件的规模、工期、成本进行度量、预计,从而能更好的控制软件开发活动。

第八次课

Q1.Scrum 的目的和限制是什么?
Q2.软件配置管理的过程分为哪几个方面?

A1.目的:适应变化,快速迭代
限制:因为发布周期缩短,团队没有能力保证作出的每一个决定都正确,很多开销都必须花在试错上快速发布实际上导致 Scrum 团队的抗风险能力弱
于瀑布模型团队,个人因素会对团队的进度造成影响,不利于短期频繁发布。
A2. 四个方面:配置识别。配置管控。配置审计。配置报告。

第九次课

Q1.一个优秀的软件需求工程师应该有哪些品质?
Q2.优秀软件需求应具有的特性有哪些?
Q3..软件需求应从哪些来源中获取?

A1.良好的编码能力,自觉的规范意识和团队精神,善于学习的能力,认真、严谨、负责的态度,慎密的思维能力,良好的沟通能力等。
A2.完整性、正确性、可行性、必要性、划分优先级、无二义性、可验证性。
A3.项目干系人处获取,例如项目的组织者、最终用户、承担者、开发者、系统管理和维护者、技术支持者等。业务来源获取等。

第十次课

Q1.用例建模有哪些基本过程?
Q2.UML是一种统一建模语言,UML图分为哪几种?
Q3.为什么要用用例图,用例图的作用是什么?

A1.(1)识别并描述参与者。(2)识别用例,并给出简要描述.(3)识别参与者与角色之间的通讯关联。(4)给出每一个用例的详细描述。
(5)细化用例模型。
A2.UML图分为用例视图、设计视图、进程视图、实现视图和拓扑视图,又可以静动分为静态视图和动态视图。
A3.用例图是描述用例、参与者以及它们之间关系的图。它是从用户的角度来描述对信息系统的需求,分析产品的功能和行为。方便我们解决问题。

第十一次课

Q1.面向对象分析方法有哪些过程?
Q2.面向对象设计有哪些原则?
Q3.说明类之间的依赖关系与关联关系的区别。

A1.定义use case;发现对象; 定义属性与操作;建立对象之间的关系;划分包;建立顺序图,状态机图等。
A2.开闭原则,依赖倒置原则。组合/聚合复用原则。接口分割原则。单一职责原则。里氏替换原则。迪米特原则。
A3.依赖描述的是类之间的非结构型关系,关联描述的是类之间结构型的关系。

第十三四次课

Q1.顺序图用来解决什么样的问题?
Q2.顺序图的组成元素有哪些?
Q3.状态建模的步骤有哪些?

A1.通过此图可以清晰地理解微信支付的业务逻辑.一般这样的图用在原型设计或概念阐述阶段.用来使大家理解项目或业务的核心逻辑.达成共识.
A2.对象,角色,生命线,控制焦点,消息,自关联消息,组合片段。
A3.识别状态集合。识别事件和变迁条件。合理性,完整性的检查和逻辑分析。终点的可达性。悬挂状态。循环分析。路径分析。

第十五六次课

Q1.根据建模的侧重点的不同,可以将软件体系结构的模型分为哪几种?
Q2.三层C/S结构有哪些优点?
Q3.C/S和B/S 的优势劣势点比较。

A1.结构模型、框架模型、动态模型、过程模型和功能模型。
A2.具有灵活的硬件系统构成, 提高程序的可维护性,利于变更和维护应用技术规范,进行严密的安全管理。
A3.C/S优势:应用服务器运行数据负荷较轻。数据的储存管理功能较为透明。C/S架构的劣势是高昂的维护成本且投资大。B/S优势:维护和升级方式简单。
成本低,选择更多。劣势是应用服务器运行数据负荷较重。

posted @ 2020-04-11 16:16  BrilliantMe  阅读(192)  评论(0编辑  收藏  举报