470 likes | 484 Views
Software Engineering Trilogy: Process, Method, Management. Eldon Y. Li University Chair Professor Department of MIS National Chengchi University http://www.calpoly.edu/~eli.
E N D
Software Engineering Trilogy: Process, Method, Management Eldon Y. Li University Chair Professor Department of MIS National Chengchi University http://www.calpoly.edu/~eli *** All right reserved. Video or audio recording is prohibited. Reference to this document should be made as follows: Li, E.Y. “Software Engineering Trilogy: Process, Method, Management,” unpublished lecture, National Chengchi University, 2018. ***
Agenda About me Abstract Process Method Management Summary Q & A
About Me Eldon Y. Li is a university chair professor and former department chair of MIS at National Chengchi University, an adjunct chair professor of Asia University in Taiwan, and a former professor and coordinator of the MIS program at College of Business, California Polytechnic State University, San Luis Obispo, California, USA. He was the dean of College of Informatics and the director of Graduate Institute of Social Informatics at Yuan Ze University in Taiwan, as well as professor and founding director at the Graduate Institute of Information Management at the National Chung Cheng University in Chia-Yi, Taiwan. He received his PhD from Texas Tech University in 1982. He is the editor-in-chief of several international journals. He has published more than 250 papers in various topics related to innovation and technology management, human factors in information technology (IT), strategic IT planning, software quality management, and information systems management. His papers appear in Journal of Management Information Systems, Research Policy, Communications of the ACM, Internet Research, Expert Systems with Applications, Computers & Education, Decision Support Systems, Information & Management, International Journal of Medical Informatics, Organization, among others.
Software Engineering Trilogy: Process, Method, Management Abstract Software Engineering is the application of engineering discipline to the development of software in a systematic method. The lecture begins with an introduction to information systems evolution and software development processes, discussion of structured programming and testing methods, and ends with complexity metrics and software process management. A disciplined software engineer must equipped with these knowledge and skills to achieve outstanding performance.
Maturity Integration Reposition Control Contagion Initiation Evolution Process of Information Systems
Software Development Process Models • The waterfall model • Plan-driven model. Separate and distinct phases of specification and development. • Incremental development • Specification, development and validation are interleaved. May be plan-driven or agile. • Reuse-oriented software engineering • The system is assembled from existing components. May be plan-driven or agile. • In practice, most large systems are developed using a mixed process that incorporates elements from all of these models.
The waterfall model Source: Ian Sommerville (2010) Software Engineering, 9th ed.
Software Design Methods • Top-down design/ stepwise refinement/ functional decomposition • Data flow-oriented design • Data structure-oriented design/ structured design • Object oriented design
Programming Methods • Procedural Programming generally flows from one statement to the next, with occasional jumps and loops handled with GOTO statements. As the amount of code and complexity increases, the end result is code that is extremely difficult to read and maintain, known as spaghetti code. Assembly language and the resultant machine code are both examples of procedural languages..
Programming Methods • Structured Programming Principles: • Single entry and single exit • Disciplined GOTO branch (procedure call) • The use of structured constructs • Modularization (procedure call)
Programming Methods • Structured Programming introduced by Edsger W. Dijkstra in 1968 uses selection (if/then/else) and repetition (for, while, do…while), block structures, and subroutines with orderly breaks, and procedure calls which allow code to branch and return to the caller, rather than simply jump to arbitrary code never to return. There is much less need for GOTO statements which ultimately makes code that much easier to read and easier to maintain. It is also known as modular programming.
Programming Methods • Object-oriented Programming extends structured programming by combining data and the methods that operate upon that data into a single entity, known as an object. The object fully encapsulates all the functionality required to manipulate its data and exposes a clearly defined interface, hiding the implementation from the programmer. Thus it is only necessary to know what an object does, not how it does it. New objects can be derived from existing objects, reducing the need to duplicate code. It requires much less effort than structured programming.
Functional Testing Techniques • Also known as the "black-box" techniques. Do not require the tester to know the internal logic of a program or system. • Derive the test cases from the requirements definition or the external (design) specification. • Focus on the functions of the program or system being tested. • Available techniques: • Boundary value coverage • Error guessing • Cause-effect graphing • Input equivalence partitioning • Design-based equivalence partitioning
Structural Testing Techniques • Also known as the "white-box" techniques. Require the tester to know the internal logic of a program or system. • Derive the test cases from the program logic in the source code or internal design specification • Focus on the structure of the program or system being tested. • Available techniques: • Statement coverage • Decision coverage (or Branch coverage) • Condition coverage • Decision-and-condition coverage • Multiple-condition coverage • Complexity-based coverage
Cyclomatic Complexity Metric • Cyclomatic complexity metric measures the control-flow complexity of a program. • V(G) = (# edges - # nodes + 2) = (# conditions +1) • If the cyclomatic complexity of a program is N, then at least N distinct independent paths which traverse every edge in the program graph should be tested. Each test path represents a test case. • The program under test must have a single entry and exit. • Essential complexity metric E(G) measures the "unstructuredness" of a program. • E(G) =V(G) - # of proper subgraphs with unique entry & exit
Cyclomatic Complexity Metric • Every structured program has an "essential complexity" of one; it can be reduced to a program of unit complexity. A nonstructured program has an essential complexity of 3 or more. • Actual complexity metric indicates the number of independent paths actually executed by a program running on a test dataset. It should be maintained as close to the cyclomatic complexity as possible. • To maintain the testability of a program, the cyclomatic complexity of a program should be no more than 10.
2 Your Turn • Given the following control-flow graph, what are the basic test paths based on the complexity-based coverage? 1 V(G) = ? 4 3 5
1 2 3 4 5 6 7 Figure 1: A Control-Flow Graph for the Triangle Program Accept integers A, B, C IF A>0 & B>0 & C>0 N Y IF A+B>C & B+C>A & A+C>B N Y IF A=B N Y IF B=C IF B=C N N Y Y IF A=C N Y Not a triangle Invalid input Scalene Equilateral Isosceles Accept flag R N Repeat until R“Y” Y
1 2 3 1 2 3 4 Figure 2: Two Other Examples G2: G1: V(G1) = 5 V(G2) = 4
1 2 3 4 5 6 7 Figure 3: A Control-Flow Graph for the Interchange Sort Program ACCEPT filename IF not EXIST filename Y N DO WHILE not EOF EOF DO CASE n Read the entire file FOR i = 2 TO n FOR j = 1 TO i -1 FOR k = 1 TO n File is empty File contains one number IF x(i) <x(j) Print a sorted number File does not exist Y N Swap END
Maturity Optimized Managed Defined Repeatable Initial SE Capability Maturity Model Software Engineering
Capability Maturity Model (CMM) • CMM is framework of transforming software engineering from an ad hoc and error-prone process to a discipline that is well managed and supported by technology. • The 5-Stage model: • Initial stage • Repeatable stage • Defined stage • Managed stage • Optimizing stage
The CMM Levels Source: Adapted from Humphrey, Snyder, and Willis [1991].
Most and Least Performed Key Practices Level Difference * This practice was not in the previous list.
Conclusion & Recommendations • Taiwan's business industries have made great strides in the SPM practices since 1996. • Realized the importance of software process in assuring quality and improving productivity. The average percent of achievement has risen from 35.4% to 43.4%, now it is 38.9%. While there were only 21.7% of these companies implemented half or more of the 89 key practices in 1996, 43.6% in 2000, today this percentage is 35.5%. • The effort of Software Industry Productivity Task Force has paid off.
Conclusion & Recommendations • Software engineering curricula of Taiwanese universities should be improved to emphasize software quality and processes management techniques. • Need to institutionalize software complexity metric. Could start with McCabe’s control-flow complexity metric. • Software process management and TQM are two sides of a coin. These are the heart and the soul of a software organization.
Key Points • Software engineering is an engineering discipline that is concerned with all aspects of software production. • Essential software product attributes are maintainability, dependability and security, efficiency and acceptability. • The high-level activities of specification, development, validation and evolution are part of all software processes.
Key Points • There are many different types of system and each requires appropriate software engineering tools and techniques for their development. • The fundamental ideas of software engineering are applicable to all types of software system. Source: Ian Sommerville (2010) Software Engineering, 9th ed.