||||||||||||||
|:--|:--|
|项目|内容|
|软件工程|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的托管,课下也查看了老师提供的视频,完成了相应的操作。