软件需求分析与设计——第一课(软件工程概述)

软件的定义、特点及分类
一、定义:
1、软件的组成
软件 = 程序 + 数据 + 文档
2、软件是什
软件是能够达到预期目标需求的可执行的计算机指令
软件能够对数据进行处理操作,软件是一个逻辑实体,它可以不受物理层面的约束
二、特点
1、灵活性、不可见性、抽象性
因为软件一个逻辑的实体,它不受物理层面的约束,因此软件具有灵活性,同时也具有不可见性
2、复杂性
作为人类思想的延申,软件继承了人类思想的特性--复杂性,这是软件的固有属性,本质特性
3、可变性
软件是为人服务的,所有根据客户及其他人的需求或是在其他种种条件因素下需要在每一个阶段做出改进与延申,增加修改或删除功能
软件危机产生的原因和可能的解决方案
一、产生的原因
软件系统的规模愈来愈大,系统的复杂性也在不断增加,人们难以掌握软件开发过程和开发方法
根本原因:人们对软件产品的认识不足以及对软件开发的内在规律的理解偏差
二、解决方案
1、对软件和软件开发的正确认识
2、推广和探索开发软件的成功技术和方法
3、开发和使用软件工具

软件生命周期:
1.可行性分析阶段
对项目的可行性、风险性、投资回报进行分析,制定后续的实施计划
2.需求分析阶段
由系统分析人员对软件的功能需求、性能需求,并制定开发文档以及初步的用户使用说明
3.设计阶段
系统设计人员与开发人员功能协作,在基于对软件需求的充分理解下设计出多个方案,在最后比较出一个最有选择
4.编码实现阶段
编写代码,完成应用程序的代码编写,并且要完成用户使用手册等面向用户的使用说明
5.测试阶段
对完成的软件在交付前进行全方位的测试,根据测试用例说明对软件进行差错,并对检测出的bug进行沟通修复
6.维护阶段
交付使用后,需要对软件进行维护,在根据用户需求对软件进行功能的改进,删除或延申业务

Java趣味小知识:
使用Java使用递归打印九九乘法表
public static void main(String[] args) {
// 九九乘法表
multiply(9);
}

/**
* 打印结果
* @param n
*/
public static void printLine(int n) {
for (int i = 1; i <= n; i++) {
System.out.print(i + "*" + n + "=" + i * n + "\t");
}
System.out.println();
}
// 原问题: 打印出九九乘法表
public static void multiply(int n){
   // n = 0结束递归
if (n == 0){
return;
}
  // 递归打印每一行的结果
  // 如: 1*1=1
  // 2*1=2 2*2=4 ....
multiply(n-1);
printLine(n);
}
posted @ 2022-09-13 21:37  咦咦咦yi  阅读(252)  评论(0)    收藏  举报