Software Engineering Principles Principles form the basis of
27 Slides466.50 KB
Software Engineering Principles Principles form the basis of methods, techniques, methodologies and tools Seven important principles that may be used in all phases of software development Apply to the software product as well as the development process 1
Key principles Rigor and formality Separation of concerns Modularity Abstraction Anticipation of change Generality Incrementally 2
Rigor and formality Software engineering is a creative design activity, BUT It must be practiced systematically Rigor is a necessary complement to creativity that increases our confidence in our developments Formality is rigor at the highest degree 3
Examples: Rigor and formality Product: – Formal-Mathematical analysis of program correctness – Rigorous-Systematic test data derivation Process: – Rigorous- detailed documentation of each development step in waterfall model – Formal- automated transformational process to derive program from formal specifications 4
Separation of concerns To dominate complexity, separate the issues to concentrate on one at a time – "Divide & conquer" Supports parallelization of efforts and separation of responsibilities 5
Examples: Process: Go through phases one after the other as in waterfall Model –Do separation of concerns by separating activities with respect to time – Product: Keep different types of product requirements separate –Functionality discussed separately from the performance constraints 6
Modularity A complex system may be divided into simpler pieces called modules A system that is composed of modules is called modular Supports application of separation of concerns – when dealing with a module we can ignore details of other modules 7
Modularity: Cohesion and coupling Each module should be highly cohesive – module understandable as a meaningful unit – Components of a module are closely related to one another Modules should exhibit low coupling – modules have low interactions with others – understandable separately 8
An Example 9
Abstraction Identify the important aspects of a phenomenon and ignore its details – Special case of separation of concerns – The type of abstraction to apply depends on purpose Example: the user interface of a watch (its buttons) abstracts from the watch's internals for the purpose of setting time; other abstractions needed to support repair 10
Anticipation of change Ability to support software evolution requires anticipating potential future changes –It is the basis for software evolvability 11
Generality While solving a problem, try to discover if it is an instance of a more general problem whose solution can be reused in other cases Sometimes a general problem is easier to solve than a special case –Carefully balance generality against performance and cost 12
Incrementality Process proceeds in a stepwise fashion (increments) Examples (process) – deliver subsets of a system early to get early feedback from expected users, then add new features incrementally – deal first with functionality, then turn to performance 13
Process: A Generic View 14
A Layered Technology Software Engineering tools methods process model a “quality” focus 15
A Process Framework Process framework Framework activities work tasks work products milestones & deliverables QA checkpoints Umbrella Activities 16
Framework Activities Communication Planning Modeling Construction Analysis of requirements Design Code generation Testing Deployment 17
Umbrella Activities Software project management Formal technical reviews Software quality assurance Software configuration management Work product preparation and production Reusability management Measurement Risk management 18
The Process Model: Adaptability the framework activities will always be applied on every project . BUT the tasks (and degree of rigor) for each activity will vary based on: the type of project characteristics of the project common sense judgment; concurrence of the project team 19
The CMMI Capability Maturity Model Integration (CMMI) – developed by The Software Engineering Institute (SEI) The CMMI defines each process area in terms of “specific goals” and the “specific practices” required to achieve these goals. Specific goals establish the characteristics that must exist if the activities implied by a process area are to be effective. Specific practices refine a goal into a set of process-related activities. 20
The CMMI Level 0: Incomplete - Process goals not satisfied Level 1: Performed - Process goals satisfied Level 2: Managed - Process areas conforms to organizationally defined policy, resources are available, work tasks are monitored Level 3: Defined - Tailored according to the organization’s standard processes Level 4: Quantitatively managed - Quantitative assessment Level 5: Optimized - Processes are optimized 21
Process Patterns Process patterns define a set of activities, actions, work tasks, work products and/or related behaviors A template is used to define a pattern Typical examples: Customer communication (a process activity) Analysis (an action) Requirements gathering (a process task) Reviewing a work product (a process task) Design model (a work product) 22
Process Assessment The process should be assessed to ensure that it meets a set of basic process criteria that have been shown to be essential for a successful software engineering. Many different assessment options are available: SCAMPI CBA IPI SPICE ISO 9001:2000 23
Assessment and Improvement Software Process is examined by identifies modifications to identifies capabilities and risk of Software Process Assessment Software Process Improvement leads to leads to Capability Determination motivates 24
Personal Software Process (PSP) Recommends five framework activities: Planning High-level design High-level design review Development Postmortem stresses the need for each software engineer to identify errors early and as important, to understand the types of errors 25
Team Software Process (TSP) Each project is “launched” using a “script” that defines the tasks to be accomplished Teams are self-directed Measurement is encouraged Measures are analyzed with the intent of improving the team process 26
The Primary Goal of Any Software Process: High Quality Remember: High quality project timeliness Why? Less rework! 27