"We already have a book that is full of standards and procedures for building software. Won't that provide my people with everything they need to know?" Not used, not up to date, not complete, not focused on quality, time, and money "If we get behind, we can add more programmers and catch up" Adding people to a late software project makes it later Training time, increased communication lines "If I decide to outsource the software project to a third party, I can just relax and let that firm build it" Software projects need to be controlled and managed 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath "A general statement of objectives is sufficient to begin writing programs – we can fill in the details later" Ambiguous statement of objectives spells disaster "Project requirements continually change, but change can be easily accommodated because software is flexible" Impact of change depends on where and when it occurs in the software life cycle (requirements analysis, design, code, test) 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath "Once we write the program and get it to work, our job is done" 60% to 80% of all effort expended on software occurs after it is delivered "Until I get the program running, I have no way of assessing its quality Formal technical reviews of requirements analysis documents, design documents, and source code (more effective than actual testing) "The only deliverable work product for a successful project is the working program" Software, documentation, test drivers, test results "Software engineering will make us create voluminous and unnecessary documentation and will invariably slow us down" Creates quality, not documents; quality reduces rework and provides software on time and within the budget 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath Tools Methods Processes Quality Focus 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath Process Provides the glue that holds the layers together; enables rational and timely development; provides a framework for effective delivery of technology; forms the basis for management; provides the context for technical methods, work products, milestones, quality measures, and change management Methods Provide the technical "how to" for building software; rely on a set of basic principles; encompass a broad array of tasks; include modeling activities Tools Provide automated or semi-automated support for the process and methods (i.e., CASE tools) 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath Communication Involves communication among the customer and other stake holders; encompasses requirements gathering Planning Establishes a plan for software engineering work; addresses technical tasks, resources, work products, and work schedule Modeling (Analyze, Design) Encompasses the creation of models to better understand the requirements and the design Construction (Code, Test) Combines code generation and testing to uncover errors Deployment Involves delivery of software to the customer for evaluation and feedback 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath The Capability Maturity Model Integration, or CMMI, is a process model that provides a clear definition of what an organization should do to promote behaviors that lead to improved performance. It was developed at Carnegie Mellon University. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath 9/7/2019 Initial Level (Level 1) Characterized as ad hoc, and occasionally even chaotic Few processes are defined, and success depends on individual effort Managed (Level 2) Basic project management processes are established to track cost, schedule, and functionality The necessary process discipline is in place to repeat earlier successes on projects with similar applications Software Engineering Dr. K.M. Karthick Raghunath Defined (Level 3) The software process for both management and engineering activities is documented, standardized, and integrated into a standard software process for the organization All projects use an approved, tailored version of the organization's standard software process for developing and maintaining software Quantitatively Managed (Level 4) Detailed measures of the software process and product quality are collected Both the software process and products are quantitatively understood and controlled 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath The Waterfall Model was the first Process Model to be introduced. It is also referred to as a linear-sequential life cycle model. In a waterfall model, each phase must be completed before the next phase can begin and there is no overlapping in the phases. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath S.No. Phase Activities Performed 1 Requirement Analysis 1. Capture all the requirements. RUD ( Requirements 2. Do brainstorming and Understanding Document) walkthrough to understand the requirements. 3. Do the requirements feasibility test to ensure that the requirements are testable or not. 2 System Design 1. As per the requirements, create the design 2. Capture the hardware / software requirements. 3. Document the designs 9/7/2019 Software Engineering Deliverables HLD ( High Level Design document) LLD (Low level design document) Dr. K.M. Karthick Raghunath 3 Implementation 1. As per the design create the programes / code 2. Integrate the codes for the next phase. 3. Unit testing of the code Programs Unit test cases and results 4 System Testing 1. Integrate the unit tested code and test it to make sure if it works as expected. 2. Perform all the testing activities (Functional and non functional) to make sure that the system meets the requirements. 3. In case of any anomaly, report it. 4. Track your progress on testing through tools like traceability metrics. 5. Report your testing activities. Test cases Test reports Defect reports Updated matrices. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath 5 System 1. Make sure that the environment is up Deployment 2. Make sure that the test exit criteria are met. 3. Deploy the application in the respective environment. 4. Perform a sanity check in the environment after the application is deployed to ensure the application does not break. 6 System 1. Make sure that the application is up and maintenance running in the respective environment. 2. Incase user encounters and defect, make sure to note and fix the issues faced. 3. Incase any issue is fixed; the updated code is deployed in the environment. 4.The application is always enhanced to incorporate more features, update the environment with the latest features 9/7/2019 Software Engineering User Manual Environment definition / specification User Manual List of production tickets List of new features implemented. Dr. K.M. Karthick Raghunath ADVANTANGES: This model is simple and easy to understand and use. It is easy to manage due to the rigidity of the model – each phase has specific deliverables and a review process. In this model phases are processed and completed one at a time. Phases do not overlap. Waterfall model works well for smaller projects where requirements are clearly defined and very well understood. DISADVANTAGES: Once an application is in the testing stage, it is very difficult to go back and change something that was not well-thought out in the concept stage. No working software is produced until late during the life cycle. High amounts of risk and uncertainty. Not a good model for complex and object-oriented projects. Poor model for long and ongoing projects. Not suitable for the projects where requirements are at a moderate to high risk of changing. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath Incremental Model is a process of software development where requirements are broken down into multiple standalone modules of software development cycle. Incremental development is done in steps from analysis design, implementation, testing/verification, maintenance. Each iteration passes through the requirements, design, coding and testing phases. And each subsequent release of the system adds function to the previous release until all designed functionality has been implemented. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath The system is put into production when the first increment is delivered. The first increment is often a core product where the basic requirements are addressed, and supplementary features are added in the next increments. Once the core product is analyzed by the client, there is plan development for the next increment. System development is broken down into many mini development projects Partial systems are successively built to produce a final total system Highest priority requirement is tackled first Once the requirement is developed, requirement for that increment are frozen 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath Incremental Phases Activities performed in incremental phases 9/7/2019 Requirement Analysis •Requirement and specification of the software are collected Design •Some high-end function are designed during this stage Code •Coding of software is done during this stage Test •Once the system is deployed, it goes through the testing phase Software Engineering Dr. K.M. Karthick Raghunath Advantages Disadvantages •The software will be generated quickly •It requires a good planning designing during the software life cycle •It is flexible and less expensive to change requirements and scope •Problems might cause due to system architecture as such not all requirements collected up front for the entire software lifecycle •Thought the development stages changes can be done •Each iteration phase is rigid and does not overlap each other •This model is less costly compared to others •Rectifying a problem in one unit requires correction in all the units and consumes a lot of time 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath • Evolutionary models are iterative type models. • They allow developing more complete versions of the software. Following are the evolutionary process models. 1. The prototyping model 2. The spiral model 3. Concurrent development model 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath • Prototype is defined as first or preliminary form using which other forms are copied or derived. • Prototype model is a set of general objectives for software. • It does not identify the requirements like detailed input, output. • It is software working model of limited functionality. • In this model, working programs are quickly produced. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath 1. Communication In this phase, developer and customer meet and discuss the overall objectives of the software. 2. Quick design • Quick design is implemented when requirements are known. • It includes only the important aspects like input and output format of the software. • It focuses on those aspects which are visible to the user rather than the detailed plan. • It helps to construct a prototype. 3. Modeling quick design • This phase gives the clear idea about the development of software because the software is now built. • It allows the developer to better understand the exact requirements. 4. Construction of prototype The prototype is evaluated by the customer itself. 5. Deployment, delivery, feedback • If the user is not satisfied with current prototype then it refines according to the requirements of the user. • The process of refining the prototype is repeated until all the requirements of users are met. • When the users are satisfied with the developed prototype then the system is developed on 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath the basis of final prototype. Advantages of Prototyping Model • Prototype model need not know the detailed input, output, processes, adaptability of operating system and full machine interaction. • In the development process of this model users are actively involved. • The development process is the best platform to understand the system by the user. • Errors are detected much earlier. • Gives quick user feedback for better solutions. • It identifies the missing functionality easily. It also identifies the confusing or difficult functions. Disadvantages of Prototyping Model: • The client involvement is more and it is not always considered by the developer. • It is a slow process because it takes more time for development. • Many changes can disturb the rhythm of the development team. • It is a thrown away prototype when the users are confused with it. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath • Spiral model is a risk driven process model. • It is used for generating the software projects. The framework activities of the spiral model are as shown in the following figure. • In spiral model, an alternate solution is provided if the risk is found in the risk analysis, then alternate solutions are suggested and implemented. • It is a combination of prototype and sequential model or waterfall model. • In one iteration all activities are done, for large projects the output is small. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath The phase of the spiral model has four quadrants, and each of them represents some specific stage of software development. The functions of these four quadrants are listed below: • Planning objectives or identify alternative solutions: In this stage, requirements are collected from customers and then the aims are recognized, elaborated as well as analyzed at the beginning of developing the project. If the iterative round is more than one, then an alternative solution is proposed in the same quadrant. • Risk analysis and resolving: As the process goes to the second quadrant, all likely solutions are sketched, and then the best solution among them gets select. Then the different types of risks linked with the chosen solution are recognized and resolved through the best possible approach. As the spiral goes to the end of this quadrant, a project prototype is put up for the most excellent and likely solution. • Develop the next level of product: As the development progress goes to the third quadrant, the well-known and mostly required features are developed as well as verified with the testing methodologies. As this stage proceeds to the end of this third quadrant, new software or the next version of existing software is ready to deliver. • Plan the next Phase: As the development process proceeds in the fourth quadrant, the customers appraise the developed version of the project and reports if any further changes are required. At last,Engineering planning for theDr.subsequent phase is initiated. 9/7/2019 Software K.M. Karthick Raghunath Advantages of Spiral Model •It reduces high amount of risk. •It is good for large and critical projects. •It gives strong approval and documentation control. •In spiral model, the software is produced early in the life cycle process. Disadvantages of Spiral Model •It can be costly to develop a software model. •It is not used for small projects. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath Concurrency is achieved in two ways: (1) system and component activities occur simultaneously and can be modeled using the state-oriented approach described previously; (2) a typical client/server application is implemented with many components, each of which can be designed and realized concurrently. • Concurrent modeling defines a series of events that will trigger transitions from state to state for each of the software engineering activities, actions, or tasks. • The concurrent development model is called as concurrent model. • The communication activity has completed in the first iteration and exits in the awaiting changes state. 9/7/2019 Software Engineering • The modeling activity completed its initial communication and then go to the underdevelopment state. • If the customer specifies the change in the requirement, then the modeling activity moves from the under development state into the awaiting Dr. K.M. Karthick Raghunath change state. Advantages of the concurrent development model • This model is applicable to all types of software development processes. • It is easy for understanding and use. • It gives immediate feedback from testing. • It provides an accurate picture of the current state of a project. Disadvantages of the concurrent development model • It needs better communication between the team members. This may not be achieved all the time. • It requires to remember the status of the different activities. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath Special process models take many features from one or more conventional models. However these special models tend to be applied when a narrowly defined software engineering approach is chosen. Types in Specialized process models: 1. Component based development 2. The formal methods model 3. Aspect oriented software development 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath • • The component based development model incorporates many of the characteristics of the spiral model. These components provide targeted functionality with welldefined interfaces that enable the component to be integrated into the Software. It is evolutionary in nature, demanding an iterative approach to the creation of software. However, the model focuses on prepackaged software components. It promotes software reusability. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath 1. Available component based products are researched and evaluated for the application domain. 2. Component integration issues are considered. 3. A software architecture is designed to accommodate the components. 4. Components are integrated into the architecture. 5. Comprehensive testing is conducted to ensure proper functionality. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath • Based on studies of reusability • Component-based development leads to a: • Around 70% reduction in development cycle time; • Around 84% reduction in project cost; • Productivity increases • Faster development and testing 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath • Enables a software engineer to specify, develop, and verify a computer-based system by applying a rigorous, mathematical notation. • Ambiguity, incompleteness, and inconsistency can be discovered and corrected more easily through mathematical analysis. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath The formal method comprises two approaches • Property-based Specification -- The operations performed on the system -- In addition, it describes the relationship that exists among these operations Signatures - which determine the syntax of operations An equation - which defines the semantics of the operations through a set of equations known as axioms • Model-based Specification -- Utilizes the tools of set theory, function theory, and logic to develop an abstract model of the system. -- It specifies the operations performed on the abstract model. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath Advantages: • Offers the promise of defect-free software • Used often when building safety-critical systems Disadvantages: • The development of formal models is currently quite time-consuming and expensive. • Because few software developers have the necessary background to apply formal methods, extensive training is required. • It is difficult to use the models as a communication mechanism for technically unsophisticated customers. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath • • • Aspect-oriented software development (AOSD) is a new approach to software development that addresses limitations inherent in other approaches, including object-oriented programming. AOSD is also known as aspect-oriented programming (AOP). Aspect-oriented software development (AOSD) is a software design solution that helps address the modularity issues that are not properly resolved by other software approaches, like procedural, structured and object-oriented programming (OOP). Advantages: • This results in better support for modularization hence reducing development, maintenance and evolution costs. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath The Unified Process (UP), or Unified Software Development Process, is a iterative and incremental software development framework from which a customized process can be defined. The framework contains many components and has been modified a number of times to create several variations. The key characteristics of the Unified Process are: • It is an iterative and incremental development framework • It is architecture-centric with major work being done to define and validate an architectural design • It is risk-focused and emphasizes that highest-risk factors be addressed in the earliest deliverables possible • It is use-case and UML model driven with nearly all requirements being documented in one of those forms 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath The Unified Process divides the project into four phases: • Inception • Elaboration (milestone) • Construction (release) • Transition (final production release) Inception phase Inception is the smallest phase in the project, and ideally it should be quite short. It is used to prepare basis for the project, including • preparation of business case, • establishing project scope and setting boundaries, • outlining key requirements, and possible architecture solution together with design tradeoffs, identifying risks, and development of initial project plan —schedule with main milestones and cost estimates. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath During this phase the project team is expected to capture a majority of system’s requirements (e.g., in the form of use cases), To perform identified risk analysis and make a plan of risk management to reduce or eliminate their impact on final schedule and product. To establish design and architecture (e.g., using basic class diagrams, package diagrams, and deployment diagrams), to create a plan (schedule, cost estimates, and achievable milestones) for the next (construction) phase. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath During this phase, the design of the system is finalized and refined and the system is built using the basis created during elaboration phase. The construction phase is divided into multiple iterations, for each iteration to result in an executable release of the system. The final iteration of construction phase releases fully completed system which is to be deployed during transition phase 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath The final project phase which delivers the new system to its end-users. Transition phase includes also data migration from legacy systems and user trainings. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath Each phase and its iteration consists of a set of predefined activities. These activities are referred as disciplines—a discipline is a set of activities and related artifacts in one subject area (e.g., the activities within requirements analysis). They are Business modeling—domain object modeling and dynamic modeling of the business processes, Requirements—requirements analysis of system under consideration. Includes activities like writing use cases and identifying nonfunctional requirements, Analysis and design—covers aspects of design, including the overall architecture, Implementation—programming and building the system (except the deployment), Test—involves testing activities such as test planning, development of test scenarios, alpha and beta testing, regression testing, acceptance testing, and Deployment—the deployment activities of developed system. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath Software Requirements 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath What is the Requirement? A requirement is a description of the service that software must offer. A requirement can range from the high-level abstract statement of the sender's necessity to detailed mathematical functional requirement specifications. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath • In software engineering, a functional requirement defines a system or its component. It describes the system behavior under specific conditions. • A function is nothing but inputs, its behavior, and outputs. It can be a calculation, data manipulation, business process, user interaction, or any other specific functionality which defines what function a system is likely to perform. • Functional software requirements help you to capture the intended behavior of the system. This behavior may be expressed as functions, services or tasks or which system is required to perform. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath Here, are the pros/advantages of creating a typical functional requirement document• Helps you to check whether the application is providing all the functionalities that were mentioned in the functional requirement of that application • A functional requirement document helps you to define the functionality of a system or one of its subsystems. • Functional requirements along with requirement analysis help identify missing requirements. They help clearly define the expected system service and behavior. • Errors caught in the Functional requirement gathering stage are the cheapest to fix. • Support user goals, tasks, or activities for easy project management • Functional requirement can be expressed in Use Case form or user story as they exhibit externally visible functional behavior. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath • Nonfunctional requirements describe how a system must behave and establish constraints of its functionality. This type of requirements is also known as the system’s quality attributes. They represent a set of standards used to judge the specific operation of a system. Example, how fast does the website load? • Non-functional Requirements allows you to impose constraints or restrictions on the design of the system across the various agile backlogs. Example, the site should load in 3 seconds when the number of simultaneous users are > 10000. Description of non-functional requirements is just as critical as a functionalDr.requirement. 9/7/2019 Software Engineering K.M. Karthick Raghunath Benefits/pros of Non-functional testing are: • The nonfunctional requirements ensure the software system follow legal and compliance rules. • They ensure the reliability, availability, and performance of the software system • They ensure good user experience and ease of operating the software. • They help in formulating security policy of the software system. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath Parameters Functional Requirement Non-Functional Requirement What it is Verb Attributes Requirement It is mandatory Capturing type It is captured in use case. End-result Capturing Product feature Easy to capture Helps you verify the functionality of the software. It is non-mandatory It is captured as a quality attribute. Product properties Hard to capture Helps you to verify the performance of the software. Objective 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath Parameters Functional Requirement Non-Functional Requirement Area of focus Focus on user requirement Concentrates on the user's expectation. Describe what the product does Functional Testing like Type of Testing System, Integration, End to End, API testing, etc. Test Execution is done before Test Execution non-functional testing. Documentation Product Info 9/7/2019 Product Features Software Engineering Describes how the product works Non-Functional Testing like Performance, Stress, Usability, Security testing, etc. After the functional testing Product Properties Dr. K.M. Karthick Raghunath The user requirements for a system should describe the functional and non-functional requirements so that they are understandable by users who don’t have technical knowledge. User requirements, often referred to as user needs, describe what the user does with the system, such as what activities that users must be able to perform. User requirements are generally documented in a User Requirements Document (URD) using narrative text. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath The User Requirements Specification describes the business needs for what users require from the system. The URS should include: Introduction – including the scope of the system, key objectives for the project, and the applicable regulatory concerns Program Requirements – the functions and workflow that the system must be able to perform Data Requirements – the type of information that a system must be able to process Life Cycle Requirements – including how the system will be maintain and users trained 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath System requirements talk about the solution domain, the world of the software logic. They describe what the software must do. They are the responsibility of the technical system alone. System requirements are all of the requirements at the system level that describe the functions which the system as a whole should fulfill to satisfy the stakeholder needs. System requirements play major roles in systems engineering, as they: • • • • Form the basis of system architecture and design activities. Form the basis of system integration and verification activities. Act as reference for validation and stakeholder acceptance. Provide a means of communication between the various technical staff that interact throughout the project. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath Functional and supplemental requirements for software were documented in the software requirements specification (SRS). The SRS is the principal deliverable that analysts use to communicate detailed requirements information to developers, testers, and other project stakeholders. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath Hardware Interfaces Specify the logical characteristics of each interface between the software product and the hardware components of the system. This includes configuration characteristics. It also covers such matters as what devices are to be supported, how they are to be supported and protocols. Software Interfaces Specify the use of other required software products and interfaces with other application systems. For each interface, provide: • Discussion of the purpose of the interfacing software as related to this software product • Definition of the interface in terms of message content and format Communications Interfaces Specify the various interfaces to communications such as local network protocols, etc. These are protocols you will need to directly interact with. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath • Requirement engineering is a process that involves all the activities required to create and maintain a system requirement document. • Requirement engineering provides the appropriate mechanism for understanding what the customer wants, analyzing need, assessing feasibility, negotiating a reasonable solution, specifying the solution, validating the specification and managing the requirements as they are transformed into an operational system. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath The software engineering process involves the following activities: Feasibility study. Requirements elicitation. Requirement analysis. Requirements validation, Requirements management 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath Report Format The feasibility study takes into consideration. An outline description of the system. How the system will be used within an organization. A feasibility study is a short descriptive study. The aim of the feasibility study is to answer number of questions: Does the overall objectives of the organization are covered contributed by the system. Can the implementation of the system be done using current technology and within the given cost and schedule constraints. Can the system be integrated with the other system which already exists? Carrying out feasibility involves the following phases: Information assessment Information collection Report writing. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath 1. 2. 3. 4. 9/7/2019 How would the organization cope if this system was not implemented? What direct contribution will the system make to the business objectives? Does the system require technology which has not previously been used in the organization? What must be supported by the system and what need not be supported? Software Engineering Dr. K.M. Karthick Raghunath From Information Source Some instances of possible questions that may be put are as follows: Information Collection 9/7/2019 managers software engineers technology experts end-users Software Engineering Report writing scope budget schedule high-level requirements Dr. K.M. Karthick Raghunath Requirement Elicitation Process Requirement Elicitation Techniques Interviews Structured (closed) interviews Non-structured (open) interviews Oral interviews Written interviews One-to-one interviews Group interviews 9/7/2019 Software Engineering Surveys Questionnaires Task analysis Domain Analysis Brainstorming Prototyping Observation Dr. K.M. Karthick Raghunath After requirement specifications are developed, the requirements mentioned in this document are validated. User might ask for illegal, impractical solution or experts may interpret the requirements incorrectly. This results in huge increase in cost if not nipped in the bud. Requirements can be checked on following categories – Validity checks Consistency checks Completeness checks Realism checks Verifiability 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath b a Project Team Members Communication & Changes Requirements Management & 9/7/2019 Collecting, Analyzing (a), Refining (b), and Prioritizing product requirements (c) then planning for their delivery Software Engineering Dr. K.M. Karthick Raghunath c Stakeholders System modeling is the process of developing abstract models of a system, with each model presenting a different view or perspective of that system. An external perspective (System’s Context/Environment) An interaction perspective (between a system and its environment, or between the components of a system) A structural perspective A behavioral perspective (System/Data Architecture) System modeling helps the analyst to understand the functionality of the system and models are used to communicate with customers. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath Context models are used to illustrate the operational context of a system they show what lies outside the system boundaries. Social and organizational concerns may affect the decision on where to position system boundaries. Architectural models show the system and its relationship with other systems. System boundaries are established to define what is inside and what is outside the system. Defining a system boundary is a political judgment – There may be pressures to develop system boundaries that increase / decrease the influence or workload of different parts of an organization. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath • User interaction • System-to-System interaction • Component interaction • Eg: Use case diagrams and sequence diagrams 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath Structural models of software display the organization of a system in terms of the components that make up that system and their relationships. Structural models may be static models, which show the structure of the system design, or dynamic models, which show the organization of the system when it is executing. Structural models of a system are created during the discussion and designing part of the system architecture. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath Data modeling is the process of creating a data model for the data to be stored in a Database. This data model is a conceptual representation of • Data objects • The associations between different data objects • The rules. Types of Data Models • Conceptual • Logical • Physical 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath This Data Model defines WHAT the system contains. This model is typically created by Business stakeholders and Data Architects. The purpose is to organize, scope and define business concepts and rules. The main aim of this model is to establish the entities, their attributes, and their relationships. In this Data modeling level, there is hardly any detail available of the actual Database structure. The 3 basic tenants of Data Model are Entity: A real-world thing Attribute: Characteristics or properties of an entity Relationship: Dependency or association between two entities 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath Defines HOW the system should be implemented regardless of the DBMS. This model is typically created by Data Architects and Business Analysts. The purpose is to developed technical map of rules and data structures. Logical data models add further information to the conceptual model elements. It defines the structure of the data elements and set the relationships between them. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath • This Data Model describes HOW the system will be implemented using a specific DBMS system. This model is typically created by DBA and developers. The purpose is actual implementation of the database. • A Physical Data Model describes the database specific implementation of the data model. It offers an abstraction of the database and helps generate schema. 9/7/2019 Software Engineering Dr. K.M. Karthick Raghunath