201771010128王玉兰实验一软件工程准备——<阅读《构建之法——现代软件工程》初步了解软件工程>
||||||||||||||
|:--|:--|
|项目|内容|
|软件工程|https://www.cnblogs.com/nwnu-daizh/|
|作业要求在博客里|https://www.cnblogs.com/nwnu-daizh/p/12369881.html|
|作业学习目标|通过学习《构建之法——现代软件工程》初步了解软件工程的相关知识|
markdown编辑器简要教程
对于软件我们已经再熟悉不过了,日常生活中大家都使用软件,最简单的就是手机里装了许多软件,我们每天使用手机就是使用软件,软件是为满足人们某种需求,被人开发出来,被人应用的集合体。从专业的角度来讲,软件工程=程序+软件工程 ,而程序=数据结构+算法。对于程序我们已经接触了C语言,Java面向对象以及pathy等,数据结构的课程也已经学习完了,那么软件工程是什么呢?
在乐学软件工程中狄国强老师说了一句
“软件如艺术,工程如人生,学软件工程,修人生艺术” 因此我对我们本学期要学习的软件工程这门课有了极大的好奇心。在看了娄老师的提问方式的文章之后,其中有一句话触动了我
“提问的目的绝不是为了轻而易举地获得答案,而是为了逐步培养自己的思考能力,去形成自己分析问题、解决问题的思路。” 任何事情,若是我能一直做到提出问题提,然后去想方设法解决问题,那么结果无疑是有最大收获的。
以下是我通过阅读邹欣老师的《软件之法——现代软件工程》后提出的三个问题:
在第一章中有这样一个小情节:阿超用一个给儿子打印几道不同的题目,老师知道后需求上面多加几个要求题目,接着是教导主任提议把程序放到学校官网并且保证界面是英文,从中我们可以看到客户的需求从一个简单的程序扩展到能满足各种功能的应用软件,扩展到一个能保证服务质量的服务软件。
问题一:在软件工程的整个生命周期中,软件需求分析起什么作用?软件团队是满足用户的各种需求最终保证软件的完善?
在前面的数据库课程设计中老师简单地介绍了需求分析,一个好的软件的需求分析是要在前期花费大量地时间和经历去完成,当时也提到了软件工程,因此我想了解软件团队把软件工程需求分析是如何做到更多用户地满意,它所付出地代价又是如何,在阅读了第八章地内容后得到相应地解析:主要有如下几个步骤:
1.获取和引导需求
软件团队要找到软件利益者(用户),了解和挖掘他们对软件地需求,引导他们表达处真实地需求;需求还可能来自软件企业本身,软件企业=软件+商业模式,企业所采用地商业模式是会对软件提出需求;需求还可以来自技术团队本身,团队在考虑软件地代码、框架,所依赖平台地长期演化会提出对技术地需求,包括代码的迁移、框架的烟花、平台的变化、或者引入新的技术、编程语言等。
2.分析和定义需求
这是指对各个方面获取的需求进行规整,定义需求的内涵,从各个角度将需求量化:需求实现的最后期限,实现需求大致需要的时间和资源成本,各个不同的需求的优先级、需求带来的收益等等。
3.验证需求
软件团队要跟利益相关者沟通,通过分析报告、技术原型、用户调查或演示等先后i向他们验证软件团队对耶这些需求的认知。
4.软件铲平的生命周期中管理需求
在软件的生命周期中,需求在发生变化,技术在发展,团队成员的能力也在提高。原来认为重要的事情可能不再重要,有些功能原来技术上很难实现,现在出现了捷径,一些相关的法则会发生变化,外部的合作伙伴突然发生变化,这些都要求我们不断对需求进行重新审核并作出相应的更新。
问题二:软件工程的特点是什么?这些特点有哪些表现?
- 软件的特点:知识性、社会性、复杂性、不可见性、硬件性、规模越来越大。
- 知识性的表现:创意为王、知识产权、无磨损、开发投入大辅之零成本、出阿波速度快、容易被侵权盗版。
- 社会性的表现:由人开发 、为人所用 、人的水星带入软件 、不同人的思想行为影响软件。
- 软件的复杂性的表现:需求越来越复杂、解决方案越来越复杂 、工具越来越复杂、 质量控制越来越难。
- 软件的不可见性:没有运行时看不见摸不着,运行时内部处理不可见,描述起来:不方便 、不形象 不直观。
- 软件的硬件性的表现:软件的运行与硬件的关系非常密切、与硬件环境的相关性非常高、不同硬件中的软件许多都互不相通。
- 软件规模越来越大的表现:使用的人群越来越多、软件需求越来越多样化、应用范围越来越大。
问题三:软件工程研发中的具体工作需要做哪些?
1.制定计划(理解问题,系统的目标和范围,可行行报告)
- 确定要开发软件系统的总目标
- 给出功能、性能、可靠性以及接口等方面的要求
- 完成该软件任务的可行性研究(包括估计资源,成本,效应,开发进度)
2.需求分析和定义(用户的要求,需求规格说明书)
- 对待开发软件提出的需求进行分析并给出详细的定义
- 编写软件需求说明书(设计人员的阶段,用户手册就要这这个阶段着手了,最好用图,标做)
3.软件设计(建立软件结构,各个模块的功能,概要设计和详细设计,两个主要文档)
- 总体设计(概要设计) :这个阶段的主要任务是确定系统的架构,即给出软件的体系结构
- 详细设计(模块设计) :这个阶段的主要任务是进一步确定如何实现这个系统;
4.编码和单元测试(编码,文档,数据)这个阶段的任务就是实现已做的设计,即写出正确的,容易理解和维护的程序代码。
5.集成和系统测试( 发现和排除错误)这个阶段就是通过各种类型的测试来提高软件质量,使软件大道预定的要求。分两种:集成测试,系统测试。
6.软件维护(改进软件产品)软件维护发生在软件已经正式交付使用之后,维护的主要目标是使系统持久地满足用户的需要。
小结:本次博客通过学习使用markdown编辑器的简要知识,运用到本次博客中,相关操作通过资料查询后学会了一些方法,我发现使用markdown可以设计自己喜欢的模板,同时实验是通过阅读邹欣老师的博客以及她的《构建之法——现代软件工程》提出了三个问题,这种边提问边思考的方式我感觉对我以后的学习有了一些感触,首次接触软件工程这一门学科,老师提供了许多学习的方法,比如乐学软件工程教学以及邹欣老师的博客等等,还有本次要完成github的托管,课下也查看了老师提供的视频,完成了相应的操作。
201771010128王玉兰实验一软件工程准备——<阅读《构建之法——现代软件工程》初步了解软件工程>的更多相关文章
- 2nd 阅读构建之法有感
阅读构建之法有感 利用这一周的时间,我大致了解构建之法一书,这本书带我走进了一个全新的领域.它让我以一种新的视角去了解软件产业的发展和工作,领略软件工程的独特魅力,更给出了简单易懂的方式去理解何为软件 ...
- SE_Work1_阅读构建之法&项目管理实践
项目 内容 课程:北航-2020-春-软件工程 博客园班级博客 要求:阅读<构建之法>并回答问题 个人博客作业 我在这个课程的目标是 提升团队管理及合作能力,开发一项满意的工程项目 这个作 ...
- 【软件工程】《构建之法》 & Git+ & CI/CD
<构建之法> & Git+ & CI/CD 个人阅读作业#2 项目 内容 本作业所属课程 2020春季软件工程(罗杰 任健) 本作业要求 个人阅读作业#2 我的课程目标 具 ...
- 201771010128王玉兰《面向对象程序设计(Java)第十四周学习总结》
第一部分:理论知识总结: (1)Swing 设计模式(Design pattern)是设计者一种流行的 思考设计问题的方法,是一套被反复使用,多数人 知晓的,经过分类编目的,代码设计经验的总结. 使用 ...
- 201771010128王玉兰《面向对象程序设计(Java)》第八周学习总结
第一部分:理论知识部分总结 (1)接口:接口不是类,而是对类胡一组需求描述,由常量肯一组抽象方法组成. a:接口中不包括变量和有具体实现的方法 b:只要类实现了接口,则该类要遵从接口描述的统 一格式进 ...
- 201771010128王玉兰《面向对象程序设计(Java)》课程学习总结
1.实验目的与要求 (1) 综合掌握java基本程序结构: (2) 综合掌握java面向对象程序设计特点: (3) 综合掌握java GUI 程序设计结构: (4) 综合掌握java多线程编程模型: ...
- 201771010128王玉兰《面向对象与程序设计(Java)》第十七周学习总结
第一部分:理论基础 线程的同步 多线程并发运行不确定性问题解决方案:引入线 程同步机制,使得另一线程要使用该方法,就只 能等待. 在Java中解决多线程同步问题的方法有两种: - Java SE 5. ...
- 201771010128王玉兰《面向对象程序设计(Java)》第十六周学习总结
第一部分:理论基础 1.线程的概念 进程:进程是程序的一次动态执行,它对应了从代码加 载.执行至执行完毕的一个完整过程. 多线程:多线程是进程执行过程中产生的多条执行线索. 线程:线程是比进程执行 ...
- 201771010128王玉兰《面向对象与程序设计(java)第十五周学习总结》
第一部分:理论知识 一:JAR文件 Java程序的打包:程序编译完成后,程序员 将.class文件压缩打包为.jar文件后,GUI界面 程序就可以直接双击图标运行. jar文件(Java归档)既可以包 ...
随机推荐
- Mac文件上传下载到服务器指定命令
下载文件夹 scp -r 远程登录服务器用户名@远程服务器ip地址:/下载文件夹的目录 『空格』 本地目录 下载文件 scp 远程登录服务器用户名@远程服务器ip地址:/下载文件的 ...
- 解决Idea配置文件不显示中文的问题
1.首先我们的IDEA文件编码一般都修改为utf-8(setting-->file encodings--->Global Encoding 和 Project Encoding 都设置为 ...
- Linux下必知必会文件和目录
转载于:https://blog.51cto.com/xiyuxingxia/2372712
- 批量将制定文件夹下的全部Excel文件导入微软SQL数据库
以下代码将c:\cs\文件夹下的全部Excle中数据导入到SQL数据库 declare @query vARCHAR(1000) declare @max1 int declare @count1 i ...
- C# 基础知识系列- 14 IO篇 文件的操作 (3)
本篇继续前两篇内容,跟大家介绍一下Path类以及FileSystemInfo这个类的主要方法和属性. 上文提到,在<C# 基础知识系列-IO篇>之文件相关的内容完结之后,会带领大家开发一个 ...
- php安装igbinary扩展(windows)
pecl.php.net 是php的扩展仓库,访问此网站后,搜索需要安装的扩展,截图如下: igbinary: http://pecl.php.net/package/redis github的网址: ...
- Android 自定义View—清爽小巧灵活的多节点进度条
前言 最近项目有一个节点进度条的小需求,完成后,想分享出来希望可以帮到有需要的同学. 真机效果图 自定义View完整代码 开箱即用~,注释已经炒鸡详细了 /** * @description: 节点进 ...
- U盘安装Proxmox VE(二)
转自我的个人博客<U盘安装Proxmox VE(二)> 上一篇<U盘安装Proxmox VE(一)>制作好启动盘后,插入U盘,设置bios从U盘启动,开始安装pve. 一.安装 ...
- vue element select多选回显
我们经常在使用 Element组件里面的 select多选 场景:添加账号的时候需要选择可见分公司(分公司为多选),添加成功之后可以编辑,需要回显添加时所提交的分公司 代码如下: 多选框: data( ...
- Flutter 系统是如何实现ExpansionPanelList的
老孟导读:Flutter组件有一个很大的特色,那就是很多复杂的组件都是通过一个一个小组件拼装而成的,今天就来说说系统的ExpansionPanelList是如何实现的. 在了解ExpansionPan ...