軟體工程概論與實際應用
軟體工程概論與實際應用. 薛念林 逢甲大學資工系. Outline. What is software What is software engineering My suggestion. What is software?. Computer programs and associated documentation such as requirements, design models and user manuals . What is software engineering?.
軟體工程概論與實際應用
E N D
Presentation Transcript
軟體工程概論與實際應用 薛念林 逢甲大學資工系
Outline • What is software • What is software engineering • My suggestion
What is software? • Computer programs and associated documentation such as requirements, design models and user manuals.
What is software engineering? • An engineering discipline that is concerned with all aspects of software production. • Adopt a systematic and organised approach to their work and use appropriate tools and techniques depending on the problem to be solved, the development constraints and the resources available.
Software engineering- life cycle • Specification • what the system should do and its development constraints • Development • production of the software system • Validation • checking that the software is what the customer wants • Evolution • changing the software in response to changing demands.
Software engineering- activities Process mgmt. Project mgmt. Quality mgmt. Configuration mgmt. Software Development Skill
Software engineering- methodology Model Process Methodology Standard Framework Approach Tool Design Pattern Method Heuristics Principle Theory Guideline Practices Myth Discipline Success experience Fail experience
Myth • If we get behind schedule, we can add more programmers and catch up • Software is easy to change • If we decide to outsource the software project to a third party, I can just relax and let that firm build it
Principle • Open closed principle • Anticipation of Change • Design with abstraction • Perform continuous validation • Independent test team • Principle of least surprise • KISS
Heuristics/Guidelines • Nielsen’s Usability Heuristics • Visibility of System Status • Match Between System and the Real World • User Control and Freedom • Consistency and Standards • Error Prevention • Recognition Rather Than Recall • Flexibility and Efficiency of Use • Aesthetic and Minimalist Design • Help Users Recognize, Diagnose, and Recover from Errors • Help and Documentation
Methods • Requirement analysis • Scenario based, business process analysis, goal-driven approach • Design • Structural design, object oriented design, aspect oriented design • Testing • Black box testing: Equivalence partition testing, all-pair testing, decision table testing, … • white box testing: Test coverage, mutation testing, …
Patterns Observer pattern
Models • UML model language • Static model: class diagram, component diagram, deployment diagram, etc. • Dynamic model: activity diagram, use case diagram, state transition diagram • Interaction diagram: use case diagram, sequence diagram, etc. • Other model approaches: • SysML, Business process model notation (BPMN), IDEF, etc
Tool • Version control tool • CVS, SVN, Mercurial, Git • Analysis and design modeling tool • Rational Rose, StarUML, Borland Together, Eclipse UML 2 • Testing tool • JMeter, Rational Robot, HP QuickTest • Bug/Issue tracking tool • Bugzilla, CodeBeamer, HP Quality Center • …
Software process • The “algorithm” of developing software • Process models • Waterfall; • Iterative development; • Scrum • Spiral • etc.
Agile programming • Discipline • Customer involved • People not process • Test driven programming • Pair programming • Embrace change • Maintain simplicity • Refactoring • Daily meeting • …
My suggestion • Communication and documentation • Learn modeling • Do more analysis • Learn design pattern, design your framework • Do review • Using version control system • Software quality • Keep learning Software Engineering