软件工程 |
https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1 |
作业要求 |
https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10618 |
作业目标 |
做一个学习工程中的问题清单 |
作业正文 |
如下所示 |
其他参考文献 |
www.baidu.com |
1.软件编程的过程分为哪些?
软件开发流程分为: 需求确认——概要设计——详细设计——编码——单元测试——集成测试——系统测试——维护
软件开发是一项包括需求捕捉、需求分析、设计、实现和测试的系统工程。软件一般是用某种程序e799bee5baa6e79fa5e98193e59b9ee7ad9431333431363537设计语言来实现的。通常采用软件开发工具可以进行开发。软件分为系统软件和应用软件,并不只是包括可以在计算机上运行的程序,与这些程序相关的文件一般也被认为是软件的一部分。
软件设计思路和方法的一般过程,包括设计软件的功能和实现的算法和方法、软件的总体结构设计和模块设计、编程和调试、程序联调和测试以及编写、提交程序。
2.一个高质量的设计包括哪几个部分?
包括了模块化设计,面向抽象编程和错误与异常处理。
3.什么叫模块化设计?
模块化设计:在对产品进行市场预测、功能分析的基础上,划分并设计出一系列通用的功能模块;根据用户的要求,对这些模块进行选择和组合,就可以构成不同功能、或功能相同但性能不同、规格不同的产品。这种设计方法称为模块化设计。
4.在程序设计中尽可能的程序代码进行优化为什么不好?我觉得不应该有所改进吗和优化吗?
因为优化是一种时间与空间及代码可读性的权衡,可能带有一定的负作用,比如增加维护成本等。优化的目的是在现有程序不能满足应用的要求情况下,更加充分合理的利用现有资源去改进程序的运行效率。
5.模块化设计的目的是什么?
提高代码重复利用率 便于调试排错 易于扩展
6.良好编码的原则有哪些?
在开始编码之前建立单元测试
选择好的程序设计风格
确保注释与代码完全一致
7.软件单元测试的主要内容是什么?
8.我们所学习的几种软件开发模型分别适用于哪些范围?
瀑布模型也称软件生存周期模型。
优点:
(1)它在软件工程中占有重要地位,它提供了软件开发的基本框架,这比依靠“个人技艺”开发软件好得多。
(2)它有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究与使用,从而提高了大型软件项目开发的质量和效率。
缺点:
(1)阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;
(2)由于开发模型是线性的用户只有等到整个过程的末期才能见到开发成果,从而卡增加了开发的风险;
(3)早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重后果。
适用范围
(1)在开发时间内需求没有或很少变化;
(2)分析设计人员应对应用领域很熟悉;
(3)低风险项目(对目标、环境很熟悉);
(4)用户使用环境很稳定;用户除提出需求以外,很少参与开发工作。
快速原型模型
优点:
(1)可以得到比较良好的需求定义,容易适应需求的变化;
(2)有利于开发与培训的同步;
(3)开发费用低、开发周期短且对用户更友好。
缺点:
(1)客户与开发者对原型理解不同;
(2) 准确的原型设计比较困难;
(3) 不利于开发人员的创新。
使用范围:
(1)对所开发的领域比较熟悉而且有快速的原型开发工具;
(2)项目招投标时,可以以原型模型作为软件的开发模型;
(3)进行产品移植或升级时,或对已有产品原型进行客户化工作时,原型模型是非常适合的。
增量模型
优点:
(1)采用增量模型的优点是人员分配灵活,刚开始不用投入大量人力资源;(2)如果核心产品很受欢迎,则可增加人力实现下一个增量;
(3)可先发布部分功能给客户,对客户起到镇静剂的作用。
缺点:
(1)并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构;
(2)增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。
使用范围:
(1)进行已有产品升级或新版本开发,增量模型是非常适合的;
(2)对完成期限严格要求的产品,可以使用增量模型;
(3)对所开发的领域比较熟悉而且已有原型系统,增量模型也是非常适合的。
螺旋模型
优点:
(1)设计上的灵活性,可以在项目的各个阶段进行变更;
(2)以小的分段来构建大型系统,使成本计算变得简单容易;
(3)客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性;
(4) 随着项目推进,客户始终掌握项目的最新信息 , 从而他或她能够和管理层有效地交互。
缺点:
(1)采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失;
(2)过多的迭代次数会增加开发成本,延迟提交时间。
使用范围:螺旋模型只适合于大规模的软件项目。
9.软件开发过程的步骤包括哪些?
首先制定项目计划,最初计划是里程碑性质的。
需求开发阶段
系统设计阶段
代码开发和单元测试阶段
测试工作
文档工作
10.敏捷开发是包括迭代开发的吗?我看到它包括快速交付高质量软件的迭代
敏捷开发与迭代式开发是整体与局部的关系。打个比方,前者就像地球,而后者像欧亚大陆。
敏捷开发是一个总体概念,而迭代式开发只是几乎所有敏捷开发所采用的一个主要的基础实践。敏捷开发除迭代式开发外,还包含了其他许多管理与工程技术实践,如演进式架构设计、敏捷建模、重构、自动回归测试(ART)等等。
迭代式开发起源于1970-80年代的迭代、递增、演进式方法(IID),而敏捷开发是在迭代式开发的基础上起源于1990年代中后期。11.交付的价值?什么是交付的价值?
向目标市场交付产品和服务的价值
12.怎样去更好的决定软件项目所需要的人数?
一般一个项目会由一名产品经理、UI设计师、前端、后端、测试来组成;如果是做APP的话,就需要iOS、Android工程师。参与的人数根据项目具体的大小来决定。
13.功能点能估算面向对象的软件吗?
功能点方法度量的是软件的规模,它是主要从逻辑设计的角度出发对提供给客户 的功能进行量化的方法。功能点不能用于估算面向对象的软件。
14.软件开发过程中为什么要进行软件的配置管理?
软件配置管理(SoftwareConfigurationManagement,SCM)是一种标识、组织和控制修百改的技术。软件配度置管理应用于整个软件工程过程。在软件建立时变更是不可避免的,而变更加剧了项目中软件开发者之间的混乱。SCM活动问的目标就是为了标识变更、控制答变更、确保变更正确实现并向其他有关人员版报告变更。从某种角度讲,SCM是一种标识、组织和控制修改的技术,目的权是使错误降为最小并最有效地提高生产效率。
15.如果判断需求获取的好坏?
需求获取这一步主要包括三个方面的内容:渠道、方式、记录。从这些方面来判断。