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归档)既可以包 ...
随机推荐
- mysql之浅谈主外键
主键(PRIMARY KEY) 主键在一个数据表中只能有唯一的一个,约束当前字段的值不能重复,且非空保证数据的完整性,也可以当做当前数据表的标识符用来查询(当做索引,唯一性索引的一种) 创建带主键的表 ...
- 【集群实战】NFS网络文件共享服务2-mount挂载(参数,优化)
1. NFS客户端挂载深入 1.1 NFS客户端挂载参数说明 在NFS服务端,可以通过cat /var/lib/nfs/etab查看NFS服务器端配置参数的细节. 在NFS客户端,可以通过cat /p ...
- 【Linux网络基础】上网原理流程
1. 局域网用户上网原理 上网过程说明: 确保物理设备和线路架构准备完毕,并且线路通讯状态良好 终端设备需要获取或配置上局域网(私有地址)地址,作为局域网网络标识 当终端设备想上网时,首先确认访问的地 ...
- Intellij-IDEA-maven+springMVC+mybatis整合
2019独角兽企业重金招聘Python工程师标准>>> GitHub地址 https://github.com/Ethel731/WebProjectDemo 前言 之前都是在已经建 ...
- Python开源框架总结
Django: Python Web应用开发框架 Django 应该是最出名的Python框架,GAE甚至Erlang都有框架受它影响.Django是走大而全的方向,它最出名的是其全自动化的管理后台: ...
- MySQL重新初始化安装数据库
删除./mysql/var下的所有数据后,怎么重新安装初始数据库? (1)进入./mysql/bin目录下,执行脚本./mysql_install_db: (2)执行完(1)后,此时会在./mysq ...
- USACO Training Section 1.1 Your Ride Is Here
题目描述 众所周知,在每一个彗星后都有一只UFO.这些UFO时常来收集地球上的忠诚支持者.不幸的是,他们的飞碟每次出行都只能带上一组支持者.因此,他们要用一种聪明的方案让这些小组提前知道谁会被彗星带走 ...
- Android | 带你零代码实现安卓扫码功能
目录 小序 背景介绍 前期准备 开始搬运 结语 小序 这是一篇纯新手教学,本人之前没有任何安卓开发经验(尴尬),本文也不涉及任何代码就可以使用一个扫码demo,华为scankit真是新手的福音-- ...
- tp5中提示错误A non well formed numeric value encountered
问题因为自动完成时间导致的 原来我的数据库是这样的 修改成下面这样就好了
- 【学习笔记】Shell-1 变量:命名规范、变量赋值/取值/取消、局部变量/全局变量、预设环境变量
1.Shell变量 从变量的实质上来说,变量名是指向一片用于存储数据的内存空间. Shell变量是一种弱类型的变量,即声明变量时不需要指定其变量类型,也不需求遵循“先声明再使用”的规定,想用即可用. ...