zoukankan      html  css  js  c++  java
  • P1_C1-3:系统分析与设计概要

    SE(软件工程)


    软件工程的概念在导论这门课介绍的比较清楚。这个地方,我们回想这几个概念,有个自己的理解就好:

    • 理解软件工程
    • 为什么学软工?
    • 软工的知识体系
    • 若干重要概念
    • 软工的演变与趋势

    OOAD


    阅读书上第1章

    几个课外的概念

    • software crisis:
      • is a term used in the early days of computing science for the difficulty of writing useful and efficient computer programs in the required time
    • Constructive Cost Model(COCOMO):
      • an algorithmic software cost estimation model developed by Barry W. Boehm. The model uses a basic regression formula with parameters that are derived from historical project data and current as well as future project characteristics.
    • 必须要了解software engineering body of knowledge中本课涉及的KA(knowledge areas)
      • software requirements, software design, software construction,software development process, software engineering models and methods
    • 必须了解三种开发生命周期的特点
      • Waterfall development: 试图在编程之前详细定义所有或大部分需求
      • 优势1: 定义了软件开发基本流程,创意阶段描述问题、市场、关键技术等,分析阶段调查问题与需求
      • 劣势1: 人力资源问题,知识技能需求不同,人员数量要求不同
      • 劣势2: 容错问题能力,再后期发现需求问题,工作量难接受
      • 劣势3: 前后依赖问题,前面需求模糊,后面工作无法开展
    • Iterative and incremental developmen:允许在不完整的工作、不完美的知识储备下开始
      • 优势1: 逐步趋向稳定
      • 优势2: 有效管理需求变化
      • 优势3: 持续集成
      • 优势4: 尽早接触整个系统
      • 优势5: 在线风险评估
    • Agile development:
    • 软件企业的评价指标Capabilty Maturity Model Integration(CMMI)中的5个等级
      • Initial: 无序,自发生产模式
      • Managed: 建立了基本的项目管理,制定了必要的过程纪律
      • Defined:将软件管理和工程过程文档化、标准化
      • Quantitatively Managed: 定量理解与控制, 定量预测性能
      • Optimizing:工程量化反馈,不断改进

    书本基本概念

    • Analysis:
      • 对问题和需求的调查, 在问题域中发现关键的概念类, “概念”
    • Design
      • 满足需求的概念上的一个解决方案,将概念类映射到软件类,在问题域外发现实现所需要的类设计框架等, “协作”

    UML, 一种可视化语言

    • 三种应用UML的方式:
      • 草图:普通的使用方式, agile modeling 强调的
      • 蓝图:逆向工程-根据源码生成UML类图、包图, 前向工程-根据UML图生成源码
      • 编程语言: 自动生成可执行代码
    • 三种应用UML的perspective
      • conceptual perspective:描述现实世界
      • Specification perspective(少用): 描述软件中的实现,但是不说明技术
      • implementation perspective: 特定技术(如C++)中的软件实现
    • 不同perspective 中的类的概念
      • conceptual class: 真实世界中的概念
      • software class:过程或方法中,表示软件实现的类
      • implementation class: 特定语言中的类

    Iterative, evolutionary, and agile


    阅读书上第2章

    Unified Process

    • UP
      • the process is scalable, effective, improves productivity, Iterative and incremental approach 允许从不完整的工作和不完备的知识开始
    • UP workflow:定义了一系列要执行的活动:
      • Business Modeling:定义问题等,建立用力模型
      • Requirements Analysis: 定义领域模型等
      • Design: 建立设计模型,设计用例在物理上的实现
      • Implementation: 编码
      • Test and Integration
    • Use Case Driven
      • 意味着团队从编程和测试中收集发现的需求,应用use case
    • Architecture Centric
      • 软件系统的整体结构、结构元素、结构元素之间的协作

    Iterative and Evolutionary

    • Agile Methods and Attitude
      • 优先级最高的是,通过早期和持续交付有价值的软件来满足客户
      • 欢迎变更需求,即使在开发后期
      • 等等等等
    • Agile Modeling
      • 采用敏捷方法不是意味着不建模
      • 建模的目的主要是为了理解和沟通,不是为了交文档
      • 不要对所有软件都建模
      • 所有模型都可能不准确,最终代码和设计会与模型有差异
    • Worker参与系统的开发,Actor是使用系统的人,
    • stakeholder包括了workers和actors
    • Artifacts(制品),包括用例模型、领域模型、源码等等
    • Activities 表示的是工作流中要完成的任务,包括:迭代计划、找到用例和actors、执行迭代测试





  • 相关阅读:
    ZeptoLab Code Rush 2015
    UVa 10048 Audiophobia【Floyd】
    POJ 1847 Tram【Floyd】
    UVa 247 Calling Circles【传递闭包】
    UVa 1395 Slim Span【最小生成树】
    HDU 4006 The kth great number【优先队列】
    UVa 674 Coin Change【记忆化搜索】
    UVa 10285 Longest Run on a Snowboard【记忆化搜索】
    【NOIP2016提高A组模拟9.28】求导
    【NOIP2012模拟10.9】电费结算
  • 原文地址:https://www.cnblogs.com/zengyh-1900/p/5514779.html
Copyright © 2011-2022 走看看