[INF43] Lecture 8 How do we structure the software in detail

[INF43] Lecture 8 How do we structure the software in detail

软件工程 SoftwareEngineering


@ZYX 写于2020年04月29日

Design Phases

Software Design

  1. Design behaviors
  2. Desgin phase of softare engineering:
    1. after requirements
    2. ask questions of "How"
  3. Software Design Goals/ Activities SEE PPT
    • Making system-wide decisions
      • Architecture, languages, libraries, platforms
    • Making lower-level decisions in an iterative manner
      • Studying the problem
      • Identifying solutions
      • Creating abstractions
      • Evaluating
      • 重复循环上面的步骤
  4. 6 Approaches to Software Design
    1. Software architecture
    2. Functional decomposition
    3. Relational database design
    4. Object-oriented design and UML
    5. User interface design
    6. (Sketching) – Lecture 8

(更多…)

[INF43] Lecture5 How do we structure software

[INF43] Lecture5 How do we structure software

软件工程 SoftwareEngineering


@ZYX 写于2020年04月28日

Software architecture

  1. So software architecture deals with how we go from requirements to code right there has to be something in between. And often, it seems like magic, pulling a rabbit out of your hat.
  2. So software architecture and design deals exactly
    1. what that how the software is to be structured
    2. what its components are what its pieces are
    3. and how those pieces are related to each other.
  3. And for large systems of particular. It usually makes sense to divine. This does that whole design activity into two parts architecture and
    1. architecture dealing more with a high level
    2. and design dealing more with the low level

(更多…)

[Inf43] Lecture 6 Software Architecture Styles

[Inf43] Lecture 6 Software Architecture Styles

软件工程 SoftwareEngineering


@ZYX 写于2020年04月24日

Styles

  1. Object-oriented
    1. components are objects and each object contains all the data and behavior relevant to the object.
    2. connectors are just function calls or messages between the different objects.
    3. key benefits: understand ability
    4. example:
      Uber
      Passenger – Ride – Driver

(更多…)

[INF43] Lecture 3 How do we know waht to build

[INF43] Lecture 3 How do we know waht to build

软件工程 SoftwareEngineering


@ZYX 写于2020年04月08日

How do we know what to build part 1

1. Software Failures

  1. What is the real problem
    1. Complexity
      1. banking system is hard, bank rule is complex
    2. Conformity
    3. Progress is hard to measure
    4. "legacy" system
      1. there are some bugs in the old systems which are hard to maintain
    5. "Hubble Psychology"
      1. project tend to be unrealistic -> more money more people

(更多…)

[INF43] Lecture 4 How do we know what to build

[INF43] Lecture 4 How do we know what to build

软件工程 SoftwareEngineering


@ZYX

How do we know what to build part 2

1. What and why Use case

1. What is a Use Case

  1. A textual description of a set of actions defining interactions betweeen an actor and the system to achieve a goal
  2. includes
    1. Basic functionality/goal
    2. any precondition
    3. flow of events
    4. any postcondition
    5. any error conditon and/or alternative flow
  3. Use cases go hand-in-hand with requirements

(更多…)

[INF43] Lecture 1 Introduction to software engineering

[INF43] Lecture 1 Introduction to software engineering

软件工程 SoftwareEngineering


@ZYX 写于2020年04月07日

Introduction to software engineering

1. software engineering

  1. “A broad field that touches upon all aspects of developing and supporting a software system.” [Tsui, Karam, Bernal]
  2. “A discipline that deals with the building of software systems which are so large that they are built by a team or teams of engineers.” [Ghezzi, Jazayeri, Mandrioli]
  3. Multi-person construction of multi-version software.” [Parnas]
  4. “A discipline whose aim is the production of fault-free software, delivered on-time and within budget, that satisfies the user’s needs. Furthermore, the software must be easy to modify when the user’s needs change.” [Schach]
  5. Managing the complexity of both a problem and its solution, to create a software product that successfully solves the problem.” [Navarro]
  6. Inf43 definition:
    1. Informatics 43 definition
      1. The process of constructing software
        1. Requirements
        2. Design
        3. Implementation
        4. Verification
        5. Maintenance
      2. Phases of development other than programming
        1. Documentation
        2. Diagrams
      3. Principles and qualities of enduring value
        1. correctness
        2. reliability
        3. Adaptability
        4. Modularity
        5. Usability
        6. Efficiency
[INF43] Lecture 2 What is software engineering

[INF43] Lecture 2 What is software engineering

软件工程 SoftwareEngineering


@ZYX

What is software engineering?

1. Perspectives

1. Business perspective
    1. What matters most?
        1. Cost
        2. Time/market how fast make proft
        3. Profit
        Money
    2. How SE help?
        reduce cost and increase profits
2. Engineer perspective
    1. What matters most?
        1. software quality/design of software
    2. How does SE help?
        1. deal with high cohesion and modularity
3. User perspective
    1. What matters most
        1. external experience
    2. How SE
        1. give us technices for devloping usable softwares.
4. INF43 perspecitive
    1. the process of constructing software
    2. The p

2. Essential Ingredients

1. People + Processes + Tools
    1. People is more important

3. Principles of software engineering

4. Inf 43 Recurring, fundamental principles

1. rigor and formality
2. separation of concerns
    1. modularity
    2. divide and conquer -> assign different parts to different people
    3. abstraction -> showing certain details and omit others
3. Anticipation of change
4. Generality -> building things in most general way as possible
5. Incrementality -> building things little by little

5. No silver bullet

1. Essential properties of software make SE hard
    1. Complexity
        1. "... a construct of interlocking concepts: data structures and classes, algorithms, function calls"
        2. "No two parts are alike"
        3. Consequence
            1. hard to communicate
            2. hard to modify without side effects
            3. make software unreliable
            4. security issues
            5. any error is fatal
    2. Conformity
        1. Software must conform to human institutions and systems
    3. Changeablity
        1. "All successful software gets changed"
        2. Why
            1. easy to change
            2. people want new changes
            3. environment changes -> hardware changes
    4. Invisibility
        1. "The reality of software is not inherently embedded in space"
        2. Consequence:
            1. diffcult to understand -> we have to find ways to make it visible
            2. hard to communicate
2. False silver bullets
    1. High-level language
    2. Time-sharing
    3. Unified programming environments
    4. OOP
    5. AI
    6. expert systems
    7. Graphical programming
3. Potential silver bullet
    1. Buy vs. Build
        1. open-source software deal with mulitple issues
            1. easy to reuse
    2. Requirements refinement and rapid prototyping
    3. Incremental development
    4. Great designers:
        1. investing people, train well, treat well
        2. people are most important.
已到首页—已到末页