440 likes | 456 Vues
Learn about the importance of software quality assurance and the methods used in software engineering to improve the quality of software products. Explore the software development process and the activities involved in system implementation. Enhance your understanding of software concepts and attributes of good software.
E N D
Part V: Software Engineering and Implementation Lecture Note 13Software Engineering Systems Analysis and Design Kendall & Kendall Sixth Edition CS206 System Analysis & Design Note 13 By ChangYu
Major Topics • Explain the important of software quality assurance. • Software • Software Engineering • Software Products • Software Methods. • Good Software products. • Three generic process models and when they may be used • The basic activities of the Software Engineering Process. CS206 System Analysis & Design Note 13 By ChangYu
System Implementation The system design specification serves as a blueprint for constructing the new system. The initial task is • Application development : Construct the programs and code modules. • Testing: program testing, group program testing, entire system testing. • Documentation: program, system, operations and user documentations. • Training: Vendor training, Outside training, In-house training. • Data conversion: extract the data and convert it to an acceptable format. • System changeover: is process of putting the new information system online and retiring the old system. • System evaluation: assesses the overall quality of the information system.
Software Engineering • In today’s competitive business environment, companies are intensely concerned with the quality of their products and services. A successful organization constantly must improve quality in every area. • Because quality is so important, you can use an approach called software engineering to manage and improve the quality of the finished system. • Software Engineering is a software development process that stresses (着重) solid design, effective structure, accurate documentation, and careful testing. CS206 System Analysis & Design Note 13 By ChangYu
Basic Concepts Software: • Software is not just the programs but also all associated documentation and configuration (構造) data which is needed to make these programs operate correctly. • A software system usually consists of : • A number of separate Programs, • Configuration (構造)Files which are used to set up these programs, • System Documentation which describes the structure of the system. • User Documentation which explains how to use the system, software products, web sites for users to download recent product information. CS206 System Analysis & Design Note 13 By ChangYu
Attributes of good Software: CS206 System Analysis & Design Note 13 By ChangYu
Software Engineering: Software Engineering is an engineering discipline(紀律, 規定) which is concerned with all aspects of software production. • ‘Engineering discipline’ Engineers apply theories, methods and tools where these are appropriate but they use them selectively and always try to discover solutions to problems within some (financial and organizational) constraints. • ‘All aspects (方面) of software production’ Software engineering is not just concerned with the technical processes of software development but also with activities, such as software product management and with the development of tools, methods and theories to support software production. CS206 System Analysis & Design Note 13 By ChangYu
Software Products: • The objective of software engineering is to produce software product. • Software products are software systems delivered (送) to a customer with the documentation which describes how to install and use the system. Two types: • Generic Products : Produced by a development organization and sold on the open market to any customer who is able to buy them. • Bespoke (customized) Products:Commissioned (委託) by a particular customer. Developed specially for that customer by some contractor (承包商) . CS206 System Analysis & Design Note 13 By ChangYu
Software Methods: • A software engineering method is a structured approach to software development whose aim is to facilitate (有助於) the production of high quality software in a cost-effective way. • Structured Analysis methods are identify the basic functional components of a system. • Function-oriented methods are supplemented by object-oriented methods. CS206 System Analysis & Design Note 13 By ChangYu
Software Process: • A software process is a set of activities and associated results which produce a software product. • These activities are mostly carried out by software engineers. • There are four fundamental process activities which are common to all software processes: • Software Specification: The functionality (功能) of the software and constraints (限制) on its operation must be defined. • Software Development : The software to meet the specification must be produced • Software Validation (使合法化): The software must be validated (確認) to ensure that it does what the customer wants. • Software Evolution (逐步發展): The software must evolve to meet changing customer needs. • Different software processes organise there activities in different ways and are described at different levels of detail. CS206 System Analysis & Design Note 13 By ChangYu
Software Process Model: • A software process model is an abstract representation of a process. It presents a description of a process from some particular perspective (觀察能力). • Some general process models: • The Waterfall Model • Evolutionary Development • Reuse-oriented Development CS206 System Analysis & Design Note 13 By ChangYu
The Waterfall Model • This model is also called Software Life Cycle because of the flow from one phase to another. • Inflexible partitioning of the project into distinct stages makes it difficult to respond to changing customer requirements. • Therefore, this model is only appropriate when the requirements are well-understood and changes will be fairly limited during the design process. • Few business systems have stable requirements. • The waterfall model is mostly used for large systems engineering projects where a system is developed at several sites.
Operationand This model shows the sequence of activities in the process along with their in puts, outputs and dependencies. The activities in this model represent human actions. CS206 System Analysis & Design Note 13 By ChangYu
The characteristic of this model: The result of each phase is one or more documents which are approved. The following phase should not start until the previous phase has completed. In practice, these stages overlap and feed information to each other. Disadvantage: Its inflexible partitioning of the project into these 5 stages is the major problem. Commitments must be made at an early stage in the process and this means that it is difficult to respond to the changing customer requirements. Advantage: Although this approach is relatively time consuming (浪費) as it adopts the engineering approach, it is still used for developing software process for its consistency and completeness in developmental procedures. CS206 System Analysis & Design Note 13 By ChangYu
Evolutionary Development • It is based on the idea of developing an initial implementation, exposing (揭露) this to user comments and refining this through many versions until an adequate system has been developed. • Specification, development and validation are interleaved (插入).
There are two types of evolutionary development: • Exploratory (探險的) development Aim:Work with customer to explore their requirements and deliver a final system. If parts of the system are understood, start the development. The system evolves by adding new features as they are proposed by the customer to the system. • Throw-away prototyping Aim: To understand the system requirements and hence develop a better requirements definition for the system. Should start with poorly understood requirements to clarify what is really needed. CS206 System Analysis & Design Note 13 By ChangYu
The problem of this model: • The process is invisible:If systems are developed quickly, it is not cost-effective to produce documents which reflect every version of the system, for managers to measure progress. • Systems are often poorly structured:Continual change tends to corrupt the software structure.Then software changes becomes increasingly (越來越…) difficult and costly. • Special tools and techniques may be required : • Incompatible with other tools or techniques. • Few people have the skills. Advantages: • More effective than the waterfall approach. • The specification can be developed incrementally (逐渐形成). Applicability : • For small or medium-size interactive systems; • For parts of large systems (e.g. the user interface); • For short-lifetime systems. CS206 System Analysis & Design Note 13 By ChangYu
Reuse-Oriented Development • People modify the similar existence designs or code as required and fit them into their system. This approach is often used as rapid system development. • The requirements specification and system validation stages are similar to other models. Therefore the following introductions are for the other 4 stages. CS206 System Analysis & Design Note 13 By ChangYu
Component analysis: According to the requirements specification, a search is made for the components to implement that specification. • Requirements modification: The requirements are analyzed using information about the components which have been discovered. They are then modified to reflect the available components. • System design with reuse: The framework of the system is designed or an existing framework is reused. • Development and integration: The components and COTS (commercial Off-The-Shelf System) that may be used to provide specific functionality such as text formatting, numeric calculation, and so on, are integrated to create the new system. CS206 System Analysis & Design Note 13 By ChangYu
The characteristic of this model: It reduce the amount of software to be developed and so reduces cost and risks. It also leads to faster delivery of the software. • The problem of this model: Requirements compromises (妥協) are inevitable (不可避免的) and this may lead to a system which does not meet the real needs of users. CS206 System Analysis & Design Note 13 By ChangYu
Software Process Activities • A software process is a set of activities and associated results which produce a software product. • Software Specification • Software Design and Implementation • Software Validation • Software Evolution CS206 System Analysis & Design Note 13 By ChangYu
Software Specification • Software Specification (requirement engineering) is intended to • Establish what services are required from the system and • The constraints on the system’s operation and development. • Requirement engineering is a particularly critical stage of software process as error at this stage inevitably (不可避免的) lead to later problem in the system and implementation. • The requirements engineering process leads to the production of a requirements document which is the specification for the system, shown in Figure on next page. CS206 System Analysis & Design Note 13 By ChangYu
The Requirements Engineering Process Requirements are usually presented at two levels of detail in this document End-users and customers need a high-level statement of the requirements; system developers need a more detailed system specification.
Feasibility Study: • It is used to identify user needs may be satisfied using current software and hardware technologies. The study will decide of the proposed system will be cost-effective from a business point of view and if it can be developed given existing budgetary constraints. • A feasibility study should be relatively cheap and quick. • The result should inform the decision of whether to go ahead with a more detailed analysis. • Requirements Elicitation and Analysis: • This is the process of deriving the system requirements through observation of existing systems, discussions with potential users and other customers , task analysis, etc. • This may involve the development of one or more different system models and prototypes. There help the analyst understand the system to be specified. CS206 System Analysis & Design Note 13 By ChangYu
3. Requirements Specification: • Requirements Specification is the activity of translating the information gathered. • It is a document that defines a set of requirements. • Two types requirements may be included in this document. • User requirements: abstract statements for customer and end-user of the system. • System requirements: more detailed description of the functions. 4. Requirements Validation: • This activities check the requirements for realism (現實), consistency, completeness. • During this process, errors in the requirements document are inevitable discovered. • It must then be modified to correct these problems. CS206 System Analysis & Design Note 13 By ChangYu
Software Design and Implementation • A software design is a description of • the structure of the software to be implemented, • the data which is part of the system, • the interfaces between system components and the algorithms used. • Implementation is the process of converting the system specification into an executable system. It includes the programming and debugging process. • The activities of design and implementation are closely related and may be inter-leaved. CS206 System Analysis & Design Note 13 By ChangYu
The Software Design Process Design Activities Design Products CS206 System Analysis & Design Note 13 By ChangYu
The design process may involve developing several models of the system at different levels of abstraction. As a design is decomposed, errors and omissions (忽略) in earlier stages are discovered. These feed back to allow earlier design models to be improved. • The diagram suggests that the stages of the design process are sequential. In fact, design process activities are interleaved. Feedback from one stage to another and consequent design rework is inevitable (不可避免的) in all design processes. CS206 System Analysis & Design Note 13 By ChangYu
Design Process Activities CS206 System Analysis & Design Note 13 By ChangYu
Design Models A more methodical approach to software design is proposed by ‘structured methods’ which includes design process model, notations to represent the design, report formats, rules and design guidelines, for software design. • A Data-Flow Model where the system is modelled using the data transformations which take place as it is processed. • An Entity-Relation Model which is used to describe the basic entities in the design and relations between them. • A Structural Model where the system components and their interactions are documented. • Object-orient Methods include an inheritance model of the system, models of the static and dynamic relationships between objects and a model of how objects interact with each other when the system is executing.
Programming and Debugging • Translating a design into a program and removing errors from that program. • Programming is a personal activity and there is no general programming process. • Starts with components that they understand, develop these and then move on to less well-understood components. • Leave familiar components till last because they know how to develop them. • Define data early in the process, them use this to drive the program development. • Programmers carry out some program testing to discover faults (毛病) in the program and remove these faults in the debugging process.
The Debugging Process Defects (毛病) in the code must be located and the program modified to meet its requirements. Testing must then be repeated to ensure that the change has been made correctly. Therefore the debugging process in part of both software development and software testing. CS206 System Analysis & Design Note 13 By ChangYu
Software Verification and Validation • Verification (證明) and validation (使合法化)(V & V) is intended to show that a system conforms(遵照) to its specification and meets the requirements of the system customer. • V & V involves checkingand review processes and system testing. • System testing involves executing the system with test cases that are derived from the specification of the real data to be processed by the system. CS206 System Analysis & Design Note 13 By ChangYu
Verification and validation are different things however they are easily confused. The difference between them : • Validation: Are we building the right product? • Checking that the program as implemented meets the expectations of the software customer. • But, flaws (缺陷) and deficiencies (缺少) in the requirements can only be discovered when the system implementation is complete. • Verification: Are we building the product right? • Checking that the program conforms to its specification. CS206 System Analysis & Design Note 13 By ChangYu
Testing Process This figure shows a five-stage testing process where system components are tested, the integrated system is tested and the system is tested with the customer’s data finally. CS206 System Analysis & Design Note 13 By ChangYu
Testing Stages CS206 System Analysis & Design Note 13 By ChangYu
Verification and Validation Planning • V&V is an expensive process. For some large systems, half the system development budget may be spent on V & V. Therefore a careful planning is needed in order to get out the most of inspections (檢查) and testing and to control the costs of the V & V process. • The planning of V & V of a software system should start early in the development process. • A model shows how the V & V activity is broken down into a number of stages with each phase driven by tests that have been defined to check the conformance (規則) of the program with its design and specification. • Testing planning should include a description of the items to be tested, the testing schedule, requirements and any testing problems which are likely to arise (出現) . CS206 System Analysis & Design Note 13 By ChangYu
Testing Phases Requirements CS206 System Analysis & Design Note 13 By ChangYu
Software Evolution Software evolution (software maintenance) is the process of changing that system once it has been put to use. Although the costs of ‘maintenance’ are often several times the initial development costs, maintenance processes are considered to be less challenging than the original software development. The process of software engineering can be regarded as a tool to help software developers to easily accommodate the ever-changing users’requirements as long as the system is still in use. CS206 System Analysis & Design Note 13 By ChangYu
System Evolution CS206 System Analysis & Design Note 13 By ChangYu
Review Questions • Draw a diagram of the waterfall model and briefly describe all 5 phases of this model? • What are the different between verification and validation? Explain each one is a particularly difficult process? Why? • Draw a diagram of debugging process. • Briefly describe and illustrate with a diagram of the testing phase in the software process. • List and describe the major components of a test plan. • Briefly describe and draw a diagram of the testing process in the software development. CS206 System Analysis & Design Note 13 By ChangYu