Software Engineering

Updated:

SoftwareEngineering

What is software Engineering? Software engineering is the systematic application of engineering approaches to the development of software. Software engineering is a computing discipline.

“The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software” (IEEE)

Feature of software: Nonvisible, Changeability, Reproducibility, Complexity


Software’s life cycle

Project management

  1. Start
  2. Planning
  3. Implementation
  4. Analysis
  5. Design
  6. Implementation
  7. Test
  8. End
  9. Maintenance

Type of maintenance

Perfective Maintenance: Modification of a software product after delivery to improve performance or maintainability.

Corrective Maintenance: performing identify, isolate, and rectify a fault

Adaptive Maintenance: Modification of a software product performed after delivery to keep a software product usable in a changed or changing environment.

Preventive maintenance: Modification of a software product after delivery to detect and correct latent faults in the software product before they become effective faults.


Software development process

Build-Fix Model: Just make and fix without design
Advantage: Fast
Weakness: It’s hard to grasp the project.

Waterfall Model

  1. Requirements analysis resulting in a software requirements specification
  2. Software design
    • Syetem architecture
    • Program architecture
    • User interface
  3. Implementation
  4. Testing
  5. Integration, if there are multiple subsystems
  6. Deployment
  7. Maintenance

Advantage: Sufficient research and analysis
Weakness: It takes time to check system

Prototyping Model

  1. Requirement gathering and refinement
  2. Quick design
  3. Building prototype
  4. Customer evaluation
  5. Refining prototype

Advantage: User feedback is well reflected
Weakness: It is hard for developer to management

Spiral Model

  1. Planning
  2. Risk analysis
  3. Build
  4. Customer evaluation
  5. Repeat until complete.

Advantage: It can prevent technical risk
Weakness: It is complicated


Project

“A project is a temporary endeavor undertaken to create a unique product or service”(PMI)

Importance of project

  • Reduce danger and increase the success rate.
  • Manage systematically

Project planning paper: Project parcitipater see this and work
Included content: Task, Activity, Cost, Manager, Time, etc..

UP(Unified Process): Object-orientaton software develop method, Devide software develop step into four section(Inception, Elaboration, Construction, Transition)
Specific: Iterative, Incremental, Based on Usecase, Architecture Centered develop, Focus in error

XP(eXtreme Programming): Develop with customer, Focus on pair programming
Specific: Simplicity, Communication, Feedfack
Action points: Planning game, Metaphor, Small release, Simple design, Test-first development, Refactoring, Pair programming, Collective code ownership, Continuous integration, 40 hour week, On-site customer, Coding standard, Whole team


Requirements

A condition or capability that must be met or possessed by a system or system component to satisfy a contract, standard, specification, or other formally imposed document.


Analysis


Software architecture

Architectural pattern


Software design