SE – Exams Questions with Answers

SE Exams Questions with Answers ”; Previous Next These selected questions and answers are prepared from Software Engineering Exam point of view and will also help in quick revision to get good marks in Software Engineering Examination. These questions has been prepared for the computer science graduates (B.C.A, M.C.A, B.Tech, B.E. and so…), to help them understand and revise the basic to advanced concepts related to Software Engineering. Following is the selected list of questions and their answers and will help in quick revision to get good marks in Software Engineering Examination. Software Engineering Overview Explain the meaning of software danger and its importance in concerned of software engineering. Describe the importance of software Engineering? What should be steps taken under the process of developing a software system. Explain the principles which play a major role in development of software. Explain the design principle of software Engineering. Software Engineering Process Describe the components and quality which is necessary for the documents of software specification. What are the benefits of metrics in software engineering? Explain the term Configuration management. Explain concept of data flow diagram. Write a short note on review process. Define the blue print methodology. Give your views about what is more important – the product or the process. Software Engineering Quality Write a short note on Software Testing process. What are the differences between verification and validation in software development? Give the benefits of verification and validation in software development and tell about the techniques of verification and validation in the process of software development. Define the meaning of software quality and detail the factors which affects the quality not productivity of a software product? Give the detail of quality parameters which are used in a software system. Define the meaning of quality assurance. Explain the role of testing in Quality assurance. What are the difference between alpha testing and Beta testing? What are the difference between white box testing and black box testing techniques? Explain software reliability and define how software and hardware reliability related to each other. Write short note on Software failure, Black box testing, White box testing and Stress Testing. What are test cases in Software Engineering? Software Engineering Models Explain the various types of models which used in software Engineering. Explain the generic views of software Engineering. What is Coding Standard? Explain the objectives of a)coding b) structured programming. What is the process of implementation of a software? Explain the term, software maintenance. Explain the waterfall model in detail. Give a description of prototyping model. Print Page Previous Next Advertisements ”;

Software Implementation

Software Implementation ”; Previous Next In this chapter, we will study about programming methods, documentation and challenges in software implementation. Structured Programming In the process of coding, the lines of code keep multiplying, thus, size of the software increases. Gradually, it becomes next to impossible to remember the flow of program. If one forgets how software and its underlying programs, files, procedures are constructed it then becomes very difficult to share, debug and modify the program. The solution to this is structured programming. It encourages the developer to use subroutines and loops instead of using simple jumps in the code, thereby bringing clarity in the code and improving its efficiency Structured programming also helps programmer to reduce coding time and organize code properly. Structured programming states how the program shall be coded. Structured programming uses three main concepts: Top-down analysis – A software is always made to perform some rational work. This rational work is known as problem in the software parlance. Thus it is very important that we understand how to solve the problem. Under top-down analysis, the problem is broken down into small pieces where each one has some significance. Each problem is individually solved and steps are clearly stated about how to solve the problem. Modular Programming – While programming, the code is broken down into smaller group of instructions. These groups are known as modules, subprograms or subroutines. Modular programming based on the understanding of top-down analysis. It discourages jumps using ‘goto’ statements in the program, which often makes the program flow non-traceable. Jumps are prohibited and modular format is encouraged in structured programming. Structured Coding – In reference with top-down analysis, structured coding sub-divides the modules into further smaller units of code in the order of their execution. Structured programming uses control structure, which controls the flow of the program, whereas structured coding uses control structure to organize its instructions in definable patterns. Functional Programming Functional programming is style of programming language, which uses the concepts of mathematical functions. A function in mathematics should always produce the same result on receiving the same argument. In procedural languages, the flow of the program runs through procedures, i.e. the control of program is transferred to the called procedure. While control flow is transferring from one procedure to another, the program changes its state. In procedural programming, it is possible for a procedure to produce different results when it is called with the same argument, as the program itself can be in different state while calling it. This is a property as well as a drawback of procedural programming, in which the sequence or timing of the procedure execution becomes important. Functional programming provides means of computation as mathematical functions, which produces results irrespective of program state. This makes it possible to predict the behavior of the program. Functional programming uses the following concepts: First class and High-order functions – These functions have capability to accept another function as argument or they return other functions as results. Pure functions – These functions do not include destructive updates, that is, they do not affect any I/O or memory and if they are not in use, they can easily be removed without hampering the rest of the program. Recursion – Recursion is a programming technique where a function calls itself and repeats the program code in it unless some pre-defined condition matches. Recursion is the way of creating loops in functional programming. Strict evaluation – It is a method of evaluating the expression passed to a function as an argument. Functional programming has two types of evaluation methods, strict (eager) or non-strict (lazy). Strict evaluation always evaluates the expression before invoking the function. Non-strict evaluation does not evaluate the expression unless it is needed. λ-calculus – Most functional programming languages use λ-calculus as their type systems. λ-expressions are executed by evaluating them as they occur. Common Lisp, Scala, Haskell, Erlang and F# are some examples of functional programming languages. Programming style Programming style is set of coding rules followed by all the programmers to write the code. When multiple programmers work on the same software project, they frequently need to work with the program code written by some other developer. This becomes tedious or at times impossible, if all developers do not follow some standard programming style to code the program. An appropriate programming style includes using function and variable names relevant to the intended task, using well-placed indentation, commenting code for the convenience of reader and overall presentation of code. This makes the program code readable and understandable by all, which in turn makes debugging and error solving easier. Also, proper coding style helps ease the documentation and updation. Coding Guidelines Practice of coding style varies with organizations, operating systems and language of coding itself. The following coding elements may be defined under coding guidelines of an organization: Naming conventions – This section defines how to name functions, variables, constants and global variables. Indenting – This is the space left at the beginning of line, usually 2-8 whitespace or single tab. Whitespace – It is generally omitted at the end of line. Operators – Defines the rules of writing mathematical, assignment and logical operators. For example, assignment operator ‘=’ should have space before and after it, as in “x = 2”. Control Structures – The rules of writing if-then-else, case-switch, while-until and for control flow statements solely and in nested fashion. Line length and wrapping – Defines how many characters should be there in one line, mostly a line is 80 characters long. Wrapping defines how a line should be wrapped, if is too long. Functions – This defines how functions should be declared and invoked, with and without parameters. Variables – This mentions how variables of different data types are declared and defined. Comments – This is one of the important coding components, as the comments included in the code describe what the code actually does and all other associated descriptions. This section also

SE – Interview Questions

Software Engineering Interview Questions ”; Previous Next Dear readers, these Software Engineering Interview Questions have been designed especially to get you acquainted with the nature of questions you may encounter during your interview for the subject of Software Engineering. As per my experience, good interviewers hardly planned to ask any particular question during your interview, normally questions start with some basic concept of the subject and later they continue based on further discussion and what you answer: Q.What is computer software? A. Computer software is a complete package, which includes software program, its documentation and user guide on how to use the software. Q.Can you differentiate computer software and computer program? A. A computer program is piece of programming code which performs a well defined task where as software includes programming code, its documentation and user guide. Q.What is software engineering? A. Software engineering is an engineering branch associated with software system development. Q.When you know programming, what is the need to learn software engineering concepts? A. A person who knows how to build a wall may not be good at building an entire house. Likewise, a person who can write programs may not have knowledge of other concepts of Software Engineering. The software engineering concepts guide programmers on how to assess requirements of end user, design the algorithms before actual coding starts, create programs by coding, testing the code and its documentation. Q.What is software process or Software Development Life Cycle (SDLC)? A.Software Development Life Cycle, or software process is the systematic development of software by following every stage in the development process namely, Requirement Gathering, System Analysis, Design, Coding, Testing, Maintenance and Documentation in that order. Q.What are SDLC models available? A. There are several SDLC models available such as Waterfall Model, Iterative Model, Spiral model, V-model and Big-bang Model etc. Q.What are various phases of SDLC? A. The generic phases of SDLC are: Requirement Gathering, System Analysis and Design, Coding, Testing and implementation. The phases depend upon the model we choose to develop software. Q.Which SDLC model is the best? A. SDLC Models are adopted as per requirements of development process. It may very software-to-software to ensuring which model is suitable. We can select the best SDLC model if following answers are satisfied – Is SDLC suitable for selected technology to implement the software ? Is SDLC appropriate for client’s requirements and priorities ? Is SDLC model suitable for size and complexity of the software ? Is the SDLC model suitable for type of projects and engineering we do ? Is the SDLC appropriate for the geographically co-located or dispersed developers ? Q.What is software project management? A. Software project management is process of managing all activities like time, cost and quality management involved in software development. Q.Who is software project manager? A. A software project manager is a person who undertakes the responsibility of carrying out the software project. Q.What does software project manager do? A. Software project manager is engaged with software management activities. He is responsible for project planning, monitoring the progress, communication among stakeholders, managing risks and resources, smooth execution of development and delivering the project within time, cost and quality contraints. Q.What is software scope? A. Software scope is a well-defined boundary, which encompasses all the activities that are done to develop and deliver the software product. The software scope clearly defines all functionalities and artifacts to be delivered as a part of the software. The scope identifies what the product will do and what it will not do, what the end product will contain and what it will not contain. Q.What is project estimation? A. It is a process to estimate various aspects of software product in order to calculate the cost of development in terms of efforts, time and resources. This estimation can be derived from past experience, by consulting experts or by using pre-defined formulas. Q.How can we derive the size of software product? A. Size of software product can be calculated using either of two methods – Counting the lines of delivered code Counting delivered function points Q.What are function points? A. Function points are the various features provided by the software product. It is considered as a unit of measurement for software size. Q.What are software project estimation techniques available? A. There are many estimation techniques available.The most widely used are – Decomposition technique (Counting Lines of Code and Function Points) Empirical technique (Putnam and COCOMO). Q.What is baseline? A. Baseline is a measurement that defines completeness of a phase. After all activities associated with a particular phase are accomplished, the phase is complete and acts as a baseline for next phase. Q.What is Software configuration management? A. Software Configuration management is a process of tracking and controlling the changes in software in terms of the requirements, design, functions and development of the product. Q.What is change control? A. Change control is function of configuration management, which ensures that all changes made to software system are consistent and made as per organizational rules and regulations. Q.How can you measure project execution? A. We can measure project execution by means of Activity Monitoring, Status Reports and Milestone Checklists. Q.Mention some project management tools. A. There are various project management tools used as per the requirements of software project and organization policies. They include Gantt Chart, PERT Chart, Resource Histogram, Critical Path Analysis, Status Reports, Milestone Checklists etc. Q.What are software requirements? A. Software requirements are functional description of proposed software system. Requirements are assumed to be the description of target system, its functionalities and features. Requirements convey the expectations of users from the system. Q.What is feasibility study? A. It is a measure to assess how practical and beneficial the software project development will be for an organization. The software analyzer conducts a thorough study to understand economic, technical and operational feasibility of the project. Economic – Resource transportation, cost for training, cost of additional utilities and tools and overall estimation of costs and

Analysis & Design Tools

Software Analysis & Design Tools ”; Previous Next Software analysis and design includes all activities, which help the transformation of requirement specification into implementation. Requirement specifications specify all functional and non-functional expectations from the software. These requirement specifications come in the shape of human readable and understandable documents, to which a computer has nothing to do. Software analysis and design is the intermediate stage, which helps human-readable requirements to be transformed into actual code. Let us see few analysis and design tools used by software designers: Data Flow Diagram Data flow diagram is graphical representation of flow of data in an information system. It is capable of depicting incoming data flow, outgoing data flow and stored data. The DFD does not mention anything about how data flows through the system. There is a prominent difference between DFD and Flowchart. The flowchart depicts flow of control in program modules. DFDs depict flow of data in the system at various levels. DFD does not contain any control or branch elements. Types of DFD Data Flow Diagrams are either Logical or Physical. Logical DFD – This type of DFD concentrates on the system process, and flow of data in the system.For example in a Banking software system, how data is moved between different entities. Physical DFD – This type of DFD shows how the data flow is actually implemented in the system. It is more specific and close to the implementation. DFD Components DFD can represent Source, destination, storage and flow of data using the following set of components – Entities – Entities are source and destination of information data. Entities are represented by a rectangles with their respective names. Process – Activities and action taken on the data are represented by Circle or Round-edged rectangles. Data Storage – There are two variants of data storage – it can either be represented as a rectangle with absence of both smaller sides or as an open-sided rectangle with only one side missing. Data Flow – Movement of data is shown by pointed arrows. Data movement is shown from the base of arrow as its source towards head of the arrow as destination. Levels of DFD Level 0 – Highest abstraction level DFD is known as Level 0 DFD, which depicts the entire information system as one diagram concealing all the underlying details. Level 0 DFDs are also known as context level DFDs. Level 1 – The Level 0 DFD is broken down into more specific, Level 1 DFD. Level 1 DFD depicts basic modules in the system and flow of data among various modules. Level 1 DFD also mentions basic processes and sources of information. Level 2 – At this level, DFD shows how data flows inside the modules mentioned in Level 1. Higher level DFDs can be transformed into more specific lower level DFDs with deeper level of understanding unless the desired level of specification is achieved. Structure Charts Structure chart is a chart derived from Data Flow Diagram. It represents the system in more detail than DFD. It breaks down the entire system into lowest functional modules, describes functions and sub-functions of each module of the system to a greater detail than DFD. Structure chart represents hierarchical structure of modules. At each layer a specific task is performed. Here are the symbols used in construction of structure charts – Module – It represents process or subroutine or task. A control module branches to more than one sub-module. Library Modules are re-usable and invokable from any module. Condition – It is represented by small diamond at the base of module. It depicts that control module can select any of sub-routine based on some condition. Jump – An arrow is shown pointing inside the module to depict that the control will jump in the middle of the sub-module. Loop – A curved arrow represents loop in the module. All sub-modules covered by loop repeat execution of module. Data flow – A directed arrow with empty circle at the end represents data flow. Control flow – A directed arrow with filled circle at the end represents control flow. HIPO Diagram HIPO (Hierarchical Input Process Output) diagram is a combination of two organized method to analyze the system and provide the means of documentation. HIPO model was developed by IBM in year 1970. HIPO diagram represents the hierarchy of modules in the software system. Analyst uses HIPO diagram in order to obtain high-level view of system functions. It decomposes functions into sub-functions in a hierarchical manner. It depicts the functions performed by system. HIPO diagrams are good for documentation purpose. Their graphical representation makes it easier for designers and managers to get the pictorial idea of the system structure. In contrast to IPO (Input Process Output) diagram, which depicts the flow of control and data in a module, HIPO does not provide any information about data flow or control flow. Example Both parts of HIPO diagram, Hierarchical presentation and IPO Chart are used for structure design of software program as well as documentation of the same. Structured English Most programmers are unaware of the large picture of software so they only rely on what their managers tell them to do. It is the responsibility of higher software management to provide accurate information to the programmers to develop accurate yet fast code. Other forms of methods, which use graphs or diagrams, may are sometimes interpreted differently by different people. Hence, analysts and designers of the software come up with tools such as Structured English. It is nothing but the description of what is required to code and how to code it. Structured English helps the programmer to write error-free code. Other form of methods, which use graphs or diagrams, may are sometimes interpreted differently by different people. Here, both Structured English and Pseudo-Code tries to mitigate that understanding gap. Structured English is the It uses plain English words in structured programming paradigm. It is not the ultimate code but a kind of description

Software Development Life Cycle

Software Development Life Cycle ”; Previous Next Software Development Life Cycle, SDLC for short, is a well-defined, structured sequence of stages in software engineering to develop the intended software product. SDLC Activities SDLC provides a series of steps to be followed to design and develop a software product efficiently. SDLC framework includes the following steps: Communication This is the first step where the user initiates the request for a desired software product. He contacts the service provider and tries to negotiate the terms. He submits his request to the service providing organization in writing. Requirement Gathering This step onwards the software development team works to carry on the project. The team holds discussions with various stakeholders from problem domain and tries to bring out as much information as possible on their requirements. The requirements are contemplated and segregated into user requirements, system requirements and functional requirements. The requirements are collected using a number of practices as given – studying the existing or obsolete system and software, conducting interviews of users and developers, referring to the database or collecting answers from the questionnaires. Feasibility Study After requirement gathering, the team comes up with a rough plan of software process. At this step the team analyzes if a software can be made to fulfill all requirements of the user and if there is any possibility of software being no more useful. It is found out, if the project is financially, practically and technologically feasible for the organization to take up. There are many algorithms available, which help the developers to conclude the feasibility of a software project. System Analysis At this step the developers decide a roadmap of their plan and try to bring up the best software model suitable for the project. System analysis includes Understanding of software product limitations, learning system related problems or changes to be done in existing systems beforehand, identifying and addressing the impact of project on organization and personnel etc. The project team analyzes the scope of the project and plans the schedule and resources accordingly. Software Design Next step is to bring down whole knowledge of requirements and analysis on the desk and design the software product. The inputs from users and information gathered in requirement gathering phase are the inputs of this step. The output of this step comes in the form of two designs; logical design and physical design. Engineers produce meta-data and data dictionaries, logical diagrams, data-flow diagrams and in some cases pseudo codes. Coding This step is also known as programming phase. The implementation of software design starts in terms of writing program code in the suitable programming language and developing error-free executable programs efficiently. Testing An estimate says that 50% of whole software development process should be tested. Errors may ruin the software from critical level to its own removal. Software testing is done while coding by the developers and thorough testing is conducted by testing experts at various levels of code such as module testing, program testing, product testing, in-house testing and testing the product at user’s end. Early discovery of errors and their remedy is the key to reliable software. Integration Software may need to be integrated with the libraries, databases and other program(s). This stage of SDLC is involved in the integration of software with outer world entities. Implementation This means installing the software on user machines. At times, software needs post-installation configurations at user end. Software is tested for portability and adaptability and integration related issues are solved during implementation. Operation and Maintenance This phase confirms the software operation in terms of more efficiency and less errors. If required, the users are trained on, or aided with the documentation on how to operate the software and how to keep the software operational. The software is maintained timely by updating the code according to the changes taking place in user end environment or technology. This phase may face challenges from hidden bugs and real-world unidentified problems. Disposition As time elapses, the software may decline on the performance front. It may go completely obsolete or may need intense upgradation. Hence a pressing need to eliminate a major portion of the system arises. This phase includes archiving data and required software components, closing down the system, planning disposition activity and terminating system at appropriate end-of-system time. Software Development Paradigm The software development paradigm helps developer to select a strategy to develop the software. A software development paradigm has its own set of tools, methods and procedures, which are expressed clearly and defines software development life cycle. A few of software development paradigms or process models are defined as follows: Waterfall Model Waterfall model is the simplest model of software development paradigm. It says the all the phases of SDLC will function one after another in linear manner. That is, when the first phase is finished then only the second phase will start and so on. This model assumes that everything is carried out and taken place perfectly as planned in the previous stage and there is no need to think about the past issues that may arise in the next phase. This model does not work smoothly if there are some issues left at the previous step. The sequential nature of model does not allow us go back and undo or redo our actions. This model is best suited when developers already have designed and developed similar software in the past and are aware of all its domains. Iterative Model This model leads the software development process in iterations. It projects the process of development in cyclic manner repeating every step after every cycle of SDLC process. The software is first developed on very small scale and all the steps are followed which are taken into consideration. Then, on every next iteration, more features and modules are designed, coded, tested and added to the software. Every cycle produces a software, which is complete in itself and has more features and capabilities than that of the