zoukankan      html  css  js  c++  java
  • SaaS Introductioncoursera

    Reference Book: <<Engineering long-lasting software>>

    http://saasbook.info

     

    Chapter One Engineering Software is Different from Engineering Hardware

    https://www.coursera.org/saas/lecture/preview

    1.1-1.2 - Introduction - Engineering Software is Different from Engineering Hardware

     

    Why so man SW disasters and no HW disaters?

    Ariane 5 rocket explosion

    Therac-25 lethal radiation overdose

    Mars Climate Orbiter disintegration

    FBI Virtual Case File project abandonment

     

    Independent Product vs Continuous Improvement

    Cose of field upgrade

    HW=∞

    HW designs must be finished before manufactured and shipped

    Bugs: Return HW (lose if many returns)

    SW=0

    Expect SW gets better over time

    Bugs: Wait for upgrade

    HW decays, SW long lasting

    Legacy SW vs Beautiful SW

    Legacy code: old SW that continues to meet customers' needs, but difficult to evolve due to design inelegance or antiquated technology

    60% SW maintenance costs adding new functionality to legacy SW

    17% for fixing bugs

    Beautiful code: meets customers' needs and easy to evolve

     

     

    1.3 Development Processes: Waterfall vs. Agile

     

    Waterfall: Big Design Up Front

    Requirements analysis and specification

    Architectural design

    Implementation and integration

    Verification

    Operation and maintenance

    Complete one phase before start next one

    Waterfall process works well for software with specs that won't change,

    But often when customer sees result, wants big changes

    But often after build first one, developers learn right way they should have built it

     

        " Plan to throw one [Implementation] away, you will, anyhow."----Fred Brooks, Jr.

        If a problem has no solution, it may not be a problem, but a fact, not to be solved, but to be coped with over time.    ----Shimon Peres

     

    Agile Manifesto 2001

     

        "We are uncovering better ways of developing SW by doing it and helping others do it. Through this work we have come to value

    • Individuals and interactions over processes & tools
    • Working software over comprehensive documentation
    • Customers collaboration over contract negotiation
    • Responding to change over following a plan

      That is, while there is a value in the items on the right, we value the items on the left more."

       

      Agile lifecycle

    • Embraces change as a fact of life: continuous improvement vs. phases
    • Developers continuously refine working but incomplete prototype until customers happy, with customer feedback on each iteration ( every 2 weeks)
    • Agile emphasize Test-Driven Development (TDD) to reduce mistakes, User Stories to reach agreement and validate customer requirements, Velocity to measure progress

    1.4 Assurance

    Verification: Did you build the thing right? Meet the specification?

    Validation: Did you build the right thing? Is this what the customer wants? Is the specification correct?

    Hardware focus generally verification

    Software focus generally validation

     

    Testing

     

    Exhaustive testing infeasible

    Divide and conquer: perform different tests at different phases of SW development

    • Upper level doesn't redo tests of lower level
    • System or acceptance test: integrated program meets its specifications
    • Integration test: interfaces between units have consistent assumptions, communicate correctly
    • Module or functional test: across individual units
    • Unit Test: Single method does what was expected

     

    More testing:

    Coverage

    Regression Testing

    Continuous Integration Testing

    Agile=> Test Driven Design: write tests before you write the code

     

    Limits of Testing: Program testing can be used to show the presence of bugs, but never to show their absence! ( Edsger W. Dijkstra )

     

    Formal Methods

    Start with formal specification & prove program behavior follows spec. Options:

        Human does proof

        Computer via automatic theorem proving

        Computer via model checking

        Computationally expensive, so use only if

    • Small, fixed function
    • Expensive to repair, very hard to test
    • E.g., network protocols, safety critical SW

     

    1.5 Productivity

    Moore's Law => 2X transistors/18 months

    • HW designs get bigger
    • Faster processers and bigger memories
    • SW designs get bigger
    • Must improve HW & SW productivity

     

    Techniques

    1. Clarity via conciseness
      1. Shorter and easier to read
      2. Raise the level of abstraction
    2. Synthesis
    3. Reuse
      1. Procedures and functions
      2. Standardized libraries
      3. Object oriented programming
      4. Design patterns
    4. Automation and Tools

     

    Don't Repeat Yourself (DRY)

    Don't copy and paste code

    1.6 Software as a Service

    SaaS: delivers SW and data as service over internet via thin program (e.g., browser)

     

    Reasons for SaaS:

    • No install worries about HW capability, OS
    • No worries about data loss
    • Easy for groups to interact with same data
    • If data is large or changed frequently, simpler to keep 1 copy at central site
    • 1 copy of SW, controlled HW environment => no compatibility hassles for developers
    • 1 copy => simplifies upgrade for developers and no user upgrade requests

     

    SaaS Loves Agile & Rail

    • Frequent upgrades matches Agile lifecycle
    • Many frameworks for Agile/SaaS
    • This course use Ruby on Rails
  • 相关阅读:
    在VMWare的虚拟机中设置共享文件夹(Linux-Ubuntu系统)
    得到cell视图
    推送
    常用框架
    截屏
    多线程枷锁
    java与IOS的交互
    缓存机制
    iOS数据库操作(使用FMDB)
    插入排序
  • 原文地址:https://www.cnblogs.com/feisky/p/2358485.html
Copyright © 2011-2022 走看看