1. Project Planning¶
Definitions 1¶
- Software engineering: is the systematic development, operation, maintenance; and retirement of software
- IS: information system
- DFD: data flow diagram
- CASE: computer-aided software engineering
- Software: is the sequences of instructions in one or more programming languages that comprise a computer application to automate some business function
- Engineering: is the use of tools and techniques in problem solving
- Software engineers’ jobs have evolved to now include evaluation, selection, and use of specific systematic approaches to the development, operation, maintenance, and retirement of software:
- Development: begins with the decision to develop a software product and ends when the product is delivered.
- Operations: the daily processes that take place,
- Maintenance: changes made to the system to fix errors, change business logic, or make software more efficient.
- Retirement: the replacement of the current application with some other method of providing the work, usually a new application. or, the process of removing a software product from use.
- ATM: automated teller machine
- Application: is a set of programs that automates some business function
- Data storage require two types of data definition: logical and physical
- logical data model: describes how we logically think of data
- Relational logical data model: columns and rows
- Hierarchical logical data model : parent-child relationship (tree) = one-to-many
- Network logical data model: many-to-many relationship
- Object-oriented logical data model(OOLDMs): combines hierarchical and network logical data models
- physical data model: describes how data is stored on disk or db.
- logical data model: describes how we logically think of data
- process: is a sequence of instructions or conjunctions of events that operate on data.
- constraints: are the limitations on the process, Constraint types are prerequisite, post-requisite, time, structure, control, or inferential.
- Pre-requisite: a constraint that must be satisfied before the process can begin (if statements)
- post-requisite: a constraint that must be satisfied before the process can end but after the process has done its work (if statements)
- time: actual time (before 5pm), timeout constraint (eg. on DB connections), synchronous processing constraint (eg. process C cannot start until process B has finished), response time constraint (eg. process A must respond within 5 seconds)
- Structure: aka. data types, not all values are allowed (eg. a file name must be a string, but the file size must be an integer)
- Control: for maintenance, eg. the total of a transaction must be equal to the sum of the individual items.
- Inferential:
infer: means to conclude by reasoning
, inferential constraints are limits on the reasoning ability of the program and its ability to generate new facts out of the old ones. eg. AI that builds knowledge on a topic, but this knowledge is not a free form, eg. AI must at least store 100 facts before it can make a conclusion.
- Interfaces: There are three types of interfaces: human, manual, and computerized.
- Human interfaces: facing the user, the most important, hardest to design, very subjective to change.
- Manual interfaces: are reports or other human-readable media that show information from the computer.
- Computerized interfaces: are the means by which the computer communicates with other computers. non standard, defined by the organization. some of them are standrized using protocols (eg. HTTP)
- Application Responsiveness: Responsiveness of an application reflects the fundamental design approach as batch-oriented, on-line, or real-time.
- Batch applications: Apps where transactions are processed in groups, data is stored upon receiving until the batch is complete, then a one process round that process all the data in the batch at one go.
- On-line applications: Apps that provide interactive processing with or without immediate file updates. interactive processing means that there is 2 way interactions between the user and the App. on-line processing means that programs may be resident in memory and used sequentially by numerous transactions/events without reloading.
- the difference between on-line and batch apps, is that batch Apps writes permanently to the disk, while online stores temporarily in memory (with the option to write to disk).
- real-time Apps: processes transactions in actual time. results are available immediately.
- Types of Applications: There are four types of business applications: transaction, data analysis, decision support, and expert applications.
- Transaction applications: eg. e-commerce, inventory management…
- Data analysis: Query data from DB, then analyze it (readonly usually). eg. accounting reports applications…
- Decision support applications (DSS) seek to identify and solve problems
- Expert applications: are used to solve complex problems that require expert knowledge. eg. AI, expert systems…
- Embedded systems: applications that are parts of other systems, eg. an endpoint in an api, sensor in a big appliance, etc.
- Project life cycle three types: sequential, iterative, and learn-as-you-go.
Sequential Project Life Cycle (SPLC) (Waterfall)¶
- developed in 1960s by the US Department of Defense, according to specification DOD standard 2167A. see: https://en.wikipedia.org/wiki/DOD-STD-2167A
- has phases in a sequence:
- initiation
- problem definition
- feasibility study
- requirements analysis
- conceptual design
- design
- code / unit testing
- testing
- installation and checkout
- operation and maintenance
- retirement
- in government projects, the first 4 phases (initiation, problem definition, feasibility study, requirements analysis) are done by the government or a separate organization than the one that will develop the software.
- it is hard to distinguish the start and end of each phase, and it is hard to go back to a previous phase.
Initiation phase¶
- the need for the applications is defined
- problem is defined to assemble a team and start looking for the problem evaluation.
- stakeholders are identified.
- outcome: memo or formal document requesting automation support, defining the problem, and identifying the participants.
Feasibility phase¶
- feasibility is the analysis of risk, cost, and benefits of the project. problem is analyzed in a greater details.
- economic feasibility: analysis the cost.
- technical feasibility: analyze technical alternatives, is the technology available?
- organizational feasibility: analyze the organization, is the organization ready for the change?
- feasibility reports summarizes:
- the problem
- economic, technical, organizational feasibility
- risks
- preferred concept for the software and explanation of its superiority to alternative concepts.
- training needs
- estimates of project staffing
- at the end of feasibility phase, the Software Development Life Cycle (SDLC) is starts, SDLC is sub-cycle of SPLC.
- outcome: feasibility report.
Requirements analysis phase¶
- this phase has different synonyms: functional analysis, requirements definition, and software requirements analysis.
- analysis activities define:
- functional requirements: what the system must do.
- performance requirements: how fast the system must respond, etc.
- Interfaces requirements: how the system will interact with other systems (inside or outside the organization) .
- design requirements: data storage, hardware, testing constraints, conversion requirements, etc.
- development standards: development form, timing, documentation,softwares allowed, tools allowed, etc.
- the plan for application development is refined.
- outcome: requirements specification document that summarizes:
- the requirements (the details of the proposed system).
- the current method of work.
- graphics, text, tables, diagrams, etc are used to explain the requirements.
Conceptual design phase¶
- this phase is also called preliminary design, logical design, external design or
software requirements specifications
. - detailed functional requirements of all external elements of the system are defined.
- external elements include: screens, reports, data entry messages, forms, contents, layout.
- logical data model is transformed into database schema and user views.
- decide if distribution (decentralization) of databases is needed.
- sometimes, this phase is combined with the design phase and analysis phase (partially completed during the requirement analysis, then fully completed during the design phase).
- we treat conceptual design and design as one phase.
- outcome: detailed definition of the external elements of the system + normalized and optimized DB schema.
Design phase¶
- maps
what
system is supposed to do tohow
it is supposed to do it. - this phase is also called : detailed design, physical design, internal design, or product design.
- outcome: team create documents that verify:
- software architecture
- software components and modules
- interfaces between components
- testing
- data: implement the actual data structures, data storage, and data access.
SubSystem/Program Design¶
- treated as a sub-phase of the design phase.
- outcome: team create documents that verify:
- Application control structure: how each module/program is activated, what happens when it finishes, to whom it returns/reports, etc.
- data structures and physical implementation scheme: create central library that interacts with DB/DBMS.
- sizing: buffer sizes, memory sizes, etc.
- key algorithms.
- program components.
Coding/Unit Testing phase¶
- low level program elements are created from the design documents and debugged.
- unit tests for individual components are created and executed.
Testing phase¶
- this phase usually corresponds to integration testing.
- quality assurance is carried out: programs is evaluated by a non-member of the development team.
Installation and checkout phase¶
- also called implementation phase.
- the software product is integrated into a working environment (usually staging) and prepared to go to production.
- training is provided to the users.
- SDLC is completed.
- the maintenance phase begins.
Operation and maintenance phase¶
- the product is working on production, and it is being monitored for satisfactory performance and modified as needed.
- three types of maintenance:
- Perfective maintenance: improves performance, change algorithms to work faster, add indexes DB for queries to be faster, etc.
- Corrective maintenance: fixes bugs, errors, etc.
- Adaptive maintenance: changes the system to adapt to new requirements.
- each type of tge maintenance types requires mini-analysis, mini-design, mini-coding, mini-testing, mini-installation.
- documentation must be updated with every change.
Retirement phase¶
- the support for the system is terminated.
- also called phase-out
Universal activities¶
- two activities that are performed in every phase: verification and validation.
- verification: established the correctness of correspondence between the requirements (specification) and the design (product) (does the program matches the requirements).
- validation: establishes the fitness (quality) of the product for its intended use (does the program do what it is supposed to do?) .
Iterative Project Life Cycle¶
- sometimes called prototyping.
Learn-as-You-Go Project Life Cycle¶
- 75% of companies do no use any development life cycle.
- also called trial-and-error, individual problem solving. the life cycle of no life cycle.
- better suited for small projects or small teams.
- better suited for unique problems that have no standard solution.
Methodologies¶
- There are five classes of methodologies: process, data, object, semantic, or none.
- Process Methodology:
- takes structured, top-down approach to evaluate problems.
- developed in 1970s as response to: increasing complexity of software, operating systems, and introduction of file system.
- documentation produced by this methodology includes: context diagrams, data flow diagrams, data store definitions, structured English descriptions.
- still used today. will fade in the future.
- Data Methodology:
- starts by evaluating the data first and the relationships between the data then determine the architecture.
- data architecture is then mapped out to the requirements.
- documentation produced by this methodology includes: Entity Relationship Diagrams (ERD), entity hierarchy diagrams, process dependency diagrams, process hierarchy diagrams, and third normal form database definition.
- Object-Oriented Methodology:
- takes top-down view of data objects, and communications between these objects to determine system architecture.
- data and actions are encapsulated in objects.
- developed in 1980s,
- Semantic Methodology:
- used in artificial intelligence (AI) and expert systems.
- data and data definitions/rules defined together in the same application.
- No Methodology:
- rely on experience and intuition of the programmer.
References¶
-
Conger, S. (2008). The New Software Engineering. The Global Text Project. ↩