Open navigation menu
Close suggestions
Search
Search
en
Change Language
Upload
Sign in
Sign in
Download free for days
0 ratings
0% found this document useful (0 votes)
53 views
Software Engineering Notes
CN notes
Uploaded by
MD FARHAN 3070
AI-enhanced title
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content,
claim it here
.
Available Formats
Download as PDF or read online on Scribd
Download now
Download
Save software engineering notes For Later
Download
Save
Save software engineering notes For Later
0%
0% found this document useful, undefined
0%
, undefined
Embed
Share
Print
Report
0 ratings
0% found this document useful (0 votes)
53 views
Software Engineering Notes
CN notes
Uploaded by
MD FARHAN 3070
AI-enhanced title
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content,
claim it here
.
Available Formats
Download as PDF or read online on Scribd
Download now
Download
Save software engineering notes For Later
Carousel Previous
Carousel Next
Save
Save software engineering notes For Later
0%
0% found this document useful, undefined
0%
, undefined
Embed
Share
Print
Report
Download now
Download
You are on page 1
/ 25
Search
Fullscreen
LECTURE NOTE 1 INTRODUCTION TO SOFTWARE ENGINEERING ‘The term software engineering is composed of two words, software and engineering, Software is more than just a program code. A program is an executable code, which serves some computational purpose. Software is considered to be a collection of executable programming code, associated libraries and documentations. Software, when made for a specific requirement is called software product. Engineering on the other hand, is all about developing products, using well-defined, scientific principles and methods. So, we can define software engineering as an engineering branch associated with the development of software product using well-defined scientific principles, methods and procedures, The outcome of software engineering is an efficient and reliable software product, IBEE defines software engineering as: The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software. We can alternatively view it as a systematic collection of past experience. The experience is arranged in the form of methodologies and guidelines. A small program can be written without using software engineering principles. But if one wants to develop a large software product, then software engineering principles are absolutely necessary to achieve a good quality software cost effectively. ‘Without using software engineering principles it would be difficult to develop large programs. In industry it is usually needed to develop large programs to accommodate multiple functions. A problem with developing such large commercial programs is that the complexity and difficulty levels of the programs increase exponentially with their sizes. Software engineering helps to reduce this programming complexity. Software engineering principles use two important techniques to reduce problem complexity: abstraction and decomposition. The principle of abstraction implies that a problem can be simplified by omitting irrelevant details. In other words, the main purpose of abstraction is to consider only those aspects of the problem that are relevant for certain purpose and suppress other aspects that are not relevant for the given purpose, Once the simpler problem is solved, then the omitted details can be taken into consideration to solve the next lower level abstraction, and so on. Abstraction is a powerful way of reducing the complexity of the problem. The other approach to tackle problem complexity is ‘his documents avilable roe charge on © studocu Downloaded by 2070 MD FARHAN (mafarhanatmedS00%@gmall.codecomposition. In this technique, a complex. problem is divided into several smaller problems and then the smaller problems are solved one by one. However, in this technique any random decomposition of a problem into smaller parts will not help. The problem has to be decomposed such that each component of the decomposed problem can be solved independently and then the solution of the different components can be combined to get the full solution. A good decomposition of a problem should minimize interactions among various components. If the different subcomponents are interrelated, then the different components cannot be solved separately and the desired reduction in complexity will not be realized. NEED OF SOFTWAREENGINEERING The need of software engineering arises because of higher rate of change in user requirements and environment on which the software is working. + Large software - It is easier to build a wall than to a house or building, likewise, as the size of software become large engineering has to step to give it a scientific process. + Scalability- If the software process were not based on scientific and engineering concepts, it would be easier to re-create new software than to scale an existing one. + Cost- As hardware industry has shown its skills and huge manufacturing has lower down the price of computer and electronic hardware, But the cost of software remains high if proper process is not adapted. + Dynamic Nature- The always growing and adapting nature of software hugely depends upon the environment in which the user works. If the nature of software is always changing, new enhancements need to be done in the existing one. This is where software engineering plays a good role. + Quality Management- Better process of software development provides better and quality software product. CHARACTERESTICS OF GOOD SOFTWARE, A software product can be judged by what it offers and how well it can be used, This software must satisfy on the following grounds: + Operational + Transitional + Maintenance Downloaded by 2070 MD FARHAN (mdfarhanahmees002@gmai.com)Well-engincered and crafted software is expected to have the following characteristics: Operational This tells us how well software works in operations. It can be measured on: + Budget «Usability + Efficiency + Correctness + Functionality «Dependability + Security «Safety Transitional This aspect is important when the software is moved from one platform to another: «Portability + Interoperability + Reusability + Adaptability Maintenance This aspect briefs about how well a software has the capabilities to maintain itself in the ever- changing environment: + Modularity ‘+ Maintainability + Flexibility + Scalability In short, Software engineering is a branch of computer science, which uses well-defined engineering concepts required to produce efficient, durable, scalable, in-budget and on-time software products Tice eee © studocu Downloaded by 2070 MD FARHAN (mdfarhanahmacs00s@gmall.coLECTURE NOTE 2 SOFTWARE DEVELOPMENT LIFE CYCLE LIFE CYCLE MODEL A software life cycle model (also called process model) is a descriptive and diagrammatic representation of the software life cycle. A life cycle model represents all the activities required to make a software product transit through its life cycle phases. It also captures the order in which these activities are to be undertaken. In other words, a life cycle model maps the different, activities performed on a software product from its inception to retirement. Different life cycle models may map the basic development activities to phases in different ways. Thus, no matter which life cycle model is followed, the basic activities are included in all life cycle models, though the activities may be carried out in different orders in different life cycle models. During any life cycle phase, more than one activity may also be carried out. THE NEED FOR A SOFTWARE LIFE CYCLE MODEL The development team must identify a suitable life cycle model for the particular project and then adhere to it. Without using of a particular life cycle model the development of a software product would not be in a systematic and disciplined manner. When a software product is being developed by a team there must be a clear understanding among team members about when and what to do. Otherwise it would lead to chaos and project failure, This problem can be illustrated by using an example. Suppose a software development problem is divided into several parts and the parts are assigned to the team members. From then on, suppose the team members are allowed the freedom to develop the parts assigned to them in whatever way they like. It is possible that one member might start writing the code for his part, another might decide to prepare the test documents first, and some other engineer might begin with the design phase of the parts assigned to him, This would be one of the perfect recipes for project failure, A software life cycle model defines entry and exit criteria for every phase. A phase can start only if its phase-entry criteria have been satisfied. So without software life cycle model the entry and exit criteria for a phase cannot be recognized. Without software life cycle models it becomes difficult for software project managers to monitor the progress of the project. Different software life cycle models ‘Many life cycle models have been proposed so far. Each of them has some advantages as well as some disadvantages, A few important and commonly used life cycle models are as follows: ‘* Classical Waterfall Model Downloaded by 2070 MD FARHAN (mdfarhanahmees002@gmai.com)© Merative Waterfall Model ‘* Prototyping Model + Evolutionary Model ‘© Spiral Model 1. CLASSICAL WATERFALL MODEL ‘The classical waterfall mode! is intuitively the most obvious way to develop software. ‘Though the classical waterfall model is elegant and intuitively obvious, it is not a practical model in the sense that it cannot be used in actual software development projects. Thus, this model can be considered to be a theoretical way of developing software. But all other life cycle models are essentially derived from the classical waterfall model. So, in order to be able to appreciate other life cycle models it is necessary to leam the classical waterfall model. Classical waterfall model divides the life cycle into the following phases as shown in fig.2.1 Classical Waterfall Model Fig 2.1: Classical Waterfall Model Feasibility study - The main aim of feasibility study is to determine whether it would be financially and technically feasible to develop the product Tice eee © studocu Downloaded by 2070 MD FARHAN (mdfarhanahmees002@gmailcom)‘© At first project managers or team leaders try to have a rough understanding of what is required to be done by visiting the client side. They study different input data to the system and output data to be produced by the system. They study what kind of processing is needed to be done on these data and they look at the various constraints on the behavior of the system. ‘© After they have an overall understanding of the problem they investigate the different solutions that are possible. Then they examine each of the solutions in terms of what kind of resources required, what would be the cost of development and what would be the development time for each solution. ‘© Based on this analysis they pick the best solution and determine whether the solution is feasible financially and technically. They check whether the customer budget would meet the cost of the product and whether they have sufficient technical expertise in the area of development. Requirements analysis and specification: - The aim of the requirements analysis and specification phase is to understand the exact requirements of the customer and to document them properly. This phase consists of two distinct activities, namely ‘© Requirements gathering and analysis, ‘© Requirements specification The goal of the requirements gathering activity is to collect all relevant information from the customer regarding the product to be developed. This is done to clearly understand the customer requirements so that incompleteness and inconsistencies are removed ‘The requirements analysis activity is begun by collecting all relevant data regarding the product to be developed from the users of the product and from the customer through interviews and discussions, For example, to perform the requirements analysis of a business accounting software required by an organization, the analyst might interview all the accountants of the organization to ascertain their requirements. The data collected from such a group of users usually contain several contradictions and ambiguities, since each user typically has only a partial and incomplete view of the system. Therefore it is necessary to identify all ambiguities and contradictions in the requirements and resolve them through further discussions with the customer. After all ambiguities, inconsistencies, and incompleteness have been resolved and all the requirements properly understood, the requirements specification activity can start. During this activity, the user requirements are systematically organized into a Software Requirements Specification (SRS) document. The customer requirements identified during the requirements gathering and analysis activity are organized into a SRS document. The important components of this document are functional requirements, the nonfunctional requirements, and the goals of implementation. Downloaded by 2070 MD FARHAN (mdfarhanahmees002@gmai.com)Design: - The goal of the design phase is to transform the requirements specified in the SRS document into a structure that is suitable for implementation in some programming language. In technical terms, during the design phase the software architecture is derived from the SRS document. Two distinctly different approaches are available: the traditional design approach and the object-oriented design approach. ‘+ Traditional design approach -Traditional design consists of two different activities; first a structured analysis of the requirements specification is carried out where the detailed structure of the problem is examined. This is followed by a structured design activity. During structured design, the results of structured analysis are transformed into the software design. ‘* Object-oriented design approach -In this technique, various objects that occur in the problem domain and the solution domain are first identified, and the different relationships that exist among these objects are identified. The object structure is further refined to obtain the detailed design. Coding and unit testing:-The purpose of the coding phase (sometimes called the implementation phase) of software development is to translate the software design into source code. Each component of the design is implemented as a program module. The end-product of this phase is a set of program modules that have been individually tested. During this phase, each module is unit tested to determine the correct working of all the individual modules. It involves testing each module in isolation as this is the most efficient way to debug the errors identified at this stage, Integration and system testing: -Integration of different modules is undertaken once they have been coded and unit tested. During the integration and system testing phase, the modules are integrated in a planned manner. The different modules making up a software product are almost never integrated in one shot. Integration is normally carried out incrementally over a number of steps. During each integration step, the partially integrated system is tested and a set of previously planned modules are added to it. Finally, when all the modules have been successfully integrated and tested, system testing is carried out, The goal of system testing is to ensure that the developed system conforms to its requirements laid out in the SRS document, System testing usually consists of three different kinds of testing activities: ‘+ a—testing: It is the system testing performed by the development team. ‘+B testing: Itis the system testing performed by a friendly set of customers ‘© Acceptance testing: It is the system testing performed by the customer himself after the product delivery to determine whether to accept or reject the delivered product. System testing is normally carried out in a planned manner according to the system test plan document. The system test plan identifies all testing-related activities that must be performed, Tice eee © studocu Downloaded by 2070 MD FARHAN (mdfarhanahmacs00s@gmall.cospecifies the schedule of testing, and allocates resources. It also lists all the test cases and the expected outputs for each test case. ‘Maintenan faintenance of a typical software product requires much more than the effort necessary to develop the product itself. Many studies carried out in the past confirm this and indicate that the relative effort of development of a typical software product to its maintenance effort is roughly in the 40:60 ratios. Maintenance involves performing any one or more of the following three kinds of activities: ‘* Correcting errors that were not discovered during the product development phase. This is, called corrective maintenance. ‘+ Improving the implementation of the system, and enhancing the functionalities of the system according to the customer’s requirements. This is called perfective maintenance. * Porting the software to work in a new environment, For example, porting may be required to get the software to work on a new computer platform or with a new operating system, This is called adaptive maintenance. Shortcomings of the classical waterfall model ‘The classical waterfall model is an idealistic one since it assumes that no development error is ever committed by the engineers during any of the life cycle phases. However, in practical development environments, the engineers do commit a large number of errors in almost every phase of the life cycle. The source of the defects can be many: oversight, wrong assumptions, use of inappropriate technology, communication gap among the project engineers, etc. These defects usually get detected much later in the life cycle. For example, a design defect might go unnoticed till we reach the coding or testing phase. Once a defect is detected, the engineers need to go back to the phase where the defect had occurred and redo some of the work done during that phase and the subsequent phases to correct the defect and its effect on the later phases. Therefore, in any practical software development work, it is not possible to strictly follow the classical waterfall model Downloaded by 2070 MD FARHAN (mdfarhanahmees002@gmai.com)2. ITERATIVE WATERFALL MODEL LECTURE NOTE 3 To overcome the major shortcomings of the classical waterfall model, we come up with the iterative waterfall model. Fig 3.1 : Iterative Waterfall Model Here, we provide feedback paths for error correction as & when detected later in a phase. Though errors are inevitable, but it is desirable to detect them in the same phase in which they occur. If so, this can reduce the effort to correct the bug. The advantage of this model is that there is a working model of the system at a very early stage of development which makes it easier to find functional or design flaws. Finding issues at an early stage of development enables to take corrective measures in a limited budget. The disadvantage with this SDLC model is that it is applicable only to large and bulky software development projects. into further small serviceable increments/modules, his is because it is hard to break a small software system Tice eee © studocu Downloaded by 2070 MD FARHAN (maar3. PRTOTYPING MODEL Prototype ‘A prototype is a toy implementation of the system. A prototype usually exhibits limited functional capabilities, low reliability, and inefficient performance compared to the actual software. A prototype is usually built using several shortcuts. The shortcuts might involve using inefficient, inaccurate, or dummy functions. The shortcut implementation of a function, for example, may produce the desired results by using a table look-up instead of performing the actual computations. A prototype usually turns out to be a very crude version of the actual system. Need for a prototype in software development ‘There are several uses of a prototype. An important purpose is to illustrate the input data formats, messages, reports, and the interactive dialogues to the customer. This is a valuable mechanism for gaining better understanding of the customer's needs: ‘how the screens might look like ‘how the user interface would behave «how the system would produce outputs Another reason for developing a prototype is that it is impossible to get the perfect product, in the first attempt. Many researchers and engineers advocate that if you want to develop a good product you must plan to throw away the first version. The experience gained in developing the prototype can be used to develop the final product. A prototyping model can be used when technical solutions are unclear to the development team. A developed prototype can help engineers to critically examine the technical issues associated with the product development. Often, major design decisions depend on issues like the response time of a hardware controller, or the efficiency of a sorting algorithm, etc. In such circumstances, a prototype may be the best or the only way to resolve the technical issues. A prototype of the actual product is preferred in situations such as + User requirements are not complete + Technical issues are not clear Downloaded by 2070 MD FARHAN (mdfarhanahmees002@gmai.com)(ort Evaluation ico Requirements Customer Satisfied Cees Merten) Nene) Fig 3.2: Prototype Model 4, EVOLUTIONARY MODEL. It is also called successive versions model or incremental model. At first, a simple working model is built. Subsequently it undergoes functional improvements & we keep on adding new functions till the desired system is built. Applications: ‘© Large projects where you can easily find modules for incremental implementation, Often used when the customer wants to start using the core features rather than waiting for the full software. ‘+ Also used in object oriented software development because the system can be easily portioned into units in terms of objects. ‘Advantages: ‘+ User gets a chance to experiment partially developed system ‘+ Reduce the error because the core modules get tested thoroughly. Disadvantages: © It is difficult to divide the problem into several versions that would be acceptable to the customer which can be incrementally implemented & delivered PReSaanant e eanan rene eran © studocu Downloaded by 3070 MD FARHAN (méfarhanahmeds00b@gmail.com)rary rene od Cay Fig 3.3: Evolutionary Model Downloaded by 3070 MD FARHAN (méfarhanahmeds00b@gmai.com)LECTURE NOTE 4 5, SPIRAL MODEL ‘The Spiral model of software development is shown in fig. 4.1. The diagrammatic representation of this model appears like a spiral with many loops. The exact number of loops in the spiral is not fixed. Each loop of the spiral represents a phase of the software process. For example, the innermost loop might be concerned with feasibility study, the next loop with requirements specification, the next one with design, and so on, Each phase in this model is split into four sectors (or quadrants) as shown in fig. 4.1. The following activities are carried out during each phase of a spiral model. Alternate Objective Evaluation Next Phase Planning Product Development Release Fig 4.1: Spiral Model First quadrant (Objective Setting) + During the first quadrant, itis needed to identify the objectives of the phase + Examine the risks associated with these objectives. PReSaanant e eanan rene eran © studocu Downloaded by 2070 MD FARHAN (mdfarhanahmees002@gmailcom)Second Quadrant (Risk Assessment and Reduction) +A detailed analysis is carried out for each identified project risk + Steps are taken to reduce the risks. For example, if there is a risk that the requirements are inappropriate, a prototype system may be developed. ‘Third Quadrant (Development and Validation) + Develop and validate the next level of the product after resolving the identified risks. Fourth Quadrant (Review and Planning) + Review the results achieved so far with the customer and plan the next iteration around the spiral. + Progressively more complete version of the software gets built with each iteration around the spiral. Circumstances to use spiral model ‘The spiral model is called a meta model since it encompasses all other life cycle models. Risk handling is inherently built into this model. The spiral model is suitable for development of technically challenging software products that ate prone to several kinds of risks. However, this model is much more complex than the other models — this is probably a factor deterring its use in ordinary projects Comparison of different life-cycle models ‘The classical waterfall model can be considered as the basic model and all other life cycle models as embellishments of this model. However, the classical waterfall model cannot be used in practical development projects, since this model supports no mechanism to handle the errors committed during any of the phases. This problem is overcome in the iterative waterfall model. The iterative waterfall model is probably the most widely used software development model evolved so far. This model is simple to understand and use, However this model is suitable only for well-understood problems; it is not suitable for very large projects and for projects that are subject to many risks, The prototyping model is suitable for projects for which either the user requirements or the underlying technical aspects are not well understood. This model is especially popular for development of the user-interface part of the projects. Downloaded by 2070 MD FARHAN (mdfarhanahmees002@gmai.com)‘The evolutionary approach is suitable for large problems which can be decomposed into a set of modules for incremental development and delivery. This model is also widely used for object- oriented development projects. Of course, this model can only be used if the incremental delivery of the system is acceptable to the customer. ‘The spiral model is called a meta model since it encompasses all other life cycle models. Risk handling is inherently built into this model. The spiral model is suitable for development of technically challenging software products that are prone to several kinds of risks. However, this model is much more complex than the other models — this is probably a factor deterring its use in ordinary projects. The different software life cycle models can be compared from the viewpoint of the customer. Initially, customer confidence in the development team is usually high irrespective of the development model followed. During the lengthy development process, customer confidence normally drops off, as no working product is immediately visible. Developers answer customer queries using technical slang, and delays are announced. This gives rise to customer resentment. On the other hand, an evolutionary approach lets the customer experiment with a working product much earlier than the monolithic approaches. Another important advantage of the incremental model is that it reduces the customer’s trauma of getting used to an entirely new system, The gradual introduction of the product via incremental phases provides time to the customer to adjust to the new product. Also, from the customer's financial viewpoint, incremental development does not require a large upfront capital outlay. The customer can order the incremental versions as and when he can afford them. Tice eee © studocu Downloaded by 2070 MD FARHAN (mdfarhanahmacs00s@gmall.coLECTURE NOTE 5 REQUIREMENTS ANALYSIS AND SPECIFICATION Before we start to develop our software, it becomes quite essential for us to understand and document the exact requirement of the customer. Experienced members of the development team carry out this job. They are called as system analysts ‘The analyst starts requirements gathering and analysis activity by collecting all information from the customer which could be used to develop the requirements of the system. He then analyzes the collected information to obtain a clear and thorough understanding of the product to be developed, with a view to remove all ambiguities and inconsistencies from the initial customer perception of the problem. The following basic questions pertaining to the project should be clearly understood by the analyst in order to obtain a good grasp of the problem: + What is the problem? + Why is it important to solve the problem? + What are the possible solutions to the problem? + What exactly are the data input to the system and what exactly are the data output by the system? ‘+ What are the likely complexities that might arise while solving the problem? + If there are extemal software or hardware with which the developed software has to interface, then what exactly would the data interchange formats with the external system be? After the analyst has understood the exact customer requirements, he proceeds to identify and resolve the various requirements problems. The most important requirements problems that the analyst has to identify and eliminate are the problems of anomalies, inconsistencies, and incompleteness. When the analyst detects any inconsistencies, anomalies or incompleteness in the gathered requirements, he resolves them by carrying out further discussions with the end- users and the customers Parts of a SRS document + The important parts of SRS document are: Functional requirements of the system Non-functional requirements of the system, and Goals of implementation Downloaded by 2070 MD FARHAN (mdfarhanahmees002@gmai.com)Functional requirement The functional requirements part discusses the functionalities required from the system. The system is considered to perform a set of high-level functions (f}. The functional view of the system is shown in fig. 5.1. Each function f of the system can be considered as a transformation of a set of input data (j,) to the corresponding set of output data (0). The user can get some meaningful piece of work done using a high-level function. Fig, 5.1: View of a system performing a set of functions ‘Nonfunctional requirements: Nonfunctional requirements deal with the characteristics of the system which cannot be expressed as functions - such as the maintainability of the system, portability of the system, usability of the system, etc Goals of implementation:- ‘The goals of implementation part documents some general suggestions regarding development These suggestions guide trade-off among design goals. The goals of implementation section might document issues such as revisions to the system functionalities that may be required in the future, new devices to be supported in the future, reusability issues, etc. These are the items which the developers might keep in their mind during development so that the developed system ‘may meet some aspects that are not required immediately. Tice eee © studocu Downloaded by 2070 MD FARHAN (mdfarhanahmacs00s@gmall.coIdentifying functional requirements from a problem description The high-level functional requirements often need to be identified either from an informal problem description document or from a conceptual understanding of the problem. Each high- Jevel requirement characterizes a way of system usage by some user to perform some meaningful piece of work. There can be many types of users of a system and their requirements from the system may be very different. So, it is often useful to identify the different types of users who might use the system and then try to identify the requirements from each user’s perspective. ‘Example: - Consider the case of the library system, where — FI: Search Book function Input: an author’s name Output: details of the author's books and the location of these books in the library So the function Search Book (F1) takes the author's name and transforms it into book details. Functional requirements actually describe a set of high-level requirements, where each high-level requirement takes some data from the user and provides some data to the user as an output. Also cach high-level requirement might consist of several other functions. Documenting functional requirements For documenting the functional requirements, we need to specify the set of functionalities supported by the system. A function can be specified by identifying the state at which the data is to be input to the system, its input data domain, the output data domain, and the type of processing to be carried on the input data to obtain the output data, Let us first try to document the withdraw-cash function of an ATM (Automated Teller Machine) system. The withdraw-cash is a high-level requirement. It has several sub-requirements corresponding to the different user interactions. These different interaction sequences capture the different scenarios. Example: - Withdraw Cash from ATM Rl: withdraw cash Description: The withdraw cash function first determines the type of account that the user has and the account number from which the user wishes to withdraw cash. It checks the balance to determine whether the requested amount is available in the account. If enough balance is available, it outputs the required cash; otherwise it generates an error message. Downloaded by 2070 MD FARHAN (mdfarhanahmees002@gmai.com)R11 select withdraw amount option Input: “withdraw amount” option Output: user prompted to enter the account type R12: select account type Input: user option Output: prompt to enter amount R13: get required amount Input: amount to be withdrawn in integer values greater than 100 and less than 10,000 in multiples of 100. Output: The requested cash and printed transaction statement. Processing: the amount is debited from the user’s account if sufficient balance is available, otherwise an error message displayed Properties of a good SRS document ‘The important properties of a good SRS document ate the following: * Concise. The SRS document should be concise and at the same time unambiguous, consistent, and complete. Verbose and irrelevant descriptions reduce readability and also increase error possibilities. © Structured. It should be well-structured. A well-structured document is easy to understand and modify. In practice, the SRS document undergoes several revisions to cope up with the customer requirements, Often, the customer requirements evolve over a period of time. Therefore, in order to make the modifications to the SRS document easy, it is important to make the document well-structured. ‘+ Black-box view. It should only specify what the system should do and refrain from stating how to do these, This means that the SRS document should specify the external behavior of the system and not discuss the implementation issues. The SRS document should view the system to be developed as black box, and should specify the externally visible behavior of the system. For this reason, the SRS document is also called the black-box specification of a system. Tice eee © studocu Downloaded by 2070 MD FARHAN (mdfarhanahmacs00s@gmall.co‘* Conceptual integrity. It should show conceptual integrity so that the reader can easily understand it, ‘+ Response to undesired events. It should characterize acceptable responses to undesired events, These are called system response to exceptional conditions. ‘+ Verifiable. All requirements of the system as documented in the SRS document should be verifiable. This means that it should be possible to determine whether or not requirements have been met in an implementation, Problems without a SRS document ‘The important problems that an organization would face if it does not develop a SRS document are as follows: '* Without developing the SRS document, the system would not be implemented according to customer needs. ‘© Software developers would not know whether what they are developing is what exactly required by the customer. © Without SRS document, it will be very much difficult for the maintenance engineers to understand the functionality of the system. ‘+ It will be very much difficult for user document writers to write the users’ manuals properly without understanding the SRS document. Problems with an unstructured specification + It would be very much difficult to understand that document. + It would be very much difficult to modify that document. + Conceptual integrity in that document would not be shown. + The SRS document might be unambiguous and inconsistent. Downloaded by 2070 MD FARHAN (mdfarhanahmeds00x@gmall.coSOFTWARE DESI! Software design is a process to transform user requirements into some suitable form, which helps the programmer in software coding and implementation For assessing user requirements, an SRS (Software Requirement Specification) document is created whereas for coding and implementation, there is a need of more specific and detailed requirements in software terms. The output of this process can directly be used into implementation in programming languages, Software design is the first step in SDLC (Software Design Life Cycle), which moves the concentration from problem domain to solution domain, It tries to specify how to fulfill the requirements mentioned in SRS. Software Design Levels Software design yields three levels of results: + Architectural Design - The architectural design is the highest abstract version of the system, It identifies the software as a system with many components interacting with cach other. At this level, the designers get the idea of proposed solution domain, + High-level Design- The high-level design breaks the ‘single entity-multiple component” concept of architectural design into less-abstracted view of sub-systems and modules and depicts their interaction with each other. High-level design focuses on how the system along with all of its components can be implemented in forms of modules. It recognizes modular structure of each sub-system and their relation and interaction among each other. + Detailed Design- Detailed design deals with the implementation part of what is seen asa system and its sub-systems in the previous two designs. It is more detailed towards modules and their implementations. It defines logical structure of each module and their interfaces to communicate with other modules. Modularization Modularization is a technique to divide a software system into multiple discrete and independent modules, which are expected to be capable of carrying out task(s) independently. These modules may work as basic constructs for the entire software. Designers tend to design modules such that they can be executed and/or compiled separately and independently. Modular design unintentionally follows the rules of ‘divide and conquer’ problem-solving strategy this is because there are many other benefits attached with the modular design of a software, ‘his documents avilable roe charge on © studocu Downloaded by 2070 MD FARHAN (mafarhanatmedS00%@gmall.coAdvantage of modularization: + Smaller components are easier to maintain + Program can be divided based on functional aspects ‘+ Desired level of abstraction ca n be brought in the program + Components with high cohesion can be re-used again. + Concurrent execution can be made possible + Desired from security aspect Concurrency Back in time, all software were meant to be executed sequentially. By sequential execution we ‘mean that the coded instruction will be executed one after another implying only one portion of program being activated at any given time. Say, software has multiple modules, and then only one of all the modules can be found active at any time of execution. In software design, concurrency is implemented by splitting the software into multiple independent units of execution, like modules and executing them in parallel. In other words, concurrency provides capability to the software to execute more than one part of code in parallel to each other. It is necessary for the programmers and designers to recognize those modules, which can be made parallel execution. Example The spell check feature in word processor is a module of software, which runs alongside the word processor itself, Couplingand Cohesion ‘When a software program is modularized, its tasks are divided into several modules based on some characteristics. As we know, modules are set of instructions put together in order to achieve some tasks. They are though, considered as single entity but may refer to each other to work together. There are measures by which the quality of a design of modules and their interaction among them can be measured. These measures are called coupling and cohesion. Cohes Cohesion is a measure that defines the degree of intra-dependability within elements of a module, The greater the cohesion, the better is the program design. nm Downloaded by 2070 MD FARHAN (mdfarhanahmees002@gmai.com)‘There are seven types of cohesion, namely — + Co-incidental cohesion - It is unplanned and random cohesion, which might be the result of breaking the program into smaller modules for the sake of modularization, Because it is unplanned, it may serve confusion to the programmers and is generally not-accepted. + Logical cohesion - When logically categorized elements are put together into a module, it is called logical cohesion. + Temporal Cohesion - When clements of module are organized such that they are processed at a similar point in time, it is called temporal cohesion, + Procedural cohesion - When elements of module are grouped together, which are executed sequentially in order to perform a task, it is called procedural cohesion, + Communicational cohesion - When elements of module are grouped together, which are executed sequentially and work on same data (information), it is called communicational cohesion. ‘+ Sequential cohesion - When elements of module are grouped because the output of one element serves as input to another and so on, it is called sequential cohesion. + Functional cohesion - It is considered to be the highest degree of cohesion, and it is, highly expected. Elements of module in functional cohesion are grouped because they all contribute to a single well-defined function. It can also be reused. Coupling Coupling is a measure that defines the level of inter-dependability among modules of a program. It tells at what level the modules interfere and interact with each other. The lower the coupling, the better the program. ‘There are five levels of coupling, namely - + Content coupling - When a module can directly access or modify or refer to the content of another module, it is called content level coupling. + Common coupling- When multiple modules have read and write access to some global data, itis called common or global coupling. + Control coupling- Two modules are called control-coupled if one of them decides the function of the other module or changes its flow of execution. + Stamp coupling- When multiple modules share common data structure and work on different part of it, itis called stamp coupling. + Data coupling- Data coupling is when two modules interact with each other by means of passing data (as parameter). If a module passes data structure as parameter, then the receiving module should use all its components. Ideally, no coupling is considered to be the best. Tice eee © studocu Downloaded by 2070 MD FARHAN (mdfarhanahmacs00s@gmall.coDesign Verification The output of software design process is design documentation, pseudo codes, detailed logic diagrams, process diagrams, and detailed description of all functional or non-functional requirements. The next phase, which is the implementation of software, depends on all outputs mentioned above. It is then becomes necessary to verify the output before proceeding to the next phase. The early any mistake is detected, the better it is or it might not be detected until testing of the product. If the outputs of design phase are in formal notation form, then their associated tools for verification should be used otherwise a thorough design review can be used for verification and validation. By structured verification approach, reviewers can detect defects that might be caused by overlooking some conditions. A good design review is important for good software design, accuracy and quality.
You might also like
INTRODUCTION TO SOFTWARE ENGINEERING NOTE - docxEDITED.docx2
PDF
No ratings yet
INTRODUCTION TO SOFTWARE ENGINEERING NOTE - docxEDITED.docx2
11 pages
Intro To Software Engg.
PDF
No ratings yet
Intro To Software Engg.
15 pages
Lecture Notes On Introduction To Software Engineering CSC 209
PDF
No ratings yet
Lecture Notes On Introduction To Software Engineering CSC 209
35 pages
Chapter I Mca
PDF
No ratings yet
Chapter I Mca
13 pages
Software Engineering Notes Unit-1
PDF
No ratings yet
Software Engineering Notes Unit-1
16 pages
SEPM Unit-1
PDF
No ratings yet
SEPM Unit-1
43 pages
CSC403 - Software Engineering BOSU
PDF
No ratings yet
CSC403 - Software Engineering BOSU
13 pages
Software Life Cycle Models
PDF
No ratings yet
Software Life Cycle Models
16 pages
Software Egg
PDF
No ratings yet
Software Egg
11 pages
Lecture Notes On Software Engineering: Veer Surendra Sai University of Technology BURLA - 768018
PDF
No ratings yet
Lecture Notes On Software Engineering: Veer Surendra Sai University of Technology BURLA - 768018
45 pages
lecture notes for software engineering
PDF
No ratings yet
lecture notes for software engineering
45 pages
Lecture1 - 2 3 4
PDF
No ratings yet
Lecture1 - 2 3 4
19 pages
UNIT 1
PDF
No ratings yet
UNIT 1
64 pages
Software Engineering 1
PDF
No ratings yet
Software Engineering 1
39 pages
SE 1st - 2nd Chapter Material
PDF
No ratings yet
SE 1st - 2nd Chapter Material
58 pages
LECTURE 1
PDF
No ratings yet
LECTURE 1
3 pages
Chapter 1
PDF
No ratings yet
Chapter 1
31 pages
PDF&Rendition 1 1
PDF
No ratings yet
PDF&Rendition 1 1
55 pages
Softengg Lec 1
PDF
No ratings yet
Softengg Lec 1
51 pages
Notes Software Engineering Unit 1
PDF
No ratings yet
Notes Software Engineering Unit 1
20 pages
Unit 1
PDF
No ratings yet
Unit 1
27 pages
SEPM Unit1 Summary
PDF
No ratings yet
SEPM Unit1 Summary
24 pages
SE UNIT1
PDF
No ratings yet
SE UNIT1
27 pages
INTRODUCTION TO SOFTWARE ENGINEERING
PDF
No ratings yet
INTRODUCTION TO SOFTWARE ENGINEERING
16 pages
IEEE Defines Software Engineering As:: The Term Software Engineering Is Composed of Two Words, Software and Engineering
PDF
No ratings yet
IEEE Defines Software Engineering As:: The Term Software Engineering Is Composed of Two Words, Software and Engineering
8 pages
Software Testing Techniques
PDF
No ratings yet
Software Testing Techniques
191 pages
UNIT I SE
PDF
No ratings yet
UNIT I SE
38 pages
Unit I Software Engineering
PDF
No ratings yet
Unit I Software Engineering
94 pages
S.E Text Book.
PDF
No ratings yet
S.E Text Book.
38 pages
Software Engineering Notes
PDF
No ratings yet
Software Engineering Notes
55 pages
Se - Unit I
PDF
No ratings yet
Se - Unit I
17 pages
Samsung Lect 1 Introduction
PDF
No ratings yet
Samsung Lect 1 Introduction
62 pages
SE Study Material
PDF
No ratings yet
SE Study Material
112 pages
L1.fa14
PDF
No ratings yet
L1.fa14
115 pages
Se 1
PDF
No ratings yet
Se 1
48 pages
Notes SEv2 Merged
PDF
No ratings yet
Notes SEv2 Merged
268 pages
Cmp205-Software Engineering
PDF
No ratings yet
Cmp205-Software Engineering
169 pages
Software Engineering Book by Danny Dsouza
PDF
No ratings yet
Software Engineering Book by Danny Dsouza
169 pages
SE Unit 1 Part 1
PDF
No ratings yet
SE Unit 1 Part 1
44 pages
Five Models of Software Engineering
PDF
No ratings yet
Five Models of Software Engineering
8 pages
U1.software Proc - Models
PDF
No ratings yet
U1.software Proc - Models
72 pages
3CS4-07 Software Engineering Unit - 1 Notes
PDF
No ratings yet
3CS4-07 Software Engineering Unit - 1 Notes
30 pages
3cs4-07 Software Engineering Unit - 1 Notes
PDF
100% (2)
3cs4-07 Software Engineering Unit - 1 Notes
30 pages
Software Engineering Unit-1 Notes
PDF
No ratings yet
Software Engineering Unit-1 Notes
30 pages
Unit 1
PDF
No ratings yet
Unit 1
31 pages
Introduction To Software Engineering
PDF
No ratings yet
Introduction To Software Engineering
15 pages
Chapter-1
PDF
No ratings yet
Chapter-1
38 pages
Software Engineering: Program Educational Objectives Mappimg
PDF
No ratings yet
Software Engineering: Program Educational Objectives Mappimg
70 pages
Introduction To Software Engineering 2
PDF
No ratings yet
Introduction To Software Engineering 2
4 pages
week1
PDF
No ratings yet
week1
19 pages
Software Engineering - Notes
PDF
100% (4)
Software Engineering - Notes
172 pages
Topics in Software Engineering – Summary
PDF
No ratings yet
Topics in Software Engineering – Summary
43 pages
Scope of Software Engineering
PDF
No ratings yet
Scope of Software Engineering
35 pages
Software Engineering Notes
PDF
No ratings yet
Software Engineering Notes
47 pages
Definitions: Software Is More Than Just A Program Code. A Program Is An Executable
PDF
No ratings yet
Definitions: Software Is More Than Just A Program Code. A Program Is An Executable
115 pages
Software Engineering Over View
PDF
No ratings yet
Software Engineering Over View
96 pages
Chapter 1 An Introduction To Software Engineering
PDF
No ratings yet
Chapter 1 An Introduction To Software Engineering
9 pages
1.introduction To Software Engineering-1
PDF
No ratings yet
1.introduction To Software Engineering-1
11 pages
java solution
PDF
No ratings yet
java solution
70 pages
Abusive_Language_Detection_Chatbot_Project_Summary_Detailed
PDF
No ratings yet
Abusive_Language_Detection_Chatbot_Project_Summary_Detailed
6 pages
Abusive_Language_Detection_Chatbot_Project_Summary
PDF
No ratings yet
Abusive_Language_Detection_Chatbot_Project_Summary
3 pages
CN1,2,3(modified)
PDF
No ratings yet
CN1,2,3(modified)
7 pages
LAB-8 CN(modified
PDF
No ratings yet
LAB-8 CN(modified
4 pages
Computer Network Viva Questions
PDF
No ratings yet
Computer Network Viva Questions
9 pages