Notes on SOFTWARE ENGINEERING


Que 1. What is Software Engineering?
 Ans.: Software Engineering is the discipline that aims to provide methods & procedures for developing software system.
It is the application of a systematic disciplined & quantifiable approach of development & maintenance of software. It includes different techniques & procedures of “Software development process to improve the reliability of software”.

In other words, software Engineering is the application of science & maths by which the capabilities of computer equipments are made useful to man via computer programs.

Que 2. What is Software Development Life Cycle?
OR
Explain in detail the different stages of SDLC.
 Ans.: It is a concept of providing a complete support to a software product throughout all the stages of its evolution
The systems development life cycle (SDLC) is a conceptual model used in project management that describes the stages involved in an information system development project, from an initial feasibility study to maintenance of the completed application.
The SDLC Waterfall Model:

Small to medium database software projects are generally broken down into six stages:
   Here the outputs from a specific stage serve as the initial inputs for the following stage.
 Planning Stage:

The planning stage establishes a bird's eye view of the software product, and uses this to establish the basic project structure. This stage is used to evaluate feasibility and risks associated with the project, and describe appropriate management and technical approaches.

The most critical section of the project plan is a listing of high-level product requirements, also referred to as goals. All the software product requirements to be developed during the requirements definition stage flow from one or more of these goals. The minimum information for each goal consists of a title and textual description, although additional information and references to external documents may be included.
The outputs of the project planning stage are the configuration management plan, the quality assurance plan, and the project plan and schedule.
 Requirements Definition Stage:

The requirements gathering process takes as its input the goals identified in the project plan. Each goal is refined into a set of one or more requirements. These requirements define the major functions of the application, operational data areas and reference data areas. Each of these definitions is termed a Requirement. Requirements are identified by unique requirement identifiers and contain a requirement title and textual description.

These requirements are fully described in the Requirements Document and the Requirements Traceability Matrix (RTM). The requirements document contains complete description of each requirement, including diagrams and references to external documents as necessary.
Note: detailed listings of database tables and fields are not included in the requirements document.
The outputs of the requirements definition stage include:
i) The requirements document
ii) The RTM
iii) An updated project plan.
 Design Stage:

The design stage takes as its initial input the requirements identified in the approved requirements document. Design elements describe the desired software features in detail, and generally include functional hierarchy diagrams, screen layout diagrams, tables of business rules, business process diagrams, pseudo code, and a complete entity-relationship diagram with a full data dictionary. These design elements are intended to describe the software in sufficient detail so that the skilled programmers may develop the software with minimal additional input.
 The outputs of the design stage:
i) The design document
ii) An updated RTM,
iii) Updated project plan.

Development Stage:

Here for each design element, a set of one or more software artefacts will be produced. Software artefacts include but are not limited to menus, data management forms, data reporting formats, and specialized procedures and functions. Appropriate test cases will be developed for each set of functionally related software artefacts, and an online help system will be developed to guide users in their interactions with the software.

Diagram:
 The outputs of the development stage include:
i) A fully functional set of software that satisfies the requirements and design elements previously documented.
ii) An online help system that describes the operation of the software.
iii) An implementation map that identifies the primary code entry points for all major system functions.
iv) A test plan that describes the test cases to be used to validate the correctness and completeness of the software.
v) An updated RTM.
vi) An updated project plan.

Integration & Test Stage:
During the integration and test stage, the software artefacts, online help, and test data are migrated from the development environment to a separate test environment. At this point, all test cases are run to verify the correctness and completeness of the software. Successful execution of the test module confirms a robust and complete migration capability. During this stage, reference data is finalized for production use and production users are identified and linked to their appropriate roles. The final reference data (or links to reference data source files) and production user lists are compiled into the Production Initiation Plan.
The outputs of the integration and test stage include:
i) An integrated set of software.
ii) An online help system.
iii) An implementation map.
iv) A production initiation plan that describes reference data and production users.
v) An acceptance plan which contains the final module of test cases.
vi) An updated project plan.
 Installation & Acceptance Stage:
During the installation and acceptance stage, the software artefacts, online help, and initial production data are loaded onto the production server, all test cases are run to verify the correctness and completeness of the software. After customer personnel have verified that the initial production data load is correct and the test suite has been executed with satisfactory results, the customer formally accepts the delivery of the software.
Diagram:
The primary outputs of the installation and acceptance stage include:
i) A production application.
ii) A completed acceptance test suite.
iii) A memorandum of customer acceptance of the software.

Que 3. Define prototyping model.
Ans.: The prototyping model begins with the requirements gathering. The developer and the customer meet and define the objectives for the software, identify the needs, etc. A ‘quick design’ is then created. This design focuses on those aspects of the software that will be visible to the customer. It then leads to the construction of a prototype. The prototype is then checked by the customer and any modifications or changes that are required are made to the prototype. Looping takes place in this process and better versions of the prototype are created. These are continuously shown to the user so that any new changes can be updated in the prototype. This process continues till the user is satisfied with the system. Once a user is satisfied, the prototype is converted to the actual system with all considerations for quality and security.
The prototype is considered as the ‘first system’. It is advantageous because both the customers and the developers get a feel of the actual system. But there are certain problems with the prototyping model too.
i) The prototype is usually created without taking into consideration overall software quality.
ii) When the customer sees a working model in the form of a prototype, and then is told that the actual software is not created, the customer can get irritated.
iii) Since the prototype is to be created quickly, the developer will use whatever choices he has at that particular time e.g. he may not know a good programming language, but later may learn. He then cannot change the whole system for the new programming language). Thus the prototype may be created with less-than-ideal choices.

Que 4. Write a short note on Knowledge Engineering.
Ans.: Knowledge Engineering (KE) refers to the building, maintaining and development of knowledge-based systems. It has a great deal in common with software engineering, and is related to many computer science domains such as artificial intelligence, databases, data mining, expert systems, decision support systems and geographic information systems. Knowledge engineering is also related to mathematical logic and is structured according to our understanding of how human reasoning and logic works.
Various activities of KE specific for the development of a knowledge-based system are:
Assessment of the problem
• Development of a knowledge-based system shell / structure
• Implementation of the structured knowledge into knowledge –bases
• Acquisition and structuring of the related information, knowledge and specific preferences
• Testing and validation of the inserted knowledge
• Integration and maintenance of the system
• Revision and evaluation of the system

Knowledge Engineering Principles: - Since the mid – 1980s, knowledge engineers have developed a number of principles, methods and tools that considerably improved the process of knowledge acquisition and ordering. Some of the key principles are summarized as follows:
• Knowledge engineers acknowledge that there are different types of knowledge and that the right approach and technique should be used for the knowledge required.
• Knowledge engineers acknowledge that there are different types of experts and expertise, and therefore the methods should be chosen appropriately.
• Knowledge engineers recognize that there are different ways of representing knowledge, which can aid the acquisition, validation and re-use of knowledge.
• Knowledge engineers recognize that there are different ways of using knowledge, so that the acquisition process can be guided by the project aims (goal-oriented).
• Knowledge engineers use structured methods to increase the efficiency of the acquisition process.

Views of Knowledge Engineering: - There are two main views to knowledge engineering:
Transfer View – This is the traditional view. In this view, we apply conventional knowledge engineering techniques to transfer human knowledge into artificial intelligence systems.
Modelling View – This is the alternative view. In this view, the knowledge engineer attempts to model the knowledge and problem solving techniques of the domain expert into the artificial intelligent system.
                                                                                                                                             
Que 5. What is Software Requirement?
Ans.: In software engineering, requirements analysis is used for determining the needs or conditions to meet for a new or altered product, taking account of the possibly conflicting requirements of the various stakeholders or users. Systematic requirements analysis is also known as requirements engineering. It is sometimes referred loosely by names such as requirements gathering, requirements capture, or requirements specification. Requirements analysis is critical to the success of a development project.
Requirements must be actionable, measurable, testable, related to identified business needs or opportunities, and defined to a level of detail sufficient for system design.
Conceptually, requirements analysis includes three types of activity:
Eliciting Requirements: the task of communicating with customers and users to determine what their requirements are. This is sometimes also called requirements gathering.
Analyzing Requirements: determining whether the stated requirements are unclear, incomplete, ambiguous, or contradictory, and then resolving these issues.
Recording Requirements: Requirements may be documented in various forms, such as natural-language documents, use cases, user stories, or process specifications.