There should be low dependence and high interaction between the modules. The dependence should be low so that the module can work in absence of another module. So, there should be low coupling ad high cohesion in software design.
Chat with our AI personalities
Modularization is the process of breaking a software system into a set of collaborating components. Each of these components should ideally have high cohesion and low coupling.Modularization is inherently a recursive process. A real world example of modularization would be a car. A car is composed of an engine, doors, chassis, etc. However, each component is then composed of modules, i.e. the door has a window, door lock, handle, etc.High cohesion means that each of a components components are closely related to each other, i.e. above the door's components of the window, door lock, and handle are all closely related.Low coupling means that each component should be independent of the other components. In the case of a car, the engine is clearly independent of the door. Low coupling means that different components can be developed by independent teams without affecting each other.Modularization in software involves partitioning a software system into logical components by a software architect. For example, a banking software system might be broken into the following components:ATM softwareTeller interface softwareBack office transaction processing
The requirements of a software product are a list of features required by the customer. One or more managers/software engineers will usually sit down with the customer to get a list of exactly what the product should do and how it should do it. The development team will later use these requirements to design the software around the customers' expectations.
Important components of Software Engineering are: 1. Software Development Life Cycle(SDLC) 2. Software Quality Assurance 3. Software project Management 4. Software Management 5. Computer Aided Software Engineering (CASE)
The Software development process is composed of many activities, notably the following. * Conception: Establishing a case model for the development of the software. * Requirements Analysis: Extracting the requirements of a desired software product is the first task in creating it. While customers probably believe they know what the software is to do, it is important to recognize incomplete, ambiguous or contradictory requirements. * Specification: Specification is the task of precisely describing the software to be written. What functions it should have, the user interface, and any other requirements. * Software architecture: The architecture of a software system refers to an abstract representation of that system. Architecture involves making sure the software system will meet the requirements of the product, as well as ensuring that future requirements can be addressed. The architecture step also addresses interfaces between the software system and other software products, as well as the underlying hardware and the operating system platform. * Implementation: Converting a design to functional code. * Testing: Testing all aspects of the software's functionality. * Documentation: An important task is documenting the internal design of software for the purpose of future maintenance and enhancement. * Software Training and Support: Users will have lots of questions and software problems which leads to the next phase of software. * Maintenance: Maintaining and enhancing software to cope with newly discovered problems or new requirements.
Neither, it should be performed by a qualified Software Tester and witnessed by a Software Quality Engineer, a Systems Engineer, and the customer/user representative. The Software Developer should be entirely out of the picture at this point and only be responsible for fixing bugs found during validation.