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
- Start
- Planning
- Implementation
- Analysis
- Design
- Implementation
- Test
- End
- 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
- Requirements analysis resulting in a software requirements specification
- Software design
- Syetem architecture
- Program architecture
- User interface
- Implementation
- Testing
- Integration, if there are multiple subsystems
- Deployment
- Maintenance
Advantage: Sufficient research and analysis
Weakness: It takes time to check system
Prototyping Model
- Requirement gathering and refinement
- Quick design
- Building prototype
- Customer evaluation
- Refining prototype
Advantage: User feedback is well reflected
Weakness: It is hard for developer to management
Spiral Model
- Planning
- Risk analysis
- Build
- Customer evaluation
- 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
- Division and placement of functions
- Repository model
Configuration: Repository, Subsystem Worth: It can manage consistency of data. It is easy to add a new subsystem.
Weakness: It is possible to develop bottlenecks. It is weak in security. - Client-Server model
- Layering model
- MVC(Model/View/Controller) model
- Repository model
- control relation