Posts

Showing posts from September, 2022

Database Normalization : 1NF, 2NF, 3NF, BCNF, 4NF

Image
What is normalization? Breaking down a table into functionally independent tables Follows three-step procedures {first normal form, second NF, third NF} Why normalization? Reduce data redundancy, and thus data anomalies 1NF All the key attributes are defined There are no repeating groups in the table All attributes are dependent on the primary key 2NF It is in 1NF It includes no partial dependencies Partial dependency : attributes are dependent on only a part of a composite PK Fig: Dependency Diagram 3NF It is in 2NF It includes no transitive dependencies Transitive dependency : nonkey (nonprime) attributes are dependent on another nonkey attribute BCNF A Table is in BCNF when it is in 3NF and contains no non-key attribute that determines a key attribute. – Convert to BCNF by exchanging the determinate with the key attribute and then resolving the partial dependency with a new table. 4NF A Table is in 4NF when it is in 3NF table with no multi-valued dependencies :  – Convert to 4NF

Framework activities and Process Flow in Software Engineering

Image
Framework Activities Communication Planning Modelling Construction Deployment Process Flow Linear Iterative Evolutionary Parallel

Process Models in Software Engineering

Waterfall Prototyping Evolutionary Unified

Forms of Software Documentation: Software Engineering

 2 types:     * Process documentation     * Product documentation Process Documentation:     - track internal development process      - relatively short lifespan     - is about cost | schedule | funding | standards     - some design decision papers are moved to product docs when they become implemented. Product Documentation:     1. System Documentation:               -operation manual               -SRS | Architecture Design | Detail Design | Commented source code | Test plans | Test cases | Validation and Verification plans and results | Known bugs, etc        2.  User documentation | User Manual               a) End User Documentation               b) System Administrator Documentation

Incremental Model : Software Engineering

 cost of implementing requirement change is reduced. amount of analysis and documentation that has to be redone is significantly less. easier to get customer feedback from software rather than judging progress from document. customers are able to gain values of software earlier than that is possible from waterfall model. incremental delivery means that software is used in real, operational process so user feedback is likely to be realistic. Phases that run in cycle: Planning [Estimation, Scheduling and Risk Analysis] Modelling [Analysis, Design] Construction [Coding, Testing] Deployment [Delivery, Feedback] Communication Limitations: if developed quickly, not cost effective to produce documents that reflect every changes. system degrade, messy codes accumulate as new increments are added.

Evolutionary Model : Software Engineering

 proposed by Barry Boehm [Spiral Model] couples the iterative nature of prototyping with controlled and systematic aspects of waterfall model software is developed in a series of evolutionary release during early iteration. The release might be a model or prototype. During later iterations, more complete versions are engineered. Anchor point milestones-combination of work products and condition that are attained along the path of spiral are noted for each evolutionary pass. realistic approach to develop large scale system and software. Limitations: demands direct consideration of tech risks at all stages of the project (considerable risk assessment expertise is relied on for success) before they become problematic.

Prototyping Model : Software Engineering

stakeholders better understand what is to be built when the requirements are fuzzy. eg. fitness app sync user interface screens, social integration, fitness goals and share progress requirements quick planning of prototyping iteration. modelling (quick design)-focus on parts visible to end users. evaluation of stake holders- to satisfy various needs and better understand what needs to be done. users get to feel actual system and developers get to build something quickly. Limitations: developers may need to discard a prototype to meet the customers' evolving needs. if not careful, less than ideal choices become the integral part of the evolving system. customers involvement may cause delays.

Need of Software and Software Engineering

  Nanotechnology is emerging. Software used in telecommunications are extension of existing ones. Media (Digital News, electronic papers, Videos & Audio effects used). Consumer purchasing are increased using mobile devices. Government services (national infrastructures and utilities, financial systems) are all software based. Society (Industries, Manufacturing, Distribution, Entertainment, Mobiles) are all software based. National / International Business and Institutions are all software based. Different software engineering methods and techniques are needed for different software to produce reliable and trustworthy systems economically and quickly. eg. Aircraft control system must be safe, an interactive game must be responsive, a telephone switching system must be reliable. Large systems need a stable framework or architecture. Responsibilities of different teams working on parts of system need to be clearly defined with respect to that architecture.

David Hooker's 7 principles that focus on software engineering practice

  The reason it all exists. KISS(Keep it simple stupid!)-  It often takes lot of thoughts and work over multiple design iterations. Maintain the vision.-  what if the architectural vision is compromised? What you produce, others will consume. Be open to the future. Plan ahead for reuse. Think!

Software Vs Programs

   Software = Program + Associated documentation, libraries, support web sites and configuration data needed to make program useful.

Waterfall Model : Software Engineering

   Waterfall Model (Linear Sequential Model)  Phases: Requirements analysis and definition. System and software design. Implementation and unit testing. Operation and maintenance. Short Description used when requirements are well defined and reasonably stable. eg. adaptation of accounting software to accommodate changes to mandated government regulations. safety critical software are usually developed using waterfall model as lots of analysis and documentation is required before implementation begins. subsystems within a large system may be developed using different approaches. Parts of system that are well understood can be specified and developed using waterfall process model. Appropriate for: Embedded Systems Critical Systems. Larger software systems that are part of broader engineering systems developed by several partner companies. Limitations: difficult for customers to state all requirements explicitly at the beginning of most projects. customers must have patience because a wor