Showing posts with label CS 2301 - SOFTWARE ENGINEERING. Show all posts
Showing posts with label CS 2301 - SOFTWARE ENGINEERING. Show all posts

Sunday, August 3, 2014

Compare and contrast the different life cycle models

The comparision several different models of the software development life  cycle (SDLC). The SDLC is a structure imposed on the process of developing  software, from the scoping of requirements through analysis, design, implementation, and maintenance.
Top-Down and Bottom-Up Design
Top-down and bottom-up design represent two contrasting approaches for designing a large system. The top-down approach requires a complete design view of the system before any actual coding can begin. It takes the big-picture view of the system and breaks the problem apart into many subsystems that require more design detail. The overall perspective of the project is monolithic:

There is one design, and all modules are small parts of it. The top-down style of program design is traditionally associated with procedural languages. The bottom-up approach, in contrast, emphasizes assembling the big picture by completing many small pieces that work together. These components are then integrated into the larger system. Coding of individual modules, and their testing, commences before the entire design is complete. Proponents of the bottom-up approach argue that this produces reusable code that saves time later in the process. The bottom-up style of program design is traditionally associated with object-oriented languages such as C++ and Java.

In practice, some blend of top-down and bottom-up is a common compromise:

Project managers and architects work on the overall design even as development teams begin building modules and tools. This approach is sometimes called hybrid design or hybrid development.

The Waterfall Model
The waterfall model is one of the oldest, and perhaps the best-known, software  development method. It presents development as a sequential process, proceeding downhill through the phases in the sequence. W. W. Royce first explained the waterfall model in 1970, but he was criticizing the approach at the time, calling it risky and an invitation to failure. The waterfall model is considered one of the most direct approaches, with short development times and minimal costs. However, it does presume an unvarying target: The original specifications cannot change.

In the waterfall model, when a phase is completed, the phase is closed and cannot be revisited. This limitation has lead to widespread criticism of this approach. The software development process involves discovery, and the different phases of development often overlap. Critics maintain that the waterfall model limits options to correct mistakes: if a limitation of the requirements is discovered during the design phase, it is too late to fix it.
Several variations of the waterfall model address these criticisms by allowing some degree of feedback or overlap. These variants begin to blur the distinction between the waterfall model and the iterative processes.

Wednesday, July 16, 2014

UNIT – III ANALYSIS, DESIGN CONCEPTS AND PRINCIPLES

1. What are the elements of design model?
i. Data design             
ii. Architectural design                                                                                                 
iii. Interface design                                                                                         
iv. Component-level design

2. Define design process.
Design process is a sequence of steps carried through which the requirements are translated into a system or software model.

3. List the principles of a software design.
i. The design process should not suffer from “tunnel vision”
ii. The design should be traceable to the analysis model.
iii. The design should exhibit uniformity and integration.
iv. Design is not coding.
v. The design should not reinvent the wheel.

4. What is the benefit of modular design?
Changes made during testing and maintenance becomes manageable and they do not affect other modules.

5. What is a cohesive module?
A cohesive module performs only “one task” in software procedure with little interaction with other modules. In other words cohesive module performs only one thing.

6. What are the different types of Cohesion?
i. Coincidentally cohesive - The modules in which the set I\of tasks are related with each other loosely.
 ii. Logically cohesive – A module that performs the tasks that are logically related with each other.
 iii. Temporal cohesion – The module in which the tasks need to be executed in some specific time span.
 iv. Procedural cohesion – When processing elements of a module are related with one another and must be executed in some specific order.
                        v. Communicational cohesion – When the processing elements of a module share the data then such module is called communicational cohesive.

7. What is coupling?
Coupling is the measure of interconnection among modules in a program structure. It depends on the interface complexity between modules. 

Sunday, July 13, 2014

UNIT I SOFTWARE PRODUCT AND PROCESS

1. List the process maturity levels in SEIs CMM.
            Level 1: Initial - Few processes are defined and individual efforts are taken.
Level 2: Repeatable – To track cost schedule and functionality basic project   management processes are established.
Level 3:  Defined – The process is standardized, documented and followed.
Level 4: Managed – Both the software process and product are quantitatively understood and controlled using detailed measures.
Level 5: Optimizing – Establish mechanisms to plan and implement change. 

2. What is an effector  process?
The effector process is a process that verifies itself. The effector  process exists in certain criteria.

3. Define the computer based system.
The computer based system can be defined as “a set or an arrangement of elements that are organized to accomplish some predefined goal by processing   information”.

4. What does Verification represent?
Verification represents the set of activities that are carried out to confirm that the software correctly implements the specific functionality.

5.  What does Validation represent?
Validation represents the set of activities that ensure that the software that               has been built is satisfying the customer requirements.

6. What are the steps followed in testing?
1) Unit testing - The individual components are tested in this type of testing.
2) Module testing – Related collection of independent components are tested.
            3) Sub-system testing –Various modules are integrated into a subsystem and the whole subsystem is tested.
            4) System testing – The whole system is tested in this system.
            5) Acceptance testing – This type of testing involves testing of the system with customer data.

Saturday, July 12, 2014

CS 2301 - SOFTWARE ENGINEERING -Unit 1

1. What is software engineering?
                    Software engineering is a discipline in which theories, methods and tools  are applied to develop professional software.

2. What is Software?
                           Software is nothing but a collection of computer programs that are related documents that are indented to provide desired features, functionalities and better performance. 

3. What are the characteristics of the software?
               * Software is engineered, not manufactured.
                           * Software does not wear out.
               * Most software is custom built rather than being assembled from components.

 4. What are the various categories of software?
                          * System software
              * Application software
                          * Engineering/Scientific software
              * Embedded software
                          
  5. What are the challenges in software?
               * Copying with legacy systems.
                           * Heterogeneity challenge
               * Delivery times challenge.
  
   6. Define software process.
                            Software process is defined as the structured set of activities that are required to develop the software system.