Software Engineering 2071(II)

Tribhuwan University
Institute of Science and Technology
2071(II)
Bachelor Level / Sixth Semester / Science
Computer Science and Information Technology ( CSC-351 )
( Software Engineering )
Full Marks: 60
Pass Marks: 24
Time: 3 hours
Candidates are required to give their answers in their own words as far as practicable.
The figures in the margin indicate full marks.

Attempt any Ten questions.(10 x 6 = 60)

1. What are the different phases in software development life cycle? Explain.

6 marks view

System development life cycle is a very important method to develop an informative system. System development life cycle consist of six step and involves different persons. A system development life cycle work as an iterative model. Any change that is required in the system at any stage, the system development life cycle provide this facility to move back at any step to meet the requirements of the user’s.

The steps of system development life cycle are as follow:


1. Preliminary investigation/system planning: Preliminary investigation is the first step of system development life cycle. In this step we interview the user. The preliminary investigation step involves to finds a user requirement and present problem in the current system. In this step we determine the resources or technologies, the cost of the software. If the proposed system is accepted by the user then next phase is started otherwise repeat this step again and again to meet the user requirement.

2. Requirement analysis: In this step, system analyst study the operation of the system and their relationship within an outside the system, and study that where improvement are required and how system work. Requirement specification document is produce in this step.

3. System design: In this step new system is design to meet the requirements of the user. The design of a new system depends on the requirements indentified in system analysis phase. System design defines the display of the system, the output of system.

4. Software development: Actual coding of the program is done in this step. The program is checked by using a dummy data. Documentation is prepared to explain certain procedure.

5. System testing and integration: Program is tested individually to check the develop program work according to the requirement. After individual testing the program module are integrated and then integrated module is tested to check whether system is work according to specification. The system is checked with actual data by real user’s, and the result of the process is examines to ensure that the result is correct or not. If result is not correct or not according to requirement then adjustment is made in the program.

6. System implementation: In this step, the develop system is install and hand over to the user, and system user's are trained to operate the system carefully.

7. System maintenance: Maintenance of the system depends upon on modification and enhancements of the system. Maintenance of the system means that the current system working is effective even if system environment such as hardware, software is modified. The current system must up- to- date regularly.

2. Explain the software process model with example.

6 marks view

A software process model is an abstract representation of a process that presents a description of a process from some particular perspective. Process models may contain activities, which are part of the software process, software product, and the roles of people involved in software engineering. Some examples of the types of software process models that may be produced are:

  1. A workflow model: This shows the series of activities in the process along with their inputs, outputs and dependencies. The activities in this model perform human actions.
  2. 2. A dataflow or activity model: This represents the process as a set of activities, each of which carries out some data transformations. It shows how the input to the process, such as a specification is converted to an output such as a design. The activities here may be at a lower level than activities in a workflow model. They may perform transformations carried out by people or by computers.
  3. 3. A role/action model: This means the roles of the people involved in the software process and the activities for which they are responsible.

There are several various general models or paradigms of software development:

  1. The waterfall approach: This takes the above activities and produces them as separate process phases such as requirements specification, software design, implementation, testing, and so on. After each stage is defined, it is "signed off" and development goes onto the following stage.
  2. Evolutionary development: This method interleaves the activities of specification, development, and validation. An initial system is rapidly developed from a very abstract specification.
  3. Formal transformation: This method is based on producing a formal mathematical system specification and transforming this specification, using mathematical methods to a program. These transformations are 'correctness preserving.' This means that you can be sure that the developed programs meet its specification.
  4. System assembly from reusable components: This method assumes the parts of the system already exist. The system development process target on integrating these parts rather than developing them from scratch.

3. Explain the software specification, software validation and software evolution with example.

6 marks view

Software specification

software requirements specification (SRS) is a detailed description of a software system to be developed with its functional and non-functional requirements. The SRS is developed based the agreement between customer and contractors. It may include the use cases of how user is going to interact with software system. The software requirement specification document consistent of all necessary requirements required for project development. To develop the software system we should have clear understanding of Software system. To achieve this we need to continuous communication with customers to gather all requirements.

Software validation

Software validation is the process of checking the software to ensure that it works exactly according to the requirement specification. During software validation process, the software is tested with different types of users on actual working data. If software works properly with specified environment and actual operating data, then it is said to that the software confirms user requirement specification. It involves checking process such as inspection and reviews at the stage of the software process from the user requirement definition to program development. The majority of validation costs are incurred after implementation, when the operational system is tested. System should not be tested as a single unit. It should be performed in different stage.

Software evolution

Software Evolution refers to the process of developing software initially, then timely updating it for various reasons, i.e., to add new features or to remove obsolete functionalities etc. The evolution process includes fundamental activities of change analysis, release planning, system implementation and releasing a system to customers. 

The cost and impact of these changes are accessed to see how much system is affected by the change and how much it might cost to implement the change. If the proposed changes are accepted, a new release of the software system is planned. During release planning, all the proposed changes (fault repair, adaptation, and new functionality) are considered.  A design is then made on which changes to implement in the next version of the system. The process of change implementation is an iteration of the development process where the revisions to the system are designed, implemented and tested. 

Fig: Software evolution

4. What do you mean by project management? Explain the project planning and project scheduling with example.

6 marks view

Software Project Management (SPM) is a proper way of planning and leading software projects. It is a part of project management in which software projects are planned, implemented, monitored and controlled. Project management focuses on developing a product that will have a positive effect on an organization. Without project management, a software development team may begin working on a project without any clear vision or guidance, resulting in more frequent errors and confusion. Part of project management involves making everyone involved aware of the purpose of the project and what steps are required to meet the end goal. 

Project Planning

Project planning is an organized and integrated management process, which focus on activities required for successful completion of the project. It is concerned with identifying the activities, milestones and deliverables produced by the project. Project plan should include cost of various resources required to accomplish project.

Types of project plan:

1. Quality plan: It describes the quality procedures and standards that will be used in a project

2. Validation plan: It describes the approach, resources and schedule used for system validation

3. Configuration management plan:  It describes the configuration management procedures and structures to be used.

4. Maintenance plan: It predicts the maintenance requirements of the system, maintenance costs and effort required.

5. Staff development plan:  It describes how the skills and experience of the project team members will be developed.

Project Scheduling

Project scheduling involves separating the total work involved in a project into separate activities and judging the time required to complete these activities. In the project scheduling process project managers estimate the time and resources required to complete activities and organize them into a coherent sequence. Usually, some of activities can be carried out in parallel. Managers have to coordinate these parallel activities and organize the work so that the labour is used optimally.


Fig: Project scheduling process

Project schedules are usually represented as a set of charts showing the work breakdown, activities dependencies and staff allocations. Bar charts (for example Gantt chart) and activity networks are graphical notations that are used to illustrate the project schedule. Bar charts show who is responsible for each activity and when the activity is scheduled to begin and end. Activity networks show the dependencies between the different activities.

5. What do you mean by software requirement? Explain the requirements engineering process with example.

6 marks view

The requirement for a system are the descriptions of what the system should do - the services that it provides and the constraints on its operation. Requirement may range from a high-level abstract statement of a services or of a system constraint to detailed mathematical specification.

Requirement engineering process:

Requirement engineering is the process of defining, documenting and maintaining the requirements in the engineering design process. The requirement engineering process consists of the following activities:

Fig: The requirements engineering process.

1. Feasibility study: An estimate is made of whether the identified can be achieved using the current software and hardware technologies, under the current budget, etc. The feasibility study should be cheap and quick; it should inform the decision of whether or not to go ahead with the project.

2. Requirements elicitation and analysis: This is the process of deriving the system requirements through observation of existing systems, discussions with stakeholders, etc. This may involve the development of one or more system models and prototypes that can help us understanding the system to be specified.

3. Requirements specification: It’s the activity of writing down the information gathered during the elicitation and analysis activity into a document that defines a set of requirements. Two types of requirements may be included in this document; user and system requirements.

4. Requirements validation: It’s the process of checking the requirements for realism, consistency and completeness. During this process, our goal is to discover errors in the requirements document. When errors are found, it must be modified to correct these problems.

6. Define formal specification. Explain the formal specification method used in software process.

6 marks view

formal software specification is a statement expressed in a language whose vocabulary, syntax, and semantics are formally defined. It is a technique for unambiguous specification of software to be build. The specification languages cannot be based on natural language; it must be based on mathematics because natural language specification are informal and usually contain ambiguities.

Fig: Formal specification in software process

The system requirements and system design are expressed in details and carefully analyzed and checked before implementation begins. A formal specification of software is developed after the system requirement have been specified but before the detailed system design.

The main benefit of formal specification is its ability to uncover problem and ambiguities in the requirements specification. It forces to system analysis to remove errors and inconsistencies in the requirement specification.

Two fundamental methods for formal specification are:

1. Algebraic Approach: In algebraic approach, system is described in terms operation and their relationship. It consists of two parts: signature, which determines syntax of operation and an equation, which defines the semantics of operations.

2. Model-Based Approach: In model based approach, the abstract model of system is built using mathematical construct such as set theory, function theory and logic. It specifies the operations performed on abstract model.

7. Explain the software maintenance and its types.

6 marks view

Software Maintenance is the process of modifying a software product after it has been delivered to the customer. The main purpose of software maintenance is to modify and update software application after delivery to correct faults and to improve performance.

Following are some types of maintenance:

1. Corrective Maintenance - This includes modifications and updations done in order to correct or fix problems, which are either discovered by user or concluded by user error reports.

2. Adaptive Maintenance - This includes modifications and updations applied to keep the software product up-to date and tuned to the ever changing world of technology and business environment.

3. Perfective Maintenance - This includes modifications and updates done in order to keep the software usable over long period of time. It includes new features, new user requirements for refining the software and improve its reliability and performance.

4. Preventive Maintenance - This includes modifications and updations to prevent future problems of the software. It aims to attend problems, which are not significant at this moment but may cause serious issues in future.

8. Explain the clean room software development with example.

6 marks view

Cleanroom approach for software development is the way of software development in which software defects are avoided by using formal methods of development and rigorous inspection process. The objective of this approach is to development software with zero-defect.

The cleanroom approach to software development is based on five strategies:

1. Formal specification: The software to be developed is formally specified.

2. Incremental development: The software is partitioned into increments that are developed and validated separately using the Cleanroom process. These increments are specified, with customer input, at an early stage in the process.

3. Structured programming: Only a limited number of control and data abstraction constructs are used.

4. Static verification: The developed software is statically verified using rigorous software inspections. There is no unit or module testing process for code components.

5. Statistical testing of the system: The integrated software increment is tested statistically to determine its reliability. These statistical tests are based on an operational profile, which is developed in parallel with the system specification.

Cleanroom development

Fig: The cleanroom development process

9. Explain the validation planning steps.

6 marks view

10. Explain the security assessment.

6 marks view

Security assessment is a measurement of the security posture of a system or organization. The security posture is the way information security is implemented. Security assessments are risk-based assessments, due to their focus on vulnerabilities and impact.

The assessment of system security is increasingly important as more and more critical systems are Internet-enabled and so can be accessed by anyone with a network connection. There are daily stories of attacks on web-based systems, and viruses and worms are regularly distributed using Internet protocols. The verification and validation processes for web-based systems must focus on security assessment, where the ability of the system to resist different types of attack is tested.

Approaches to security checking:

1. Experience-based validation: In this case, the system is analyzed against types of attack that are known to the validation team. This type of validation is usually carried out in conjunction with tool-based validation. This approach may use all system documentation and could be part of other system reviews that check for errors and omissions.

2. Tool-based validation: In this case, various security tools such as password checkers are used to analyze the system. Password checkers detect insecure passwords such as common names or strings of consecutive letters.

3. Tiger teams: In this case, a team is set up and given the objective of breaching the system security. They simulate attacks on the system and use their ingenuity to discover new ways to compromise the system security.

4. Formal verification: A system can be verified against a formal security specification. It is very difficult for end-users of a system to verify its security.

11. Explain the software quality standard with example.

6 marks view

Software engineering is a vast field, and the products created by software engineers must be of upmost quality. For this quality to be achieved, correct measures and grading standards must be followed, so as to achieve excellent products. There are many different quality standards put in place. There are a number of standards and organizations that govern quality standards for software engineering. This includes:

·  Standard governing organizations software engineering: this are organizations established to create and monitor standards used in governing software engineering. Some organizations include:

    1. ISO: International Organization for Standardization

    2. SEI: Software Engineering Institute (Carnegie-Mellon University)

    3. IEEE: Institute of Electrical and Electronics Engineers Computer Society Software Engineering Standards

    4. ANSI: American National Standards Institute

    5. EIA: Electronic Industries Association

·  Quality standards for software engineering: these are standard written down, that must be followed by software engineers and engineering firms to achieve quality in their products. Below are some major standards in the software engineering industry:

    1. Capability Maturity Model (CMM)

    2. ISO 9000 family

    3. IEEE STD 1061-1998 Standard

    4. FAA-STD-018 and -018a

     5. ANSI/IEEE std 730- 1998

12. Write short notes on (any two):

        a. CASE tools

        b. Reverse Engineering

        c. Reliability validation

6 marks view

a. CASE tools

Computer-aided software engineering (CASE) tools are software programs that automate or support the drawing and analysis of system models and provide for the translation of system models into application programs. Some CASE tools also provide prototyping and code generation capabilities.

A CASE repository is a system developers’ database. It is a place where developers can store system models, detailed descriptions and specifications, and other products of system development. Synonyms include dictionary and encyclopedia.

Types of CASE tools:

  • Diagramming tools
  • Dictionary tools
  • Design tools
  • Quality management tools
  • Documentation tools
  • Design and code generator tools

b. Reverse Engineering

The objective of reverse engineering is to derive the design and specification of a system from its source code. It is the process of analyzing a program in an effort to create a representation of the program at a higher level of abstraction than source. The program itself is unchanged by the reverse engineering process. The software source code is usually available as the input.

Reverse engineering process:

c. Reliability validation

Reliability validation is the process of measuring the reliability of a system. To validate that the system meets these requirements, we have to measure the reliability of the system as seen by typical system user.

Reliability validation process:

  1. Establish the operational profile for the system.

  2. Construct test data reflecting the operational profile

  3. Test the system and observe the number of failures and the times of these failures.

  4. Compute the reliability after a statistically significant number of failures have been observed.