软件工程概论(一)什么是软件工程

I 、What is software?!!

Method, tool, procedure and paradigm
软件是一系列按照特定顺序组织的计算机数据和指令的集合。

II 、What is software engineering?!!

Software engineering

软件工程包含什么
1、Method(技术,产生结果的形式化过程) 某一个环节里获取环节结果的方法
2、Tool(工具,用更好的方式完成某件事情的设备或自动化系统) 在某一个环节中可以更好的完成环节的工具,帮助提高生产效率或提高产品质量
3、Procedure(过程,什么情况下用什么工具做什么,以保证生产产品) 技术与工具结合完成一个个过程。
4、Paradigm(范式,产品搭建的方法论或者哲学思想) 过程与过程之间的关系,在方法方面定义一个产品搭建的模式。

Solving problems

1、大问题变为小问题及他们间的联系
2、小的模块合并成大的结构

Where does the software engineer fit in?

1、软件工程师使用工具、技术、过程和范型提高软件产品质量。 目标就是使用高效、高生产率的方法形成相关问题的有效解决方案。

2、软件工程,更多的是关注其它领域的东西。每当涉及新的软件的开发,都要先和其它领域的人打交道,了解需求。计算机科学研究对象是计算机,软件工程研究对象是其它领域,计算机或许是工具之一,是解决方案的一部分。

III 、What is good software?!!

The quality of the product!

McCall’s quality model
将用户的外部试图与软件开发人员的内部视图联系起来
外部质量因素:可靠性、正确性等
产品质量标准:先看产品是否完成它所要求的功能,再从用户角度看是否满足用户的需求

The quality of the process!

CMM, ISO 9000, SPICE
通过改进软件开发过程,可以提高最终产品质量。
对过程进行建模的一个优点是我们能够研究它并寻找方法对它加以改进,例如我们可以提出下面问题:
1、在什么时间、什么地点,我们可能发现某种特定类型的故障
2、如何能够在开发过程的更早期阶段发现故障
3、如何构建容错机制以便把故障演变为失效的可能性降到最低 是否可以有一些其它的做法能够在确保质量的前提下使我们的过程更加高效

Quality in the context of the business environment!

ROI(return on investment)

IV 、Who does software engineering?!!

Customer, user, and developer

Customer: the company, organization, or person who pays for the software system
为软件开发付钱的人
Developer: the company, organization, or person who is building the software system
编程人员
User: the person or people who will actually use the system
持续使用软件的人

随着软件工程的发展,三者之间的界限越来越模糊了。客户介入研发,不断变更需求。 软件外包,开发人员也可以作为客户。

V 、A system approach

What is a system?

每一个系统中有哪些活动,输入是什么,输出是什么,定义一个边界。系统中有哪些活动,活动涉及的实体有哪些。

The elements of a system

activities and objects
活动是发生在系统中的某些事情,实体是活动中涉及的要素 relationships and the system boundary
关系定义了实体与活动之间的交互,系统边界定义了输入的来源以及输出什么 如何从系统和工程的角度

系统的角度确定了一个软件的功能与边界,工程的角度确定了一个软件是怎么来的。

VI 、An engineering approach

Building a system
确定需求,想要什么样的产品(最重要的部分)
提出总体设计
提出详细设计
构建每一个部分
单元测试,测试每一个小的功能模块
集成测试,将单元组成到一起,测试功能
系统交付,将产品部署到用户处
用户进行维护(发生时间最长的)

VII 、Members of the development team

The roles of the development team

Requirement analysts 需求分析人员
Designers 设计人员,软件架构师。
从需求分析中抽取出具体实现,设计出满足用户需求的架构。是经验与实际规则相结合的一部分,为最困难的一部分。
Programmers 程序开发者。
Testers 测试人员。
测开,开发出一些测试工具再去测试软件。
Trainers
训练用户如何使用系统
Maintenance team 维护人员
待命防止系统崩溃
Librarians 文档管理人员。
使开发更加规范,说明当时是怎么想的。
Configuration management team 配置管理人员。
不变的固化为程序,可变的抽象为配置项。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值