Software Engineering for MBA 3rd Semester Bnagalore University

Embed Size (px)

Citation preview

  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    1/33

    1) Coupling:Measures the strength of all relationships between functional units

    Of the two properties, coupling is easier to measure and understand,

    because it is more mechanical in nature and requires less interpretation. Suppose there are three

    components A, B, and C. As behavior depends upon B in some way (any way), As behavior

    depends upon C in some way, and the behavior of B and C do not appear to depend upon

    anything else. Thats pretty much it, thats the coupling of the system according to our definition,

    and its the sort of thing that a machine can figure out by simple measurement.

    2) Why Software engineering called as a layered technology?

    Software engineering encompasses a

    A) Tool:provide automated or semi-automated support for the process and the methods.B) Method:provide the technical fo building software. Methods encompass a broad array of

    tasks that include requirements analysis, design, program construction, testing, and

    support.

    C) Process:Process defines a framework for a set of key process areas that must beestablished for effective delivery of software engineering

    D) A quality focus:Any engineering approach must rest on an quality.

    3) Encapsulation:Wrapping up data member and method together into a single unit.Encapsulation is like your bag in which you can keep your pen, book etc. It means this is

    the property of encapsulating members and functions.Encapsulation means hiding the internal details of an object, i.e. how an object does

    something.

    Polymorphism:polymorphism means one kind of object can look like another kind ofobject.

    4) Software Reengineering: It is a process of software development which is done to

    improve the maintainability of a software system.

    Software Re-engineering is the examination and alteration of a system to reconstitute it

    in a new form

    This process encompasses a combination of sub-processes such as reverse engineering,

    restructuring, redocumentation, forward engineering, and retargeting.

    5) SDLC: SDLC is the process consisting of a series of planned activities to develop or alter

    the software products.

    Analysis, Design, Implementation, Testing, Evolution

    6) Top-Down integration:The top-down approach to integration testing requires thehighest-level modules be test and integrated first. This allows high-level logic and data

    flow to be tested early in the process and it tends to minimize the need for drivers.

  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    2/33

    However, the need for stubs complicates test management and low-level utilities are

    tested relatively late in the development cycle. Another disadvantage of top-down

    integration testing is its poor support for early release of limited functionality.

    7) Software Maturity Index(SMI): SMI can be a measurement of product stability, whenSMI approaches 1.0 the product is stable.

    SMI = (M - (A + C + D)) / MM = number of modules in current version

    A = number of added modules in current version

    C = number of changed modules in current version

    D = number of deleted modules in current version compared to the previous version

    8) Umbrella activities of in software engineering: Umbrella activities are defined by a

    set of tasks that are adapted to the project type and degree of rigor with which software

    engineering is to be applied.

    The umbrella activities in a software development life cycle process include the following:

    Software Project Management

    Formal Technical Reviews

    Software Quality Assurance Software Configuration Management

    Re-usability Management

    Risk Management

    Measurement and Metrics

    Document Preparation and Production

    9) PERTactivities are shown as a network of precedence relationships using activity-on-arrow network construction.

    Multiple time estimates

    Probabilistic activity times

    USED IN: Project management - for non-repetitive jobs (research and

    development work), where the time and cost estimates tend to be quite uncertain.

    This technique uses probabilistic time estimates.

    CPM:activities are shown as a network of precedence relationships using activity-on-node network construction

    Single estimate of activity time

    Deterministic activity times

    USED IN: Production management - for the jobs of repetitive in nature where the

    activity time estimates can be predicted with considerable certainty due to the

    existence of past experience.

    10)System Decommissioning:The System Decommissioning Phase of the SystemDevelopment Life Cycle may be initiated by various events. In some cases, the Project

    may lose funding and is terminated, in others, a planned shutdown (decommission) may

    be initiated. The process defined, and templates provided here are based on thesuccessful execution of a planned shutdown where the process was defined and managed

    as a stand-alone project. In this case, a System Decommission occurred because the

    client base was migrated to a sister application/platform.

    Taking the system out of service after the end of its useful operation lifetime.

  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    3/33

    11)List out the metrics for specifying non-functional requirement:

    Time: Transactions / sec, Response time, Time to complete an operation

    Space: Main memory, Auxiliary memory, (Cache)

    Usability: Training time, Number of choices, Mouse clicks

    Reliability: Mean time to failure, Downtime probability, Failure rate, Availability

    Robustness: Time to recovery, % of incidents leading to catastrophic failures, Datacorruption probability after a failure

    Portability: % of non-portable code, Number of systems where software can run

    12)Work Breakdown:o A hierarchical list of work activities needed to complete the project; a description

    of the work to be performed broken down to its key components, down to the

    lowest level.o Divide and conquer levelo Work breakdown structure identifies activities at a level useful for selecting the

    team with the proper skills.o Based on staff number and estimates for the work breakdown structure, schedule

    cost and duration can be estimated.

    13)Product Risk: Product risk is the risk associated with the software or system, thepossibility that software or system may fail to satisfy end user/customers

    expectations is known as product risk.

    There may be the possibility that the software or system does not have the

    functionality specified by the customer or the stakeholders which leads to

    unsatisfactory software

    Unsatisfactory software has risk and has the possibility of failure which can cause

    major functional damage.

    Low quality software can have many problems like functionality, reliability, usability

    or performance.

    14)Architectural design:Concept that focuses on thecomponents orelements of

    astructure orsystem and unifies them into a coherent andfunctional whole,according to a particular approach in achieving the objective(s) under the

    givenconstraints orlimitations.

    15)System Testing:is the testing of behavior of a complete and fully integratedsoftware product based on the software requirements specification (SRS)

    document. In main focus of this testing is to evaluate Business / Functional / End-

    user requirements.This is black box type of testing where external working of the software is evaluated with

    the help of requirement documents & it is totally based on Users point of view. For this

    type of testing do not required knowledge of internal design or structure or code.

    This testing is to be carried out only after System Integration Testing is completed where

    bothFunctional & Non-Functional requirements are verified.

    16)Smoke testing:Smoke testing is the initial testing process exercised to check whether

    the software under test is ready/stable for further testing.

    17)Bottom-Up integration:each component at lower hierarchy is tested individually; thenthe components that rely upon these are tested.

    Test B, C individually (using drivers)

    http://www.businessdictionary.com/definition/concept.htmlhttp://www.businessdictionary.com/definition/concept.htmlhttp://www.businessdictionary.com/definition/component.htmlhttp://www.businessdictionary.com/definition/element.htmlhttp://www.businessdictionary.com/definition/structure.htmlhttp://www.businessdictionary.com/definition/system.htmlhttp://www.businessdictionary.com/definition/functional.htmlhttp://www.businessdictionary.com/definition/constraint.htmlhttp://www.businessdictionary.com/definition/limitation.htmlhttp://www.softwaretestingclass.com/http://www.softwaretestingclass.com/http://www.businessdictionary.com/definition/limitation.htmlhttp://www.businessdictionary.com/definition/constraint.htmlhttp://www.businessdictionary.com/definition/functional.htmlhttp://www.businessdictionary.com/definition/system.htmlhttp://www.businessdictionary.com/definition/structure.htmlhttp://www.businessdictionary.com/definition/element.htmlhttp://www.businessdictionary.com/definition/component.htmlhttp://www.businessdictionary.com/definition/concept.html
  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    4/33

    Test A such that it calls B

    If an error occurs we know that the problem is in A or in the interface between A and B

    Test A such that it calls C

    If an error occurs we know that the problem is in A or in the interface between A and C

    18)Difference Verification and Validation:

    Verification Validation

    1. Verification is a static practice of

    verifying documents, design, code and

    program.

    1. Validation is a dynamic mechanism

    of validating and testing the actual

    product.

    2. It does not involve executing the

    code.

    2. It always involves executing the

    code.

    3. It is human based checking of

    documents and files.

    3. It is computer based execution of

    program.

    4. Verification uses methods like

    inspections, reviews, walkthroughs,

    and Desk-checking etc.

    4. Validation uses methods like black

    box (functional) testing, gray box

    testing, and white box (structural)

    testing etc.

    5. Verification is to check whether the

    software conforms to specifications.

    5. Validation is to check whether

    software meets the customer

    expectations and requirements.

    6. It can catch errors that validation

    cannot catch. It is low level exercise.

    6. It can catch errors that

    verification cannot catch. It is High

    Level Exercise.

    7. Target is requirements specification,

    application and software architecture,

    high level, complete design, and

    database design etc.

    7. Target is actual product-a unit, a

    module, a bent of integrated modules,

    and effective final product.

    8. Verification is done by QA team to

    ensure that the software is as per the

    specifications in the SRS document.

    8. Validation is carried out with the

    involvement of testing team.

    9. It generally comes first-done

    before validation.

    9. It generally follows after verification.

    19)Embedded Software:Beyond simple input/output data transformation, embeddedsoftware is built into the electronics of devices we use every day - cars, phones, TVs,

    appliances, health monitoring equipment, etc. - to control these systems' interactions

    with the physical world. Embedded software thus becomes more complex as applications

    become more sophisticated in systems such as planes, missiles, and process control

    systems. Developers must consider timeliness, concurrency, liveness, reactivity, and

    heterogeneity when programming abstractions. Types of embedded software include

    operating systems such as embedded Linux, Windows Embedded, and Real-Time

  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    5/33

    Operating Systems (RTOSs), which are intended for real-time applications and designed

    to be very compact and efficient, forsaking many functions that non-embedded computer

    operating systems provide. Communication protocols designated for embedded systems

    can be closed or open source.

    20)Boundary value analysis: Boundary value analysis (BVA) is based on testing at the

    boundaries between partitions.Here we have both valid boundaries (in the valid partitions) and invalid boundaries (in the

    invalid partitions).

    As an example, consider a printer that has an input option of the number of copies to be

    made, from 1 to 99. To apply boundary value analysis, we will take the minimum and

    maximum (boundary) values from the valid partition (1 and 99 in this case) together with

    the first or last value respectively in each of the invalid partitions adjacent to the valid

    partition (0 and 100 in this case). In this example we would have three equivalence

    partitioning tests (one from each of the three partitions) and four boundary value tests.

    Consider the bank system described in the previous section in equivalence partitioning.

    21)Software Metric:

    Code

    Static

    Dynamic

    Programmer productivity

    Design

    Testing

    Maintainability

    Management

    Cost

    Duration, time

    Staffing

    22)Risk Identification:Risk identification is the process of determining risks that could

    potentially prevent the program, enterprise, or investment from achieving its objectives.

    It includes documenting and communicating the concern.

    23)Characteristics of a software: Software costs are concentrated in engineering (analysis and design) and not in

    production.

    Cost of software is not dependent on volume of production.

    Software does not wear out (in the physical sense).

    Software has no replacement (spare) parts.

    Software maintenance is a difficult problem and is very different from hardware

    (physical product) maintenance.

    Most software are custom-built.

    Many legal issues are involved (e.g. intellectual property rights, liability).

    24)Software Models: usedhttp://istqbexamcertification.com/what-are-the-software-

    development-models/

    http://istqbexamcertification.com/what-are-the-software-development-models/http://istqbexamcertification.com/what-are-the-software-development-models/http://istqbexamcertification.com/what-are-the-software-development-models/http://istqbexamcertification.com/what-are-the-software-development-models/http://istqbexamcertification.com/what-are-the-software-development-models/http://istqbexamcertification.com/what-are-the-software-development-models/
  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    6/33

    Waterfall Model (Linear sequential model, Classic life cycle model): It is very simple

    to understand and use. In a waterfall model, each phase must be completed fully before the next

    phase can begin.

    Requirement->Design->Implementation->Verification->Maintenance

    V Model:V- model means Verification and Validation model. Just like thewaterfall model,the V-

    Shaped life cycle is a sequential path of execution of processes.

    Incremental model: In incremental model the whole requirement is divided into various

    builds. Multiple development cycles take place here, making the life cycle amulti-waterfall

    cycle. Cycles are divided up into smaller, more easily managed modules. Each module passes

    through the requirements, design, implementation andtesting phases.

    RAD Model:Rapid application development:RAD is incremental software developmentprocess model that allows usable systems to be built in as little as 60-90 days.

    The RAD model used for information systems development.

    It is a type ofincremental model.In RAD model the components or functions are developed in

    parallel as if they were mini projects. The developments are time boxed, delivered and thenassembled into a working prototype.

    http://istqbexamcertification.com/what-is-waterfall-model-advantages-disadvantages-and-when-to-use-it/http://istqbexamcertification.com/what-is-waterfall-model-advantages-disadvantages-and-when-to-use-it/http://istqbexamcertification.com/what-is-waterfall-model-advantages-disadvantages-and-when-to-use-it/http://istqbexamcertification.com/what-is-waterfall-model-advantages-disadvantages-and-when-to-use-it/http://istqbexamcertification.com/what-is-waterfall-model-advantages-disadvantages-and-when-to-use-it/http://istqbexamcertification.com/what-is-waterfall-model-advantages-disadvantages-and-when-to-use-it/http://istqbexamcertification.com/what-is-waterfall-model-advantages-disadvantages-and-when-to-use-it/http://istqbexamcertification.com/what-is-waterfall-model-advantages-disadvantages-and-when-to-use-it/http://istqbexamcertification.com/what-is-a-software-testing/http://istqbexamcertification.com/what-is-incremental-model-advantages-disadvantages-and-when-to-use-it/http://istqbexamcertification.com/what-is-incremental-model-advantages-disadvantages-and-when-to-use-it/http://istqbexamcertification.com/what-is-a-software-testing/http://istqbexamcertification.com/what-is-waterfall-model-advantages-disadvantages-and-when-to-use-it/http://istqbexamcertification.com/what-is-waterfall-model-advantages-disadvantages-and-when-to-use-it/http://istqbexamcertification.com/what-is-waterfall-model-advantages-disadvantages-and-when-to-use-it/
  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    7/33

    Agile model:Software is developed in incremental, rapid cycles. This results in small

    incremental releases with each release building on previous functionality. Each release isthoroughlytested to ensuresoftware quality is maintained. It is used for time critical

    applications.

    Iterative model: An iterative life cycle model does not attempt to start with a fullspecification of requirements. Instead, development begins by specifying and implementing

    just part of the software, which can then be reviewed in order to identify further requirements.

    This process is then repeated, producing a new version of the software for each cycle of the

    model.

    Spiral Model(Boehms Spiral Model):The spiral model is similar to theincremental model,

    with more emphasis placed on risk analysis. The spiral model has four phases: Planning, Risk

    Analysis, Engineering and Evaluation. A software project repeatedly passes through thesephases in iterations (called Spirals in this model). The baseline spiral, starting in the planning

    phase, requirements are gathered and risk is assessed. Each subsequent spirals builds on the

    baseline spiral. Requirementsare gathered during the planning phase. In the risk analysis

    phase, a process is undertaken to identify risk and alternate solutions. A prototype is

    produced at the end of the risk analysis phase.

    Advantages of Spiral model:

    High amount of risk analysis hence, avoidance of Risk is enhanced.

    http://istqbexamcertification.com/why-is-testing-necessary/http://istqbexamcertification.com/what-is-software-quality/http://istqbexamcertification.com/what-is-incremental-model-advantages-disadvantages-and-when-to-use-it/http://istqbexamcertification.com/what-is-incremental-model-advantages-disadvantages-and-when-to-use-it/http://istqbexamcertification.com/what-is-software-quality/http://istqbexamcertification.com/why-is-testing-necessary/
  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    8/33

    Good for large and mission-critical projects.

    Strong approval and documentation control.

    Additional Functionality can be added at a later date.

    Software is produced early in thesoftware life cycle.

    Disadvantages of Spiral model:

    Can be a costly model to use.

    Risk analysis requires highly specific expertise.

    Projects success is highly dependent on the risk analysis phase.

    Doesnt work well for smaller projects.

    When to use Spiral model:

    When costs and risk evaluation is important

    For medium to high-risk projects

    Long-term project commitment unwise because of potential changes to economic priorities

    Users are unsure of their needs

    Requirements are complex

    New product line

    Significant changes are expected (research and exploration)

    Prototype model:The basic idea here is that instead of freezing the requirements before a

    design or coding can proceed, a throwaway prototype is built to understand the requirements.

    This prototype is developed based on the currently known requirements. By using this

    prototype, the client can get an actual feel of the system, since the interactions with

    prototype can enable the client to better understand the requirements of the desired system.

    http://istqbexamcertification.com/what-are-the-software-development-life-cycle-phases/http://istqbexamcertification.com/what-are-the-software-development-life-cycle-phases/http://istqbexamcertification.com/what-are-the-software-development-life-cycle-phases/http://istqbexamcertification.com/what-are-the-software-development-life-cycle-phases/
  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    9/33

    25)Three Ps in s/w management project:-The three Ps are people management,Performance management and process management

    Four Ps in s/w management project:-People, Process, Product, Project

    26)CMM(Process maturity Level):Capability Maturity Model: Provides guidance on how togain control of processes for developing and maintaining software and how to evolve toward a

    culture of software engineering and management excellence.

    Maturity level indicates level of process capability:

    o Initial

    o Repeatable

    o Defined

    o Managed

    o Optimizing

    27)Software Quality Assurance: A Software Quality Assurance Engineer is involved in theentire software development process to ensure the quality of the final product. This can

    include processes such as requirements gathering and documentation, source code control,

    code review, change management, configuration management, release management and the

    actual testing of the software. Software QA is often confused withSoftware Testing,but should

    not be. Testing is a big part of Software Quality Assurance, but it is not, by any means, the

    only part of it.

    Umbrella activity applied throughout the software process

    Planned and systematic pattern of actions required to ensure high quality in software

    Responsibility of many stakeholders (software engineers, project managers, customers,salespeople, SQA group)

    28)Alpha Beta Testing:Its best to provide customers with an outline of the things that youwould like them to focus on and specific test scenarios for them to execute.Provide with customers who are actively involved with a commitment to fix defects that theydiscover.

    29)Defect Removal Efficiency (DRE): he defect removal efficiency (DRE) gives a measure ofthe development team ability to remove defects prior to release. It is calculated as a ratio ofdefects resolved to total number of defects found. It is typically measured prior and at the

    moment of release.DRE= Number of defects resolved by the development team / total number of defects at themoment of measurement.DRE is typically measured at the moment of version release, the best visualization is just toshow current value of DRE as a number.

    30)UML(UnifiedModelingLanguage)UML is a standard language for specifying, visualizing, constructing, and documenting theartifacts of software systems.UML was created by Object Management Group (OMG) and UML 1.0 specification draft was

    proposed to the OMG in January 1997.OMG is continuously putting effort to make a truly industry standard.

    UML stands for Unified Modeling Language. UML is different from the other common programming languages like C++, Java,

    COBOL etc. UML is a pictorial language used to make software blue prints.

    So UML can be described as a general purpose visual modeling language to visualize, specify,construct and document software system. Although UML is generally used to model softwaresystems but it is not limited within this boundary. It is also used to model non softwaresystems as well like process flow in a manufacturing unit etc.UML is not a programming language but tools can be used to generate code in variouslanguages using UML diagrams. UML has a direct relation with object oriented analysis anddesign. After some standardization UML is become an OMG (Object Management Group)standard.

    http://jobsearchtech.about.com/od/careersintechnology/p/SWTest.htmhttp://jobsearchtech.about.com/od/careersintechnology/p/SWTest.htmhttp://jobsearchtech.about.com/od/careersintechnology/p/SWTest.htmhttp://jobsearchtech.about.com/od/careersintechnology/p/SWTest.htm
  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    10/33

    31)Abstraction and Interfaces: An interface cannot implement any methods, whereas an abstract class can A class can implement many interfaces but can have only one superclass (abstract or

    not)

    An interface is not part of the class hierarchy. Unrelated classes can implement the

    same interface

    Syntax:

    abstract class:

    public class Apple extends Food { }

    interface:

    public class Person implements Student, Athlete, Chef { }

    32)Design Pattern: It is a description or template for how to solve a problem that can be usedin many different situations.Types: Creational Design Patterns, Behavioral Design Patterns, Structural Design Patterns

    33)Unit Testing and Integration Testing:Unit Testing:Algorithms and logic, Data structures (global and local),Interfaces,Independent paths, Boundary conditions, Error handling

    Integration Testing: One module can have an adverse effect on another

    Sub functions, when combined, may not produce the desired major function Individually acceptable imprecision in calculations may be magnified to unacceptable

    levels

    8 Marks Question Answer1)

    Alpha Testing Beta Testing (Field Testing)

    1. It is always performed by the developers

    at the software development site.

    1. It is always performed by the customers

    at their own site.

    2. Sometimes it is also performed by

    Independent Testing Team.

    2. It is not performed by Independent

    Testing Team.

    3. Alpha Testing is not open to the market

    and public

    3. Beta Testing is always open to the market

    and public.

    4. It is conducted for the software

    application and project.

    4. It is usually conducted for software

    product.

    5. It is always performed in Virtual

    Environment.

    5. It is performed in Real Time

    Environment.

    6. It is always performed within the

    organization.

    6. It is always performed outside the

    organization.

    7. It is the form of Acceptance Testing. 7. It is also the form of Acceptance Testing.

    8. Alpha Testing is definitely performed and

    carried out at the developing organizations

    location with the involvement of

    developers.

    8. Beta Testing (field testing) is performed

    and carried out by users or you can say

    people at their own locations and site using

    customer data.

    9. It comes under the category of both

    White Box Testing and Black Box Testing.

    9. It is only a kind of Black Box Testing.

  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    11/33

    10. Alpha Testing is always performed at

    the time of Acceptance Testing when

    developers test the product and project to

    check whether it meets the user

    requirements or not.

    10. Beta Testing is always performed at the

    time when software product and project are

    marketed.

    11. It is always performed at thedevelopers premises in the absence of the

    users.

    11. It is always performed at the userspremises in the absence of the development

    team.

    12. Alpha Testing is not known by any

    other different name.

    12 Beta Testing is also known by the

    name Field Testingmeans it is also known

    as field testing.

    13. It is considered as the User Acceptance

    Testing (UAT) which is done at developers

    area.

    13. It is also considered as the User

    Acceptance Testing (UAT) which is done at

    customers or users area.

    Scenario-based testing: is used for writing tests for individual user scenario, which would check

    their work. Scenarios concentrate on the principal objectives and requirements. If thescenario runs from start to finish, then it passes.

    2) Need and Features of requirement analysis of software engineering:

    Requirement analysis:A process of discovery, refinement, modeling, and specification.During the process, both the developers and customers take an active role.

    Need of requirement analysis:Analyzing, Documenting, Validating and Managing

    Features of requirement analysis of software:Problem recognition (or system understanding)

    - Discover and understand the system requirements- Refine the requirements

    Evaluation and synthesis:- what are the alternative solutions

    - focus on what solution should be selected or usedinstead of how to implement a solution.

    Modeling: to represent the various aspects of the system

    - the required data- information and control flow

    - operation behaviorSpecification of:

    - software functions, and performance- interfaces between system elements

    - system constraints

    Requirements Analysis Process:- Domain understanding:

    - Understanding of application domain.

    - Requirements collections:- The process of interacting with customers, users to discoverthe requirements for the system.

    - Requirements classification:

    - Group and classify the gathered requirements.- Conflict resolution:

  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    12/33

    - Resolve the conflict requirements.

    - Prioritization:

    - Identify and list requirements according to their importance- Requirements validation:

    - Check and validate the gathered requirements to seeif they are complete, correct, and sound

    3) Various reasons why the software projects fails:

    Specific methodology

    INTERDEPENDENT FACTORS: Cost, quality, speed, and riskDATA MIGRATION & IMPLEMENTATION

    Inexperienced project managers

    Inexperienced DeveloperLack of Team SupportLack of Software

    Lack of communication

    Lack of management supportFixed project completion dateDeveloper estimates are too optimistic

    The project scope changesFive Level of the SEI-CMM Frame Work:Capability Maturity Model is a bench-mark formeasuring the maturity of an organizations software process. It is a methodology used to

    develop and refine an organizations software development process. CMM can be used to

    assess an organization against a scale of five process maturity levels based on certain KeyProcess Areas (KPA). It describes the maturity of the company based upon the project thecompany is dealing with and the clients. Each level ranks the organization according to its

    standardization of processes in the subject area being assessed.A maturity model provides:

    A place to start The benefit of a communitys prior experiences A common language and a shared vision

    A framework for prioritizing actions

    A way to define what improvement means for your organization

    In CMMI models with a staged representation, there are five maturity levels designated bythe numbers 1 through 5 as shown below:

    Initial

    Managed

  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    13/33

    Defined

    Quantitatively Managed

    Optimizing

    4) Software Metrics and different approaches of developing software metrics:

    Software Metrics:

    Quantitative measurements distilled from data

    Distilled by measuring software development processes and actual source code

    Highlight areas that need work in specific nodes of code as well as generalizations about your code

    overall.

    Approaches of developing of software metrics:

    Lines of code Number of classes & interfaces

    Code to comment ratio

    Cyclomatic complexity:

    Directly measures the number of linearly independent paths through source code

    CC = E - N + p

    If code contains no decisions, then CC=1, if a piece of code contains a binary if statement, CC=2,

    etc...

    Code coverage

    Function coverage - Has each function in the program been executed?

    Statement coverage - Has each line of the source code been executed?

    Condition coverage - Has each evaluation point (such as a true/false decision) been executed?Path coverage - Has every possible route through a given part of the code been executed?

    Entry/exit coverage - Has every possible call and return of the function been executed

    Bugs to lines of code ratio

    Cohesion

    Cohesion is a measure of how strongly-related the various responsibilities of a software module are

    A node is usually deemed to have "high cohesion" or "low cohesion"

  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    14/33

    High Cohesion can indicate many things about code, including the extent of reuse of code and

    readability

    Coupling

    Coupling is the extent to which a node relies on the other nodes in the source code

    Nodes can be called either "loosely/weakly coupled" or "strongly/tightly coupled"

    Loose coupling indicates high cohesion!

    Loose coupling refers to a relationship between nodes such that one node interacts with the other

    nodes via a stable interface and does not need be concerned with the internal implementation of the

    other nodes

    Types of coupling:

    a. Content coupling (tightest) - is when one node modifies or relies on the internal

    workings of another node

    b. Common coupling - is when nodes share the same global data

    c. External coupling - Is when nodes rely on an external data format

    d. Data coupling - Is when nodes share data through parameters

    e. Message coupling (loosest) - Is when modules are not dependent on each other, they

    use a public interface to communicate

    Failed tests per build

    Version control commits per day

    Lines of code per commit

    5) Project Plan in Software Engineering: Project planning is a discipline for stating how to

    complete a project within a certain timeframe, usually with defined stages, and with designated

    resources.

    a) Project Goals

    The project sponsor.

    The customer who receives the deliverables.

    The users of the project outputs. The project manager and project team.

    b) Project Deliverables

    c) Project Schedule

    d) Making supporting plans

    o Human Resource Plan

    o Communications Plan

    o Risk Management Plan

    Time and cost estimates too optimistic.

    Customer review and feedback cycle too slow.

    Unexpected budget cuts.

    Unclear roles and responsibilities. Stakeholder input is not sought, or their needs are not properly

    understood.

    Stakeholders changing requirements after the project has started.

    A stakeholder adding new requirements after the project has started.

    Poor communication resulting in misunderstandings, quality problems

    and rework.

    Lack of resource commitment.

  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    15/33

    6) Possible software risk: Risks are identified, classified and managed before actual execution ofprogram. These risks are classified in different categories.

    Categories of risks:

    Schedule Risk:

    Project schedule get slip when project tasks and schedule release risks are not addressed properly.

    Schedule risks mainly affect on project and finally on company economy and may lead to project

    failure.

    Schedules often slip due to following reasons:

    Wrong time estimation

    Resources are not tracked properly. All resources like staff, systems, skills of individuals etc.

    Failure to identify complex functionalities and time required to develop those functionalities.

    Unexpected project scope expansions.

    Budget Risk:

    Wrong budget estimation.

    Cost overruns

    Project scope expansion

    Operational Risks:

    Risks of loss due to improper process implementation, failed system or some external events risks.

    Causes of Operational risks:

    Failure to address priority conflicts

    Failure to resolve the responsibilities

    Insufficient resources

    No proper subject training

    No resource planning

    No communication in team.

    Technical risks:

    Technical risks generally leads to failure of functionality and performance.

    Project Risk:

    Business Risk:

    Known Risk:

    Predictable Risk:

    Unpredictable Risk:

    7) Cost Estimation techniques used in software engineering

    There is no simple way to make an accurate estimate of the effort required to develop a software

    system

    Initial estimates are based on inadequate information in a user requirements definition

    Project cost estimates may be self-fulfilling

    The estimate defines the budget and the product is adjusted to meet the budgetEstimation techniques

    o Algorithmic cost modelling

    A formulaic approach based on historical cost information and which is generally based on the

    size of the software

    has example formula E = a + bNc

    where

  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    16/33

    E is the effort estimate

    N is the estimate or measure being used as the basis for the effort estimate (e.g. number of use

    casesor lines of code)

    a, b and c are obtained by extensive analysis of past projects and comparisons with the current

    project

    Note: Explain COCOMO Model:

    o Expert judgement

    One or more experts in both software development and the application domain use their

    experience to predict software costs. Process iterates until some consensus is reached.

    Advantages: Relatively cheap estimation method. Can be accurate if experts have direct

    experience of similar systems

    Disadvantages: Very inaccurate if there are no experts!

    o Estimation by analogy

    The cost of a project is computed by comparing the project to a similar project in the same

    application domain

    Advantages: Accurate if project data available

    Disadvantages: Impossible if no comparable project has been tackled. Needs systematically

    maintained cost databaseo Parkinson's Law

    The project costs whatever resources are available

    Advantages: No overspend

    Disadvantages: System is usually unfinished

    o Pricing to win The project costs whatever the customer has to spend on it

    Advantages: You get the contract

    Disadvantages: The probability that the customer gets the system he or she wants is small. Costs

    do not accurately reflect the work required

    o Top-down and bottom-up estimation Top-down

    Start at the system level and assess the overall system functionality and how this isdelivered through sub-systems

    Bottom-up

    Start at the component level and estimate the effort required for each component. Add

    these efforts to reach a final estimate

    8) Quality assurance and standards for achieving software quality:

    Software quality assurance:

    Software quality assurance is an integral part of the software development lifecycle. Its aim is to verify

    the quality of a program based upon provided software specifications. It is the responsibility of the

    software testing team to carry out the proper tests necessary to ensure a project meets businessrequirements from a functional and user perspective. QA is also encouraged to provide input in regards

    to overall usability, flow and even aesthetics.

    Type of testing: Unit Testing, Integration Testing, Regression Testing, User Acceptance Testing (UAT),

    Performance and Load Testing.

    9) Black box testing and white box testing (Please See Software 4PDF)Black box testing:

  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    17/33

    Specification-based testing technique is also known as black-box or input/output driven testing

    techniques because they view the software as a black-box with inputs and outputs.

    The testers have no knowledge of how the system or component is structured inside the box. In

    black-box testing the tester is concentrating on what the software does, not how it does it.

    The definition mentions both functional and non-functional testing. Functional testing is

    concerned with what the system does its features or functions. Non-functional testing isconcerned with examining how well the system does. Non-functional testing like performance,

    usability, portability, maintainability, etc.

    Specification-based techniques are appropriate at all levels of testing (component testing

    through to acceptance testing) where a specification exists. For example, when performing

    system or acceptance testing, the requirements specification or functional specification may

    form the basis of the tests.

    There are four specification-based or black-box techniques:

    Equivalence partitioning

    Boundary value analysis

    Decision tables

    State transition testing

    White box testing:

    Structure-based testing technique is also known as white-box or glass-box testing technique

    because here the testers require knowledge of how the software is implemented, how it works.

    In white-box testing the tester is concentrating on how the software does it. For example, a

    structural technique may be concerned with exercising loops in the software.

    Different test cases may be derived to exercise the loop once, twice, and many times. This may

    be done regardless of the functionality of the software.

    Structure-based techniques can also be used at all levels of testing. Developers use structure-

    based techniques in component testing and component integration testing, especially where

    there is good tool support for code coverage.

    Structure-based techniques are also used in system and acceptance testing, but the structuresare different. For example, the coverage of menu options or major business transactions could

    be the structural element in system or acceptance testing.

    Test Plan:A test plan can be defined as a document describing the scope, approach, resources,

    and schedule of intended testing activities. It identifies test items, the features to be tested, the

    testing tasks, who will do each task, and any risks requiring contingency planning.

    In software testing, a test plan gives detailed testing information regarding an upcoming testing

    effort, including

    Scope of testing

    Schedule

    Test Deliverables

    Release Criteria

    Risks and Contingencies

    It is also be described as a detail of how the testing will proceed, who will do the testing, what will

    be tested, in how much time the test will take place, and to what quality level the test will be

    performed.

    10)Object Oriented Process Model:

  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    18/33

    Object--oriented development:

    Object--oriented analysis, design and programming are related but distinct.

    OOA is concerned with developing an object model of the application domain.

    OOD is concerned with developing an object--oriented system model to implement

    requirements.

    OOP is concerned with realizing an OOD using an OO programming language such as Java or C++

    Objects and object classes: Objects are entities in a software system which represent instances of

    real--world and system entities.

    Object classes are templates for objects. They may be used to create objects.

    Object classes may inherit attributes and services from other object classes.

    The Unified Modeling Language: The Unified Modeling Language is an integration of these

    notations.

    It describes notations for a number of different models that may be produced during OO analysis and

    design.

    Employee

    name: string

    address: string

    dateOfBirth: DateemployeeNo: integer

    socialSecurityNo: string

    department: Dept

    manager: Employee

    salary: integer

    status: {current, left, retired}

    taxCode: integer

    join ()

    leave ()

    retire ()

    changeDetails ()Object communication:In practice, messages are often implemented by procedure calls

    Name = procedure name;

    Information = parameter list

    Generalization and inheritance:Generalization in the UML is implemented as inheritance in OO

    programming languages.

    UML associations: Associations may be annotated with information that describes the association.

    Associations are general but may indicate that an attribute of an object is an associated object or that a

    method relies on an associated object.

  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    19/33

    An object--oriented design process: Structured design processes involve developing a number

    of different system models.

    They require a lot of effort for development and maintenance of these models and, for small systems,

    this may not be cost--effective.

    However, for large systems developed by different groups design models are an essential

    communication mechanism.

    11) Throwaway Prototyping and Evolutionary Prototyping:

    Throwaway prototypingis :

    Developed from an outline of a specification, an various prototypes are delivered and modified

    until the client is satisfied with its functionality. Throwaway prototyping is where the objective of the evolutionary development process is to

    understand the customer's requirements and hence develop a better requirements definition

    for the system. The prototype concentrates on experimenting with the customer requirements

    that are poorly understood.

    This approach extends the requirements analysis process with the intention of reducing overall

    lige cycle costs.

    Customers and end-users should resist the temptation to turn the throw-away prototyping into

    a delivered system that is put into use.

    Evolutionary prototypes:

    Built from basic requirements gathered from end-users. An initial prototype is presented to theusers and evaluated. The prototype is modified based on the feedback until the client is

    satisfied.

    Exploratory development where the objective of the process is to work with the customer to

    explore their requirements and deliver a final system. The development starts with the parts of

    the system that are understood. The system evolves by adding new features proposed by the

    customer.

    There are three main problems with evolutionary prototyping which are particularly important

    when large,

    long-lifetime systems are to be developed

    Difficulties do not mean that evolutionary prototyping should be rejected.

    12) Software Characteristics (McCalls Quality Factor):A software product must meet all

    the requirements of the customer or end-user. Also, the cost of developing and maintaining the

    software should be low. The development of software should be completed in the specified time-frame.

    The three characteristics of good application software are :-

    1) Operational Characteristics

    2) Transition Characteristics

    3) Revision Characteristics

  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    20/33

    Operation: Correctness, Usability/Learnability, Integrity, Reliability, Efficiency , Security , Safety

    Transition: Usability, Portability, Transferability

    Revision: Maintainability, Testability, Flexibility, Extensibility, Scalability, Modularity

    13) Essential attributes of software product:Following factors are used to measure software development quality. Each attribute can be used to

    measure the product performance. These attributes can be used for Quality assurance as well as Quality

    control. Quality Assurance activitiesare oriented towards prevention of introduction of defects

    and Quality control activitiesare aimed at detecting defects in products and services.

    Reliability :Measure if product is reliable enough to sustain in any condition. Should give consistently

    correct results.Product reliability is measured in terms of working of project under different working

    environment and different conditions.

    Maintainability :Different versions of the product should be easy to maintain. For development its

    should be easy to add code to existing system, should be easy to upgrade for new features and new

    technologies time to time. Maintenance should be cost effective and easy. System be easy to maintain

    and correcting defects or making a change in the software.

    Usability:This can be measured in terms of ease of use. Application should be user friendly. Shouldbe easy to learn. Navigation should be simple.The system must be:Easy to use for input preparation, operation, and interpretation of output.Provide consistent user interface standards or conventions with our other frequently used systems.Easy for new or infrequent users to learn to use the system.Portability:This can be measured in terms of Costing issues related to porting, Technical issuesrelated to porting, Behavioral issues related to porting.

    Correctness:Application should be correct in terms of its functionality, calculations used internallyand the navigation should be correct. This means application should adhere to functionalrequirements.Efficiency:To Major system quality attribute. Measured in terms of time required to complete anytask given to the system. For example system should utilize processor capacity, disk space andmemory efficiently. If system is using all the available resources then user will get degraded

    performance failing the system for efficiency. If system is not efficient then it can not be used in realtime applications.Integrity or security: Integrity comes with security. System integrity or security should be sufficientto prevent unauthorized access to system functions, preventing information loss, ensure that thesoftware is protected from virus infection, and protecting the privacy of data entered into the system.Testability:System should be easy to test and find defects. If required should be easy to divide indifferent modules for testing.Flexibility: Should be flexible enough to modify. Adaptable to other products with which it needsinteraction. Should be easy to interface with other standard 3rd party components.

  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    21/33

    Reusability: Software reuse is a good cost efficient and time saving development way. Different codelibraries classes should be generic enough to use easily in different application modules. Dividingapplication into different modules so that modules can be reused across the application.Interoperability: Interoperability of one system to another should be easy for product to exchange

    data or services with other systems. Different system modules should work on different operatingsystem platforms, different databases and protocols conditions.Applying above quality attributes standards we can determine whether system meets the

    requirements of quality or not.

    14) Measures of software Quality:There are many measures of software quality, correctness;maintainability, integrity, and usability provide useful indicators for the project team.Correctness:

    Correctness is the degree to which the software performs its required function. The most common measure for correctness is defects per KLOC, where a defect is defined as a

    verified lack of conformance to requirements. When considering the overall quality of a software product, defects are those problems

    reported by a user of the program after the program has been released for general use. For quality assessment purposes, defects are counted over a standard period of time, typically

    one year.Maintainability:1) Maintainability is the ease with which a program can be

    Corrected if an error is encountered,

    Adapted if its environment changes, or

    Enhanced if the customer desires a change in requirements

    2) There is no way to measure maintainability directly; therefore, we must use indirect measures.3) A simple time-oriented metric is mean-time-to change (MTTC), the time it takes to

    Analyze the change request,

    Design an appropriate modification,

    Implement the change, test it, and

    Distribute the change to all users.

    On average, programs that are maintainable will have a lower MTTC (for equivalent

    types of changes) than programs that are not maintainable.

    Integrity:

    1. This attribute measures a system's ability to withstand attacks (both accidental and intentional)

    to its security.

    2. Attacks can be made on all three components of software: programs, data, and documents.

    3. To measure integrity, two additional attributes must be defined:

    Threat

    Security.

    4. Threat is the probability (which can be estimated or derived from empirical evidence) that an

    attack of a specific type will occur within a given time.

    5. Security is the probability (which can be estimated or derived from empirical evidence) that the

    attack of a specific type will be repelled.6. The integrity of a system can then be defined as

    Integrity = summation [(1threat) * (1security)]

    Where threat and security are summed over each type of attackUsability:

    If a program is not user-friendly, it is often doomed to failure, even if the functions that it

    performs are valuable.

  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    22/33

    Usability is an attempt to quantify user-friendliness and can be measured in terms of four

    characteristics:

    (1) The physical and or intellectual skill required to learn the system,

    (2) The time required to become moderately efficient in the use of the system,

    (3) The net increase in productivity measured when the system is used by someone who

    is moderately efficient, and(4) A subjective assessment of users attitudes toward the system.

    15) Business Process Re-engineering (BPR) :

    It combines aspects of re-engineering and business process outsourcing, and rationalizes them to return

    value in a short span of time. This, of course, maximizes long-term prospects for your business.

    Business Process Re-engineering (BPR) solutions that assist you to fundamentally rethink and redesign

    how your organization will meet its strategic objectives. We emphasize on innovation, flexibility, quality

    service delivery, and cost control by re-engineering business methods and supporting processes using

    state-of-the-art BPR tools and methodologies.

    Business Process re-engineering services address your need to leverage newer technology platforms,

    frameworks, and software products to transform IT systems and applications. Our Business Process Re-

    engineering applications help you:

    Scale up to handle a larger user base

    Effectively address operational or performance issues with current application portfolio

    Achieve a higher degree of maintainability

    Alleviate licensing and support issues with the older technologies

    Improve user friendliness and portability of applications

    Reduce costs associated with maintaining old and poorly documented legacy system

    A typical BPR project consists of the following main stages:

    Identify business processes

    Review, update & analyze as-is business processes

    Design to-be business processes

    Test & implement to-be business processes

    16) Traits of software Manager:-

    Hire People I Actually Want To Work With

    Don't Micromanage

    Always Follow-up On Your Promises

    Have Excellent Business Domain Knowledge

    Have Excellent Technical Skills

    Create And Maintain Excellent Relationships

    Care About Me As An Individual

    Participate In Team Social Activities

    Be A Process Champion

    Have Boundless Energy17) Challenges for Real-Time Software Design:

    A real-time system is a software system where the correct functioning of the system depends onthe results produced by the system and the time at which these results are produced

    A soft real-time system is a system whose operation is degraded if results are not producedaccording to the specified timing requirements

    A hard real-time system is a system whose operation is incorrect if results are not producedaccording to the timing specification

  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    23/33

    Challenges:Realtime Response:During the architecture design phase, the hardware and software engineers work

    together to select the right system architecture that will meet the requirements. This involves deciding interconnectivity of the processors, link speeds, processor speeds, etc.The main questions to be asked are:

    Is the architecture suitable?

    Are the link speeds adequate?

    Are the processing components powerful enough?

    Is the Operating System suitable?

    Recovering from Failures: Internal failures can be due to hardware and software failures in the system. The

    different types of failures you would typically expect are:

    Software Failures in a Task:

    Processor Restart:

    Board Failure:

    Link Failure

    Working with Distributed Architectures:Most Realtime systems involve processing on several different

    nodes. The system itself distributes the processing load among several processors. This introduces several

    challenges in design:

    Maintaining Consistency: Initializing the System.

    Inter-Processor Interfaces:

    Load Distribution:

    Centralized Resource Allocation

    Asynchronous Communication: Remote procedure calls (RPC) are used in computer systems to simplify

    software design. RPC allows a programmer to call procedures on a remote machine with the same semantics

    as local procedure calls. RPCs really simplify the design and development of conventional systems, but they

    are of very limited use in Realtime systems. The main reason is that most communication in the real world is

    asynchronous in nature, i.e. very few message interactions can be classified into the query response paradigm

    that works so well using RPCs.

    Race Conditions and Timing:All the steps in a protocol are described with exact timing specification for each

    stage. Most protocols will also specify how the timing should vary with increasing load. Realtime systems deal

    with timing issues by using timers. Timers are started to monitor the progress of events. If the expected event

    takes place, the timer is stopped. If the expected event does not take place, the timer will timeout and recovery

    Establ ish systemrequirements

    Partitionrequirements

    Hardwarerequirements

    Hardwaredesign

    Softwarerequirements

    Softwaredesign

  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    24/33

    action will be triggered.A race condition occurs when the state of a resource depends on timing factors that

    are not predictable.

    18) COCOMO Model(Constructive Cost Model):The Constructive Cost Model (COCOMO) is analgorithmic software cost estimation model developed by Barry Boehm. The model uses a basic regression

    formula, with parameters that are derived from historical project data and current project characteristics.COCOMO consists of a hierarchy of three increasingly detailed and accurate forms. The first level, Basic

    COCOMO is good for quick, early, rough order of magnitude estimates of software costs, but its accuracy is

    limited due to its lack of factors to account for difference in project attributes (Cost Drivers). Intermediate

    COCOMO takes these Cost Drivers into account and Detailed COCOMO additionally accounts for the influence

    of individual project phases.Basic COCOMO computes software development effort (and cost) as a function of

    program size. Program size is expressed in estimated thousands of lines of code (KLOC)

    COCOMO applies to three classes of software projects:

    * Organic projects - "small" teams with "good" experience working with "less than rigid" requirements

    * Semi-detached projects - "medium" teams with mixed experience working with a mix of rigid and less than

    rigid requirements

    * Embedded projects - developed within a set of "tight" constraints (hardware, software, operational, ...)

    The basic COCOMO equations take the form

    Effort Applied = ab(KLOC)bb [ man-months ]

    Development Time = cb(Effort Applied)db [months]

    People required = Effort Applied / Development Time [count]

    The coefficients ab, bb, cb and db are given in the following table.

    Software project ab bb cb db

    Organic 2.4 1.05 2.5 0.38

    Semi-detached 3.0 1.12 2.5 0.35

    Embedded 3.6 1.20 2.5 0.32

    Basic COCOMO is good for quick estimate of software costs. However it does not account for differences in

    hardware constraints, personnel quality and experience, use of modern tools and techniques, and so on.

    Intermediate COCOMO computes software development effort as function of program size and a set of "cost

    drivers" that include subjective assessment of product, hardware, personnel and project attributes. This

    extension considers a set of four "cost drivers",each with a number of subsidiary attributes:

    * Product attributes

    Required software reliability

    Size of application database

    Complexity of the product

    * Hardware attributes

    Run-time performance constraints

    Memory constraints

    Volatility of the virtual machine environment

    Required turnabout time

    * Personnel attributesAnalyst capability

    Software engineering capability

    Applications experience

    Virtual machine experience

    Programming language experience

    http://www.ifi.uzh.ch/req/courses/seminar_ws02/reports/Seminar_4.pdfhttp://www.ifi.uzh.ch/req/courses/seminar_ws02/reports/Seminar_4.pdf
  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    25/33

    * Project attributes

    Use of software tools

    Application of software engineering methods

    Required development schedule

    DIFFERENCES BETWEEN COCOMO I AND COCOMO II

    The major differences between COCOMO I AND COCOMO II are:

    COCOMO'81 requires software size in KDSI as an input, but COCOMO II is based on KSLOC (logicalcode). The major difference between DSI and SLOC is that a single Source Line of Code may be

    several physical lines. For example, an "if-then-else" statement would be counted as one SLOC, but

    might be counted as several DSI.

    COCOMO II addresses the following three phases of the spiral life cycle: applications development,

    early design and post architecture

    COCOMO'81 provides point estimates of effort and schedule, but COCOMO II provides likely ranges

    of estimates that represent one standard deviation around the most likely estimate.

    The estimation equation exponent is determined by five scale factors (instead of the three

    development modes)

    Changes in cost drivers are:

    1. Added cost drivers (7): DOCU, RUSE, PVOL, PLEX, LTEX, PCON, SITE

    2. Deleted cost drivers (5): VIRT, TURN, VEXP, LEXP, MODP3. Alter the retained ratings to reflect more up-do-date software practices

    Data points in COCOMO I: 63 and COCOMO II: 161

    COCOMO II adjusts for software reuse and reengineering where automated tools are used for

    translation of existing software, but COCOMO'81 made little accommodation for these factors

    COCOMO II accounts for requirements volatility in its estimates

    19) Functional and Non-Functional Requirements

    Functional Requirements

    These are statement of services the system should provide, how the system should react to particular

    inputs and how the system should behave in particular situations.

    In some cases, the functional requirements may also explicitly state what the system should not do.

    These requirements depend on the type of software being developed, the expected users of thesoftware and the general approach taken by the organization when writing requirements.

    When expressed as user requirements, the requirements are usually described in a fairly abstract way.

    Functional system requirements describe the system in detail, its inputs and outputs, exceptions, and

    so on.

    In principle, the functional requirements specification of a system should be both complete and

    consistent. Completeness means that all services required by the user should be defined. Consistency

    means that requirements should not have contradictory definitions.

    For example, here are examples of functional requirements for a university library system called

    LIBSYS, used by the students and faculty to order books and documents from other libraries.

    a) The user shall be able to search either all of the initial set of databases or select a subset from

    it.b) The system shall provide appropriate viewers for the user to read documents in the

    document store.

    c) Every order shall be allocated a unique identifier (ORDER_ID), which the user shall be copy to

    the documents permanent storage area.

    Non Functional Requirements

  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    26/33

    These are constraints on the services or functions offered by the system.

    They are not directly concerned with the specific functions delivered by the system.

    They include timing constraints, constraints on the development process and standards.

    They may relate to emergent system properties such as reliability, response time and store

    occupancy. Alternatively, they may define constraints on the system such as the capabilities of I/O

    devices and the data representations used in system interfaces.

    Non-functional requirements often apply to the system as a whole. They do not usually just apply to

    individual system features or services.

    Failing to meet a non-functional requirement can mean that the whole system is unusable.

    For e.g., if an aircraft system does not meet its reliability requirements, it will not be certified as safe for

    operation; if a real-time control system fails to meet its performance requirements, the control functions

    will not operate correctly.

    Non-functional requirements arise through user needs, because of budget constraints, because of

    organizational policies, because of the need for interoperability with other software or hardware

    systems, or because of external factors such as safety regulations or privacy legislation.

    The types of non-functional requirements

    a) Product Requirements

    These requirements specify product behavior.

    Examples include performance requirements on how fast the system must execute and how much

    memory it requires.

    1. Reliability requirements that set out the acceptable failure rate.

    2. Portability requirements and usability requirements.

    For example

    The user interface for LIBSYS shall be implemented as simple HTML without frames or Java applets.

    b) Organizational Requirements

    1. These requirements are derived from policies and procedures in the customers and developers

    organization.

    2. Implementation requirements such as the programming language or design method used.

    3. Delivery requirements that specify when the product and its documentation are to be delivered.For example

    The system development process and deliverable documents shall conform to the process and

    deliverables

    defined in XYZCo-SP-STAN-95.

    c)External Requirements1. This broad heading covers all requirements that are derived from factors external to the

    system and its development process.

    2. They may include interoperability requirements that define how the system interacts with

    systems in other organizations.

    3. Legislative requirements that must be followed to ensure that the system operates within the

    law.

    4. Ethical requirements that the system which is developed will be acceptable to its users andthe general public.

    For example

    The system shall not disclose any personal information about system users apart from their name and

    library reference number to the library staff who use the system.

    Domain Requirements

  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    27/33

    1. These requirements that come from the application domain of the system and that reflect

    characteristics and constraints of that domain.

    2. They may be functional or non-functional requirements.

    3. Domain requirements are derived from the application domain of the system rather than

    from the specific needs of the system users.

    4. They usually include specialized domain terminology or reference to domain concepts.

    5. They may be new functional requirements in their own right, constrain existing functionalrequirements or set out how particular computations must be carried out.

    6. Because these requirements are specialized, software engineers often find it difficult to

    understand how they are related to other system requirements.

    7. Domain requirements are important because they often reflect fundamental of the

    application domain.

    8. If these requirements are not satisfied, it may be impossible to make the system work

    satisfactorily.

    20) Documentation Standards in a software projects:

    Low-Risk Project Documentation

    The goal is to communicate and document the essence of the project, primarily for

    informational purposes, both within the University and to outside stakeholders.

    TheLow-Risk Project Form provides a template for providing this information.

    A low-risk project is typically described by a sentence or two of text in each of the sections of

    the form.

    The level of detail in this documentation should be agreed upon mutually by the project

    manager and the project sponsor, with additional input and guidance as appropriate from the

    key project stakeholders.

    Medium-Risk Project Documentation

    Documentation for medium-risk projects should be more detailed than for low-risk projects and

    the level of detail should be commensurate with the complexity of the project in any case.

    You are strongly encouraged to use project planning software, e.g., Microsoft Project, in

    assembling the project plan and schedule.

    The project plan should include a Scope Plan, which includes the project objectives and theproject deliverables, and which includes at least a simpleWork Breakdown Structure.

    The Resource and Staffing Plan should indicate clearly the resources to be used and should

    indicate key or required staff.

    The Communication Strategy should articulate the extent and nature of communications

    involved in the project.

    The Budget Plan should be appropriate to the needs of the Project Sponsor.

    The Security Plan should identify anticipated security issues and indicate how they will be

    addressed.

    The Testing Plan should be consistent with the complexity of the project and the associated

    risks.

    A Training Plan, if appropriate, should outline plans for training of all anticipated and intendedusers.

    High-Risk Project Documentation

    Documentation for high-risk projects should provide all of the information required to initiate,

    plan, execute, monitor, and complete the project in a timely and cost-effective manner.

    The documentation should follow the guidelines of the Project Management Body of Knowledge

    (PMBOK)of the Project Management Institute.

    http://www.itplanning.org.vt.edu/pm/lowrisk.htmlhttp://www.itplanning.org.vt.edu/pm/terms.html#wbshttp://en.wikipedia.org/wiki/PMBOKhttp://en.wikipedia.org/wiki/PMBOKhttp://www.itplanning.org.vt.edu/pm/terms.html#wbshttp://www.itplanning.org.vt.edu/pm/lowrisk.html
  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    28/33

    You are strongly encouraged to use project planning software, e.g., Microsoft Project, in

    assembling the project plan and schedule.

    A detailed Scope Document should be included that clearly describes the project objectives and

    the project deliverables.

    Plans for scope management should be provided and include procedures for change control.

    The Resource and Staffing Plan should explain what resources (people, equipment, materials)and what quantities of each should be used to perform project activities, and it should provide a

    complete account of key or required staff.

    The Communication Plan should describe the processes required to ensure timely and

    appropriate generation, collection, dissemination, storage, and ultimate disposition of project

    information.

    The Budget Plan should be appropriate to the needs of the Project Sponsor and should provide a

    complete accounting of costs for staffing, equipment, software, supplies, consulting, and other

    costs. A life cycle cost or total cost of ownership, projected out at least 5 years, should be

    included.

    The Security Plan should identify anticipated security issues and indicate how they will be

    addressed.

    The Testing Plan should be consistent with the complexity of the project and the associated

    risks.

    A Training Plan, if appropriate, should outline plans for training of all anticipated and intended

    users.

    21) Principles software project scheduling: Compartmentalization

    The project must be compartmentalized into a number of manageable activities, actions, andtasks; both the product and the process are decomposed

    Interdependency The interdependency of each compartmentalized activity, action, or task must be determined Some tasks must occur in sequence while others can occur in parallel

    Some actions or activities cannot commence until the work product produced by another isavailable

    Time allocation Each task to be scheduled must be allocated some number of work units In addition, each task must be assigned a start date and a completion date that are a function

    of the interdependencies Start and stop dates are also established based on whether work will be conducted on a full-

    time or part-time basis Effort validation

    Every project has a defined number of people on the team As time allocation occurs, the project manager must ensure that no more than the allocated

    number of people have been scheduled at any given time Defined responsibilities

    Every task that is scheduled should be assigned to a specific team member

    Defined outcomes Every task that is scheduled should have a defined outcome for software projects such as a

    work product or part of a work product Work products are often combined in deliverables

    Defined milestones Every task or group of tasks should be associated with a project milestone A milestone is accomplished when one or more work products has been reviewed for quality

    and has been approved

  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    29/33

    22) Software Requirement Analysis: Determining the needs or conditions to meet for a new or altered product, In other words, process of studying and analyzing the customer and the user/stakaholder needs to

    arrive at a definition of software reqiurements. Requirements must be actionable, measurable, testable, related to identified business needs or

    opportunities, and defined to a level of detail sufficient for system design. Requirements can befunctional andnon-functional.

    Types of Requirements Functional requirements Performance requirements

    Speed, accuracy, frequency, throughput External interface requirements Design constraints

    Requirements are usually about what, this is ahow. Quality attributes

    i.e. reliability, portability, maintainability, supportability

    Software Quality Attributes Correctness

    Reliability Rating = 1(Num Errors/ Num LOC) Can be allocated to subsystems

    Efficiency Integrity Usability Survivability Maintainability Verifiability Flexibility Portability Reusability Interoperability Expandability

    Requirements Analysis:Defining User Profiles

    Description - of the user type Type - qualify expertise, technical background, degree of sophistication Responsibilities - users key resp.s w.r.t. system being developed Success Criteria - how this user defines success? rewarded? Involvement - How user involved in this project? what role? Deliverables - Are there any deliverables the user produces? For whom? Comments/Issues - Problems that interfere w/ success, etc.

    Defining User Work Environment Number of people involved in doing this now? Changing? How long is a task cycle now? Changing? Any unique environmental constraints: mobile, outdoors, in-flight, etc. Which system platforms are in use today? future? What other applications are in use? Need to integrate?

    Product Overview Put the product in perspective to other related products and the users environment. Independent? Component of a larger system? How do the subsystems interact with this? Known interfaces between them and this component? Block diagram

    Other Product Requirements hardware platform requirements -- system requirements -- supported host o.s.s, peripherals, companionsoftware

    http://en.wikipedia.org/wiki/Requirementhttp://en.wikipedia.org/wiki/Functional_requirementshttp://en.wikipedia.org/wiki/Non-functional_requirementshttp://en.wikipedia.org/wiki/Non-functional_requirementshttp://en.wikipedia.org/wiki/Functional_requirementshttp://en.wikipedia.org/wiki/Requirement
  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    30/33

    environmental requirements -- temperature, shock, humidity, radiation, usage conditions, resourceavailability, maintenance issues, type of error recovery

    applicable standards -- legal, regulatory, communications

    Software Requirement Specification Asoftware requirements specification(SRS) is a complete description of the behavior of the system to

    be developed

    A document that clearly and precisely describes, each of the essential requirements of the softwareand the external interfaces.

    (functions, performance, design constraint, and quality attributes) Each requirement is defined in such a way that its achievement is capable of being objectively verified

    by a prescribed method; for example inspection, demonstration, analysis, or test.2

    Requirements Analysis Fundamental Techniques (Views) functional view

    hierarchy -function tree process use cases information ow data flow diagram (DFD)

    data oriented view data structures data dictionary (DD), syntax diagram, Jackson diagram relations between entities entity relationship diagram (ER)

    object-oriented viewclass structure class diagram

    algorithmic view control structures pseudo code, structogram, flow diagram, Jackson diagram conditions rules, decision table

    state-oriented view state machines Petri nets

    sequence charts

    Use Case use case is a description of a systems behavior as it responds to a request that originates

    from outside of that system.

    it describes "who" can do "what" with the system in question

    Use Case Diagram A use case diagram

    in theUnified Modeling Language(UML)

    a type of behavioral diagram defined by and created from aUse-case analysis. Its purpose is to present a graphical overview of the functionality provided by a system in

    terms ofactors,their goals (represented asuse cases), and any dependencies between thoseuse cases.

    The main purpose to show what system functions are performed for which actor. Roles of the actors in the system can be depicted.

    http://en.wikipedia.org/wiki/Software_requirements_specificationhttp://en.wikipedia.org/wiki/Software_requirements_specificationhttp://en.wikipedia.org/wiki/Software_requirements_specificationhttp://en.wikipedia.org/wiki/Unified_Modeling_Languagehttp://en.wikipedia.org/wiki/Unified_Modeling_Languagehttp://en.wikipedia.org/wiki/Unified_Modeling_Languagehttp://en.wikipedia.org/wiki/Use-case_analysishttp://en.wikipedia.org/wiki/Use-case_analysishttp://en.wikipedia.org/wiki/Use-case_analysishttp://en.wikipedia.org/wiki/Actor_%28UML%29http://en.wikipedia.org/wiki/Actor_%28UML%29http://en.wikipedia.org/wiki/Actor_%28UML%29http://en.wikipedia.org/wiki/Use_casehttp://en.wikipedia.org/wiki/Use_casehttp://en.wikipedia.org/wiki/Use_casehttp://en.wikipedia.org/wiki/Use_casehttp://en.wikipedia.org/wiki/Actor_%28UML%29http://en.wikipedia.org/wiki/Use-case_analysishttp://en.wikipedia.org/wiki/Unified_Modeling_Languagehttp://en.wikipedia.org/wiki/Software_requirements_specification
  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    31/33

    Data Flow Diagram (DFD) graphical representation of data ow (classical technique) nodes:

    function labeled circle store name between two horizontal lines interface to environmentlabeled rectangle

    directed edges: represent data flow

    properties of DFDs easy to create easy to read and understand

    23) Ten software standard (ISO-9001) for effective software Q.A

    1) Process:It is critical that the organization defines a process that is robust and certified by experts in order to

    initiate the software assurance quality culture. The process will serve as a guideline that may evolve over time.Most importantly, it should be made official and should be followed through. Improvements will be made until amature process is established.

    2) Managerial Commitment:Managerial commitment should stem from the CIO to ensure alignment from eachof the development managers, as well as from the development areas of each country. Everyone must beaware of the value that is added by testing & QA to the business. The process, therefore, must account for thevalue of the solutions that it offers to the organization.

    3) Personal Experience:Hiring someone as a tester that lacks necessary experience is a common mistake. It is

    vital to acknowledge that the position requires experience in both the business and in software development ingeneral.

    4) Deliverables:As part of the software development and testing processes, it is necessary to definedeliverables, such as requirements, a testing plan, and testing cases. These will guarantee that testers caneffectively follow-up throughout the project from the software quality perspective.

    5) Tool Usage:Both the use of tools for tracking and managing defects, as well as the creation of test cases and

    execution, are essential for increasing the maturity of the testing & QA process. The process may begin without

    tools, but they are a requisite for increasing execution maturity.

    6) Metrics:Developing and creating metrics to track the software quality in its current state, as well as tocompare the improvement with previous versions, will help increase the value and maturity of the testingprocess (e.g. the number of components with errors in the software/the total number of components in thesoftware; or the number of errors detected in the testing phase/total number of errors detected).

    7) Testing Environment:Implementation of appropriate testing environments that allow developers to reproduce

    the system execution in production environments is crucial to the creation and execution of the correspondingtest cases.

    8) Test Data:The testing environment required for day-to-day operation should provide or ensure availability ofthe necessary data to enable the corresponding test execution. Even if you have developed the appropriatetesting environments, developers need to access specific data required to execute the associated test cases.

    9) Change Management:Like any other production environment, the testing environment should properly trackchanges in configuration, ensuring not only controlled results, but that the tests are run in environments thatclosely resemble those of the real production environment.

    10) Developer Awareness:It is critical to have an awareness process that includes management commitment ateach and every business unit and for associated developers. The goal is to demonstrate that testing activitiesadd value to their daily work.

  • 8/21/2019 Software Engineering for MBA 3rd Semester Bnagalore University

    32/33

    24) Explain Contract Management, Audits, Training and Document Control Revevant:

    Contract Management:contract management process saves time and adds value to each step ofthe contract's lifecycle.Contract management or contract administration is the management of contractsmade with customers, vendors, partners, or employees.

    1. Request: It all begins here, where users initiate contracts and find pertinent documents from within

    familiar applications.2. Authoring: Contract creation becomes much easier with automated contract management, wherein

    users author with familiar word processing tools, as well as standardized language that can be

    included dynamically depending on the type of agreement.

    3. Negotiation: The ability to compare redlined versions of contracts in various formats side-by-side, and

    quickly note any discrepancies, reduces negotiation time by half when contract processes are

    automated and streamlined.

    4. Approval: In the stage that causes the most bottlenecks in contract processes, automated contract

    management allows users to preemptively strike by tailoring approval workflows, including parallel and

    serial approvals, and keep business clipping along at a rapid pace.

    5. Execution: Automated contract execution allows users to control and shorten the signature process

    with tools such as eSignature and fax support, which associates faxed documents with their proper

    electronic file via barcode.

    6. Obligations management: This stage ensures that deliverables are being met and that value isnt

    leaking from contracts. Users maximize contract value with fulfillment tracking, automated alerts linked

    to expirations, renewals, and key events, post-execution workflows, a